Programa

Programa

El programa de la materia incluye los siguientes temas:

  • Conceptos propios de Java. Tipos primitivos. Clases e instancias. Clases Wrapper de tipos primitivos. Boxing y unboxing automático: Ventajas y problemas. Operador == contra método equals. Interfaz Comparable y Comparator. Clases, clases abstractas e interfaces: Diferencias y similitudes. Modificadores de acceso. Modificador static, final, transient y volatile para métodos y clases. Métodos default. Tipo de declaración de variable y tipo de la variable. Conceptos de la programación orientada a objetos.

  • Generics, excepciones y errores. Generics y su impacto en la herencia. Efecto de los generics métodos brigde y chequeo en compilación y runtime de tipos. Invariantes del programa y verificación con assertions. Introducción a herramientas de construcción de proyecto y manejo de dependencias: maven y gradle.

  • Colecciones. Diferencias entre las interfaces List, Set y Map. Interfaces Iterable e Iterator. Implementaciones de las colecciones, y cómo seleccionar la más apropiada. Excepciones más comunes.

  • Programación Funcional. Concepto de streams. Filter, Map, FlatMap, Reduce. Tipos de streams, expresiones lamba.

  • Concurrencia. Hilos de ejecución (Threads), execurtors, Fork-Join. Estructuras de sincronización, futuros o promesas (Future), Callable vs Runnable. Mutex, semaforos, barreras. Patrones de concurrencia: Lock, Future, Executors, Fork/Join, parallelStream, Barriers.

  • Reflexión - anotaciones. Acceso a clases, métodos y variables de instancia de forma programática. Clases: Class, Method y Field. Ventajas y desventajas. Proxies dinámicos. Anotaciones.

  • Input/Ouput – Documentación. Archivos: File, FileWriter, FileStream, networking básico, sockets, expresión try-with-resources.

  • Debugging – Testing – TDD. Debugging en IDE. Herramientas de profiling. Problemas con el uso de memoria: Garbage Collection, GC Overhead limit. Debugging: Java VisualVM, Java Mission Control, Logging. Performance – Profiling. Profiling de Aplicaciones: Memoria, CPU, Métodos, Flamegraphs. Problemas con el GC.

  • Patrones de diseño orientado a objetos. Decorator, Factory, Singleton, Adapter, Façade, Command, Strategy, Template, Visitor.

  • Base de datos y Java. Mapeo Objeto Relacional JPA. Relaciones entre clases cardinalidades, herencias. Transacciones. JPQL, consultas, mapeos, operaciones. Utilización de Data Transfer Object (DTO) en consultas JPQL.


Nota: Las clases no necesariamente se desarrollarán en este orden.

Previo al inicio del curso se proporcionará a los alumnos material de repaso de conceptos de Java.

Aprobación de la materia

Para aprobar la cursada se deberán entregar diversos trabajos prácticos a definir sobre las temáticas desarrolladas durante el curso. Los trabajos pueden ser desarrollados de forma individual o en grupo.

Asimismo, se desarrollarán quizzes opcionales en Classroom y un simulacro de entrevista de trabajo, también opcional.