1/70
Colección de términos técnicos sobre Programación Orientada a Objetos, Spring Boot, Microservicios, Bases de Datos, DevOps y Testing basados en Java.
Name | Mastery | Learn | Test | Matching | Spaced | Call with Kai | Chat |
|---|
No analytics yet
Send a link to your students to track their progress
Encapsulamiento
Ocultar el estado interno de un objeto y obligar a que todo acceso sea a través de métodos públicos (getters y setters).
Herencia
Mecanismo que permite a una clase nueva adquirir las propiedades y métodos de una clase existente.
Polimorfismo
La capacidad de un objeto de tomar muchas formas, permitiendo que un mismo método actúe de manera diferente según el objeto que lo ejecute.
Abstracción
Enfocarse en qué hace un objeto en lugar de cómo lo hace, ocultando los detalles complejos.
HashMap
Estructura de datos que no es segura para hilos (not thread-safe); si varios hilos lo modifican a la vez se rompe, pero es más rápido.
ConcurrentHashMap
Estructura segura para hilos (thread-safe) que bloquea solo partes del mapa (segmentos) para permitir accesos simultáneos sin perder rendimiento.
Interfaz funcional
Una interfaz que tiene exactamente un método abstracto y se usa como base para las expresiones Lambda; ejemplos incluyen Predicate, Function y Consumer.
Streams
Una secuencia de elementos que permite procesar colecciones de datos de forma declarativa (filtrar, mapear, transformar) sin modificar la fuente original.
Optional
Un contenedor que puede o no contener un valor no nulo, utilizado para evitar el NullPointerException de forma elegante.
== vs equals()
El operador == compara referencias de memoria en objetos, mientras que equals() compara el contenido o valor lógico de los objetos.
Checked vs Unchecked Exceptions
Las Checked (ej. IOException) son obligatorias de manejar por el compilador; las Unchecked heredan de RuntimeException y suelen ser errores de lógica del programador.
Spring Boot
Extensión de Spring Framework que elimina la configuración pesada (boilerplate) mediante la filosofía de "convención sobre configuración".
Bean
Un objeto que es instanciado, ensamblado y administrado por el contenedor de Inversión de Control (IoC) de Spring.
@Component
Anotación genérica que le indica a Spring que una clase es un componente administrado para crear un Bean de ella.
@Service
Especialización de @Component que marca a la clase como parte de la capa de negocio o lógica.
@Repository
Especialización de @Component destinada a la capa de acceso a datos (DAO) que traduce automáticamente excepciones de la base de datos a excepciones de Spring.
Inyección de Dependencias
Patrón de diseño donde un objeto no crea las clases que necesita, sino que Spring se las inyecta desde fuera.
@Autowired
Anotación que le pide a Spring buscar e inyectar automáticamente la dependencia requerida en ese lugar.
@Configuration
Indica que una clase contiene métodos anotados con @Bean para definir configuraciones personalizadas del framework.
@Transactional
Asegura que un método se ejecute dentro de una transacción de base de datos, realizando un rollback automático si algo falla.
Spring Actuator
Herramienta que expone endpoints como /health o /metrics para monitorear el estado y la salud de la aplicación en producción.
Microservicio
Enfoque de arquitectura donde una aplicación se divide en servicios pequeños, independientes, acoplados de forma laxa y comunicados por red.
API Gateway
Punto de entrada único para todos los clientes que se encarga del enrutamiento, autenticación, control de tráfico y balanceo de carga.
Service Discovery
Registro dinámico (como Netflix Eureka) donde cada microservicio se registra para que los demás sepan en qué dirección IP y puerto encontrarlo.
Circuit Breaker
Patrón que evita fallos en cascada; si un servicio falla repetidamente, el circuito se "abre" y devuelve una respuesta rápida de error o por defecto.
Resilience4j
Biblioteca ligera diseñada para sistemas distribuidos que implementa patrones como Circuit Breaker, Rate Limiter, Retry y Bulkhead.
Escalabilidad horizontal
Aumentar la capacidad del sistema añadiendo más servidores o instancias a la infraestructura.
Observabilidad
Capacidad de entender el estado interno de un sistema mediante tres pilares: Métricas, Logs y Trazas (Traces).
Programación reactiva
Paradigma orientado al manejo de flujos de datos asíncronos y al cambio, diseñado para procesar eventos sin bloquear hilos de ejecución.
Mono
Publicador reactivo de la librería Reactor que emite 0 o 1 elemento (o un error).
Flux
Publicador reactivo de la librería Reactor que emite de 0 a N elementos.
No bloqueante
Significa que el hilo que inicia una operación no se queda esperando a que termine, liberándose para otras tareas hasta que los datos estén listos.
Backpressure
Mecanismo que permite al consumidor decirle al proveedor cuántos datos puede procesar a la vez para evitar saturarse.
Spring WebFlux vs Spring MVC
Spring MVC usa hilos bloqueantes (Tomcat), mientras que WebFlux se basa en bucles de eventos no bloqueantes (Netty).
Schedulers.boundedElastic()
Componente de programación reactiva que gestiona hilos para tareas que son bloqueantes.
REST
Estilo de arquitectura para sistemas distribuidos basado en el protocolo HTTP para la transferencia de datos.
OpenAPI
Especificación estándar de descripción de interfaz para APIs REST, escrita habitualmente en JSON o YAML.
Swagger
Conjunto de herramientas que implementan la especificación OpenAPI para generar documentación visual e interactiva.
OAuth2
Protocolo estándar de la industria para la autorización que permite acceso limitado a servicios de terceros sin compartir contraseñas.
JWT (JSON Web Token)
Estándar abierto para transmitir información de forma segura como un objeto JSON inmutable y firmado digitalmente.
Autenticación vs Autorización
La autenticación responde a "¿Quién eres tú?", mientras que la autorización responde a "¿Qué tienes permiso de hacer?".
CORS (Cross-Origin Resource Sharing)
Mecanismo de seguridad del navegador que bloquea peticiones desde dominios distintos al del servidor a menos que haya permiso explícito.
Refresh Token
Token de larga duración usado para solicitar un nuevo Access Token cuando este ha expirado sin pedir credenciales al usuario.
JUnit
Framework estándar en Java para escribir y ejecutar pruebas automatizadas, principalmente unitarias.
Mockito
Framework de simulación (mocking) usado para aislar la clase bajo prueba de sus dependencias reales mediante objetos simulados.
Mock
Objeto falso que imita el comportamiento de una dependencia real permitiendo programar sus retornos.
Prueba unitaria
Prueba automatizada que verifica el funcionamiento de una pequeña pieza de código aislada sin interactuar con DB o redes.
Prueba de integración
Prueba que verifica que múltiples componentes o sistemas interactúan correctamente entre sí.
Cobertura de código
Métrica que indica el porcentaje de líneas de código ejecutadas por la suite de pruebas automatizadas.
TDD (Test-Driven Development)
Metodología donde se escribe primero la prueba (Rojo), luego el código para que pase (Verde) y finalmente se limpia el código (Refactorizar).
@InjectMocks
Anotación de Mockito que crea una instancia real de la clase a probar e inyecta en ella los objetos anotados con @Mock.
Docker
Plataforma de contenedores que empaqueta una aplicación con sus dependencias para asegurar que corra igual en cualquier máquina.
Kubernetes
Orquestador de código abierto para automatizar el despliegue, escalado y gestión de aplicaciones en contenedores.
Pod
La unidad de ejecución más pequeña en Kubernetes que puede contener uno o más contenedores compartiendo almacenamiento y red.
AKS (Azure Kubernetes Service)
Servicio administrado de Kubernetes en la nube de Microsoft Azure.
GitLab CI/CD
Herramienta que permite automatizar compilación, pruebas y despliegue mediante un archivo .gitlab-ci.yml.
SonarQube
Plataforma de análisis estático que inspecciona la calidad del código para detectar bugs, vulnerabilidades y deuda técnica.
Fortify
Herramienta de seguridad para análisis estático y dinámico (SAST/DAST) que busca vulnerabilidades críticas en el código.
Artifactory
Gestor de repositorios de artefactos binarios que almacena librerías (.jar) o imágenes Docker de forma segura.
Azure Key Vault
Servicio en la nube de Azure para almacenar secretos (claves de API, contraseñas) de forma segura.
INNER JOIN vs LEFT JOIN
INNER JOIN devuelve filas con coincidencias en ambas tablas; LEFT JOIN devuelve todas las de la izquierda y las coincidentes de la derecha o NULL.
Índice SQL
Estructura de datos que mejora la velocidad de búsqueda a costa de espacio adicional y escrituras más lentas.
Clave primaria
Campo que identifica de forma única e irrepetible a cada fila de una tabla y no permite valores nulos.
ACID
Propiedades de una transacción: Atomicidad (Todo o nada), Consistencia, Isolation (Aislamiento) y Durabilidad.
Deadlock
Situación de bloqueo mutuo donde dos transacciones retienen recursos que la otra necesita, esperando infinitamente.
Execution Plan
Ruta detallada que el motor de la base de datos decide seguir para ejecutar una consulta SQL de la forma más óptima.
Feign Client
Cliente HTTP declarativo de Netflix integrado en Spring Cloud para llamar a APIs REST mediante interfaces Java.
Quarkus
Framework de Java optimizado para Kubernetes que destaca por bajo uso de memoria y arranque instantáneo mediante compilación nativa (GraalVM).
Patrón Saga
Patrón arquitectónico que gestiona la consistencia de datos en microservicios mediante transacciones locales y acciones de compensación.
Orquestación vs Coreografía
En orquestación un componente central dirige el proceso; en coreografía cada microservicio reacciona autónomamente a eventos (ej. Kafka).
Eventos de dominio
Acontecimientos del negocio que interesan registrar o reaccionar a ellos, como PedidoCreado o PagoRechazado.