b3t6 - Java Flashcards

1
Q

Qué es la JDK de java?

A

Es el kit de desarrollo Java: Incluye las herramientas de desarrollo Java, pero también te instala la JRE para poder ejecutar a nivel local

Se la descargará el programador

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

Qué son las siguientes herramientas que vienen dentro del JDK

bin/javac
java
jshell
javadoc
jar
jarsigner
keytool
wsimport
xjc
rmic
rmiregistry
javap
jdb
jdeps
jconsole y jmc

A

bin/javac: El compilador Java
java: intérprete
jshell: intérprete de comandos java (no importante)
javadoc: documentación automáticia. generador html a partir de los fuentes
jar: empaquetar clses compiladas, a veces con algún fichero más como xml de configuración, etc
jarsigner: firmar y verificar ficheros jar
keytool: herramienta de línea de comandos para criptografía. Equivalente a SSL en java
wsimport: generación de clases automáticas para los clientes web service SOAP
xjc: compilador que genera clases java a partir de un XSD
rmic: compilador que genera clases java, stubs en cliente y skeletons en servidor, para su comunicación C/S en programación distribuida
rmiregistry: servicio de nombres para registrar objetos disbribuidos
javap: desensamblador de los ficheros .class que genera el compilador
jdb: depurador
jdeps: analizador de dependencias, de clases o paquetes
jconsole y jmc: herramientas de monitorización de la JVM en el servidor

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

Qué contienen los ficheros .class de java?

A

Contiene bytecode, es generado por el compilador (javac).
El bytecode es el “código máquina” pero para una CPU virutal (jvm), de forma que es portable, no es código fuente para una CPU hw concreta

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

Qué hace la herramienta “java” de la JDK sobre un fichero .class?

A

Lo ejecuta o interpreta

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

Qué tienen los ficheros .java?

A

Código fuente

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

Qué es una consola REPL?

A

Es una consola, la típica shell, como el cmd de windows, el bash de linux, el jshell de java,… que tiene 4 estados (es un acrónimo):
Read -> Evaluate -> Print -> Loop (vuelve al primer estado)

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

Qué es JRE?

A

Java Runtime Enviroment: Es la capa de software que se ejecuta sobre el sistema operativo y que proporciona las librerías BASE (rt.jar) que necesita un programa java (generado con el JDK) para ejecutarse (con la JVM, que es el intérprete)

Cada JRE tiene una JVM concreta.
La JRE se descargará para instalarla en el servidor

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

Qué es el JVM?

A

Es la máquina virtual de java. Es el intérprete de los ficheros .class con código bytecode

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

Qué es la variable de entorno CLASSPATH del JRE?

A

Es la variable de entorno que le sirve a la máquina virutal para localizar y cargar clases que se usen en tu programa (y que no sean las tuyas propias, ni las del fichero rt.jar)

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

Qué tres formas hay de indicarle a la JVM el contenido de CLASSPATH?

A
  1. Configurando la variable de entorno CLASSPATH
  2. Al lanzar la aplicación java, indicárselo con un comando “java -classpath /…/…/lib.jar”
  3. En el fichero MANIFEST.mf existe un “campo” llamado Class-Path:ruta(s) (dentro de un fichero .jar)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Qué tiene un fichero .jar?

A

Tiene los ficheros .class y el directorio META-INF
(Dentro de META-INF está el fichero MANIFEST.mf para establecer metadatos del jar con formato clave:valor, como Manifest-Version, Created-By o Class-Path )

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

Qué contiene la JVM?

A

Es como una CPU virtual, tiene:
- ClassLoader
- Heap: memoria dinámica donde se guardan los objetos que se van creando
- Stack: memoria donde van guardando datos los hilos de ejecución
- Registros
- GC: Grarbage collector, que elimina los objetos que no se usan del Heap, liberando memoria
- JIT: Just In Time Compiler que traduce el bytecode al código nativo de la plataforma donde esté funcionando, en tiempo de ejecución
- Motor de ejecución (hilos)

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

Cómo se diferencia la marca para el comentario Javadoc del comentario normal?

A

Javadoc: /** ….*/

Normal: / * … * / (pero sin espacio, lo pongo porque la aplicación no lo escapa)

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

Cómo se consulta qué hilo está ejecutando el programa?

A

Thread.currentThread().getName();

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

Qué hace el método .start() de un hilo?

A

Avisa al planificador de que tiene que ejecutar el hilo. Cuando el planificador decida ejecutarlo, se ejecutará el código del método .run() del hilo.

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

Qué es la encapsulación en Java?

A

Que haga falta acceder a los atributos de una clase a través de un método, no directamente

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

Cuál es la palabra reservada para herencia en Java?

A

extends
Public class Director extends Empleado

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

Qué es la sobrecarga en Java?

A

Es cuando hay varios métodos en una clase con el mismo nombre, pero con distintos parámetros en tipo o número

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

Para qué sirven las siguientes estructuras de programación de Java?

A
  • Paquetes : agrpación de clases, interfaces, etc …
  • Clases: Estructura que puede tener atributos y métodos
  • Interfaces: Declaración funcional para obligar a una clase a cumplir con ese contrato
  • Enum:
  • Anotaciones:
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

Qué significa la palabra final en Java en
- Clases
- Métodos
- Atributos

A
  • Clases: Clase que no se puede heredar
  • Métodos: Método que no se puede sobreescribir
  • Atributos: Constante, atributo que no se puede modificar
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

Qué es un enumerado en java y cómo se declara?

A

Se declara como enum y sirve para darle valores concretos
public enum Color{
rojo, blanco, negro
}

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

Para qué sirven las anotaciones en Java

A

Son elementos de programación que sirven para CONFIGURAR código (clases, métodos, atributos, …)

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

A partir de qué versión de java surgen las anotaciones, que sustituye parte de la configuración que se hacía en ficheros XML? (No muy preguntable)

A

A partir de la versión de Java 1.5

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

Para qué sirve la anotación @Override en java? Es obligatoria?

A

Es una anotación para configurar métodos. Es para que java controle y valide que el método al que se le pone la anotación realmente se está sobreescibiendo, es decir, que también está en la clase padre.
Es opcional, se puede sobreescribir sin ponerla.

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

Cómo se declara en java una anotation?

A

public @interface NombreAnotación{}

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

Cuando se declara una anotación, también se le pueden poner anotaciones, como @Target y @Retention. ¿Qué hace @Target aplicado a una anotación?

A

Para qué tipo de elemento se le puede aplicar, (clase, método, atributo,..)

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

Qué hace el modificador java “static”? A qué elementos se le puede aplicar?

A

Se aplica a atributos y métodos, convirtiéndolos en atributos y métodos de clase

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

Para qué sirve el modificador abstract en java, y a qué elementos se le puede aplicar?

A

Sirve para declarar un método en una clase sin implementarlo, se le pone abstract.
Cualquier clase con un método abstract, también tiene que ser abastract

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

Se puede instanciar (crear un objeto de) una clase abstract?

A

No, no se puede.

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

Para qué se usa el modificador private en java¿

A

Para poder usar el método o acceder al atributo sólo desde la propia clase, ni siquiera se podría acceder directamente desde clases hijas
En las clases también se puede poner, pero solo en las interiores o anidadas, ya que en una normal no tendría sentido

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

Para qué sirve el modificador en java “protected”

A

Para dar visibilidad sobre métodos y atributos sólo a las clases hijas y clases en el mismo paquete, pero no al resto

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

Nombra 5 IDEs (entornos/editores de desarrollo) java

A

Eclipse, IntelliJ, Netbeans, BlueJ, JDeveloper

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

Cuándo es necesario importar una clase en otra?

A

Cuando están en diferentes paquetes

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

Cuál es el orden de los modificadores al declarar una clase java?

A

Modificadores de acceso: Estos indican la visibilidad de la clase o el método y pueden ser public, protected, o private.

Modificadores abstract o final: Si la clase o el método son abstractos, se utiliza el modificador abstract, mientras que si son finales y no se pueden heredar o sobrescribir, se utiliza el modificador final. Solo se puede usar uno de estos dos modificadores, si corresponde.

Modificadores static: Si la clase o el método pertenecen a la clase en sí misma y no a una instancia específica, se utiliza el modificador static. Nuevamente, este modificador solo se puede usar si es apropiado.

Modificador strictfp: Este modificador se utiliza para garantizar la portabilidad precisa en cálculos de punto flotante y se aplica tanto a las clases como a los métodos.

Modificador synchronized: Este modificador se aplica solo a los métodos y se utiliza para controlar la sincronización y el acceso concurrente a un método.

Modificadores native o default: El modificador native se utiliza para marcar un método que está implementado en código nativo, mientras que el modificador default se utiliza para marcar métodos de interfaces, lo que significa que solo son accesibles dentro del mismo paquete.

Modificador strictfp: Al igual que en las clases, el modificador strictfp también se puede aplicar a los métodos para garantizar la precisión en cálculos de punto flotante.

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

Quién es el encargado en llamar al método finalize() de los objetos (heredado de Object)?

A

El Garbage Collector

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

El == qué compara de dos objetos?

A

Compara sólo el puntero, es decir la referencia que contiene, pero no compara los objetos de memoria. Por eso para comparar el contenido de dos objetos se suele sobreescribir el metodo equals() de cada objeto.

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

Cuál es el formato del constructor por defecto en java¿

A

Public NombreClase (){}

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

Para qué se usa la palabra native en java?

A

Es para indicar que un método está implementado en otro lenguaje mediante una librería externa, en lugar de en java

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

Par qué se usa la palabra volatile en java?

A

Para indicar que el hilo debe ir a buscar una variable a la memoria principal, en lugar de ir a buscarla a su “caché de hilo”, cuando es una variable compartida, para asegurar que coge el valor actual de la variable compartida, y no la de la caché de hilo que podría estar desactualizada

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

Par qué se usa la palabra transient en java?

A

Para indicar que el atributo al que se le ponga transient no se serialice

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

Para qué se usa la palabra synchronized en java?

A

Se le pone a un método para indicar que sólo soporta un hilo a la vez, poniendo en cola los demás
También se puede usar soólo en un bloque crítico de un método

42
Q

Qué es un applet?

A

Es una aplicación java que se ejecutaba en un navegador web. Requería instalar en el navegador una JRE. Ya no se usa

43
Q

Qué es un cliente standalone de java?

A

Aplicación de escritorio de ventanas (con swing o awt). Se instalaba el jar de la aplicación en un servidor y mediante un fichero JNLP en cada cliente, que tenía la URI de la aplicación, se actualizaba.

44
Q

Con qué clase que aparece en java 8 se mejora el manejo de fechas?

Qué conceptos maneja?

A

java.time
Antes de eso se solía usar una librería de terceros llamada joda-time, porque Date es muy limitada. Java.time lo han copiado de eso

Instant
Duration
LocalDate
Period

45
Q

Qué hace la clase java.text.DateFormat?

A

parse(String) -> Date
format(Date)-> String

46
Q

Para qué sirven las siguientes clases o interfaces de java.lang?
Runnable/Iterable
Math
Object/Class
String/Integer/…
Thread
Override (anotación)
System

A

Runnable/Iterable
Math
Object/Class
String/Integer/…
Thread
Override (anotación)
System

47
Q

Clases importantes de java.net
ServerSocket
Socket
URLConnection
URL
INetAddress

A

ServerSocket
Socket
URLConnection
URL
INetAddress

48
Q

Interfacesr importantes de java.sql

Driver
Connection
Statement
ResulSet/ResulSetMetadata -> Clases

A

Driver
Connection
Statement
ResulSet/ResulSetMetadata

49
Q

Clases o interfaces importantes de javax.sql

DataSource

A
50
Q

Esquema de jerarquía de herencia de interfaces de Colecciones

A
51
Q

COLECCIONES: De qué interfaz hereda Collection?

A

De Iterable

52
Q

COLECCIONES: Qué interfaces heredan de Collection?

A

List
Queue
Set

53
Q

Qué clases implementan la interfaz List?

A

ArrayList
LinkedList
Vector (Stack hereda de Vector)

54
Q

Qué clases implementan la interfaz Set?

A

HashSet
LinkedHashSet

55
Q

De qué interfaz hereda la interfaz Map?

A

De ninguna, pero de ella hereda Sorted Map, y la implementan directamente HashTable, LinkedHashMap y HashMap

56
Q

Qué clases implementan la interfaz Map?

A

HashTable, LinkedHashMap y HashMap

57
Q

Qué métodos típicos definen estas interfaces jerarquicas de colecciones?

Iterator
Collection
List

A

Iterator
- iterator()

Collection
- add (E)
- size() -> int
- isEmpty() -> boolean
- toArray() -> Object[]
- contains(Object) -> boolean
- remove(Object)
- clear()

List
- get(int indice) -> object
- indexOf(Object) -> int
- remove(int indice)
- subList(int, int) -> List<t></t>

Añadir más métodos típicos de HashTable, ArrayList

58
Q

Qué significan las palabras java
try
catch
throw
throws
finally

A

try -> el código susceptible de lanzar excepción
catch -> código que se ejecuta cuando el try asociado produce excepción
finally -> código que se va a ejecutar , se produzca o no excpción en el try
throw -> lanzar un objeto de excepción
throws -> se pone en la declaración del método, para indicar que potencialmente lanza un tipo de excepción (public void metodo() throws Exception)

59
Q

Qué son las CheckedException? Qué diferencia hay con las uncheckedException?

A

Son las que heredan de Exception, y que hay que tratar
Las unchecked exceptions heredan de RuntimeException y no es obligatorio capturarlas siempre

60
Q

Cómo es la jerarquía de herencia de las clases Throwable, Exception, Object, Error y RuntimeException?

A
61
Q

Los errores de clase Error, qué son y cuándo hay que capturarlos con un try/catch?
Ejemplos de algunas subclases de Error

A

Es para fallos serios de la aplicación. Sólo las genera la máquina virtual, ninguna aplicación debería tratar de capturarlas ni tratarlas, aunque herede de Throwable

InternalError, OutOfMemoryError, StackOverflowError, UnknownError, IOError

62
Q

Qué ocurre cuando en una clase no creamos un constructor?

A

Java crea uno por defecto

63
Q

Se pueden poner varios catch par un try?

A

Sí, para tratar de forma distinta distintos tipos de excepciones
En esos casos, en la cláusula throws del método tiene que ponerse cada tipo de excepción que se puede lanzar

64
Q

Qué es una sentencia multicatch?

A

Es un nuevo mecanismo para no tener que poner varios bloques catch para lanzar distintos tipos de excepción:
catch(Excepcion1 | Excepcion2 ex)

65
Q

Qué es una sentencia try-with-resources?

A

Es un nuevo mecanismo que se usa para poner entre paréntesis en el try el código para abrir recursos (conexiones bbdd, ficheros, …) para que no haga acordarse de cerrar esos recursos en el finally, los cierra solo al terminar

Es similar a la sentencia using(…) de .NET

66
Q

Cuándo hay que poner o no poner el throws en el método cuando se llama a otros métodos que lanzan checked exceptions?

A

Si no se pone throws en el método, debe tratar las checked exception que lance los métodos a los que llama. Si no las trata, con poner añadir el throws, ya las pasa hacia arriba

67
Q

Para qué se usan las unchecked exceptions, es decir las que heredan de RuntimeException?

A

Se usa para capturarlas en un punto muy global del sistema. No te obliga a lanzarlas con throws a través de los métodos.

68
Q

Qué clases se usan en java para hacer logging (trazas)?

A

JAVA API Logging -> java.util.logging
SLF4J API Logging -> Fachada que independiza de las implementaciones: Log4j, Logback, TinyLog, ApacheCommonsLogging

69
Q

Qué son los siguientes conceptos de la librería de terceros Log4j?

logger
appender
layout / enconder
level

A

logger -> Captura los mensajes de una clase o un paquete de clases
appender -> Por donde se van a dirigir los mensajes (consola, bbdd, fichero,…)
layout / enconder -> para dar algo de formato visual al mensaje
level -> Se le puede dar un nivel de criticidad al mensaje (DEBUG, INFO, FATAL, ERROR, WARN, ALL, OFF (off no saca ninguna)…). Luego en el fichero log4j.properties se pone los niveles que se quieren trazar (si se pone un nivel, se trazará ese nivel y los que tengan más criticidad que ese)

70
Q

Qué dos opciones hay para crear y lanzar un hilo propio en java?

A
  1. Crear una clase que herede de Thread y sobreescribir el método run. Se lanzará con t1.start(), para que el planificador llame al run() cuando pueda.
  2. En lugar de heredar de Thread, que la clase implemente la interfaz Runnable y se implementa el método run(). Para llamarlo, se hace un newThread(clase tuya que implementa Runnable). A ese objeto hilo se le hace el .start()

Los hilos también tienen el método sleep(milisegundos)

71
Q

Qué es un monitor en java, hablando de concurrencia?

A

Es un objeto que gobierna la concurrencia: Cualquier objeto, por el hecho de heredar de Object, tiene los métodos wait() y notify(), por tanto si un objeto compartido que tiene un método synchronized, por ser compartido y querer que no sea multihilo, puede gobernar que los hilos entren de uno en uno jugando con sus métodos wait y notify

72
Q

Qué diferencia hay entre el DataSource y el Driver de bbdd? De qué se encarga el DataSource respecto al Driver de bbdd

A

El Driver, que cada fabricante tiene el suyo, sirve para gestionar a bajo nivel, pedirle conexiones, etc … El DataSource es una capa para no llamar al Driver directamente, se configura el nº de conexiones iniciales que abre el DS al arrancar para ser más rápido cuando se las pidan, se configura el nº de conexiones máximas que se le pedirá al Driver, etc … pone a los hilos en espera si se ha llegado al nº de conexiones máximas, etc …

73
Q

Qué son ApacheCommons y Guava de Google?

A

Son proyectos de caracter general con muchas liberías

74
Q

Para qué sirven las siguientes librerías de terceros del ecosistema java?

a) iText,PDFBox
b) BouncyCastle
c) Log4j, Logback, SLF4J
d) Xerces, Xalan, Woodstox y Apache FOP
e) JUnit+Mockito y JMeter
f) Apache Commons (lang,dbcp,crypto,fileupload,io,codec,etc) y Guava de Google
g) Apache HttpComponents (HttpClient)
h) Gson y Jackson
i) Apache POI
j) Apache Tika
k) Pentaho Kettle
l) Lombok

A

a) iText,PDFBox –> Generacion de PDF’s
b) BouncyCastle –> Criptografia
c) Log4j, Logback, SLF4J,… –> Logging
d) Xerces, Xalan, Woodstox y Apache FOP –> Parsers XML y Procesors XSL
e) JUnit+Mockito y JMeter –> Pruebas unitarias y de carga
f) Apache Commons (lang,dbcp,crypto,fileupload,io,codec,etc) y Guava de Google –> Proposito general
g) Apache HttpComponents (HttpClient) –> Peticiones http a bajo nivel (En Java 11 ya existe un equivalente en java.net.http.HttpClient)
h) Gson y Jackson –> manejo de información en formato JSON
i) Apache POI –> manejo de documentos de Office
j) Apache Tika. Deteccion y extraccion de contenido de multitud de formatos
k) Pentaho Kettle –> ETL para extraccion de información, transformación y carga de ficheros
l) Lombok –> Genera automáticamente en tiempo de ejecución el constructor, getters, setters, equals, hashCode, etc… sólo poniendo anotaciones

75
Q

Qué es Ant?
Qué fichero usa?

A

no hace gestión de dependencias, sólo automatiza
Fichero build.xml

76
Q

Qué hace Apache Maven, Gradle o Ivy?
Qué fichero usa Maven? y cuál Gradle?

A

Gestión de dependencias y automatización de compilado y empaquetado en java
Maven -> pom.xml
Gradle -> build.gradle

77
Q

Para usar Maven, qué estructura de ficheros y directorios es obligatoria?

A

el fichero my-app/pom.xml, donde se configura maven (versión, nombre, …)
y el directorio my-app/src/main/java con el código fuente

78
Q

¿Cuales son los elementos fundamentales del fichero pom.xml de la herramienta Maven?

A

Campos que indican el tipo de proyecto (jar, war o ear), las coordenadas del proyecto (artifactId,groupID y version) y las dependencias de librerias de terceros

79
Q

Qué hacen los siguientes comandos de Maven?

mvn package

Qué es un arquetipo en Maven?

A

mvn package -> compila y deja las clases en proyecto/target, empaqueta el .jar
arquetipo -> es una plantilla de proyecto

80
Q

Qué tres campos tiene cada dependencia que se configure en el pom.xml de Maven? Se usan para localizar en el repositorio el artefacto y poder descargarlo

A

groupId -> ej. org.projectlombok
artifactId -> ej. lombok
version -> ej. 1.1.3

81
Q

Con qué etiquetas del xml se configuran en el pom.xml las dependencias en Maven? Qué tres campos tiene cada dependencia que se configure en el pom.xml de Maven? Se usan para localizar en el repositorio el artefacto y poder descargarlo

A

< dependencies> < dependency>
< groupId> -> ej. org.projectlombok
< artifactId> -> ej. lombok
< version> -> ej. 1.1.3

< /dependency>< /dependencies>

82
Q

Para qué sirve la etiqueta < scm> en maven?

A

La etiqueta <scm> (Source Control Management) en Maven se utiliza para especificar información sobre el sistema de control de versiones utilizado para administrar el código fuente del proyecto.</scm>

83
Q

Cuáles son las fases de Maven?

A

validate: En esta fase, se valida que el proyecto sea válido y esté correctamente configurado.

compile: Durante esta fase, se compilan los archivos fuente del proyecto y se generan los archivos de clase.

test: En esta fase, se ejecutan las pruebas unitarias del proyecto utilizando un framework de pruebas, como JUnit.

package: Durante esta fase, se empaquetan los archivos compilados y otros recursos necesarios en un formato específico, como un archivo JAR o un archivo WAR.

integration-test: En esta fase, se realizan pruebas de integración para verificar la interacción entre los componentes del proyecto.

verify: Durante esta fase, se realizan comprobaciones adicionales en el paquete generado para asegurar su calidad y corrección.

install: Durante esta fase, el paquete generado se instala en el repositorio local de Maven para su uso en otros proyectos locales.

deploy: En esta fase, el paquete generado se despliega en un repositorio remoto para que pueda ser compartido y utilizado por otros desarrolladores.

84
Q

Qué significa este código ?
ArrayList< Persona> personas = new ArrayList()

A

ArrayList es un tipo genérico que se concreta con el tipo base Persona

85
Q

Qué son los Streams en Java? Pon un ejemplo dada una colección personas

A

Son cojuntos de datos.
Con expresiones lambda se pueden ir mapeando unos streams a otros, aplicar fórmulas, etc.

int alturaMedia = personas.stream().mapToInt(Persona p -> {return p.getAltura();}).average;

86
Q

Qué es una expresión lambda en java?

A

Poner en una expresión una función anónima en la que se pone lo que sería el parámetro de entrada, luego “->” y luego el cuerpo de la función entre llaves.

personas.stream().mapToInt(Persona p -> {return p.getAltura();}).average;

87
Q

Qué son los métodos default de interfaces de java a partir de la 1.8?

A

Son métodos con código que ahora se pueden poner en las interfaces
public default boolean esMasRapida (Impresora i);

88
Q

De qué se encarga la clase java.util.concurrent.CompletableFuture?

A

Una utilidad para gestionar de forma más avanzada la concurrencia de hilos

89
Q

Qué es Nashorn, que añadieron en java 1.8 y luego quitaron?

A

Un motor de javascript

90
Q

Qué es GraalVM?

A

Es una máquina virutal que intentan que cubra varios lenguajes: java, js, ruby, python, ..

91
Q

¿Que usos tienen en Java las clases StringBuffer y StringBuilder?

A

Representan cadenas variables(mutables)
StringBuffer –> Thread-safe porque todos su metodos están sincronizados (segura pero mal rendimiento)
StringBuilder –> Por defecto no es segura en un entorno multihillo

92
Q

¿Qué significa la siguiente declaración en Java? public static void process(List< ? extends Foo > lista) { /* … */ }

A

Recibe un parametro que es un tipo generico List cuyo tipo de objetos que contiene son de la clase Foo o subtipos de esta

93
Q

¿Qué metodos fundamentales tiene la clase Object en Java?

A
  • equals() –> metodo de comparación de objetos (es bueno sobreescribir con la logica de igual de nuestras clases)
  • toString() –> metodo que proporciona una representacion en forma de cadena de nuestros objetos (bueno sobreescribirlo tambien)
  • wait() –> para poder bloquear temporalmente hilos
  • notifiy() –> para despertar del bloqueo a los hilos
  • getClass() –> Nos da un objeto de tipo Class que obtener dinamicamente todos los metadatos de un objeto
  • clone() –> copia de objetos
  • hashCode() –> nos da un codigo hash del objeto
  • finalize() –> metodo que hay que sobreescribir y que será invocado por el recolector de basura cuando elimine el objeto
94
Q

La tecnología DCOM toma las siglas de

A

Distributed Component Object Model

95
Q

Qué es jBPM?

A

Motor de workflow java

96
Q

¿Qué es Java Web Start?

A

Una tecnología que permite descargar y ejecutar aplicaciones Java.

97
Q

¿Qué es un JNI?

A

Es una interfaz estándar de programación para llamar a métodos nativos escritos en otros lenguajes, desde un programa java

98
Q

SAAJ son las siglas de un API de Java que significa:

A

SOAP with Attachments API for Java.

99
Q

Qué es Kotlin?

A

Kotlin es un lenguaje que permite desarrollar tanto para Android como para iOS.

100
Q

Qué es el tipo Optional?

A

Sirve para evitar null pointer exception
Objeto que tiene dentro dos valores, un null y el valor.
Se declara como Optional < ClaseNuestra> y se crea con Optional.of(objetoNuestro)

Optional < Nota> = Optional.of(miNota)

Se le puede preguntar .isPresent(), que devueve true si tiene valor y false si tiene null.

101
Q

Qué es en java una FunctionalInterface?

A

Es una interfaz que representa funciones

Debe tener un solo método abstracto (puede tener metodos default, eso no importa)
Se la puede incluir la anotación @Functionalinterface

102
Q

Dos herramientas muy conocidas de migración de bases de datos en mundo java
Las migraciones en base de datos significa gestionar el versionado de la estructura de la bbdd

A

Liquibase y Flyway