TEMARIO - CURSO DE JAVA
LO QUE APRENDERÁS
● Aprende a programar desde cero con Java hasta avanzado utilizando el
mejor IDE IntelliJ IDEA (versión community o free)
● Domina la programación funcional de Java 8 con Expreciones Lambda y
el API Stream
● Comprende Java y el paradigma de la programación orientada a objetos
para futuros trabajos
● Aprende Java desde cero usando las mejores prácticas POO, sus
principios y Patrones de Diseños
● Aprende a escribir pruebas unitarias con JUnit 5 y Mockito
● Domina los Threads (hilos) y aplicaciones concurrentes en Java
● Aprende a manejar errores haciendo uso de Excepciones
● Desarrollar aplicaciones web reales utilizando Spring Framework 5 con
Spring Boot y Data JPA.
● Desarrolla una aplicación Full Stack completa con Spring 5 + JPA + API
Restful.
● Al finalizar el curso, serás capaz de presentarte y aprobar el examen de
certificación de Java Oracle
● Se agregan nuevos videos cada día, siempre tendrás acceso a
contenido ACTUALIZADO!
● Soporte CONTÍNUO con profesor online, PROFESOR RESPONSABLE,
publica tus dudas y responderé en menos de 8 horas.
● Aumenta tus oportunidades laborales.
INTRODUCCIÓN
● Instalación JDK
● Instalación IntelliJ IDEA
● Creando nuestra primera aplicación
● Ejemplo Hola Mundo en Java
VARIABLES
● Introducción a las variables
● Ejemplos de variables
● Reglas para definir una variable
● Introducción a los primitivos
● Primitivos numéricos enteros
● Primitivos numéricos de punto flotante
● Primitivos numéricos de punto flotante y sus constantes
● Primitivo char o caracter
● Char y caracteres especiales
● Primitivo boolean o lógico binario
● Sistemas numéricos: decimal, binario, octal y hexadecimal
● Sistemas numéricos y entradas de datos desde ventana de dialogo
● Sistemas numéricos y entradas de datos desde el terminal
● Conversión de cadenas a primitivos
● Conversiones de tipo primitivos a cadenas
● Conversiones entre tipos primitivos
TIPO STRING: CADENAS
● Introducción a los String
● Creando objeto String en la literal vs operador new
● Concatenando String
● Inmutabilidad
● Test rendimiento concatenar con operador (+) vs método concat() vs
StringBuilder
● Validar un String
● Métodos importantes del objeto String parte 1
● Métodos importantes del objeto String parte 2
● Obtener la extensión de un archivo
● Algunos métodos útiles para convertir un String en un Arreglo
OPERADORES
● Introducción a los operadores
● Operadores Aritméticos
● Operadores de Asignación
● Operadores Unarios
● Operadores de Incremento y Decremento
● Operadores Relacionales
● Operadores Lógicos
● Precedencia en los operadores lógicos
● Ejemplo login y uso de operadores lógicos
● Ejemplo login usando arreglos
● Operador Ternario
● Ejemplo login con operador ternario
● Operador Ternario número mayor
● Operador Instanceof (Tipo de)
● Operador Instanceof con tipos abstractos
● Precedencia de los operadores
● Modo depuración paso a paso
FLUJOS DE CONTROL
● Introducción a flujos de control
● Flujo de control if else
● Flujo de control if else ejemplo año bisiesto
● Flujo de control swich case
● Sentencia swich case ejemplo nombre del mes
● Swich case ejemplo número de dias del mes
● Introducción a flujos de control de bucles
● Flujo de control for
● Iterando arreglos con sentencia for y palabras reservadas break y
continue
● Flujo de control while y do while
● Sentencia foreach
● Etiquetas en las sentencias for y while
● Ejemplo buscar con sentencias for anidadas y etiquetas
● Modo depuración sentencias if else y switch case
● Modo depuración sentencias for y foreach
CLASES WRAPPER
● Introducción a las clases Wrapper
● Clase Wrapper Integer
● Autoboxing y unboxing
● Clases Wrapper numéricas y operadores relacionales
● Clase Wrapper Boolean
● El método getClass() del objeto para reflexión y metadata
VALOR V/S REFERENCIA
● Pasar argumento por valor
● Pasar argumento por referencia
● Pasar argumento por referencia objeto persona
LAS CLASES DATE Y CALENDAR
● La clase Date y formatos de fechas
● Tiempo en milisegundos con método getTime()
● La clase Calendar
● Convertir una fecha String a objeto del tipo Date
● Comparar fechas
LA CLASE SYSTEM
● Obtener propiedades del sistema
● Agregar y customizar propiedades y configuraciones de la aplicación
● Obtener las variables de ambiente del sistema operativo
● Otras características y funciones útiles de la clase System
● La clase Runtime para ejecutar aplicaciones del S.O
LA CLASE MATH
● La clase Math parte 1
● La clase Math parte 2 (trigonometría)
● La clase Math y el método random() para generar números aleatorios
● La clase Random de java util
LÍNEA DE COMANDO
● Línea de comando compilar y ejecutar con argumentos
● Línea de comando ejemplo calculadora
● Pasar argumentos de línea de comando en Intellij
● Descargar Código Fuente
ARREGLOS
● Introducción a los arreglos
● Ejemplo de un arreglo de enteros
● Ejemplo de un arreglo de string y ordenar con sort
● Iterando arreglos
● Iterando en orden inverso un arreglo
● Modificando el arreglo en reverso
● Ordenamiento algoritmo burbuja
● Ordenamiento algoritmo burbuja método optimizado
● Reutilizando algoritmo burbuja
● Imprimiendo el i-ésimo número por el principio y el i-ésimo por el final
● Combinar dos arreglos en un tercero
● Combinar dos arreglos en un tercero con múltiples elementos
● Obtener el número mayor de un arreglo de enteros
● Detectar orden del arreglo
● Copiar pares e impares de un arreglo de enteros y en sus respectivos
arreglos
● Sistema de notas de alumnos por asignaturas
● Buscar elementos en un arreglo
● Mover los elementos en una posición desde el inicio del arreglo hasta el
final
● Agregar un elemento en una posición indicada y mover los siguientes
elementos
● Agregar un elemento en una posición adecuada de manera que se
mantenga ordenado
● Eliminar un elemento del arreglo
● Insertando un nuevo elemento e incrementando el tamaño del arreglo
● Descargar Código Fuente
MATRICES: ARREGLOS BIDIMENSIONALES
● Introducción a las matrices
● Ejemplo de una matriz de enteros
● Ejemplo de un arreglo de string e iterando con for
● Tamaños de columnas variable en una matriz
● Buscando un elemento en una matriz usando etiquetas y break
● Ejecutando en modo depuración
● Matriz simétrica
● Creando la matriz transpuesta de una matriz
● Operaciones aritméticas en matrices
● Sumar filas y columnas de una matriz
● Límites inferior y superior de la matriz y la diagonal principal
● Descargar Código Fuente
PROGRAMACIÓN ORIENTADA A OBJETOS: CLASES Y OBJETOS
● Introducción a clases y objetos
● Creando nuestra primera clase
● Creando objetos con el operador new
● Agregando métodos
● Métodos con argumentos
● Métodos con argumentos, sobrecarga y encapsulamiento
● Principio de ocultación de los atributos
● Ocultación métodos get y set
● Implementando constructor
● Sobrecarga de constructores
● El método equals
● El método equals segunda parte
● El método toString
● Atributos y métodos estáticos de la clase
● Atributos y métodos estáticos 2º parte
● Atributos constantes final
● Atributos constantes final 2º parte (colores)
● Enumerador Color (enum)
● Implementando enumerador con más atributos
● Utilizando enum con sentencias switch case
● Iterando enum con foreach
● Diagrama de clases UML y relaciones de clases/objetos
● Creando las clases relacionadas
● Modificando clase con atributos de relaciones de objetos
● Soluciones a posibles errores NullPointerException
● Relacionando los demás objetos
● Añadiendo el método add para agregar elementos de un arreglo
● El método compareTo para ordenar objetos
PROGRAMACIÓN ORIENTADA A OBJETOS: PAQUETES
● Introducción a los paquetes
● Creando nuestros primeros package y sus clases
● Control de acceso mediante modificadores
● Alcance de los modificadores de accesos
● Import estático
● Descargar Código Fuente
PROGRAMACIÓN ORIENTADA A OBJETOS EJEMPLO: FACTURAS
● Introducción y diagrama de clases UML
● Creando las clases del modelo
● Calculando el importe de la línea y gran total de la factura
● Generando detalle de la factura
● Creando la clase principal de aplicación de facturas
● Optimizando la aplicación
● Modo depuración paso a paso
● Descargar Código Fuente
PROGRAMACIÓN ORIENTADA A OBJETOS - SOBRECARGA DE MÉTODOS
● Introducción a la sobrecarga
● Implementando clase con sobrecarga de métodos
● Corriendo ejemplo sobrecarga en modo debug
● Varargs número variable de argumentos
● Sobrecarga y métodos estáticos
● Descargar Código Fuente
PROGRAMACIÓN ORIENTADA A OBJETOS - HERENCIA
● Introducción a la herencia
● Creando la jerarquía de clases
● Sobre el modificador de acceso protected
● Herencia y el API de reflexión de java
● Llamando a los constructores en cadena
● La referencia super en constructor
● Creando instancias vía constructores con argumentos y control de tipos
● Sobreescritura de métodos en la herencia
● Sobre escritura método toString
● Debug mode
● Modificador final para evitar la herencia y la sobreescritura de métodos
● Resumen con diagrama UML de Clases
PROGRAMACIÓN ORIENTADA A OBJETOS - HERENCIA Y CLASES
ABSTRACTAS
● Introducción a las clases abstractas
● Diseño de clases UML
● Creando clase padre abstracta ElementoForm
● Creando clases hijas concretas InputForm y TextareaForm
● Creando la clase concreta SelectForm
● Creando la clase ejemplo con el método main EjemploForm
● Dibujando elementos del formulario
● Clases Anónimas
● Creando la clase abstracta Validador con tres clases hijas concretas
● Creando la clase concreta LargoValidador para validar el min y máx de
caracteres
● Creando la clase concreta EmailValidador
● Implementando la validación en la clase abstracta ElementoForm
● Validando los elementos del formulario
● Añadiendo el nombre del campo en los mensajes de errores
● Implementando interface para formatear mensajes de errores
PROGRAMACIÓN ORIENTADA A OBJETOS - INTERFACES
● Introducción a las interfaces
● Creando nuevo proyecto y clase abstracta con su jerarquía
● Añadiendo nueva clase concreta a la jerarquía
● Creando la clase ejemplo con el método main
● Añadiendo la clase Libro y la interface
● Añadiendo algunas mejoras y optimizaciones en el código
● Métodos default y static en interfaces
PROGRAMACIÓN ORIENTADA A OBJETOS - EJEMPLO INTERFACE
REPOSITORIO
● Creando interface Crud Repositorio y otras
● Creando implementación concreta y herencia multiple de interfaces
● Implementando métodos de interfaces para ordenar y paginar
● Creando la clase ejemplo con el método main y probando el Crud
Repositorio
● Optimizando el código
● Herencia múltiple entre interfaces
TIPOS GENERICOS (JAVA GENERICS)
● Métodos genéricos - Generic Methods
● Métodos genéricos con límites - Bounded Generics
● Métodos genéricos con tipo List y comodines - Wildcards Generics
● Métodos genéricos máximo de tres objetos usando Comparable
● Clases genéricas
● Clases genéricas - añadiendo ejemplo con main
● Clases genéricas - modificando la clase genérica con el parámetro T
● Ejemplo Repositorio con tipos genéricos (Generic type)
● Ejemplo Repositorio con límites - Bounded Generics
● Implementando un Repositorio de Producto
MANEJO DE EXCEPCIONES
● Introducción a las Excepciones en Java
● Ejemplos de manejos de excepciones no comprobadas (unchecked)
● Implementando nuestras propias excepciones checked
● Implementando nuestras propias excepciones checked - parte 2
● Manejo de Excepciones en el ejemplo Crud Repositorio
● Manejo de Excepciones en el ejemplo Crud Repositorio - parte 2
ESTRUCTURA DE DATOS - API DE COLECCIÓN DE JAVA
● Introducción
● Ejemplo HashSet
● Ejemplo HashSet detectando duplicados
● Ejemplo TreeSet
● Ejemplo TreeSet Comparable y Comparator
● Singularidad en TreeSet y HashSet
● Formas de loop o iteraciones en los Collection Set y List
● Ejemplo ArrayList Comparable y Comparator
● Ejemplo ArrayList métodos más importantes
● Ejemplo LinkedList (Lista Doblemente Enlazada) - Pilas y colas
● List Iterator
● Ejemplo HashMap
● Ejemplo HashMap métodos más importantes
● Ejemplo HashMap con valor del tipo Object y relaciones de objetos
● Ejemplo HashMap con valor del tipo Object y relaciones de objetos -
parte 2
● Ejemplo TreeMap
THREADS - HILOS Y CONCURRENCIA
● Introducción a los Threads
● Creando hilos heredando de la clase Thread
● Creando hilos implementando la interface Runnable
● Implementando hilos con expresiones lambda y Runnable
● El método join vs sleep
● Usando modificador synchronized para la sincronización de hilos
● Métodos wait() y notify() sincronización Productor Consumidor
● Métodos wait() y notify() sincronización Productor Consumidor - parte 2
● Ejemplo de sincronización Productor Consumidor con Java 8 Lambda
● Usando Timer y TimerTask para agendar tareas programadas
● Agendando tareas programadas que se repiten cada cierto periodo de
tiempo
● Executor Framework - Single Thread Executor
● Executor Framework - Future
● Executor Framework - Fixed Thread Pool
● Executor Framework - Personalizando parámetros del pool con
ThreadPoolExecutor
● Executor Framework - Tareas programadas con
ScheduledExecutorService
● Executor Framework - Tareas programadas que se repiten cada cierto
periodo
JAVA 8 PROGRAMACIÓN FUNCIONAL - EXPRESIONES LAMBDA
● Expresiones Lambda Consumidores o Consumer
● Referencias de métodos en expresiones lambda de tipo Consumer
● Expresiones Lambda Function
● Expresiones Lambda Predicate
● Creando nuestra propia expresión lambda con una interfaz funcional
JAVA 8 PROGRAMACIÓN FUNCIONAL - API STREAM
● Introducción a los Streams
● Creando un Stream
● El operador map
● El operador map parte 2
● El operador filter
● El operador anyMatch
● Un resumen al API Optional de java 8
● Operadores varios filter(), distinct(), reduce(),, sum() y
summaryStatistics()
● Operadores mapToInt(), sum() y summaryStatistics()
● Operador flatMap()
● Convirtiendo un List a un Stream
● Generando Stream infinito o bien emitiendo elementos en un intervalo
de tiempo
● Ejemplo flatMap facturas de usuarios
● Operador parallel()
JAVA 8 PROGRAMACIÓN FUNCIONAL - OPTIONAL
● Introducción a la clase Optional
● Ejemplo Repositorio usando Optional
● Optional métodos orElse() vs orElseGet()
● Optional método orElseThrow()
● Optional operadores map(), filter() y flatMap()
JAVA 8 DATE TIME
● Introducción
● Trabajando con LocalDate para fechas
● Trabajando con LocalTime para hora tiempo
● Formateando hora tiempo con DateTimeFormatter
● Trabajando con LocalDateTime para fecha y hora
● Trabajando con zonas horaria usando ZonedDateTime
● Trabajando con zonas horaria usando ZonedDateTime parte 2
● Trabajando con periodos y duración
JAVA ANNOTATIONS - USO DE ANOTACIONES
● Introducción y creando nuestra primera anotación
● Procesando las anotaciones usando el api de reflexión de java
● Creando la clase procesador JsonSerializador y agregando capitalizador
● Añadiendo nueva anotación para método @Target METHOD
RECURSIVIDAD
● Creando la clase Componente recursiva
● Añadiendo método recursivo que recorre el arbol
PATRONES DE DISEÑO
● Patrón Singleton
● Patrón Abstract Factory
● Patrón Abstract Factory parte 2
● Patrón Abstract Factory parte 3
● Patrón Decorator
● Patrón Decorator parte 2
● Patrón Composite
● Patrón Composite parte 2
● Patrón Observer
MANEJO DE ARCHIVOS
● Creando archivos
● Usando BufferedWriter y PrintWriter
● Leer archivos
BASE DE DATOS CON JDBC
● Introducción SQL
● Instalación MySQL
● Creando el esquema de base de datos
● Introducción al API JDBC
● Creando nuestro proyecto Java con JDBC
● Cerrando conexiones, recursos y manejo de errores
● Añadiendo la clase singleton de conexión a la base de datos
● La interface Repositorio
● Implementando la clase Repositorio
● Implementando la clase Repositorio parte 2
● Implementando la clase Repositorio parte 3 el CRUD
● La clase Repositorio parte 4 probando el CRUD
● Relaciones de tablas creando esquema DDL
● Relaciones de objetos del modelo o DTO
● Una conexión por sentencia u operación
BASE DE DATOS CON JDBC - POOL DE CONEXIONES
● Introducción
● Implementando pool de conexiones
BASE DE DATOS JDBC - TRANSACCIONES
● Introducción
● Ejemplo Transacciones Singleton
● Ejemplo Transacciones Singleton parte 2
● Ejemplo Transacciones con pool de conexiones
● Ejemplo Transacciones con pool de conexiones parte 2
● Ejemplo Transacciones con pool de conexiones parte 3 (obtener último
insert id)
● Ejemplo Transacciones con pool de conexiones parte 4
● Agregando la interface Service y su clase de implementación
transaccional
● Implementando los métodos de la clase Service
● Utilizando la clase Service en la clase de ejemplo con el main
UNIT TESTING - JUNIT 5
● Introducción pruebas unitarias
● Introducción JUnit 5
● Creando y configurando el proyecto con JUnit 5
● Escribiendo y ejecutando primeras pruebas unitarias con Assertions
● Escribiendo test para el saldo
● Test driven development TDD con JUnit
● TDD para débito y crédito
● Probando y afirmando excepciones con assertThrows en JUnit 5
● Añadiendo la clase Banco y la realcion con las cuentas
● Probando y afirmando las realciones entre Banco y Cuenta
● Usando el método assertAll
● Agregando mensajes de falla en los métodos assertions
● Usando anotaciones @DisplayName y @Disabled
● Ciclo de vida anotaciones @AfterEach y @BeforeEach
● Ciclo de vida anotaciones @AfterAll y @BeforeAll
● Test condicionales @EnabledOnOs, @EnabledOnJre,
@EnabledIfSystemProperty
● Ejecuciones de test condicionales con @EnabledIfEnvironmentVariable
● Ejecución de test condicional con Assumptions programáticamente
● Clases de test anidadas usando @Nested
● Repitiendo pruebas con @RepeatedTest
● Escribiendo pruebas parametrizadas con @ParameterizedTest
● Pruebas parametrizadas con @ParameterizedTest parte 2
● Pruebas parametrizadas con @ParameterizedTest parte 3
● Tagging tests con anotación @Tag
● Inyección de Dependencia & componentes testInfo y TestReporter
● Timeout en JUnit 5
● Maven surefire plugin
UNIT TESTING - MOCKITO
● Introducción
● Creando y configurando el proyecto con JUnit 5 y Mockito
● Implementando la clase Service
● Realizando primeras pruebas con mockito
● Agregando nuevas dependencias mock
● Probando nuevas dependencias mock
● Probando con verify
● Inyección de dependencia y anotaciones @Mock, @InjectMock y
@ExtendWith
● Realizando más pruebas del repositorio con el metodo guardar
● Test del id incremental en el método guardar usando Invocation
Argument
SPRING FRAMEWORK 5 - CREANDO WEBAPPS CON SPRING
● Importante: antes de comenzar con esta sección de Spring
● Introducción
● Instalación del Spring Tools Suite IDE
● Creando un proyecto Web con Spring Boot
● Estructura de una aplicación Spring Boot
● Creando el controlador y la vista
● Pasar datos a la vista
● Anotación @RequestMapping sobre el controlador
● Introducción MVC
● El objeto Model
● Directiva if de Thymeleaf
● Directiva each (foreach) de Thymeleaf
● Anotación @ModelAttribute
● Anotacion @RequestParam
● Obtener varios parámetros de la URL con @RequestParam
● Anotación @PathVariable
● Obtener varios parámetros de la ruta con @PathVariable
● Agregando recursos estáticos y estilos CSS personalizados
● Inyectar valores usando la anotación @Value
● Agregando otros archivos properties personalizados para los textos
● Retornando redirect y forward como respuesta en métodos del
controlador
● Despliegue y ejecución desde terminal (deploy)
SPRING FRAMEWORK 5 - INYECCIÓN DE DEPENDENCIA
● Creando nuevo proyecto y controlador
● Añadiendo la clase de servicio
● Implementando inyección de dependencia con la anotación @Autowired
● Inyectando mediante la interface
● Introducción al contenedor y la inyección de dependencias
● Inyección de dependencias vía constructor y métodos setters
● Anotación @Primary
● Anotación @Qualifier
● Registrando componentes usando clase de configuración y la anotación
@Bean
● Ejemplo Factura y relaciones entre sus componentes
● Registrando componente ItemsFactura
● Creando el controlador FacturaController y su vista
● Registrando otras líneas para la factura
● Ciclo de vida del componente
● Contextos (Scope) de los componentes
SPRING FRAMEWORK 5 - FORMULARIOS THYMELEAF Y DATA BINDING
● Creando nuevo proyecto form
● Actualización: para Spring Boot 2.3.0 o superior agregar dependencia
validation
● Añadiendo la vista del formulario
● Método handler para recibir y procesar los datos enviados
● Creando la clase model del formulario
● Mapeando los campos del formulario al objeto model
● Validación del formulario usando anotaciones
● Añadiendo los mensajes de errores en la vista del formulario
● El atributo object de thymeleaf en el elemento form
● Mostrar valores de atributos del objeto model en el formulario
● La anotación @SessionAttributes para manter los datos durante el ciclo
del form
● La anotación @Size para rangos y @Email para validar correo
electrónico
● Mensajes de errores personalizados usando properties
● Archivos properties y acentos con UTF-8
● Validación personalizada usando anotación @Pattern para expresiones
regulares
● Validación personalizada usando una clase Validation
● Registrando una clase validador con la anotación @InitBinder
● Validación personalizada usando anotaciones
● Validación personalizada usando anotaciones ejemplo requerido
● Validación de números enteros con @Max @Min y NotNull
● Validación de fechas con @NotNull y dando formato con
@DateTimeFormat
● Validación de fechas con input type date de HTML5 y @Past y @Future
● Formateando fechas con @InitBinder y registrando un
CustomDateEditor
● Formateando fechas con @InitBinder y registrando un
CustomDateEditor Parte 2
● Implementando propio filtro custom property editor para convertir a
mayúscula
● Lista select desplegable
● Formateando fechas en vistas thymeleaf
● Llenando lista select con Map
● Llenando lista select con objetos de la clase País
● Añadiendo componente service de País
● Añadiendo componente pais property editor
● Implementando checkboxes
● Llenando checkboxes con Map
● Llenando checkboxes con objetos del tipo Role
● Añadiendo componente role property editor
● Checkbox booleano true o false
● Radio button
● Input type hidden
● Poblando país y roles
● Redirect después del POST procesar
● Añadiendo estilos CSS al formulario con Bootstrap
● Añadiendo estilos CSS Bootstrap a la plantilla resultado
● Cargando archivo css Bootstrap localmente
SPRING FRAMEWORK 5 - INTERCEPTORES HTTP
● Introducción a los interceptores Http
● Implementando interceptor TiempoTranscurrido
● Registrando interceptor en la configuración de spring
● Implementando fragment interceptor para reutilizar código en thymeleaf
● Saliendo del interceptor en peticiones POST http - return en post handle
● Retornando false en un interceptor
SPRING FRAMEWORK 5 - INTERCEPTORES HTTP HORARIO DE ACCESO A
CLIENTES
● Creando proyecto
● Creando interceptor horario
● Creando método handler cerrado
● Registrando interceptor
● Revisando error NullPointerException
SPRING FRAMEWORK 5 - MANEJO DE ERRORES
● Creando nueva aplicación y controlador
● Personalizando error 404 y 500
● Anotación @ControllerAdvice para manejo de excepciones
● Personalizando página de error para la excepción
NumberFormatException
● Manejando excepción personalizada creando clases Model y Service
● Añadiendo método handler ver
● Creando clase Exception personalizada
● Lanzamiento de exepción usando Api Optional de Java 8
SPRING FRAMEWORK 5 - CRUD USANDO SPRING DATA JPA
● Creando el proyecto
● Creando la clase Entidad JPA anotada con @Entity
● Creando la clase de Acceso a Datos o DAO con Entity Manager -
@Repository
● Creando controlador con la acción handler listar
● Creando la vista [Link]
● Decorando la vista listar con estilos CSS Bootstrap
● La consola H2 Database
● Agregando crear en Repositorio Dao y Controlador
● Creando la vista crear y formulario
● Mejorando formulario con estilos Bootstrap CSS
● Agregando campo fecha en formulario
● Agregando reglas de validación usando anotaciones
● Agregando mensajes de errores personalizados
● Agregando mensajes de errores sobre el formulario
● Agregando editar
● Agregando eliminar
● Agregando la clase Service
● Implementando el Dao con la interface CrudRepository
● Cambiando Datasource a MySQL en el proyecto
SPRING FRAMEWORK 5 - LAYOUT THYMELEAF
● Layout usando fragments en Thymeleaf
● Bonus track: Layout usando fragments en Thymeleaf - Parte 2
● Flash Messenger
REQUISITOS
● NO es necesario saber nada de nada de Java ni de programación,
comienza desde cero hasta los detalles
● NO es necesario conocimientos de Bases de Datos ni SQL
DESCRIPCIÓN
Aquí aprendas las mejores prácticas en desarrollo utilizando
programación orientado a objetos y Patrones de Diseños (GoF), Recursividad,
Programación Funcional, Expresiones Lambda y API Stream de Java 8, Hilos
(Threads), Concurrencia, Unit Testing con JUnit 5, Mockito, Spring Boot y
desarrollo Full Stack con Spring.
Te enseño paso a paso y desde cero a construir aplicaciones Java en su
última versión JDK 16+ aprovechando las características de la Programación
Orientada a Objetos (POO) mediante clases, clases abstractas, interfaces y
enumeraciones, principios orientado a objetos (herencia, abstracción,
encapsulamiento, ocultación, interfaces y polimorfismo etc.), clases y
métodos genéricos con el API Java Generic, API de Colecciones de objetos,
manejo de excepciones, concurrencia e hilos (Threads), Java 8 expresiones
lambda, Java 8 API Stream, Java 8 Optional, Java 8 Date/Time API,
Annotations, Recursividad, Patrones de diseños (GoF), Bases de Datos con
JDBC y operaciones CRUD (crear, leer, actualizar y eliminar), Patrón DAO y
DTO, JUnit 5, Mockito, Spring Framework, Spring Boot 2, Hibernate/JPA,
Desarrollo full stack con Spring y más.
¿PARA QUIÉN ES ESTE CURSO?
● Personas que estén estudiando informática y/o ingeniería
● Programadores y Desarrolladores que necesitan aprender Java
● Personas que dominan Java y quieran afianzar, actualizar y profundizar
sus conocimientos
● Personas que quieran aprender y crear aplicaciones en Java
● Personas apasionadas en el desarrollo de tecnologías
● Personas interesadas en el desarrollo backend que necesitan aprender
Java
El curso es completamente funcional con versiones de Java 8 y 11, 12, 13, 14,
15, 16 y superiores.
INSTRUCTOR:
ING. FERNANDO LÓPEZ VEGA
WA: (+57) 324-363-1451