Java Javita Flashcards
Compiladores
-javac
-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)
Intérpretes
-java
-jshell: intérprete REPL (ReadEvaluatePrintLoop) de comandos interactivo. A partir de Java 9
javadoc
Generación de documentación html a partir de las fuentes
NOTA: Los comentarios de javadoc empiezan por /**
NOTA: Dentro de los comentario podemos usar ciertos “metadatos” ej. @see @since @author…
jar
Empaquetar clases compiladas
jarsigner
Firmar y verificar ficheros jar
wsimport
Generación de clases automáticas para los clientes de web services de tipo SOAP
rmiregistry
Servicio de nombres para registrar objetos distribuidos
javap
Desamblador de ficheros .class
jdb
Depurador
jdeps
Analizador de dependencias, clases o paquetes
jmc y jconsole
Herramienta de monitorización de la JVMb
Relación entre una clase y un interface
Es una relacion de implementación (mediante la palabra reservada implements)
NOTA: Una clase puede implementar varios interfaces NOTA: Un interface "funciona" como un tipo NOTA: Un interface es un contrato funcional que debe de cumplir la clase NOTA: Un interface puede extender a otro interface (mediante la palabra reservada extends) NOTA: Un interface (java8+) puede tener métodos CON CODIGO (default y static)
Uso de palabra reservada final y static
a) final
- En una clase: impedir que se pueda heredar de dicha clase
- En un atributo: no puede modificarse
- En un metodo: aquel que no se puede sobrescribir en las posibles clases hijas
b) static --> Tanto en atributos como en métodos sirve para definir miembros que pertenecen a la "Clase" NOTA: Para poderlos "usar" no hace falta instanciar ningún objeto (sintaxis: NombreClase.metodo(...)) NOTA: En una Clase tú puedes tener miembros estáticos y no estáticos (de instancia) NOTA: En un metodo static de una clase no puede usar/acceder/ver atributo no-estáticos NOTA: el uso de final + static en Java nos sirve para definir constantes (ej. static final int PI=3141592...)
Modificador de acceso “protected”…clases que pueden acceder a dichos miembros
- Desde la propia clase
* Desde los hijos de la clase (estén donde estén a nivel de paquetes)
* Desde cualquier clase del mismo paquete
¿Podemos añadir texto a un objeto de la clase String?
Nop, porque los objetos de la clase String son “inmutables”
NOTA: Las cadenas variables serian StringBuffer y StringBuilder
Uso de palabra reservada synchronized
En un método lo que provoca es que los distintos hilos de ejecución entren de 1 en 1
NOTA: A esto se le llama thread-safe
Diferencias entre una Hashtable y un ArrayList
Hashtable es un tipo de “Map” (aqui los objetos se “colocan” en función de una clave)
ArrayList es un tipo de “List” (aquí los objetos tienen un índice dentro de la secuencia/conjunto)
¿Cuál es la clase base para las excepciones y los errores?
Throwable
Nombre dos librerías para generar ficheros de log
log4j y logback
NOTA: slf4j es una “fachada” para no depender de ningún fabricante concreto
¿Qué es @Override y cuál es su utilidad?
Es una anotación y nos sirve para decirle al compilador que estamos intentando sobrescribir un método de nuestra clase/Interface Padre. No es obligatorio ponerla para hacer dicha sobreescritura
¿Cuál es la herramienta para empaquetar los ficheros resultantes de la compilación?
jar
NOTA: A partir de java9 existen otros ficheros de empaquetado físico que son los modules (.jmod)
NOTA: Otros “jar” más específicos serían los .war o .ear (tienen que ver con Jakarta EE)
NOTA: un jar físicamente es un zip
¿Cómo podemos obtener la fecha y hora actual a partir de JDK1.8?
ANTES: GregorianCalendar.getInstance().getTime() –> objeto de java.util.Date
HOY (jdk1.8+): LocalDate.now() –> objeto de java.time.LocalDate
¿Qué diferencia existe entre el interface Statement y PreparedStatement del API JDBC?
Statement representa una sentencia SQL SIN parámetros ni precompilación
PreparedStatement representa una sentencia SQL CON parámetros y precompiladas
NOTA: Otro detalle importante de que se “precompilen” es evitar los ataques de SQL Injection
¿Cuál es la utilidad de interface Iterable?
Acceder al objeto “iterador” de cualquier colección y así poder recorrerla de forma “genérica”
¿Cómo podemos acceder al elemento que está en la cima de un Stack sin borrarlo?
Metodo peek()
Utilidad del bloque “finally”
Después de un try/catch el bloque finally se ejecutará SIEMPRE (tanto si hubo excepción, como si no)
Nombre el método que sirve para lanzar un hilo
Metodo start() de la clase java.lang.Thread
NOTA: El método run() solo representa el cuerpo del hilo
NOTA: Flujo
1) Creo una clase que herede de Thread y sobreescriba run()
2) Creo un objeto de esa clase con new
3) Llamo al método start() sobre ese objeto
JRE (planificador) --> start() --> run()
¿Qué dos métodos de Object es aconsejable sobrescribir en tus clases de negocio (ej. Producto)?
Método equals(Object o) –> boolean
Método toString() –> String
Utilidad de la herramienta Apache Maven
Es una herramienta Java para ayudarnos a la automatización de la construcción de proyectos Java
a) Descargar las libreras de terceros que queremos usar en nuestro proyecto (gestión de dependencias)
b) Compilar nuestras clases
c) Ejecuta los posibles test unitarios/integración que se hubieran programada (ej. con JUnit)
d) Empaquetar nuestras clases en ficheros .jar / .war o .ear (segun le digamos)
Toda esa info de configuración de tu proyecto se especifica en un fichero llamado pom.xml
NOTA: Antes de Maven se usaba otra herramienta Apache Ant que no tiene nada que ver
NOTA: Competidores de Maven –> Gradle
Utilidad del interface java.io.Closeable
Es un interface que proporciona el método close() para que lo implemente todo tipo de clases (sobre todo las que tienen que ver con e/s, bbdd, …)
En la jdk1.7 se inventó un nuevo try/catch llamado try-catch-with-resources