
En esta primera clase vemos los contenidos que se incluyen en el curso.
En esta clase vemos el proceso de instalación del software que utilizaremos durante el curso. Instalamos la JRE y el IDE Eclipse.
En esta clase vemos los orígenes del lenguaje Java y sus principales características.
En esta clase aprenderemos qué tipo de aplicaciones podemos crear en Java, cuál es la anatomía de un programa y crearemos nuestra primera aplicación en Eclipse.
En esta clase vemos los tipos de datos que existen en Java, y qué es y cómo se crea una variable.
En esta clase vemos cómo declarar variables en Eclipse.
En esta clase vemos qué son las constantes en Java y qué operadores tenemos en Java.
Vemos en esta clase cómo concatenar cadenas de caracteres con valores numéricos. También identificamos qué tipo de errores puedes surgir a la hora de programar.
En esta clase tenemos nuestro primer acercamiento a la biblioteca de clases de Java: la API. Vemos cómo realizar cálculos matemáticos con java utilizando la clase Math.
En esta clase comenzamos a ver la manipulación de cadenas de caracteres utilizando la clase String de la API
En esta clase vemos el concepto de casting (o refundición) a la hora de programar. Vemos cómo a la hora de realizar operaciones matemáticas con la clase Math, el casting es necesario en muchas ocasiones.
En esta clase vemos cómo declarar variables de tipo String y cómo utilizar los métodos length() y charAt() para averiguar longitud de la cadena y posición de los caracteres.
En esta clase vemos los métodos substring, equals y equalsIgnoreCase de la clase String.
En esta clase comenzamos a ver los paquetes en Java. Cuál es su utilidad, cuál es su jerarquía y vemos su estructura en la API.
En esta clase vemos el paquete por defecto "java.lang", cómo importar clases de paquetes diferentes al paquete por defecto y cómo importar paquetes enteros.
En esta clase vemos cómo crear nuestros propios paquetes para organizar las clases.
En esta clase comenzamos a ver la entrada y salida de datos en Java. Antes de poder crear interfaces gráficas, utilizaremos dos clases para la entrada de datos: la clase Scanner y la clase JOptionPane
Comenzamos a utilizar la clase Scanner y su método nextLine() para gestioanr la entrada de datos desde consola.
Continuamos profundizando en el uso de la clase Scanner para introducir datos desde consola. En esta clase vemos como pedir varios datos por consola, cómo operar con ellos y cómo cerrar un Scanner.
En esta clase vemos las diferencias de comportamiento entre los métodos nextLine y el resto de métodos de la clase Scanner que leen valores numéricos. También vemos cómo detener la ejecución de un programa en Eclipse utilizando las herramientas de la consola.
En esta clase comenzamos a ver la introducción de datos a un programa utilizando la clase JOptionPane. Esta clase construye ventanas emergentes desde las cuáles es posible introducir datos.
En esta clase comenzamos a ver las estructuras de control de flujo, y concretamente empezamos por el condicional IF. (En breve documentación PDF del tema)
En esta clase vemos con ejemplos prácticos sencillos la sintaxis y funcionamiento del condicional IF.
En esta clase vemos como encadenar varias condiciones en un IF utilizando la estructura else if.
En esta clase vemos con un ejemplo práctico cómo evaluar varias condiciones a la vez dentro de un mismo IF. También vemos la diferencia entre el operador lógico "&&" y el operador lógico "||" y cómo el utilizar uno u otro cambia por completo el sentido y funcionamiento del programa.
En esta clase vemos cómo evaluar dos o más condiciones a la vez utilizando operadores lógicos o booleanos.
En esta clase vemos los condicionales IF anidados. Vemos la utilidad de construir sentencias condicionales anidadas y cómo simplificar el código de programación cuando un condicional tiene una sola línea de código.
En esta clase comenzamos a ver el condicional switch. Cuándo utilizarlo, limitaciones y su sintaxis
Terminamos las estructuras condicionales en esta clase, viendo el operador ternario. Este operador es especialmente a la hora de construir estructuras condicionales sencillas.
En esta clase comenzamos con los bucles. Vemos la sintaxis y funcionamiento del bucle while.
En esta clase vemos el bucle do-while y qué lo diferencia del bucle while.
En esta clase comenzamos a ver el uso del bucle determinado For.
En esta clase continuamos viendo el funcionamiento del bucle for. Recomiendo vivamente realizar los ejercicios que se plantean junto a esta clase. En ellos deberás utilizar gran parte de lo aprendido en el curso hasta ahora. En la próxima clase se comentarán los ejercicios planteados en esta.
En esta clase se corrigen y explican los ejercicios de control de flujo planteados en el clase anterior.
Comenzamos a ver en esta clase los Arrays en Java. Se explica qué son, qué utilidad tienen y cuál es su sintaxis.
En esta clase trasladamos a la práctica lo visto en la clase anterior. Vemos cómo declarar un Array, como almacenar valores en él y cómo recorrerlo con bucles for y bucles for-each.
En esta clase vemos los Arrays bidimensionales. Vemos cómo se declaran, como almacenar datos en su interior y cómo leer la información almacenada con el uso de bucles for.
En esta clase vemos cómo declarar de forma abreviada un array de dos dimensiones y cómo acceder a su información con bucles for-each
Comenzamos a hablar en esta clase de un concepto fundamental del curso: la POO. Es fundamental entender bien este paradigma de la programación para completar con éxito el curso.
Continuamos hablando en esta clase de la POO y su terminología relacionada. En esta clase desvelamos y explicamos términos como "objeto", "clase", "instancia", "ejemplar" etc.
En esta clase comenzamos a llevar a la práctica los conceptos de POO vistos en clases anteriores.
Seguimos trabajando con la aplicación de la clase anterior viendo el paso de parámetros y el uso del this.
A petición de algunos de vosotros, incluyo este vídeo explicando el ejercicio del vídeo 42. Saludos!
Comenzamos a ver en esta clase la sobrecarga de métodos con paso de parámetros.
Continuamos con la POO y sobrecarga de métodos y constructores.
Vemos el uso de la palabra reservada final y el uso de constantes dentro de una clase.
Comenzamos a ver en esta clase el uso de la palabra reservada "static". Lo hacemos continuando con el ejemplo de la clase anterior: clases Empelado y UsoEmpleado.
En esta clase vemos qué son y como se declaran los métodos static.
Os planteo un ejercicio para practicar con lo que llevamos aprendido hasta ahora de POO. Se explica en el vídeo en qué consiste
Vemos en esta clase un concepto fundamental de la POO y la programación en Java: la herencia. La "magia" de la herencia nos permite la reutilización de código, la característica más importante de la POO
Vemos en código cómo hacer que una clase herede de otra y lo que ello implica.
En esta clase vemos la sobreescritura de métodos cuando hay herencia entre dos clases.
En esta clase se explica cómo funciona la jerarquía o cadena de herencia. Se ve la clase Object como clase "cósmica" o superclase padre de Java
En esta clase vemos los modificadores de acceso en Java y las diferencias entre cada uno de ellos.
En esta clase vemos dos términos que ocurren en la POO: polimorfismo y enlazado dinámico
En esta clase vemos cómo hacer casting de objetos, una operación muy frecuente y necesaria a la hora de programar en Java
En esta clase vemos qué son las clases y los métodos final.
En esta clase comenzamos a ver un tema importante y complejo: las clases abstractas.
Comenzamos a elaborar un ejemplo en código de herencia de clase abstracta. Veremos todo lo que ello implica en las subclases
Terminamos el ejemplo en código de herencia de clases abstractas.
Comenzamos a ver el tema de las interfaces. El concepto de interfaz es parecido al de clase abstracta pero hay diferencias importantes.
Llevamos a código lo explicado en la clase anterior. Creamos nuestra primera interfaz y la implementamos en una clase.
En esta clase comenzamos a ver un ejemplo de uso de interfaz predefinida en la API de Java.
Trasladamos a código lo explicado en la clase anterior y vemos cómo utilizar una interfaz de la API en nuestro ejemplo de la clase Empleados.
En esta clase vemos la herencia en Interfaces
Vemos en un ejemplo sencillo cómo utilizar interfaces de la API de Java. creamos un temporizador usando la interfaz más utilizada de Java: la interfaz ActionListener.
En esta clase vemos otra forma de realizar el ejemplo anterior utilizando una clase interna anónima. Es un "anticipo" de lo que se verá en clases posteriores.
En esta clase vemos la sintaxis y utilidad de las clases internas
En esta clase vemos las clases internas locales. Cuál es su sintaxis y su utilidad.
En esta clase vemos cómo optimizar el código de nuestras aplicaciones utilizando clases internas anónimas.
Comenzamos a ver en esta clase las interfaces gráficas. Vemos los paquetes y clases necesarias para construir interfaces gráficas.
Creamos el primer JFrame.
Vemos en esta clase alternativas a la hora de crear un JFrame en cuanto a la organización del código.
En esta clase vemos cómo ubicar un JFrame en el centro del monitor, maximizar, redimensionar y dar título a la ventana.
Vemos en esta clase cómo cambiar la imagen de la ventana del JFrame. Para ello necesitamos utilizar las clases Toolkit, Image y JFrame con algunos de sus métodos.
Vemos en esta clase cómo escribir texto plano en el JFrame.
En esta clase vemos el uso de las clases Color y Font para manejar tipografías y colores.
Simplificamos el código del ejemplo de clases anteriores utilizando clases internas anónimas.
En esta clase vemos cómo hacer dibujos simples en el JFrame
En esta clase vemos cómo utilizamos la biblioteca Java 2D para dibujar en el Frame. Utilizamos la clase Graphics2D y metodos asociados.
En esta clase vemos cómo gestionar el color en las interfaces gráficas. Utilizamos para ello la clase Color y diferentes métodos de Graphics2D y Color.
En esta clase vemos cómo establecer el tipo de fuente con la que se escribirá en la interface gráfica. Vemos también cómo averiguar las fuentes instaladas en el sistema operativo donde se ejecutará la interface gráfica
Comenzamos a ver en esta clase cómo incluir imágenes en las interfaces gráficas
Vemos algunas cosas más sobre el manejo de imágenes, como por ejemplo el método copyArea. También cómo obtener el tamaño de una imagen desde código para después utilizar ese tamaño en la interfaz.
Comenzamos a ver el tema de los eventos. Fundamental a la hora de poder interactuar con una interface gráfica en Java.
Llevamos ala práctica lo visto en la clase anterior elaborando un ejemplo sencillo en el que tres botones responden al evento clic del ratón
En esta clase cambiamos el oyente del ejemplo anterior. La aplicación funcionará igual, pero cambiaremos el oyente para entender mejor el funcionamiento de los eventos
Vemos cómo manejar eventos de ventana. Utilizamos para ello la interfaz WindowListener y sus métodos.
En esta clase vemos qué son las clases adaptadoras y cuál es su utilidad a la hora de trabajar con eventos.
En esta clase vemos cómo ejecutar acciones bajo un cambio de ventana sin especificar.
En esta clase vemos los eventos de teclado. Cómo hacer que un programa Java responda a una acción llevada a cabo por el usuario con el teclado.
En esta clase trabajamos con eventos de ratón. Idéntica la forma de trabajar que en los eventos anteriores de teclado y ventana pero utilizando las interfaces MouseListener y MouseMotionListener.
En esta clase vemos cómo manejar eventos de foco tanto en componentes como en ventanas. Utilizamos para ello la interfaz FocusListener.
Vemos en esta clase cómo detectar qué componente desencadenó la acción. Para ello utilizamos el método getSource() de la clase FocusEvent.
En esta clase comenzamos a ver cómo configurar varias fuentes de evento para un oyente en nuestras interfaces gráficas
En esta clase vemos cómo almacenar información en un objeto de tipo Action con formato clave:valor y cómo rescatar esa información para obtener información del objeto desencadenante del evento.
En esta clase terminamos el ejemplo asignando por fin combinaciones de teclas a los eventos. De esta forma contamos en nuestra interfaz gráfica con dos fuentes de evento para la misma acción: los JButton y la combinación de teclas.
Terminamos el tema de los eventos viendo cómo gestionar una única fuente de eventos con varios oyentes. Lo vemos con una sencilla aplicación gráfica de ejemplo
En esta clase trabajamos con la disposición por defecto o FlowLayout. Vemos como cambiar la alineación de componentes y modificar la separación (gap) entre ellos.
En esta clase trabajamos con BorderLayout. Este Layout nos permite ubicar los componentes en los cuatro puntos cardinales dentro de una interfaz gráfica además de en una zona central.
Comenzamos a ver en esta clase la disposición GridLayout. Y lo hacemos elaborando un ejemplo práctico, comenzamos a elaborar una calculadora Java
Continuamos con la práctica de la creación de la calculadora Java, en este caso completando la interfaz gráfica utilizando para ello una disposición GridLayout además de aplicar gran parte de lo visto hasta ahora en el curso.
Una vez que ya tenemos la interfaz gráfica de la calculadora, llega el momento de comenzar con la "lógica" de la calculadora.
Seguimos trabajando en la lógica de la calculadora. Conseguimos que la calculadora realice la operación suma.
Avanzamos en la creación de la lógica incluyendo una operación más. En este vídeo doy por terminada la práctica ya que el resto de operaciones serían igual. Puedes descargar la práctica ya terminada en la zona de archivos de este vídeo.
Si en la clase anterior veíamos las casillas de verificación (JCheckBox), toca ver en esta clase los botones de radio (JRadioButton). Son muy similares a los anteriores en cuanto a construcción y funcionamiento con alguna pequeña diferencia.
Comenzamos a ver los componentes Swing más importantes. En este vídeo tratamos los JTextField, cuadros de texto donde el usuario puede introducir texto corto.
Vemos en esta clase cómo gestionar eventos en un JTextField. Con esta gestión de eventos podremos detectar cuándo un usuario introduce nuevo texto, borra, cambia etc.
En este vídeo vemos cómo construir áreas de texto utilizando la clase JTextArea. Creamos un sencillo ejemplo.
En esta clase vemos los JCheckBox o casillas de verificación.
Vemos otro nuevo componente: los clásicos "cuadros desplegables", llamados JComboBox en Java
Ya quedan pocos componentes Swing. El que vemos en este vídeo unos de los últimos: el JSlider. Típica barra deslizante utilizada para hacer zoom sobre objetos o cambiar el tamaño de una fuente por ejemplo.
En esta clase vemos el componente JSpinner. Es muy similar al anterior en cuanto a funcionamiento y construcción
Para terminar con esta sección de componentes Swing, vemos cómo elaborar menús en interfaces gráficas.
Propongo una práctica guiada que se explica en este vídeo
Creamos la carcasa de la interfaz gráfica y la barra superior de menús
Creamos el área de texto y construimos un método capaz de configurar las opciones de menú.
Continuamos con la práctica del procesador de textos. En este vídeo agregamos los comportamientos de los menús
Continuamos con la práctica guiada de creación de Porcesador de Textos viendo cómo detectar las características del texto ya escrito en el JTextPane para poder aplicarle características nuevas.
Terminamos de construir el procesador de textos. Utilizamos la clase StyledEditorKit para manipular texto seleccionado.
Vemos en este vídeo cómo construir barras de herramientas en interfaces gráficas con swing
Vemos en esta clase cómo añadir menús emergentes en nuestras aplicaciones gráficas. Los menús emergentes son los que se ejecutan al hacer clic con el botón secundario (derecho) del ratón.
Os propongo un ejercicio recopilatorio. Un procesador de texto algo mas "avanzado" que el que hemos hecho en vídeos anteriores
Comenzamos a ver las disposiciones avanzadas en Swing para colocar componentes en un contenedor con mayor precisión. En esta clase vemos la disposición "Box".
En este vídeo trabajamos con la disposición de tipo Spring o "muelle". Esta disposición "estira" y "contrae" la distancia de separación que hay entre componentes colocando entre ellos una especie de muelle virtual. El "diseño líquido" del Swing.
En esta clase comenzamos a ver cómo trabajar con disposiciones libres que nos permitirán ubicar componentes Swing allá donde queramos sin necesidad de dividir el contenedor en cuadrícula, puntos cardinales etc.
Vemos en esta clase cómo crear nuestras propias clases que construyan disposiciones libres con el objetivo de poder reutilizarlas en el futuro en cualquier tipo de contenedor.
Vemos en esta clase qué es JavaFx, el sucesor de Swing.
Trasladamos a código lo visto en la clase anterior creando una aplicación gráfica sencilla. Algunas cosas aún no estamos en disposición de entenderlas ya que aún no las hemos visto en el curso a estas alturas pero lo iremos viendo poco a poco.
En esta clase vemos qué son los archivos JAR y para qué sirven. Empaquetamos con Eclipse nuestra primera aplicación generando un JAR.
Vemos en esta clase cómo crear JAR ejecutables que se puedan distribuir y ejecutar en cualquier plataforma. Los JAR ejecutables nos permiten correr ualquier aplicación Java sin necesidad de hacerlos desde un IDE.
Bienvenidos al curso "Programación Java SE desde 0 al infinito". Este curso es apto para personas que deseen aprender a programar en Java, tanto si no tienen ningún conocimiento de programación como si ya cuentan con algún conocimiento en otros lenguajes. También es un curso válido para personas que ya tengan conocimientos previos en Java y deseen ampliar estos conocimientos.
Se hará especial hincapié en la práctica y por ello se acompañará el curso con numerosos ejercicios para practicar, ejemplos y documentos adicionales de apoyo a las lecciones en vídeo.
Se subirán nuevos vídeos y contenidos todas las semanas hasta finalizar el curso por completo. Temario del curso:
Instalación del software necesario
Fundamentos y estructuras básicas
POO
Interfaces y clases internas
Aplicaciones gráficas
Eventos
Layouts
Componentes Swing
Disposiciones avanzadas
Archivos JAR
Excepciones
Streams
Serialización
Manipulación de archivos
Programación genérica
Threads
Colecciones
Sockets
JavaFX
Introspección y recursividad
Aunque no es necesario tener conocimientos previos en programación, si es necesario tener conocimiento a nivel usuario de una computadora.