T6 - JAVA Flashcards

(85 cards)

1
Q

Define Ecosistema JAVA SE (Standard Edition)

A
  • Infraestructura de ejecución (JVM: Java Virtual Machine, JRE: Java Runtime Environment)
  • Lenguaje de programación (Java)
  • Herramientas y librerías de terceros
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q
  • ¿Cuáles son las diferencias entre construcción JDK y ejecución JRE?
A
  • JDK (Java Development Kit): entorno de desarrollo que incluye compilador, depurador, JVM y herramientas necesarias para crear aplicaciones Java.
  • JRE (Java Runtime Environment): entorno de ejecución que contiene la JVM y las librerías básicas necesarias para ejecutar aplicaciones Java, pero no incluye herramientas de desarrollo.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

JDK: ¿Qué es javac en Java?

A
  • javac es el compilador de Java.
  • Convierte archivos de código fuente .java en archivos de bytecode .class ejecutables por la JVM (Java Virtual Machine).
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

JDK: ¿Qué es el intérprete de Java?

A
  • El intérprete ejecuta directamente el bytecode generado (.class).
  • Forma parte de la JVM (Java Virtual Machine).
  • Traduce bytecode en instrucciones comprensibles para el sistema operativo.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

JDK: ¿Qué es jshell en Java?

A
  • jshell es una herramienta de línea de comandos de Java.
  • Permite ejecutar fragmentos de código Java de forma interactiva (REPL: Read-Eval-Print Loop).
  • Útil para pruebas rápidas y aprendizaje.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

JDK: ¿Qué diferencia hay entre un intérprete y un compilador en Java?

A
  • Compilador (javac): traduce el código fuente .java ➡️ bytecode .class antes de la ejecución.
  • Intérprete (JVM): ejecuta el bytecode línea por línea en tiempo de ejecución.
  • El compilador actúa antes de ejecutar, el intérprete durante la ejecución.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

JDK: ¿Qué es javadoc en Java?

A
  • javadoc es una herramienta de Java.
  • Genera documentaciónHTML a partir de comentarios en el código fuente.
  • Facilita la creación de documentación técnica de clases, métodos y paquetes.
  • Soporta metadatos como:
    • @author: autor del código.
    • @version: versión del código.
    • @param: descripción de un parámetro de un método.
    • @return: valor devuelto por un método.
    • @throws: excepciones que puede lanzar un método.
    • @see: referencias a clases o métodos relacionados.
    • @since: desde qué versión existe.
    • @serial: serialización de campos.
    • @deprecated: indica que algo está obsoleto.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

JDK: ¿Qué es keytool en Java?

A
  • keytool es una utilidad de gestión de claves y certificados.
  • Permite generar, almacenar y administrar pares de claves y certificados digitales en un keystore.
  • Se utiliza para firmar aplicaciones y establecer comunicaciones seguras (SSL/TLS).
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

JDK: ¿Qué es jar en Java?

A
  • jar (Java ARchive) es una herramienta de empaquetado de archivos Java.
  • Agrupa múltiples archivos .class, imágenes y metadatos en un solo archivo .jar.
  • Facilita la distribución y ejecución de aplicaciones Java.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

JDK: ¿Qué es jarsigner en Java?

A
  • jarsigner es una herramienta para firmar archivos .jar.
  • Garantiza la autenticidad e integridad de los archivos.
  • Utiliza certificados digitales y claves privadas almacenadas en un keystore.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

JDK: ¿Qué es rmic en Java y qué clases genera?

A
  • rmic es el compilador de objetos remotos en Java RMI (Remote Method Invocation).
  • Genera clases stub (cliente) y skeleton (servidor).
  • Facilita la comunicación entre objetos en diferentes máquinas.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

JDK: ¿Qué es javap en Java?

A
  • javap (Java print) es una herramienta que muestra el contenido de bytecode de una CLASE en Java.
  • Muestra la estructura de clases .class sin necesidad del código fuente.
  • Permite ver métodos, atributos y firmas de una clase compilada.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

JDK: ¿Qué son jmc y jconsole en Java?

A

jmc (Java Mission Control): herramienta de monitoreo y análisis de rendimiento.
- Analiza registros de vuelo (flight recordings) de la JVM.
- Detecta problemas de rendimiento y ayuda a optimizar aplicaciones.

jconsole (Java Monitoring and Management Console): herramienta gráfica de monitoreo en tiempo real.
- Muestra uso de memoria, hilos, CPU y otras métricas de la JVM.
- Utiliza JMX (Java Management Extensions) para conectarse a aplicaciones.

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

JRE: ¿Qué son los ficheros rt.jar en Java?

A
  • rt.jar (runtime Java Archive) es un archivo que contiene todas las CLASES ESENCIALES DE JAVA
  • Es fundamental para la ejecución de programas Java.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

JRE: ¿Qué es el classpath en Java y qué 3 formas existen para encontrar archivos .jar?

A
  • Classpath es una ruta o conjunto de rutas donde la JVM y el compilador buscan clases y archivos .jar.
  • 3 formas de definir el classpath:
    • Variable de entorno CLASSPATH.
    • Comandos -cp o -classpath usados al ejecutar el programa (java -cp archivo.jar ClasePrincipal).
    • Archivo MANIFEST.MF dentro de un .jar, donde existe un campo “class-path:ruta(s)” que especifica rutas adicionales.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

JRE: ¿Para qué sirve el fichero META-INF/Manifest.mf en Java? ¿Que tipo de información contiene?

A
  • META-INF/Manifest.mf es el fichero de metadatos de un archivo .jar.
  • Contiene información como la clase principal (Main-Class) o el classpath (class-path:ruta(s)).
  • Permite configurar opciones de ejecución y dependencias del .jar.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

JRE: ¿Qué son los threads (hilos) en Java?

A
  • Threads: unidades de ejecución dentro de un proceso.
  • Los hilos son importantes para los métodos.
  • Permiten realizar múltiples tareas de forma concurrente.
  • En Java, se gestionan mediante la clase Thread o implementando la interfaz Runnable.

  • Proceso: programa en ejecución que dispone de su propia memoria y recursos.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

JRE: ¿Para qué sirve ejecutar “Hola Mundo” en Java?

A
  • Verificar que el entorno de desarrollo Java está correctamente instalado.
  • Comprobar que el compilador (javac) y la JVM funcionan correctamente.
  • Aprender la estructura básica de un programa Java.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

JRE: ¿Cuál es el hilo predefinido “Recolector de basura” en Java?

A
  • Es un hilo automático de la JVM.
  • Se encarga de liberar memoria eliminando objetos que ya no son utilizados.
  • Funciona en segundo plano sin necesidad de intervención del programador.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

LENGUAJE JAVA: ¿Qué significa que Java esté orientado a objetos?

A
  • Java organiza el código en clases y objetos.
  • Un objeto es una instancia: un ejemplar real creado a partir de una clase.
  • Facilita representar el mundo real y reutilizar el código.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

LENGUAJE JAVA: ¿Qué es una clase en Java?

A
  • Una clase es un modelo que define cómo serán los objetos.
  • Da la estructura y la información para crearlos.
  • Es la base del código en Java.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

LENGUAJE JAVA: ¿Qué es el diseño y arquitectura en Java en relación con las clases?

A
  • Es cómo se organizan y conectan las clases.
  • Define sus roles y relaciones para que el código sea claro y mantenible.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

LENGUAJE JAVA: ¿Para qué sirven las clases de tipo Pantallas?

A

Manejo de eventos

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

LENGUAJE JAVA: ¿Qué son los paquetes en Java y qué tienen que ver con las clases?

A
  • Un paquete agrupa clases relacionadas en una carpeta lógica.
  • Ayuda a organizar el código y evitar conflictos de nombres.
  • Una clase siempre pertenece a un paquete.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
***LENGUAJE JAVA***: ¿Qué es una **interfaz** en un entorno de Java?
- Es como un contrato que dice qué debe hacer una clase. - Solo define los métodos, no su contenido. - Una clase que la usa debe completar esos métodos.
26
***LENGUAJE JAVA***: ¿Qué son los **tipos enumerados** en Java?
- Son listas de opciones que el programador crea. - Se usan cuando un dato solo puede tener ciertos valores. - Se escriben con la palabra `enum`.
27
***LENGUAJE JAVA***: ¿Qué son las **anotaciones** en Java?
- Son instrucciones especiales que se ponen sobre el código con `@`. - Sirven para dar información extra al programa o al compilador. - Ejemplo: `@Deprecated` indica que algo ya no se recomienda usar.
28
***LENGUAJE JAVA***: Si hablamos de relaciones en Java ¿qué son las **asociaciones** y la **herencia**?
- **Asociación**: relación entre dos clases, una usa o conoce a la otra - **Herencia**: relación jerárquica; una clase extiende a otra y hereda sus miembros
29
***PROGRAMACIÓN EN JAVA***: ¿Cuál es la herramienta **IDE** en Java? (integrated development environment)
- Un **IDE** es un programa para escribir y probar código. - En Java, se usan **Eclipse**, **IntelliJ IDEA** y **NetBeans**. - Ayuda con sugerencias, errores y pruebas.
30
***PROGRAMACIÓN EN JAVA***: ¿Para qué sirve la herramienta **JDK** en Java? ¿Qué **incluye**? Menciona **ejemplos**.
- **JDK** permite crear programas en Java. - Incluye compilador, máquina virtual y herramientas. - Ejemplos: **OpenJDK**, **Amazon Corretto**, **IBM JDK**.
31
***PROGRAMACIÓN EN JAVA***: ¿Qué es la **automatización del desarrollo** en Java? Da ejemplos.
- Es usar herramientas para evitar tareas manuales. - Ayuda a compilar, probar y empaquetar código. - Ejemplos: **Maven**, **Gradle**.
32
***PROGRAMACIÓN EN JAVA***: ¿Para qué sirve un **String** en Java?
- Un **String** guarda texto como palabras o frases. - Se usa para mostrar o guardar información escrita. - Es uno de los tipos más usados.
33
***PROGRAMACIÓN EN JAVA***: ¿Qué son los **constructores** en Java?
- Son **`MÉTODOS`** especiales que **crean objetos.** - Tienen el mismo nombre que la clase. - Ponen valores iniciales al crear un objeto.
34
***PROGRAMACIÓN EN JAVA***: ¿Para qué sirve **extends** en Java en relación a las clases?
- **extends** se usa para que una clase herede de otra. - La clase hija hereda los **atributos** y los **métodos** de la clase padre. - Facilita la reutilización de código.
35
***PROGRAMACIÓN EN JAVA***: ¿Cuál es la diferencia entre **sobrecarga** y **sobrescritura** en Java? ¿Y cuáles son sus **@**?
- **Sobrecarga**: mismo método, distintos parámetros. Dentro de la `misma clase` - No tiene anotación especial. - **Sobrescritura**: una `subclase` cambia un método heredado. - Usa `@Override`.
36
***PROGRAMACIÓN EN JAVA***: ¿Cuáles son los 4 **especificadores de acceso** en Java?
- public - protected - default - private
37
***PROGRAMACIÓN EN JAVA***: Define la especificación **public**. ¿Se puede acceder desde diferentes paquetes?
- **public** permite el acceso total desde cualquier parte. **Mismo** paquete: - Clase: sí - Subclase: sí - No subclase: sí **Diferente** paquete: - Subclase: sí - No subclase: sí
38
***PROGRAMACIÓN EN JAVA***: Define la especificación **private**. ¿Se puede acceder desde diferentes paquetes?
- **private** solo permite el acceso desde la misma clase. **Mismo** paquete: - Clase: sí - Subclase: no - No subclase: no **Diferente** paquete: - Subclase: no - No subclase: no
39
***PROGRAMACIÓN EN JAVA***: Define la especificación **protected**. ¿Se puede acceder desde diferentes paquetes?
- **protected** permite el acceso desde el mismo paquete o desde subclases en otros paquetes. **Mismo** paquete: - Clase: sí - Subclase: sí - No subclase: sí **Diferente** paquete: - Subclase: sí - No subclase: no
40
***PROGRAMACIÓN EN JAVA***: Define la especificación **default**. ¿Se puede acceder desde diferentes paquetes?
- **default** (sin palabra) solo permite acceso dentro del mismo paquete. **Mismo** paquete: - Clase: sí - Subclase: sí - No subclase: sí **Diferente** paquete: - Subclase: no - No subclase: no
41
***LENGUAJE JAVA***: ¿Qué significa **método** en Java?
* Es un **`bloque de código`** que realiza una tarea. * Se puede llamar para usar esa tarea varias veces. * Ayuda a organizar el programa. * Existen **VACÍOS** Y **DEFAULT**
42
***PROGRAMACIÓN EN JAVA***: ¿Qué diferencia hay entre **interface** y **@interface** en Java?
- **interface** se usa para definir un conjunto de métodos que una clase debe implementar. - **@interface** se usa para crear una anotación personalizada. - Aunque se parecen, **@interface** no define comportamiento, sino metadatos.
43
***PROGRAMACIÓN EN JAVA***: ¿Que quiere decir que los **METODOS** en Java pueden ser **vacíos** o **default**?
- Un método **vacío** usa `void` y no devuelve ningún valor. - Un método **default** solo existe en interfaces y tiene implementación por defecto.
44
¿Qué relación hay entre **paquete**, **clase**, **interface** y **método**?
- **Paquete**: carpeta que agrupa clases relacionadas. - **Clase**: plano que define objetos con atributos y métodos. - **Interface**: contrato que dice qué debe hacer una clase. - **Método**: acción que puede realizar una clase u objeto."
45
***PROGRAMACIÓN EN JAVA***: ¿Qué es un **atributo** y qué es un **método** en Java?
- **Atributo**: dato que describe una característica del objeto. - **Método**: acción que el objeto puede realizar.
46
***PROGRAMACIÓN EN JAVA***: ¿Qué relación hay entre **clase**, **interface**, **atributos** y **métodos** en Java?,"
- La **clase** tiene los **atributos** y la lógica de los **métodos**. - La **interface** solo define los **nombres de los métodos** (sin código). - La **clase** implementa la interface y completa esos métodos. - La interface **no define atributos**, salvo constantes."
47
***PROGRAMACIÓN EN JAVA***: ¿Qué es una **clase abstracta** en Java?
- Es una clase que **no se puede usar directamente**. - **NO** se pueden **CREAR OBJETOS** de ella. - Puede tener **métodos con código** y otros sin completar (abstractos). - Sirve como base para otras clases, que deben completar lo que falta.
48
***PROGRAMACIÓN EN JAVA***: ¿Para qué sirve **super(nombreDeParametro)** en Java?
- Llama al **constructor** de la clase padre. - Se usa para **inicializar** la parte heredada del objeto.
49
***PROGRAMACIÓN EN JAVA***: ¿Qué es **this** en Java?
- Es una palabra que se refiere al **objeto actual**. - Se usa para **diferenciar atributos de parámetros** cuando ambos tienen el mismo nombre. - También permite llamar a métodos de la misma clase.
50
***PROGRAMACIÓN EN JAVA***: ¿Qué son los atributos y métodos **static** en Java?
- Son elementos que **no dependen del objeto**, sino de la clase. - Se pueden usar **sin crear un objeto**. - Son compartidos por todas las instancias.
51
***PROGRAMACIÓN EN JAVA***: ¿Para qué sirve **final** en Java?
- En las **clases**: evita las subclases. - En un **método**: para evitar **@override** en las subclases. - En un **atributo**: para impedir su modificación posterior a su creación. - En un **parámetro de entrada**: para impedir su modificación dentro del método. - En un **método static**: para definir constantes.
52
¿Por qué elementos está formado una **JVM**?
* **Class Loader**: Carga las clases necesarias en memoria. * **Runtime Data Areas**: Memoria que se usa durante la ejecución del programa (**heap, stack**, etc.). * **Execution Engine**: Interpreta el bytecode o lo compila en tiempo real (JIT compiler). * **Native Method Interface**: Permite que Java use código nativo (como C/C++). * **Native Method Libraries**: Librerías externas del sistema operativo.
53
¿Para qué sirven **heap** y **stack**?
* **Heap**: guarda objetos y atributos, compartido por todos los hilos. * **Stack**: guarda llamadas a métodos y variables locales, separado por hilo.
54
¿Qué es **JIT** en JAVA?
"**J**ust **I**n **T**ime" Compiler Transforma el **bytecode** ➡️ código máquina **nativo** y asi no se tenga que traducir.
55
***PROGRAMACIÓN EN JAVA***: ¿Para qué sirve **ArrayList** en relación a **clases e interfaces**?
- Sirve para guardar listas de objetos que cambian de tamaño. - **ArrayList** es una **clase** que implementa la **interfaz List**. - Usa herencia simple: solo puede extender una clase. - Puede implementar varias interfaces.
56
***PROGRAMACIÓN EN JAVA***: ¿Qué es la **interface List** en Java? ¿Tiene un padre?
- Es una **interface genérica** que representa una lista de elementos ordenados (`` es el tipo). - Es parte del **framework de colecciones** de Java. - Hereda de la **`interface Collection`**.
57
***PROGRAMACIÓN EN JAVA***: ¿Para qué sirve **implements** en Java?
- Se usa para decir que una **clase cumple una interface**. - Obliga a la clase a **implementar los métodos** definidos en esa interface. - Una clase puede **implementar varias interfaces**.
58
***ENTORNO JAVA***: Define estas **librerías de terceros** en Java
- **iText, PDFBox**: generar y manipular archivos PDF. - **BouncyCastle**: funciones de seguridad y criptografía. - **Log4j, Logback, SLF4J**: registro de logs. - **Xerces, Xalan, Woodstock, Apache**: manipulación de XML y UI. - **JUnit, Mockito, JMeter**: pruebas (unitarias, mocks y rendimiento). - **Apache Commons**: utilidades (texto, BD, cifrado, carga de archivos). - **Apache HttpComponents**: trabajar con HTTP. - **Gson, Jackson**: convertir entre objetos Java y JSON. - **Apache POI**: leer y escribir Excel y Word. - **Apache Tika**: detectar tipo y contenido de archivos. - **Pentaho, Kettle**: herramientas de ETL y BI.
59
***PROGRAMACIÓN EN JAVA***: ¿Qué diferencia hay entre **tipos primitivos** y **clases Wrapper** en Java?
- **Primitivos**: tipos básicos como `int`, `boolean`, `char`. Se usan para `almacenar datos simples y básicos` de manera eficiente. No son objetos y ocupan menos memoria - **Wrapper classes**: clases que envuelven a los primitivos (`Integer`, `Boolean`, `Character`). - Los **primitivos** no son objetos, las **Wrapper** sí.
60
***PROGRAMACIÓN EN JAVA***: ¿Qué es un UUID en Java?
- UUID significa *Universally Unique Identifier*. - Es un identificador único que se genera automáticamente. - Se usa para dar una identidad irrepetible a objetos, registros o sesiones.
61
***PROGRAMACIÓN EN JAVA***: ¿Qué es la **serialización** y **deserialización** en Java?
- **Serialización**: convertir **`un objeto en datos (bytes)`** para guardarlo o enviarlo. - **Deserialización**: reconstruir el objeto original desde esos datos. - Se usa para guardar objetos, transmitirlos por red o compartirlos entre sistemas.
62
***PROGRAMACIÓN EN JAVA*** ¿Para qué sirve la interfaz Map?
- Almacena pares clave-valor - Permite acceder a un valor mediante su clave - No admite claves duplicadas
63
***PROGRAMACIÓN EN JAVA*** ¿Para qué sirve el método `get()` en un `Map`?
- Devuelve el valor asociado a una clave - Si la clave no existe, devuelve `null`
64
***PROGRAMACIÓN EN JAVA*** ¿Para qué sirve el método `put()` en un `Map`?
- Inserta o reemplaza un valor asociado a una clave - Si la clave ya existe, sustituye su valor
65
***PROGRAMACIÓN EN JAVA*** ¿Qué es `HashMap` y para qué se usa?
- Implementación de `Map` - Almacena pares clave-valor sin orden - Permite una clave `null` y valores `null` - No es sincronizado
66
***PROGRAMACIÓN EN JAVA*** ¿Qué es `Hashtable` y en qué se diferencia de `HashMap`?
- Implementación de `Map` sincronizada - No permite claves ni valores `null` - Más lenta que `HashMap` en entornos no concurrentes
67
***PROGRAMACIÓN EN JAVA*** ¿Qué diferencias hay entre `List`, `Queue` y `Set` en las colecciones de Java?
- `List`: colección ordenada, permite duplicados (métodos `add()`, `size()`, `remove()`)\n - `Queue`: colección con orden FIFO (métodos `peek()`, `remove()`, `poll()`)\n - `Set`: colección sin duplicados
68
***PROGRAMACIÓN EN JAVA*** ¿Qué es un `iterator` y para qué se utiliza?
- Permite recorrer una colección elemento por elemento - Métodos: `hasNext()`, `next()`, `remove()` - Evita errores al modificar la colección durante la iteración
69
***EXCEPTIONS*** ¿Qué es una excepción en Java, para qué se usa y cuál es su clase padre?
- Es una **clase** que representa un `error` durante la ejecución - Permite manejar fallos sin detener el programa - Su clase padre es `Throwable`
70
***EXCEPTIONS*** ¿Cuál es la diferencia entre `Exception` y `Error` en Java?
- `Exception`: errores recuperables, se pueden manejar con `try-catch` - `Error`: errores graves del sistema, no deben capturarse
71
***EXCEPTIONS*** ¿Para qué sirve lanzar una excepción en Java y cómo se lanza?
- Para **interrumpir el flujo** normal del programa cuando ocurre un error - Se lanza con la palabra clave `throw`\n- Ejemplo: `throw new IOException(\"mensaje de error\");`
72
***EXCEPTIONS*** ¿Para qué sirve el bloque `try-catch` en Java?
- Permite **atrapar y manejar excepciones** sin detener el programa - El código propenso a fallar va en `try` - El manejo del error va en `catch`
73
***EXCEPTIONS*** ¿Para qué sirve el bloque `finally` en Java?
- Contiene `código` que **siempre se ejecuta**, haya o no excepción - Se usa para cerrar recursos como archivos o conexiones
74
***EXCEPTIONS*** ¿Cuál es la diferencia entre `throw` y `throws` en Java?
- `throw`: **lanza** una excepción concreta - `throws`: **declara** que un método puede lanzar una excepción
75
***EXCEPTIONS*** ¿Qué son las `RuntimeException` en Java?
- Son excepciones **no comprobadas** (unchecked) - No requieren ser declaradas ni capturadas - Heredan de `RuntimeException`, como `NullPointerException` o `IndexOutOfBoundsException`
76
***EXCEPTIONS*** ¿Qué son las excepciones `checked` en Java?
- Son excepciones **comprobadas en tiempo de compilación** - Deben ser **capturadas o declaradas con `throws`** - Ejemplo: `IOException`, `SQLException`
77
***EXCEPTIONS*** ¿Qué son las `RuntimeException` en Java?
- Son excepciones **no comprobadas** (unchecked) - No requieren ser declaradas ni capturadas - Heredan de `RuntimeException`, como `NullPointerException` o `IndexOutOfBoundsException`
78
***HILOS/THREADS*** ¿Cuáles son las dos formas principales de crear un hilo en Java?
- **Heredando** de la clase `Thread` y sobrescribiendo el método `run()` - Implementando la interfaz `Runnable` y pasando el objeto a un `Thread`
79
***HILOS/THREADS*** ¿Para qué sirve `public synchronized` en métodos?
- Evita que varios hilos accedan simultáneamente al mismo recurso - Solo un hilo puede ejecutar el método a la vez por objeto - Protege atributos de modificaciones concurrentes *caja de ropa en “oportunidades del corte inglés”*
80
***HILOS/THREADS*** ¿Qué es la información `local` de un hilo en Java?
- Son datos exclusivos de un hilo, no compartidos - Se gestionan con variables locales dentro de `run()` o usando `ThreadLocal`
81
***JEE*** ¿Qué es Java EE (JEE) y en qué se diferencia de Java SE?
- JEE es la plataforma para desarrollar aplicaciones empresariales en Java - Incluye `APIs` para web, bases de datos, servicios REST, etc. - Java SE es la base del lenguaje; `JEE lo amplía` con capacidades para aplicaciones distribuidas y de servidor
82
***JEE*** ¿Qué es la **PERSISTENCIA** en JEE?
- Es el proceso de **almacenar datos de forma permanente** (normalmente en una base de datos) - Se gestiona con APIs como **`JPA`** (Java Persistence API) - Permite guardar, actualizar y recuperar objetos Java como registros en tablas
83
***JEE*** ¿Cuáles son las diferencias entre **LIBRERÍAS** y **APIs**?
- **API**: conjunto de clases e interfaces que **definen cómo interactuar** con una funcionalidad - **Librería**: conjunto de clases reutilizables que **pueden implementar** una API - La API define *qué se puede hacer*, la librería ofrece *cómo hacerlo* - Una API necesita una implementación para ser funcional, pero el usuario no tiene por qué crearla
84
***JEE*** ¿Qué es JPA y cuáles son sus implementaciones más conocidas?
- **JPA** (Java Persistence API) es una API estándar para gestionar la **persistencia de datos** en Java - Permite mapear clases Java a tablas de bases de datos (ORM) Implementaciones más usadas: - **Hibernate** - **EclipseLink** - **OpenJPA**
85
***JEE*** ¿Qué relación tienen Maven, Gradle e Ivy con JEE?
- No forman parte de JEE, pero se usan para **gestionar proyectos Java empresariales** - **Maven**: descarga automáticamente librerías necesarias (dependencias) y organiza el proceso de compilación, pruebas y empaquetado - **Gradle**: más flexible, usa scripts (`build.gradle`) y es más rápido - **Ivy**: complemento de Ant para manejar dependencias - Permiten integrar fácilmente APIs como JPA, Servlets, Spring, etc."