Java Flashcards

(485 cards)

1
Q

¿Qué significan las siglas JDK y cuál es su función principal?

A

Java Development Kit. Es el conjunto de herramientas de software necesarias para desarrollar y compilar aplicaciones en Java.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

¿Cuál es la diferencia fundamental entre el JDK y el JRE?

A

El JRE sirve solo para ejecutar programas (JVM + librerías); el JDK incluye el JRE más herramientas de desarrollo como el compilador (javac).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

¿Qué componente de Java permite la filosofía ‘Write Once Run Anywhere’ (WORA)?

A

La JVM (Java Virtual Machine) que interpreta el bytecode de forma independiente al hardware y S.O.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

¿Qué comando se utiliza para compilar un archivo fuente .java y qué genera?

A

Se utiliza ‘javac’ y genera un archivo ‘.class’ que contiene bytecode.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

¿Qué es exactamente el Bytecode?

A

Es un código intermedio, de bajo nivel y neutral respecto a la plataforma que es ejecutado por la JVM.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

¿Qué comando Java se utiliza para ejecutar una clase compilada.class y qué método busca por defecto?

A

Se utiliza el comando ‘java’ y busca el método ‘public static void main(String[] args)’.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

¿Para qué sirve la herramienta ‘javadoc’ incluida en el JDK?

A

Para generar documentación técnica en formato HTML a partir de los comentarios especiales (/** … */) del código fuente.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

¿Qué herramienta del JDK permite empaquetar múltiples clases y recursos en un solo archivo comprimido?

A

La herramienta ‘jar’ (Java Archive).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

¿Qué es el compilador JIT (Just-In-Time)?

A

Un componente de la JVM que compila el bytecode a código máquina nativo en tiempo de ejecución para mejorar el rendimiento.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

¿Qué herramienta introducida en Java 9 permite un entorno interactivo REPL (Read-Eval-Print Loop)?

A

JShell.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

¿Qué herramienta del JDK se usa para listar los procesos Java (JVM) activos en el sistema?

A

jps (Java Virtual Machine Process Status Tool).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

¿Para qué sirve la herramienta ‘jstack’?

A

Para obtener un volcado de la pila (stack trace) de los hilos de un proceso y detectar bloqueos o deadlocks.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

¿Qué herramienta del JDK genera un volcado de memoria (heap dump) para analizar fugas de memoria?

A

jmap.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

¿Cuál es la función de ‘jstat’?

A

Monitorizar estadísticas de rendimiento de la JVM, especialmente del Garbage Collector y la compilación.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

¿Qué herramienta gráfica se utiliza para monitorizar y gestionar aplicaciones Java mediante JMX?

A

jconsole (o Java Mission Control).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

¿Qué comando usarías para ver el bytecode desensamblado de un archivo .class?

A

javap (The Java Class File Disassembler).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

¿En qué parte de la arquitectura Java residen las librerías estándar (API)?

A

Dentro del JRE (Java Runtime Environment).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

¿Qué significa que Java sea un lenguaje ‘interpretado y compilado’ a la vez?

A

Es compilado porque el código fuente pasa a bytecode (javac), e interpretado porque la JVM lee ese bytecode línea a línea (o vía JIT).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

¿Qué herramienta del JDK se usa para firmar archivos JAR?

A

jarsigner.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

¿Qué componente de Java es el encargado de la gestión automática de la memoria (liberar objetos no usados)?

A

El Garbage Collector (GC), que reside dentro de la JVM.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

¿Qué significan las siglas JRE y cuál es su propósito?

A

Java Runtime Environment. Proporciona el entorno necesario para ejecutar aplicaciones Java, pero no para desarrollarlas.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

¿Cuáles son los dos componentes principales del JRE?

A

La Máquina Virtual de Java (JVM) y las bibliotecas de clases estándar (Java API).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

¿Qué es el CLASSPATH en Java?

A

Es una variable de entorno o parámetro que indica a la JVM y a las herramientas de Java dónde buscar las clases (.class) y paquetes definidos por el usuario.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

¿Cuál es el parámetro de línea de comandos para especificar el CLASSPATH al ejecutar una aplicación?

A

-cp o -classpath.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
¿Qué sucede si una clase necesaria para la ejecución no se encuentra en el CLASSPATH?
La JVM lanza la excepción 'ClassNotFoundException' o el error 'NoClassDefFoundError'.
26
¿Qué es el Garbage Collector (GC)?
Es un proceso automático de la JVM encargado de identificar y eliminar objetos que ya no tienen ninguna referencia activa para liberar memoria en el Heap.
27
¿En qué área de la memoria de la JVM trabaja principalmente el Garbage Collector?
En el Heap (Montículo).
28
¿Puede un programador forzar la ejecución inmediata del Garbage Collector?
No. Se puede solicitar con System.gc(), pero es solo una sugerencia y la JVM decide cuándo ejecutarlo realmente.
29
¿Qué es la 'Young Generation' en el contexto del Garbage Collector?
Es el área del Heap donde se crean inicialmente los objetos nuevos. Se limpia con recolecciones menores (Minor GC).
30
¿Qué es la 'Old Generation' o 'Tenured Generation' en el Heap?
Es el área donde se mueven los objetos que han sobrevivido a varios ciclos de recolección en la Young Generation.
31
¿Cuál es la función del Class Loader dentro del JRE?
Cargar dinámicamente las clases de Java en la JVM durante el tiempo de ejecución.
32
¿Qué es el Verification Engine de la JVM?
Un componente que comprueba que el bytecode sea válido y no viole las restricciones de seguridad de Java antes de ejecutarlo.
33
¿Qué diferencia hay entre el PATH y el CLASSPATH?
El PATH es para que el sistema operativo encuentre ejecutables (java, javac); el CLASSPATH es para que la JVM encuentre clases de Java.
34
¿Qué componente del JRE traduce el bytecode a código máquina nativo?
El intérprete o el compilador JIT (Just-In-Time).
35
¿Qué significa que un objeto sea 'elegible para el Garbage Collector'?
Significa que el objeto ya no tiene ninguna referencia que apunte a él desde ninguna parte activa del programa.
36
¿Qué es un 'Stop-the-world' event en la ejecución del GC?
Un momento en el que la JVM detiene la ejecución de todos los hilos de la aplicación para poder realizar la recolección de basura de forma segura.
37
¿Cuál es la diferencia entre el JRE y la JVM?
La JVM es el motor que ejecuta el código; el JRE es el paquete que incluye la JVM más las librerías necesarias para que todo funcione.
38
¿Qué son las Java Standard Edition Libraries (Java API)?
Colecciones de código preescrito (como java.lang, java.util) que el JRE proporciona para tareas comunes como manejo de hilos o colecciones.
39
¿Qué variable de entorno suele apuntar al directorio de instalación del JRE o JDK?
JAVA_HOME.
40
¿Qué importancia tiene el archivo 'rt.jar' en versiones antiguas del JRE (anteriores a Java 9)?
Era el archivo que contenía todas las clases de tiempo de ejecución de la biblioteca estándar de Java.
41
¿Cuáles son los cuatro pilares fundamentales de la POO que implementa Java?
Abstracción, Encapsulamiento, Herencia y Polimorfismo.
42
¿Qué es una clase en Java?
Es un modelo o plantilla que define los atributos (estado) y métodos (comportamiento) comunes a todos los objetos de ese tipo.
43
¿Qué es un objeto en Java?
Es una instancia concreta de una clase que ocupa espacio en memoria y tiene un estado particular.
44
¿En qué consiste el principio de Encapsulamiento?
En ocultar los detalles de implementación de una clase y proteger el acceso a los datos mediante modificadores de acceso y métodos getter/setter.
45
¿Qué modificador de acceso se utiliza para que un atributo solo sea visible dentro de la propia clase?
private.
46
¿Qué es la Herencia en Java?
Es el mecanismo por el cual una clase (subclase) adquiere los atributos y métodos de otra (superclase) utilizando la palabra clave 'extends'.
47
¿Sostiene Java la herencia múltiple de clases?
No, Java solo permite la herencia simple (una clase solo puede extender de una única superclase) para evitar ambigüedades.
48
¿Qué es el Polimorfismo en Java?
Es la capacidad de un objeto de tomar diferentes formas; típicamente, cuando una referencia de una superclase apunta a un objeto de una subclase.
49
¿Qué diferencia hay entre Sobrecarga (Overloading) y Sobrescritura (Overriding)?
La sobrecarga ocurre en la misma clase con diferentes parámetros; la sobrescritura ocurre en una subclase para cambiar el comportamiento de un método de la superclase.
50
¿Qué palabra clave se utiliza para invocar a un constructor o método de la superclase?
super.
51
¿Qué es una clase abstracta?
Una clase declarada con 'abstract' que no se puede instanciar y que puede contener métodos sin implementar (métodos abstractos).
52
¿Qué es una Interfaz en Java?
Es un contrato que define métodos que una clase debe implementar, permitiendo una forma de 'herencia múltiple' de comportamientos mediante 'implements'.
53
¿Qué significa la palabra clave 'final' aplicada a una clase?
Significa que la clase no puede ser heredada (no puede tener subclases).
54
¿Qué significa la palabra clave 'final' aplicada a un método?
Significa que el método no puede ser sobrescrito (overridden) por ninguna subclase.
55
¿Cuál es la clase raíz de la que heredan todas las clases en Java de forma implícita?
java.lang.Object.
56
¿Para qué sirve el método 'toString()' de la clase Object?
Para devolver una representación en cadena (String) del objeto, útil para depuración e impresión.
57
¿Qué es la composición en el contexto de la POO?
Es una relación tipo 'tiene un' (has-a) donde una clase contiene una instancia de otra clase como uno de sus atributos.
58
¿Qué es un constructor en Java?
Un método especial con el mismo nombre que la clase que se ejecuta al crear una instancia y sirve para inicializar el objeto.
59
¿Qué sucede si no defines ningún constructor en tu clase Java?
El compilador inserta automáticamente un constructor por defecto sin argumentos (constructor vacío).
60
¿Qué es el 'acoplamiento' y por qué se busca que sea bajo en Java?
Es el grado de dependencia entre clases; se busca que sea bajo para que los cambios en una clase no afecten drásticamente a las demás.
61
¿Cuál es la sintaxis básica para declarar una clase pública en un archivo llamado Persona.java?
public class Persona { ... }
62
¿Qué palabra clave se usa para que una clase herede de otra y cuántas puede heredar?
Se usa 'extends' y solo puede heredar de una única clase.
63
¿Cómo se declara una interfaz en Java y qué modificador tienen sus métodos por defecto?
Se usa 'public interface Nombre { ... }' y sus métodos son 'public' y 'abstract' por defecto.
64
¿Qué palabra clave debe usar una clase para adoptar los métodos de una o varias interfaces?
La palabra clave 'implements'.
65
¿Qué es un 'default method' en una interfaz (introducido en Java 8)?
Es un método que incluye una implementación por defecto dentro de la interfaz, usando la palabra clave 'default'.
66
¿Cómo se define una constante dentro de una interfaz?
Cualquier variable declarada en una interfaz es implícitamente 'public static final'.
67
¿Qué es un 'enum' en Java?
Es un tipo especial de clase que representa un grupo de constantes fijas (ej. meses del año, días de la semana).
68
¿Cómo se declara un enumerado sencillo para los niveles de prioridad?
public enum Prioridad { ALTA, MEDIA, BAJA }
69
¿Pueden los 'enum' tener constructores, atributos y métodos en Java?
Sí, son clases completas y pueden tener todo ello, pero su constructor siempre es privado.
70
¿Qué método de los enum devuelve un array con todas sus constantes?
El método estático 'values()'.
71
¿Qué es una anotación en Java y con qué símbolo comienza?
Es un tipo de metadato que proporciona información sobre el código sin afectar directamente su ejecución; comienza con el símbolo '@'.
72
¿Para qué sirve la anotación @Override?
Para indicar al compilador que el método está sobrescribiendo un método de la superclase, evitando errores de escritura.
73
¿Qué hace la anotación @Deprecated?
Marca un método o clase como obsoleto, avisando al programador de que no debería usarse porque podría desaparecer en futuras versiones.
74
¿Para qué se utiliza la anotación @SuppressWarnings?
Para decirle al compilador que ignore determinados avisos o 'warnings' en esa parte del código.
75
¿Cómo se define una anotación personalizada en Java?
Usando la sintaxis 'public @interface NombreAnotacion { ... }'.
76
¿Qué es @Retention en el contexto de las anotaciones?
Es una meta-anotación que indica cuánto tiempo se conserva la anotación (SOURCE, CLASS o RUNTIME).
77
¿Qué es @Target en el contexto de las anotaciones?
Es una meta-anotación que especifica en qué elementos de código se puede aplicar la anotación (METHOD, FIELD, TYPE, etc.).
78
¿Qué diferencia una clase abstracta de una interfaz respecto a los atributos?
La clase abstracta puede tener atributos de instancia (no constantes); la interfaz solo constantes (static final).
79
¿Puede una interfaz heredar de otra interfaz?
Sí, una interfaz puede extender una o varias interfaces usando la palabra clave 'extends'.
80
¿Cómo se accede a una constante de un enum llamado Color que tiene el valor ROJO?
Color.ROJO
81
¿Cuántos tipos primitivos existen en Java y dónde se almacenan?
Existen 8 tipos primitivos y se almacenan en el Stack (pila).
82
Nombra los 4 tipos primitivos para números enteros.
byte (8 bits), short (16 bits), int (32 bits) y long (64 bits).
83
¿Cuáles son los tipos primitivos para números decimales y cuál es su precisión?
float (32 bits, precisión simple) y double (64 bits, precisión doble).
84
¿Qué tipo primitivo se usa para caracteres y cuántos bits ocupa?
char, ocupa 16 bits y utiliza codificación Unicode.
85
¿Cuál es el valor por defecto de un atributo de clase tipo boolean?
false.
86
¿Qué es una clase 'Wrapper' en Java?
Es una clase de la biblioteca estándar que envuelve a un tipo primitivo para tratarlo como un objeto (ej. Integer para int).
87
¿Para qué sirven las clases Wrapper?
Para permitir que los tipos primitivos se usen en colecciones (como ArrayList) y para proporcionar métodos de utilidad (como conversiones).
88
¿Qué es el 'Autoboxing'?
Es la conversión automática que hace el compilador entre un tipo primitivo y su correspondiente clase Wrapper (ej. de int a Integer).
89
¿Qué es el 'Unboxing'?
Es la conversión automática de un objeto Wrapper a su tipo primitivo correspondiente (ej. de Character a char).
90
¿Cómo se llama la clase Wrapper del tipo primitivo 'int' y la del tipo 'char'?
Integer y Character (son las únicas que cambian su nombre completo).
91
¿Qué diferencia fundamental hay entre 'int x = null' e 'Integer y = null'?
'int' no puede ser null porque es un tipo primitivo; 'Integer' sí puede ser null porque es un objeto.
92
¿Qué es la clase String en Java?
Es una clase de la biblioteca estándar (java.lang.String) que representa una secuencia inmutable de caracteres.
93
¿Qué significa que los objetos String sean inmutables?
Que una vez creados, su valor no se puede cambiar. Cualquier operación crea un nuevo objeto String en memoria.
94
¿Para qué sirve la clase StringBuilder?
Para crear secuencias de caracteres mutables, siendo más eficiente que String cuando se realizan muchas concatenaciones.
95
¿Qué diferencia hay entre StringBuilder y StringBuffer?
StringBuilder no es seguro para hilos (thread-safe) pero es más rápido; StringBuffer sí es seguro para hilos.
96
¿Cuál es la diferencia entre comparar Strings con '==' y con '.equals()'?
'==' compara si las referencias de memoria son iguales; '.equals()' compara si el contenido del texto es el mismo.
97
¿Qué clase de la biblioteca estándar se utiliza para manejar números decimales de precisión arbitraria (finanzas)?
java.math.BigDecimal.
98
¿Cómo se convierte una cadena '123' a un entero primitivo int?
Usando el método estático Integer.parseInt('123').
99
¿Qué es el String Pool en Java?
Un área especial de la memoria Heap donde Java almacena literales de String para reutilizarlos y ahorrar memoria.
100
¿Cuál es el rango aproximado de un tipo primitivo 'byte'?
De -128 a 127.
101
¿Cuáles son los cuatro niveles de visibilidad (modificadores de acceso) en Java?
public, protected, default (o package-private) y private.
102
¿Qué visibilidad tiene un miembro declarado sin ningún modificador de acceso?
Visibilidad de paquete (default): solo es accesible por clases dentro del mismo paquete.
103
¿Cuál es la diferencia de acceso entre 'private' y 'protected'?
'private' solo permite acceso dentro de la misma clase; 'protected' permite acceso en la misma clase, mismo paquete y subclases.
104
¿Qué significa la palabra clave 'static' aplicada a un atributo?
Significa que el atributo pertenece a la clase y no a las instancias; todos los objetos comparten el mismo valor.
105
¿Puede un método estático (static) acceder directamente a un atributo de instancia?
No, un método estático solo puede acceder a otros miembros estáticos de la clase.
106
¿Qué ocurre si declaras una variable local como 'static' dentro de un método?
Error de compilación. El modificador 'static' no se puede aplicar a variables locales.
107
¿Para qué sirve un bloque 'static { ... }' en una clase?
Para inicializar atributos estáticos; se ejecuta una sola vez cuando la clase es cargada por la JVM.
108
¿Qué significa que una variable sea declarada como 'final'?
Que su valor no puede ser modificado una vez asignada (se convierte en una constante).
109
¿Qué implica que un método sea 'final'?
Que ninguna subclase puede sobrescribir (override) dicho método.
110
¿Qué implica que una clase sea declarada como 'final'?
Que la clase no puede tener descendencia (no puede ser heredada).
111
¿Qué es una variable 'transient' y cuándo se utiliza?
Es un modificador que indica que un atributo no debe ser serializado cuando el objeto se guarda en un flujo de datos.
112
¿Para qué sirve la palabra clave 'volatile' en Java?
Indica que una variable puede ser modificada por diferentes hilos, obligando a la JVM a leer siempre el valor de la memoria principal y no de la caché del hilo.
113
¿Qué es el modificador 'synchronized'?
Se utiliza en métodos o bloques para garantizar que solo un hilo a la vez pueda acceder al recurso, evitando condiciones de carrera.
114
¿Qué hace el modificador 'native'?
Indica que el método está implementado en otro lenguaje (como C o C++) mediante JNI (Java Native Interface).
115
¿Qué significa el modificador 'strictfp'?
Asegura que los cálculos con números de punto flotante sean idénticos en todas las plataformas (estricta precisión IEEE 754).
116
¿Puede una clase de nivel superior (top-level) ser declarada como 'private' o 'protected'?
No, las clases de nivel superior solo pueden ser 'public' o tener visibilidad de paquete (default).
117
¿Qué es una 'constante' en Java por convención de nomenclatura y modificadores?
Un atributo declarado como 'public static final', escrito normalmente en mayúsculas.
118
¿Cómo se accede a un atributo estático llamado 'contador' de la clase 'User' desde fuera de ella?
Mediante el nombre de la clase: 'User.contador'.
119
¿Qué diferencia hay entre una variable 'final' y una constante 'static final'?
La variable 'final' puede tener un valor distinto para cada instancia (pero inmutable tras su creación); la 'static final' tiene el mismo valor para todas.
120
¿Se puede declarar un constructor como 'static'?
No, los constructores no pueden ser estáticos ya que su propósito es inicializar una instancia específica.
121
¿Qué es un paquete (package) en Java?
Es un contenedor de clases que permite organizar el código en grupos lógicos y evitar colisiones de nombres.
122
¿Cuál es la primera instrucción no comentada que debe aparecer en un archivo fuente .java?
La sentencia 'package nombre.del.paquete;'.
123
¿Cuál es la convención de nomenclatura estándar para los nombres de paquetes?
Se escriben totalmente en minúsculas y suelen empezar con el dominio de la organización a la inversa (ej. com.google.proyecto).
124
¿Para qué sirve la palabra clave 'import'?
Para poder utilizar clases de otros paquetes sin tener que escribir su nombre completo (Fully Qualified Name).
125
¿Qué paquete de la biblioteca estándar de Java se importa automáticamente en todas las clases?
java.lang
126
¿Qué ocurre si dos clases con el mismo nombre se importan en el mismo archivo?
Se produce un conflicto; hay que usar el nombre completo de al menos una de ellas (ej. java.util.Date y java.sql.Date).
127
¿Qué es un 'static import' en Java?
Permite acceder a miembros estáticos (métodos o constantes) de una clase sin usar el nombre de la clase (ej. usar 'sqrt()' en lugar de 'Math.sqrt()').
128
¿Qué relación debe existir entre el nombre del paquete y la estructura de directorios?
Deben coincidir exactamente; la clase com.pack.Test debe estar en la carpeta /com/pack/Test.class.
129
¿Qué es un Módulo en Java (introducido en Java 9)?
Es un mecanismo de abstracción superior al paquete que agrupa paquetes y recursos, especificando cuáles son visibles para otros módulos.
130
¿Cómo se llama el archivo de configuración donde se define un módulo?
module-info.java
131
¿En qué ubicación del proyecto debe estar el archivo module-info.java?
En el directorio raíz del código fuente del módulo (default package).
132
¿Qué palabra clave se usa en module-info.java para hacer que un paquete sea visible fuera del módulo?
exports
133
¿Qué palabra clave se usa en module-info.java para declarar que un módulo depende de otro?
requires
134
¿Qué es la 'encapsulación fuerte' en el sistema de módulos?
Es la característica por la cual, aunque un miembro sea 'public', no es accesible fuera del módulo a menos que su paquete sea explícitamente exportado.
135
¿Qué diferencia hay entre 'exports' y 'opens' en un módulo?
'exports' permite el acceso en tiempo de compilación y ejecución; 'opens' permite el acceso solo en tiempo de ejecución mediante reflexión.
136
¿Qué es el 'Unnamed Module'?
Es el módulo donde se cargan todas las clases que no pertenecen a un módulo definido (ubicadas en el classpath tradicional), para mantener compatibilidad.
137
¿Cuál es el comando del JDK para describir o listar los módulos de una aplicación?
describe-module (dentro de la herramienta jmod) o 'java --list-modules'.
138
¿Qué ventaja principal ofrece el sistema de módulos respecto al tamaño de la JRE?
Permite crear una imagen de ejecución personalizada y reducida que solo contenga los módulos necesarios (usando jlink).
139
¿Puede un módulo depender de otro módulo sin exportar ningún paquete?
Sí, un módulo puede requerir a otro para usar sus servicios internos, pero solo verá los paquetes que el segundo haya exportado.
140
¿Qué palabra clave se usa en module-info para indicar que un módulo requiere una dependencia en tiempo de compilación pero es opcional en ejecución?
requires static
141
¿Cuáles son los operadores aritméticos básicos en Java?
Suma (+), resta (-), multiplicación (*), división (/) y módulo (%).
142
¿Qué devuelve el operador módulo (%)?
El resto de la división entera entre dos números.
143
¿Cuál es la diferencia entre el operador de división (/) con enteros y con decimales?
Con enteros trunca la parte decimal (5/2 = 2); con decimales mantiene la precisión (5.0/2.0 = 2.5).
144
¿Qué diferencia hay entre el pre-incremento (++i) y el post-incremento (i++)?
El pre-incremento aumenta el valor antes de usarlo en la expresión; el post-incremento lo aumenta después de evaluar la expresión.
145
¿Cuáles son los operadores de relación en Java?
Igual que (==), distinto de (!=), mayor que (>), menor que (<), mayor o igual (>=) y menor o igual (<=).
146
¿Qué tipo de dato devuelven siempre los operadores de relación?
Un valor booleano (true o false).
147
¿Cuál es el operador de asignación simple y cuáles son los de asignación compuesta?
El simple es '='; los compuestos son +=, -=, *=, /=, %=, entre otros.
148
¿Qué hacen los operadores lógicos && (AND) y || (OR) respecto a su evaluación?
Son operadores de cortocircuito: si el resultado se determina con el primer operando, el segundo no se evalúa.
149
¿En qué se diferencian los operadores lógicos & y | de && y ||?
Los operadores de un solo símbolo (&, |) evalúan siempre ambos operandos, sin cortocircuito.
150
¿Qué hace el operador de negación lógica (!)?
Invierte el valor booleano: !true es false y !false es true.
151
¿Qué es el operador ternario y cuál es su sintaxis?
Es un operador que simplifica un if-else: 'condición ? valor_si_true : valor_si_false'.
152
¿Qué operador se utiliza para verificar si un objeto pertenece a una clase determinada?
El operador 'instanceof'.
153
¿Cuál es la precedencia de operadores entre la multiplicación (*) y la suma (+)?
La multiplicación tiene mayor precedencia y se evalúa antes que la suma.
154
¿Cómo se puede forzar que una operación se evalúe antes que otra independientemente de su precedencia?
Utilizando paréntesis ( ).
155
¿Qué ocurre si intentas usar el operador '+' con una cadena de texto y un número?
Se realiza una concatenación: el número se convierte a texto y se une a la cadena.
156
¿Qué valor resulta de la expresión (5 == 5 && 3 > 4)?
false, porque la segunda condición (3 > 4) es falsa y el operador AND requiere que ambas sean verdaderas.
157
¿Qué valor resulta de la expresión (5 == 5 || 3 > 4)?
true, porque el operador OR solo requiere que una de las condiciones sea verdadera.
158
¿Qué son los operadores de desplazamiento de bits (bitwise)?
Son << (desplazamiento izquierda), >> (derecha con signo) y >>> (derecha sin signo).
159
¿Qué operador se usa para comparar la igualdad de referencias en memoria entre dos objetos?
El operador ==.
160
¿Para qué sirven los operadores ^ (XOR) en lógica booleana?
Devuelve true solo si los operandos son diferentes entre sí (uno true y otro false).
161
¿Cuál es la diferencia principal entre un bucle 'while' y un 'do-while'?
El 'while' evalúa la condición al principio; el 'do-while' la evalúa al final, garantizando que el bloque se ejecute al menos una vez.
162
¿Cuáles son las tres partes que componen la cabecera de un bucle 'for' estándar?
Inicialización, condición de permanencia y expresión de actualización (incremento/decremento).
163
¿Qué tipos de datos se permiten en la expresión de un 'switch' antes de Java 7?
Solo tipos integrales (byte, short, char, int) y tipos enumerados (enum).
164
¿Qué tipo de dato de objeto común se permitió en las sentencias 'switch' a partir de Java 7?
La clase String.
165
¿Para qué sirve la palabra clave 'break' dentro de un 'switch'?
Para salir del bloque 'switch' e impedir que se ejecuten las siguientes ramas (fall-through).
166
¿Qué ocurre en un 'switch' si ninguna de las ramas coincide con el valor de la expresión y no hay un 'default'?
No se ejecuta nada dentro del switch y el programa continúa con la siguiente instrucción fuera del bloque.
167
¿Qué es un 'for-each' (o enhanced for) y cuál es su sintaxis?
Es una forma simplificada de recorrer arrays o colecciones: 'for (Tipo elemento : coleccion) { ... }'.
168
¿Se puede modificar el tamaño de una colección mientras se recorre con un bucle 'for-each'?
No, generalmente lanza una excepción 'ConcurrentModificationException'.
169
¿Cuál es la función de la sentencia 'continue' en un bucle?
Salta el resto de la iteración actual y pasa directamente a la evaluación de la condición (o actualización) para la siguiente iteración.
170
¿Qué hace un 'break' cuando se encuentra dentro de bucles anidados?
Solo sale del bucle más interno donde se encuentra la sentencia 'break'.
171
¿Cómo se puede salir de varios bucles anidados a la vez en Java?
Utilizando un 'break' con una etiqueta (label) definida antes del bucle exterior.
172
¿Qué condición debe devolver siempre la expresión dentro de un 'if'?
Un valor de tipo booleano (true o false).
173
¿Es obligatorio el uso de llaves {} en un 'if' o un 'for'?
No si solo contienen una única sentencia, pero es una práctica recomendada para evitar errores lógicos.
174
¿Qué es una 'sentencia vacía' en un bucle for?
Un bucle que termina en punto y coma inmediatamente: 'for(...);', lo que hace que el bloque siguiente no pertenezca al bucle.
175
¿Qué sucede si la condición de un bucle 'for' se deja vacía, ej: 'for(;;)'?
Se crea un bucle infinito.
176
¿Qué son las 'Switch Expressions' (introducidas en Java 12/14)?
Una evolución del switch que puede devolver un valor directamente y utiliza el operador '->' en lugar de ':'.
177
En una 'Switch Expression', ¿qué palabra clave sustituye a 'return' para devolver un valor desde un bloque?
La palabra clave 'yield'.
178
¿Qué es el 'dangling else' y cómo lo resuelve Java?
Es la ambigüedad de a qué 'if' pertenece un 'else'; Java siempre asocia el 'else' al 'if' más cercano que no tenga pareja.
179
¿Cuál es el propósito de la rama 'default' en un switch?
Ejecutar un bloque de código cuando el valor evaluado no coincide con ninguno de los casos (case) especificados.
180
¿Se puede usar 'continue' dentro de un bloque 'switch'?
No, 'continue' solo es válido dentro de estructuras de bucle (for, while, do-while).
181
¿Cuál es la interfaz raíz de la jerarquía de colecciones en Java (exceptuando los Mapas)?
java.util.Collection
182
¿En qué paquete se encuentran la mayoría de las interfaces y clases del Framework de Colecciones?
java.util
183
¿Cuáles son las tres interfaces principales que heredan de Collection?
List, Set y Queue.
184
¿Qué característica principal define a la interfaz List?
Es una colección ordenada que permite elementos duplicados y acceso posicional mediante un índice.
185
¿Qué característica principal define a la interfaz Set?
Es una colección que no permite elementos duplicados.
186
¿Cuál es la diferencia de rendimiento principal entre ArrayList y LinkedList al acceder a un elemento por índice?
ArrayList es más rápido (O(1)) porque usa un array interno; LinkedList es más lento (O(n)) porque debe recorrer los nodos.
187
¿Cuál es la mejor opción (ArrayList o LinkedList) para realizar muchas inserciones o eliminaciones al principio de la lista?
LinkedList, ya que solo requiere cambiar los punteros de los nodos.
188
¿Qué implementación de Set utiliza una tabla hash y no garantiza ningún orden en los elementos?
HashSet.
189
¿Qué implementación de Set mantiene los elementos ordenados según su orden natural o un Comparator?
TreeSet.
190
¿Qué es un 'Iterator' y para qué sirve?
Es un objeto que permite recorrer una colección de forma secuencial y eliminar elementos de forma segura durante la iteración.
191
¿Cuál es la diferencia entre la interfaz Collection y la interfaz Map?
Collection almacena elementos individuales, mientras que Map almacena parejas de clave-valor.
192
¿Permite la interfaz Map claves duplicadas?
No, las claves deben ser únicas. Si se inserta una clave existente, se sobrescribe el valor asociado.
193
¿Cuál es la diferencia entre HashMap y Hashtable?
HashMap no es sincronizado y permite una clave nula; Hashtable es sincronizado (thread-safe) y no permite nulos.
194
¿Qué implementación de Map mantiene el orden de inserción de los elementos?
LinkedHashMap.
195
¿Qué interfaz debe implementar un objeto para ser almacenado en un TreeSet o usado como clave en un TreeMap sin un Comparator externo?
java.lang.Comparable.
196
¿Para qué sirve el método 'hashCode()' en el contexto de las colecciones?
Para generar un valor entero que representa al objeto y determina su posición en tablas hash (como HashSet o HashMap).
197
¿Qué sucede si dos objetos son iguales según '.equals()' pero tienen diferentes 'hashCode()'?
Se viola el contrato de Java y las colecciones basadas en hash no funcionarán correctamente (podrían duplicarse).
198
¿Qué es la interfaz Queue y qué orden sigue habitualmente?
Es una cola diseñada para retener elementos antes de procesarlos, siguiendo generalmente el orden FIFO (First-In-First-Out).
199
¿Qué es una Deque (Double Ended Queue)?
Es una cola de doble extremo que permite insertar y eliminar elementos tanto por el principio como por el final.
200
¿Para qué sirve la clase de utilidad 'java.util.Collections' (en plural)?
Contiene métodos estáticos para operar sobre colecciones, como 'sort()', 'reverse()', 'shuffle()' o 'synchronizedCollection()'.
201
¿Qué diferencia hay entre la interfaz Comparable y Comparator?
Comparable define el orden natural del objeto (dentro de la clase); Comparator es una clase externa para definir órdenes alternativos.
202
¿Qué es un 'Fail-Fast' iterator?
Un iterador que lanza inmediatamente 'ConcurrentModificationException' si la colección se modifica estructuralmente mientras se recorre.
203
¿Qué interfaz de mapa se recomienda para entornos multihilo con alto rendimiento en lugar de Hashtable?
ConcurrentHashMap.
204
¿Cómo se puede convertir un Array tradicional en una List rápidamente?
Usando el método estático 'Arrays.asList(array)'.
205
¿Qué es la 'capacidad' (capacity) de un ArrayList?
Es el tamaño del array interno que lo sustenta; aumenta automáticamente cuando el número de elementos supera un umbral.
206
¿Qué implementación de List es sincronizada y considerada obsoleta en favor de ArrayList?
Vector.
207
¿Cuál es el método de Map que devuelve un Set con todas las claves?
keySet().
208
¿Cuál es el método de Map que devuelve una Collection con todos los valores?
values().
209
¿Qué método de Map devuelve un Set de objetos que contienen tanto la clave como el valor?
entrySet().
210
¿Qué implementación de Queue ordena los elementos según su prioridad natural o un Comparator?
PriorityQueue.
211
¿Cuál es la clase base de la que heredan todos los errores y excepciones en Java?
java.lang.Throwable.
212
¿Cuáles son las dos ramas principales que cuelgan de la clase Throwable?
Error y Exception.
213
¿Qué diferencia a un 'Error' de una 'Exception' en Java?
Un Error indica problemas graves de la JVM (como falta de memoria) que la aplicación no debe intentar capturar; una Exception indica condiciones que el programa puede manejar.
214
¿Qué es una 'Checked Exception' (Excepción comprobada)?
Es una excepción que el compilador obliga a gestionar (con try-catch) o declarar (con throws), ya que heredan de Exception pero no de RuntimeException.
215
¿Qué es una 'Unchecked Exception' (Excepción no comprobada)?
Son las que heredan de RuntimeException; el compilador no obliga a gestionarlas explícitamente y suelen deberse a errores de lógica del programador.
216
¿Para qué sirve el bloque 'finally' en una estructura try-catch?
Para ejecutar código que debe correr siempre, independientemente de si ocurrió una excepción o no (ej. cerrar ficheros o conexiones).
217
¿Qué ocurre si se lanza una excepción dentro de un bloque 'try' y no hay un 'catch' que la capture?
La excepción se propaga hacia arriba en la pila de llamadas hasta encontrar un manejador o, si llega al main, detiene el programa.
218
¿Cuál es la sintaxis para declarar que un método puede lanzar una excepción?
Se añade 'throws' seguido del tipo de excepción en la firma del método: 'public void miMetodo() throws IOException { ... }'.
219
¿Qué palabra clave se usa para lanzar manualmente una instancia de una excepción?
throw (ej. throw new Exception("Error");).
220
¿Qué es el 'Multi-catch' introducido en Java 7?
La capacidad de capturar varias excepciones en un solo bloque catch separándolas por una tubería: 'catch (IOException | SQLException e) { ... }'.
221
¿Qué es el 'Try-with-resources'?
Una estructura que cierra automáticamente los recursos (que implementen AutoCloseable) al finalizar el bloque try: 'try (FileWriter fw = new FileWriter(...)) { ... }'.
222
¿En qué orden se deben colocar los bloques 'catch' si hay excepciones de la misma jerarquía?
De la más específica (subclase) a la más genérica (superclase), de lo contrario daría error de compilación.
223
¿Qué hace el método 'printStackTrace()'?
Imprime en la consola el rastro de la pila donde ocurrió la excepción, ayudando a localizar el error.
224
¿Qué excepción se lanza al intentar acceder a un método o atributo de una referencia que apunta a 'null'?
NullPointerException.
225
¿Qué excepción se lanza al intentar acceder a un índice inexistente de un array?
ArrayIndexOutOfBoundsException.
226
¿Qué excepción se lanza cuando se intenta realizar una operación aritmética ilegal, como dividir por cero?
ArithmeticException.
227
¿Qué es una 'Excepción encadenada' (Exception Chaining)?
Es la técnica de envolver una excepción original dentro de una nueva excepción para no perder la causa raíz del error.
228
¿Para qué sirve el método 'getCause()' de la clase Throwable?
Para obtener la excepción original que provocó la excepción actual en una cadena de excepciones.
229
¿Se puede heredar de la clase 'Error' para crear excepciones personalizadas?
Técnicamente sí, pero es una mala práctica; siempre se debe heredar de Exception o RuntimeException.
230
¿Qué ocurre si un bloque 'finally' contiene una sentencia 'return'?
El valor de retorno del bloque 'finally' prevalecerá sobre cualquier retorno anterior en los bloques 'try' o 'catch'.
231
¿Cuáles son las dos formas básicas de crear un hilo en Java?
1. Heredando de la clase 'Thread'. 2. Implementando la interfaz 'Runnable'.
232
¿Qué método debe sobrescribirse obligatoriamente en ambas formas de creación de hilos?
El método 'public void run()'.
233
¿Qué palabra clave de Java se utiliza para crear un hilo mediante herencia?
extends Thread
234
¿Qué interfaz se utiliza habitualmente para crear un hilo cuando la clase ya hereda de otra superclase?
implements Runnable
235
¿Cuál es el método que se debe llamar para iniciar la ejecución de un hilo?
El método 'start()'.
236
¿Qué sucede si se llama directamente al método 'run()' en lugar de 'start()'?
No se crea un hilo nuevo; el código se ejecuta de forma síncrona en el mismo hilo que realizó la llamada.
237
¿Cuál es la principal ventaja de implementar 'Runnable' sobre heredar de 'Thread'?
Permite que la clase herede de otra clase (evita la limitación de herencia simple) y separa la lógica de la tarea del mecanismo de ejecución.
238
¿Cómo se instancia un hilo cuando se utiliza la interfaz 'Runnable'?
Pasando una instancia del objeto Runnable al constructor de la clase Thread: 'new Thread(miRunnable).start();'.
239
¿Qué es un 'Hilo Demonio' (Daemon Thread)?
Es un hilo de baja prioridad que se ejecuta en segundo plano y no impide que la JVM termine si solo quedan hilos de este tipo activos.
240
¿Qué método se usa para esperar a que un hilo termine su ejecución?
El método 'join()'.
241
¿Para qué sirve el método 'Thread.sleep(ms)'?
Para pausar la ejecución del hilo actual durante un tiempo determinado en milisegundos.
242
¿Qué excepción es obligatorio capturar al usar 'Thread.sleep()' o 'join()'?
InterruptedException.
243
¿Qué hace el método estático 'Thread.currentThread()'?
Devuelve una referencia al objeto del hilo que se está ejecutando en ese momento.
244
¿Qué método se utiliza para asignar una prioridad a un hilo?
setPriority(int).
245
¿Cuáles son las constantes de prioridad definidas en la clase Thread?
MIN_PRIORITY (1), NORM_PRIORITY (5) y MAX_PRIORITY (10).
246
¿Qué es una expresión Lambda en relación con Runnable (Java 8+)?
Una forma compacta de crear un hilo sin crear una clase anónima: 'new Thread(() -> { ... }).start();'.
247
¿Cuál es la diferencia entre los hilos creados con Runnable y los creados con la interfaz Callable?
Callable puede devolver un resultado y lanzar excepciones comprobadas; Runnable no devuelve nada.
248
¿Para qué sirve el método 'yield()' de la clase Thread?
Es una sugerencia al planificador (scheduler) para que el hilo actual ceda el uso del procesador a otros hilos de igual prioridad.
249
¿Qué método se usa para comprobar si un hilo todavía está en ejecución?
isAlive().
250
¿Qué ocurre con un hilo una vez que termina su método 'run()'?
El hilo muere y no puede volver a iniciarse con 'start()'; se lanzaría una 'IllegalThreadStateException'.
251
¿Para qué sirve la palabra clave 'synchronized' en Java?
Para garantizar que solo un hilo a la vez pueda acceder a un bloque de código o método, evitando condiciones de carrera.
252
¿Qué es un 'Monitor' (o Lock) en el contexto de la sincronización?
Es un mecanismo intrínseco de cada objeto en Java que permite controlar el acceso exclusivo a su estado.
253
¿Qué sucede cuando un hilo intenta entrar en un método 'synchronized' cuyo monitor ya está ocupado?
El hilo se bloquea y pasa a un estado de espera hasta que el monitor quede libre.
254
¿Sobre qué objeto se bloquea un método de instancia declarado como 'synchronized'?
Sobre la instancia actual de la clase ('this').
255
¿Sobre qué objeto se bloquea un método estático declarado como 'synchronized'?
Sobre el objeto Class asociado a esa clase en la JVM.
256
¿Para qué sirve el método 'wait()'?
Hace que el hilo actual ceda el monitor y se quede en espera hasta que otro hilo lo despierte con notify() o notifyAll().
257
¿Para qué sirve el método 'notify()'?
Despierta a un único hilo que esté esperando en el monitor del objeto.
258
¿Qué hace el método 'notifyAll()'?
Despierta a todos los hilos que están esperando en el monitor del objeto.
259
¿En qué clase están definidos los métodos wait, notify y notifyAll?
En la clase 'java.lang.Object', no en la clase Thread.
260
¿Cuál es el requisito indispensable para poder llamar a wait() o notify() sobre un objeto?
El hilo debe poseer previamente el monitor del objeto (debe estar dentro de un bloque o método synchronized).
261
¿Qué excepción lanzan wait() o notify() si se llaman fuera de un contexto sincronizado?
IllegalMonitorStateException.
262
¿Qué sucede con el monitor del objeto cuando un hilo ejecuta 'wait()'?
El hilo libera el monitor automáticamente para que otros hilos puedan entrar en las secciones sincronizadas.
263
¿Qué sucede con el monitor del objeto cuando un hilo ejecuta 'notify()'?
El hilo NO libera el monitor inmediatamente; sigue ejecutando su bloque sincronizado hasta terminarlo.
264
¿Qué es una 'condición de carrera' (Race Condition)?
Un error que ocurre cuando varios hilos acceden y modifican datos compartidos al mismo tiempo, dejando el resultado final dependiente del orden de ejecución.
265
¿Qué significa que un método sea 'Thread-Safe'?
Que puede ser invocado por múltiples hilos simultáneamente sin que se corrompan los datos o se produzcan comportamientos inesperados.
266
¿Qué es un 'Deadlock' (Interbloqueo)?
Una situación en la que dos o más hilos están bloqueados de por vida, esperando cada uno que el otro libere un recurso que necesita.
267
¿Por qué se recomienda usar 'notifyAll()' en lugar de 'notify()'?
Para evitar que el hilo equivocado sea despertado y el sistema se quede en un estado de espera infinito (livelock/deadlock).
268
¿Por qué las llamadas a 'wait()' suelen ir dentro de un bucle 'while' en lugar de un 'if'?
Para re-comprobar la condición después de ser despertado, evitando 'despertares espurios' o cambios de estado por otros hilos.
269
¿Qué diferencia hay entre Thread.sleep() y Object.wait() respecto a los monitores?
Thread.sleep() mantiene el monitor mientras duerme; Object.wait() libera el monitor mientras espera.
270
¿Qué es un bloque sincronizado (synchronized block) y qué ventaja tiene sobre un método sincronizado?
Es un bloque que permite sincronizar solo una parte del código usando un objeto específico como lock, lo que mejora el rendimiento al reducir la exclusión mutua.
271
¿Qué significan las siglas JDBC y cuál es su función?
Java Database Connectivity. Es una API de Java para ejecutar sentencias SQL y conectar con bases de datos relacionales.
272
¿Qué es un Driver JDBC?
Un componente de software que permite a la aplicación Java comunicarse con un motor de base de datos específico (MySQL, Oracle, etc.).
273
¿Cuál es el rol de la interfaz 'Connection' en JDBC?
Representa la sesión establecida con la base de datos para enviar comandos y gestionar transacciones.
274
¿Qué diferencia hay entre 'Statement' y 'PreparedStatement' en JDBC?
Statement se usa para SQL estático; PreparedStatement se precompila y protege contra ataques de Inyección SQL.
275
¿Qué objeto de JDBC se utiliza para recuperar y navegar por los resultados de una consulta SELECT?
ResultSet.
276
¿Qué método de ResultSet se debe llamar para moverse a la siguiente fila de resultados?
next().
277
¿Qué es el 'Connection Pooling' (Pool de conexiones)?
Una técnica que mantiene un conjunto de conexiones abiertas y reutilizables para mejorar el rendimiento, evitando el coste de abrir y cerrar conexiones constantemente.
278
¿Qué significan las siglas JPA?
Java Persistence API (ahora Jakarta Persistence). Es una especificación para el mapeo objeto-relacional (ORM) en Java.
279
¿Cuál es la diferencia fundamental entre JDBC y JPA?
JDBC es de bajo nivel y requiere escribir SQL manualmente; JPA es de alto nivel y mapea objetos Java a tablas de base de datos automáticamente.
280
¿Qué es una 'Entidad' (Entity) en JPA?
Una clase Java simple (POJO) que está mapeada a una tabla de la base de datos mediante anotaciones.
281
¿Qué anotación es obligatoria para marcar una clase como una entidad de JPA?
@Entity.
282
¿Para qué sirve la anotación @Id en JPA?
Para indicar cuál de los atributos de la entidad es la clave primaria (Primary Key).
283
¿Qué interfaz de JPA es la responsable de las operaciones CRUD y de gestionar el ciclo de vida de las entidades?
EntityManager.
284
¿Qué es el archivo 'persistence.xml'?
El archivo de configuración donde se definen las unidades de persistencia, la base de datos y el proveedor de JPA (como Hibernate).
285
¿Qué es JPQL (Java Persistence Query Language)?
Un lenguaje de consulta similar a SQL, pero que realiza consultas sobre las entidades y sus atributos en lugar de las tablas y columnas.
286
¿Qué significa la anotación @GeneratedValue en JPA?
Indica que la clave primaria debe ser generada automáticamente por la base de datos (ej. mediante un campo auto-incremental).
287
¿Cuáles son los cuatro estados principales del ciclo de vida de una entidad en JPA?
New (Transient), Managed (Persistent), Detached y Removed.
288
¿Qué anotación se usa en JPA para definir una relación de uno a muchos entre dos entidades?
@OneToMany.
289
¿Qué es la 'Carga Perezosa' (Lazy Loading) en JPA?
Una estrategia que evita cargar datos relacionados de la base de datos hasta que no se acceda explícitamente a ellos, optimizando el rendimiento.
290
¿Qué es Hibernate en relación con JPA?
Es el 'proveedor' o implementación más popular de la especificación JPA; JPA es el estándar e Hibernate es el motor que lo ejecuta.
291
¿Cuál es el paquete de la API estándar de Java para la gestión de logs?
java.util.logging (JUL).
292
¿Cuáles son los 7 niveles de severidad en java.util.logging de mayor a menor importancia?
SEVERE, WARNING, INFO, CONFIG, FINE, FINER, FINEST.
293
¿Qué nivel de log se utiliza por defecto en la configuración estándar de Java?
El nivel INFO.
294
¿Qué es un 'Logger' en Java?
Es el objeto encargado de capturar los mensajes de log para una clase o componente específico.
295
¿Qué es un 'Handler' (o Appender) en el contexto de logging?
Es el componente que decide el destino de los mensajes (consola, archivo, base de datos, etc.).
296
¿Para qué sirve un 'Formatter' (o Layout)?
Para definir el formato visual del mensaje de log (ej. si se exporta como texto plano, XML o JSON).
297
¿Qué es un 'Filter' en una infraestructura de logging?
Un componente que permite decidir, bajo criterios personalizados, qué mensajes deben ser procesados o ignorados más allá del nivel de severidad.
298
¿Qué es SLF4J y por qué es tan utilizado?
Es una 'Fachada' de logging que permite intercambiar el motor de log subyacente (Log4j, Logback) sin cambiar el código de la aplicación.
299
¿Qué ventaja ofrece el uso de 'placeholders' ({}) en SLF4J respecto a la concatenación de Strings?
Mejora el rendimiento, ya que la cadena solo se construye si el nivel de log está activo.
300
¿Cuál es el nombre del archivo de configuración típico para Log4j2?
log4j2.xml (también puede ser .json o .yaml).
301
¿Qué nivel de log en Log4j equivale al SEVERE de java.util.logging?
ERROR (o FATAL).
302
¿Cuál es la jerarquía estándar de niveles en frameworks comerciales como Log4j/Logback?
TRACE, DEBUG, INFO, WARN, ERROR, FATAL.
303
¿Para qué sirve el nivel de log 'DEBUG'?
Para escribir información detallada necesaria únicamente durante la fase de desarrollo o diagnóstico de errores.
304
¿Qué es la 'Propagación de Logs' (Log Parent Handlers)?
Es el mecanismo por el cual un logger envía sus mensajes también a los manejadores de sus loggers antecesores en la jerarquía de paquetes.
305
¿Cómo se obtiene una instancia de Logger en java.util.logging?
Mediante el método estático Logger.getLogger("NombreDeLaClase").
306
¿Qué método se usa para registrar un mensaje en un nivel específico sin usar los métodos de conveniencia?
El método log(Level level, String msg).
307
¿Qué es un 'RollingFileHandler'?
Un manejador que escribe en archivos y automáticamente crea uno nuevo (y borra o comprime el antiguo) cuando se alcanza un tamaño máximo.
308
¿En qué archivo se configura globalmente el logging de la JRE?
En el archivo 'logging.properties' ubicado en la carpeta /conf de la instalación de Java.
309
¿Cuál es el propósito del nivel 'OFF' en la configuración de loggers?
Desactivar completamente el registro de logs para ese componente.
310
¿Cuál es el propósito del nivel 'ALL' en la configuración de loggers?
Activar el registro de todos los mensajes, sin importar su severidad.
311
¿Cuál es la característica principal del paquete java.lang respecto a su importación?
Es el único paquete que se importa automáticamente en todos los archivos fuente de Java.
312
¿Qué representa la clase Object en java.lang?
Es la raíz de toda la jerarquía de clases en Java; todas las clases heredan de ella directa o indirectamente.
313
¿Cuál es la función del método 'clone()' en la clase Object?
Crea y devuelve una copia exacta (bit a bit) del objeto, siempre que la clase implemente la interfaz Cloneable.
314
¿Para qué sirven los métodos 'wait()', 'notify()' y 'notifyAll()' en Object?
Para la sincronización y comunicación entre hilos (threads) que comparten un monitor.
315
¿Qué es la clase Class en java.lang?
Es la clase que representa los metadatos de las clases y las interfaces en tiempo de ejecución (Reflexión).
316
¿Qué propósito tiene la clase System?
Proporciona acceso a recursos del sistema, como la entrada/salida estándar (System.out), errores (System.err) y variables de entorno.
317
¿Qué método de la clase System se usa para copiar arrays de forma eficiente?
System.arraycopy().
318
¿Qué funcionalidad ofrece la clase Runtime?
Permite a la aplicación interactuar con el entorno en el que se está ejecutando (ej. consultar memoria libre o ejecutar procesos externos).
319
¿Qué diferencia hay entre la clase String y la clase StringBuilder?
String es inmutable (no cambia); StringBuilder es mutable y más eficiente para concatenaciones frecuentes.
320
¿Cuál es la diferencia entre StringBuilder y StringBuffer?
StringBuffer es sincronizado (seguro para hilos) y StringBuilder no lo es (más rápido).
321
¿Qué tipos de datos maneja la clase Math?
Proporciona métodos estáticos para operaciones matemáticas comunes (trigonometría, logaritmos, potencias, raíces).
322
¿Qué hace el método Math.random()?
Devuelve un número de tipo double mayor o igual a 0.0 y menor que 1.0.
323
¿Qué son las clases Wrapper (Integer, Boolean, Double, etc.) en este paquete?
Clases que encapsulan tipos primitivos para que puedan ser tratados como objetos.
324
¿Cuál es la función de la interfaz Runnable en java.lang?
Define un contrato para clases cuyos objetos pretenden ser ejecutados por un hilo.
325
¿Qué representa la clase Thread?
Representa un hilo de ejecución en el programa.
326
¿Qué es un 'StackTraceElement'?
Una clase que representa un elemento en la traza de la pila de una excepción, indicando el método y línea de código.
327
¿Para qué sirve la clase Process?
Representa un proceso externo que ha sido lanzado mediante los métodos de Runtime o ProcessBuilder.
328
¿Qué es la clase Enum en java.lang?
Es la clase base común de todas las declaraciones de tipos enumerados en Java.
329
¿Qué propósito tiene la interfaz Iterable?
Permite que un objeto sea el objetivo de la sentencia 'for-each'.
330
¿Qué hace el método System.exit(int status)?
Finaliza la ejecución de la Máquina Virtual de Java (JVM) en curso.
331
¿Cuál es la diferencia principal entre java.io y java.nio?
java.io es de tipo bloqueante (orientado a flujos); java.nio es no bloqueante (orientado a buffers y canales).
332
¿Qué representan las clases InputStream y OutputStream?
Son las clases base abstractas para todos los flujos que leen o escriben datos en formato de bytes.
333
¿Qué representan las clases Reader y Writer?
Son las clases base abstractas para la lectura y escritura de flujos de caracteres (Unicode).
334
¿Para qué sirve la clase 'File' en java.io?
Representa de forma abstracta rutas de archivos y directorios, permitiendo crear, borrar o listar ficheros.
335
¿Qué es la 'Serialización' en Java?
Es el proceso de convertir el estado de un objeto en un flujo de bytes para poder guardarlo en un archivo o enviarlo por red.
336
¿Qué interfaz debe implementar una clase para ser serializable?
java.io.Serializable (es una interfaz de marcador, no tiene métodos).
337
¿Para qué sirve la clase BufferedReader?
Para leer texto de un flujo de entrada de forma eficiente, almacenando caracteres en un búfer para evitar lecturas constantes del disco.
338
¿Qué es un 'Decorator' en el contexto de java.io?
Es el patrón de diseño que usa Java para envolver flujos (ej. envolver un FileInputStream con un BufferedInputStream).
339
¿Qué representa la interfaz 'Path' en java.nio.file?
Es una representación programática de una ruta en el sistema de archivos (sustituye funcionalmente a la clase File).
340
¿Para qué sirve la clase de utilidad 'Files' en java.nio.file?
Contiene métodos estáticos para realizar operaciones sobre archivos (copiar, mover, leer todas las líneas, etc.).
341
¿Cómo se obtiene una instancia de Path en Java moderno?
Usando el método estático Path.of() o Paths.get().
342
¿Qué es un 'Channel' en java.nio?
Es un conducto para la lectura y escritura de datos que puede ser no bloqueante y es más eficiente que los flujos tradicionales.
343
¿Qué es un 'Buffer' en java.nio?
Es un contenedor de datos de un tipo primitivo específico que actúa como memoria intermedia entre el canal y la aplicación.
344
¿Para qué sirve la clase 'PrintWriter'?
Permite imprimir representaciones formateadas de objetos en un flujo de salida de texto (muy usado para escribir en ficheros de texto).
345
¿Qué hace el método 'flush()' en un flujo de salida?
Fuerza la escritura de cualquier dato que esté almacenado en el búfer de memoria hacia el destino físico.
346
¿Qué es un 'RandomAccessFile'?
Una clase que permite leer y escribir en un archivo moviéndose a cualquier posición de forma no secuencial.
347
¿Cuál es la función de 'StandardOpenOption' en java.nio.file?
Es un enumerado que define cómo se debe abrir un archivo (ej. CREATE, APPEND, READ).
348
¿Qué es un 'WatchService' en java.nio.file?
Una utilidad que permite monitorizar un directorio para detectar cambios (creación, modificación o borrado de archivos).
349
¿Qué diferencia hay entre una lectura bloqueante y una no bloqueante?
La bloqueante detiene el hilo hasta que hay datos disponibles; la no bloqueante permite al hilo seguir haciendo otras tareas.
350
¿Qué clase se usa para serializar un objeto completo a un archivo?
ObjectOutputStream.
351
¿Qué tipo de utilidades generales contiene el paquete java.util?
Colecciones, modelos de eventos, facilidades de fecha y hora, internacionalización y utilidades de parsing (Scanner).
352
¿Qué es la clase 'Scanner' y para qué se utiliza comúnmente?
Es una clase para leer y fragmentar (parsear) tipos primitivos y strings utilizando expresiones regulares; se usa mucho para leer la entrada del usuario por consola.
353
¿Qué diferencia hay entre java.util.Date y java.util.Calendar?
'Date' representa un instante específico en el tiempo con precisión de milisegundos; 'Calendar' es una clase abstracta para convertir entre instantes y campos como YEAR, MONTH o DAY.
354
¿Para qué sirve la clase 'Random' en java.util?
Para generar flujos de números pseudoaleatorios de distintos tipos (int, double, boolean).
355
¿Qué es la clase 'Optional' (introducida en Java 8)?
Un objeto contenedor que puede o no contener un valor no nulo, diseñado para evitar excepciones de tipo NullPointerException.
356
¿Qué utilidad ofrece la clase 'Arrays' en java.util?
Contiene métodos estáticos para manipular arrays, como 'sort()' (ordenar), 'binarySearch()' (buscar) y 'fill()' (llenar).
357
¿Para qué se utiliza la clase 'StringTokenizer'?
Para romper una cadena de texto en 'tokens' o fragmentos basados en delimitadores; aunque hoy se prefiere el método 'split()' de String.
358
¿Qué representa la clase 'Locale' en Java?
Representa una región geográfica, política o cultural específica para adaptar el formato de números, fechas o monedas.
359
¿Para qué sirve la clase 'ResourceBundle'?
Para gestionar recursos dependientes de la localización (como textos traducidos) y facilitar la internacionalización (i18n) de aplicaciones.
360
¿Qué es un 'BitSet' en java.util?
Una clase que implementa un vector de bits que crece dinámicamente, muy eficiente en memoria para representar conjuntos de valores booleanos.
361
¿Cuál es la función de la clase 'UUID'?
Generar identificadores únicos universales de 128 bits (ej: '550e8400-e29b-41d4-a716-446655440000').
362
¿Qué diferencia hay entre java.util.Timer y los hilos (Threads) estándar?
'Timer' es una utilidad para programar tareas (TimerTask) que se ejecutarán en segundo plano en el futuro, ya sea una vez o repetidamente.
363
¿Qué interfaz de java.util permite comparar dos objetos de forma externa a su clase?
La interfaz Comparator.
364
¿Qué es la clase 'Properties' y de qué clase hereda?
Es una subclase de Hashtable que se usa para manejar listas de valores donde las claves y los valores son siempre Strings; típico para archivos .properties.
365
¿Para qué sirve el método 'Collections.unmodifiableList()'?
Para crear una vista de una lista que no puede ser modificada, lanzando una excepción si alguien intenta añadir o borrar elementos.
366
¿Qué hace el método 'Collections.shuffle()'?
Desordena aleatoriamente los elementos de una lista utilizando una fuente de aleatoriedad.
367
¿Para qué sirve la interfaz 'EventListener' en java.util?
Es una interfaz de marcador (tagging interface) de la que deben heredar todas las interfaces de manejo de eventos.
368
¿Qué es la clase 'ServiceLoader'?
Una utilidad para localizar y cargar implementaciones de servicios (plugins) definidas en el archivo META-INF/services.
369
¿Cuál es el propósito de 'Base64' en java.util?
Proporcionar métodos estáticos para codificar y decodificar datos en el formato Base64 (útil para enviar binarios por protocolos de texto).
370
¿Qué es la interfaz 'Observer' (aunque está marcada como obsoleta)?
Parte de un patrón de diseño donde un objeto (Observable) notifica a otros (Observers) sobre cambios en su estado.
371
¿Qué contiene principalmente el paquete java.sql?
La API básica de JDBC para acceder y procesar datos almacenados en una base de datos relacional.
372
¿Cuál es la función del paquete javax.sql?
Complementa a java.sql proporcionando APIs para servicios del lado del servidor, como el pooling de conexiones y transacciones distribuidas.
373
¿Qué es un 'DataSource' en javax.sql y por qué se prefiere sobre DriverManager?
Es una alternativa que permite gestionar el pooling de conexiones y la transparencia de la ubicación de la base de datos a través de JNDI.
374
¿Qué interfaz de java.sql representa una sentencia SQL precompilada?
PreparedStatement.
375
¿Para qué sirve el método 'executeBatch()' en java.sql?
Para enviar múltiples comandos de actualización a la base de datos en una sola llamada, mejorando el rendimiento.
376
¿Qué es el objeto 'DatabaseMetaData' en java.sql?
Un objeto que proporciona información sobre las capacidades y la estructura de la base de datos (tablas, procedimientos, límites).
377
¿Qué clases principales se encuentran en el paquete java.net?
Clases para implementar aplicaciones de red, como URL, HttpURLConnection, Socket y ServerSocket.
378
¿Cuál es la diferencia entre Socket y ServerSocket en java.net?
Socket representa un extremo de una conexión bidireccional entre dos máquinas; ServerSocket espera peticiones de entrada de clientes.
379
¿Qué representa la clase 'InetAddress'?
Una dirección IP (IPv4 o IPv6) y su nombre de host correspondiente.
380
¿Qué clase de java.net se utiliza para realizar peticiones HTTP sencillas?
HttpURLConnection (o HttpClient en versiones más recientes).
381
¿Qué es una 'URI' en comparación con una 'URL' en java.net?
URL es un localizador (incluye protocolo y dirección); URI es un identificador más genérico que no necesariamente indica cómo acceder al recurso.
382
¿Para qué sirve el paquete java.text?
Para formatear y parsear texto, fechas, números y mensajes de forma independiente al idioma (internacionalización).
383
¿Qué clase de java.text se usa para dar formato a fechas de forma personalizada?
SimpleDateFormat.
384
¿Cómo se define un patrón para mostrar el año con 4 dígitos y el mes con 2 en SimpleDateFormat?
Usando el patrón "yyyy-MM".
385
¿Qué es el 'DecimalFormat' en java.text?
Una clase para formatear números decimales siguiendo patrones (ej. moneda, porcentajes o número de decimales fijos).
386
¿Para qué sirve la clase 'MessageFormat' en java.text?
Para construir mensajes concatenados de forma que sean localizables, usando marcadores de posición como {0}, {1}.
387
¿Qué hace la clase 'BreakIterator'?
Permite encontrar límites de palabras, frases o líneas en un texto, variando según el Locale.
388
¿Qué diferencia hay entre 'java.sql.Date' y 'java.util.Date'?
java.sql.Date está optimizada para SQL y solo almacena la fecha (año, mes, día), sin la información de hora/minutos.
389
¿Qué es un 'RowSet' en javax.sql?
Un objeto que envuelve un ResultSet y permite trabajar con datos de forma desconectada de la base de datos.
390
¿Qué excepción es la más común al trabajar con clases del paquete java.net?
IOException (y sus subclases como UnknownHostException o SocketException).
391
¿Qué es el 'Diamond Operator' (<>) introducido en Java 7?
Permite omitir los tipos genéricos en el constructor si ya están definidos en la declaración (ej. List l = new ArrayList<>();).
392
¿Qué mejora introdujo Java 7 para el manejo de recursos como ficheros o conexiones?
El 'Try-with-resources', que asegura el cierre automático de objetos que implementan AutoCloseable.
393
¿Qué cambio permitió Java 7 en los literales numéricos para mejorar su legibilidad?
El uso de guiones bajos entre dígitos, por ejemplo: 1_000_000.
394
¿Cuál es la novedad más importante de Java 8 respecto a la programación funcional?
Las expresiones Lambda, que permiten tratar bloques de código como argumentos de métodos.
395
¿Qué es la 'Stream API' de Java 8?
Una API para procesar colecciones de datos de forma declarativa (estilo funcional) permitiendo filtrar, mapear y reducir.
396
¿Qué son los 'Default Methods' en las interfaces de Java 8?
Métodos con implementación dentro de una interfaz, permitiendo evolucionar interfaces antiguas sin romper las clases que las implementan.
397
¿Para qué sirve la clase 'Optional' introducida en Java 8?
Para representar valores que pueden estar ausentes y reducir el riesgo de lanzar NullPointerException.
398
¿Qué nueva API de fechas sustituyó a Calendar en Java 8?
La API 'java.time' (JSR-310), que incluye clases inmutables como LocalDate, LocalTime y ZonedDateTime.
399
¿Qué es el Proyecto Jigsaw introducido en Java 9?
El sistema de módulos de Java, que permite modularizar el JDK y las aplicaciones para mejorar la seguridad y el tamaño.
400
¿Qué herramienta interactiva tipo REPL se añadió en Java 9?
JShell, que permite ejecutar y probar código Java de forma inmediata desde la consola.
401
¿Qué novedad introdujo Java 10 para la declaración de variables locales?
La palabra clave 'var', que permite la inferencia de tipos (el compilador deduce el tipo según el valor asignado).
402
¿Qué cambio importante hubo en el ciclo de lanzamientos a partir de Java 10?
Se pasó a un modelo de lanzamientos cada 6 meses, con versiones LTS (Long Term Support) cada 2 o 3 años.
403
¿Qué característica de Java 11 permite ejecutar archivos de código fuente directamente?
La capacidad de ejecutar 'java Programa.java' sin necesidad de compilar manualmente con 'javac' primero.
404
¿Qué son los 'Text Blocks' introducidos en Java 15 (LTS 17)?
Cadenas de texto multilínea delimitadas por triples comillas ("") que respetan el formato y evitan caracteres de escape.
405
¿Qué es un 'Record' en Java 16?
Un tipo especial de clase diseñada para actuar como contenedor de datos inmutables, generando automáticamente constructores, getters, equals y hashCode.
406
¿Qué son las 'Sealed Classes' (Clases Selladas) de Java 17?
Clases que restringen qué otras clases o interfaces pueden extenderlas o implementarlas.
407
¿Qué mejora se introdujo en el 'switch' en Java 17?
El 'Pattern Matching' para switch, permitiendo comparar el objeto contra patrones y tipos de datos directamente.
408
¿Cuál es la gran novedad de Java 21 relacionada con la concurrencia?
Los 'Virtual Threads' (Hilos Virtuales), que son hilos ligeros que permiten ejecutar millones de tareas concurrentes con poco consumo de memoria.
409
¿Qué permite el 'Pattern Matching for instanceof' (Java 16)?
Permite verificar el tipo de un objeto y declararlo en una variable local en la misma línea: 'if (obj instanceof String s)'.
410
¿Qué cambio hubo en la memoria permanente (PermGen) en Java 8?
Fue eliminada y sustituida por 'Metaspace', que utiliza memoria nativa del sistema en lugar de un espacio fijo en el Heap.
411
¿Cuál es el IDE de Java desarrollado por JetBrains, conocido por su potente análisis de código y refactorización?
IntelliJ IDEA.
412
¿Qué IDE de Java es de código abierto, gestionado por la Fundación Eclipse y famoso por su sistema de plugins?
Eclipse IDE.
413
¿Qué IDE de Java, originalmente creado por Sun Microsystems y ahora de Apache, destaca por su soporte nativo para proyectos Maven y Ant?
Apache NetBeans.
414
¿Qué editor de código ligero de Microsoft se ha vuelto muy popular para Java gracias a su 'Extension Pack for Java'?
Visual Studio Code (VS Code).
415
¿Qué IDE es la base oficial para el desarrollo de aplicaciones móviles Android en Java/Kotlin?
Android Studio (basado en IntelliJ).
416
¿Qué es el OpenJDK?
La implementación de código abierto y gratuita de la plataforma Java SE en la que se basan la mayoría de las distribuciones.
417
¿Qué caracteriza a la Oracle JDK respecto a la licencia para empresas?
Es la distribución oficial de Oracle y suele requerir licencias de pago para uso comercial y producción.
418
¿Qué es Amazon Corretto?
Una distribución gratuita, multiplataforma y lista para producción del OpenJDK mantenida por Amazon Web Services.
419
¿Qué distribución del JDK es muy popular en entornos empresariales por su soporte comunitario y es gestionada por la fundación Eclipse?
Eclipse Temurin (anteriormente AdoptOpenJDK).
420
¿Qué es Azul Zulu?
Una distribución certificada del OpenJDK que destaca por ofrecer soporte para una amplia gama de arquitecturas y sistemas operativos.
421
¿Para qué sirve Flyway?
Es una herramienta de migración de bases de datos que permite versionar y automatizar los cambios en el esquema mediante scripts SQL.
422
¿Qué es Liquibase?
Una herramienta de gestión de cambios en bases de datos similar a Flyway, pero que permite usar formatos como XML, JSON o YAML además de SQL.
423
¿Qué funcionalidad ofrece Lombok en un proyecto Java?
Es una librería que reduce el código repetitivo (boilerplate) mediante anotaciones como @Data para generar getters, setters y constructores.
424
¿Qué es JUnit 5?
El framework estándar para realizar pruebas unitarias (unit testing) en aplicaciones Java.
425
¿Para qué se utiliza Mockito?
Para crear objetos simulados (mocks) en las pruebas unitarias y aislar la lógica que se quiere testear.
426
¿Qué es SonarQube?
Una plataforma para la inspección continua de la calidad del código, detectando bugs, vulnerabilidades y deuda técnica.
427
¿Para qué sirve Swagger/OpenAPI en una aplicación Java?
Para documentar automáticamente las APIs REST y permitir probar los endpoints desde una interfaz web.
428
¿Qué es Logback?
Un framework de logging sucesor de Log4j, diseñado para ser rápido y eficiente, integrado nativamente con SLF4J.
429
¿Para qué se utiliza la herramienta JMeter?
Para realizar pruebas de rendimiento, carga y estrés sobre aplicaciones y servicios web.
430
¿Qué es MapStruct?
Un generador de código que simplifica enormemente el mapeo de datos entre diferentes tipos de objetos Java (ej. de Entidad a DTO).
431
¿Qué es Jenkins?
El servidor de automatización de código abierto más utilizado para implementar Integración Continua (CI) y Despliegue Continuo (CD).
432
¿Qué es un Pipeline en Jenkins?
Un conjunto de instrucciones (a menudo escritas en un 'Jenkinsfile') que definen todo el proceso de construcción, prueba y despliegue.
433
¿Qué herramienta de automatización de flujos de trabajo está integrada directamente en los repositorios de GitHub?
GitHub Actions.
434
¿Para qué sirve GitLab CI/CD?
Para automatizar el ciclo de vida del desarrollo dentro de la plataforma GitLab mediante el archivo .gitlab-ci.yml.
435
¿Qué es Docker en el contexto de Java?
Una herramienta que permite empaquetar una aplicación Java y su JRE en un contenedor para que se ejecute igual en cualquier entorno.
436
¿Qué es Apache Maven?
Una herramienta de gestión de proyectos y automatización de construcción basada en el concepto de POM (Project Object Model).
437
¿Cómo se llama el archivo central de configuración de un proyecto Maven?
pom.xml
438
¿Qué es el Repositorio Central de Maven?
Un servidor remoto que contiene la gran mayoría de las librerías de Java y del que Maven descarga las dependencias automáticamente.
439
¿Para qué sirven las coordenadas 'groupId', 'artifactId' y 'version' en Maven?
Para identificar de forma única un proyecto o una librería (GAV coordinates).
440
¿Qué hace el comando 'mvn clean'?
Borra el directorio 'target', eliminando todos los archivos generados en compilaciones anteriores.
441
¿Qué hace el comando 'mvn compile'?
Compila el código fuente del proyecto ubicado en src/main/java.
442
¿Qué hace el comando 'mvn test'?
Ejecuta las pruebas unitarias del proyecto que se encuentran en src/test/java.
443
¿Qué diferencia hay entre 'mvn package' y 'mvn install'?
'package' crea el archivo .jar/.war; 'install' además lo copia al repositorio local del usuario para que otros proyectos puedan usarlo.
444
¿Cuál es el ciclo de vida por defecto (default lifecycle) de Maven?
La secuencia de fases que incluye: validate, compile, test, package, verify, install y deploy.
445
¿Qué es el 'Repositorio Local' de Maven y dónde se ubica por defecto?
Es una carpeta en el equipo del desarrollador donde Maven guarda las dependencias descargadas; suele estar en '~/.m2/repository'.
446
¿Qué es Spring Framework?
El framework modular más popular para el desarrollo de aplicaciones empresariales, basado en Inyección de Dependencias y AOP.
447
¿Qué es Spring Boot?
Una extensión de Spring diseñada para crear aplicaciones 'stand-alone' listas para producción con configuración mínima (autoshaping).
448
¿Qué es Spring Security?
Un framework potente y altamente personalizable para gestionar la autenticación y el control de acceso en aplicaciones Java.
449
¿Qué es Hibernate?
El framework de Mapeo Objeto-Relacional (ORM) más utilizado, que implementa la especificación JPA.
450
¿Para qué sirve Struts?
Un framework clásico de Apache (modelo MVC) para crear aplicaciones web, precursor de muchas tecnologías actuales.
451
¿Qué es Jakarta EE (antes Java EE)?
Un conjunto de especificaciones (JSP, Servlets, EJB, etc.) para el desarrollo de aplicaciones empresariales distribuidas.
452
¿Qué es Quarkus?
Un framework de Java nativo para Kubernetes, diseñado para GraalVM y HotSpot con tiempos de arranque muy bajos.
453
¿Qué es Micronaut?
Un framework moderno y ligero para microservicios que realiza la inyección de dependencias en tiempo de compilación.
454
¿Qué es Pentaho Kettle (PDI)?
Una potente herramienta de ETL (Extracción, Transformación y Carga) basada en Java para integración de datos.
455
¿Para qué sirve JasperReports?
La librería de código abierto más popular para la generación de informes dinámicos y documentos (PDF, HTML, Excel).
456
¿Qué es Apache POI?
Una librería que permite a las aplicaciones Java leer y escribir archivos de Microsoft Office (Excel, Word, PowerPoint).
457
¿Qué es iText?
Una librería especializada en la creación y manipulación de documentos PDF mediante programación.
458
¿Para qué se usa MyBatis?
Un framework de persistencia que acopla objetos con sentencias SQL, ideal cuando se requiere un control total del SQL.
459
¿Qué es JFreeChart?
Una librería estándar para la creación de una amplia variedad de gráficos (pie, barras, líneas) en aplicaciones Java.
460
¿Qué es Apache Commons?
Un proyecto de la Apache Software Foundation que ofrece librerías de utilidades para manejo de I/O, matemáticas, redes y más.
461
¿Qué es Quartz?
Un servicio de programación de tareas (job scheduling) que permite ejecutar procesos en momentos específicos.
462
¿Qué es Flyway?
Librería para el control de versiones y migraciones de bases de datos de forma automática.
463
¿Qué es MapStruct?
Un generador de código que facilita el mapeo entre tipos de objetos (ej. de Entidad a DTO) basándose en convenciones.
464
¿Qué es Bouncy Castle?
Una colección de APIs criptográficas que proporciona implementaciones de algoritmos de cifrado, firmas digitales y certificados.
465
¿Para qué sirve Apache Shiro?
Un framework de seguridad sencillo pero potente que gestiona autenticación, autorización, criptografía y sesiones.
466
¿Qué es JJWT (Java JWT)?
Una librería para crear, verificar y parsear JSON Web Tokens (JWT) en aplicaciones Java.
467
¿Qué es Google Tink?
Una librería criptográfica multiplataforma creada por Google que ofrece APIs seguras y fáciles de usar correctamente.
468
¿Para qué se usa Keycloak?
Un producto de código abierto para la gestión de identidad y acceso (IAM) con soporte para protocolos como OAuth2 y SAML.
469
¿Qué es Apache Kafka?
Una plataforma de streaming de eventos distribuida para la comunicación de datos en tiempo real a gran escala.
470
¿Para qué sirve Apache Spark?
Un motor de procesamiento de datos multilingüe para ejecutar ingeniería de datos, ciencia de datos y aprendizaje automático.
471
¿Qué es Apache Lucene?
Una librería de alto rendimiento para la indexación y búsqueda de texto, base de datos de motores como Elasticsearch.
472
¿Qué es Elasticsearch?
Un motor de búsqueda y analítica RESTful distribuido basado en Lucene.
473
¿Qué es Apache Hadoop?
Un framework que permite el procesamiento distribuido de grandes conjuntos de datos a través de clústeres de computadoras.
474
¿Para qué sirve Apache Cassandra?
Una base de datos NoSQL distribuida de alta disponibilidad diseñada para manejar grandes volúmenes de datos.
475
¿Qué es Apache Camel?
Un framework de integración basado en patrones (EIP) que permite conectar sistemas diversos con facilidad.
476
¿Qué es Apache ActiveMQ?
Un servidor de mensajería (Message Broker) de código abierto que implementa el estándar JMS.
477
¿Qué es RxJava?
Una librería para componer programas asíncronos y basados en eventos usando secuencias observables.
478
¿Qué es Netty?
Un framework de red asíncrono dirigido por eventos para el desarrollo rápido de protocolos de red (servidores/clientes).
479
¿Qué es Project Lombok?
Librería que usa anotaciones para generar automáticamente código repetitivo como getters, setters y constructores.
480
¿Para qué sirve Jackson?
La librería estándar para procesar datos en formato JSON (serialización y deserialización) en Java.
481
¿Qué es Gson?
Una librería de Google para convertir objetos Java a JSON y viceversa.
482
¿Qué es JUnit 5?
El framework de pruebas unitarias por excelencia para la plataforma Java.
483
¿Qué es Mockito?
Un framework de simulación (mocking) que permite crear objetos falsos para probar unidades de código de forma aislada.
484
¿Para qué sirve Guava?
Un conjunto de librerías centrales de Google que incluyen nuevos tipos de colecciones, grafos y utilidades funcionales.
485
¿Qué es Selenium?
Un framework para la automatización de navegadores web, muy usado para pruebas de aceptación e interfaz.