JAVA Flashcards
Colección de API utilizados en criptografía
BOUNCYCASTLE
Librerías para loggin
LOG4J
LOGBACK,
Librerías para PARSERS XML Y PROCESORS XSL
XERCES,
XALAN,
WOODSTOX
APACHE FOP
PRUEBAS UNITARIAS DE CARGA
JUINT+MOCKIT
JMETER
Librería de proposito general de Google
Guava, librería de propósito general compuesta por una serie de herramientas que proporcionan características convenientes y productivas tales como programación funcional, almacenamiento en caché, objetos de rango y hashing.
Librería cliente HTTP
APACHE HTTPCOMPONENTS
Peticiones http a bajo nivel. en java 11 ya existe un equivalente en java.net.http.httpclient
Manejo de información en formato json
GSON Y JACKSON
MANEJO DE DOCUMENTOS DE OFFICE
APACHE POI
Librería de Detección y extración de contenido de multitud de formatos
APACHE TIKA
ETL para extracción de inforamción, transformación y carga de ficheros.
PENTAHO KETTLE
LIBRERÍA PDF
ITEXT
LIBRERÍA PDF
PDFBOX
3 IDES ENTORNOS Y EDITORES DE DESARROLLO JAVA
ECLIPSE | INTELLIJ | NETBEANS
AUTOMATIZACIÓN DE DESARROLLO
ANT(BILD.XML)
IVY(EXTENSIÓN DE ANT PARA GESTIONAR DEPENDENCIAS)
MAVEN(POM.XML)
GRADLE(BUILD.GRADLE EN GROOVY O R KOTLIN DSL)
JENKINS(INTEGRACIÓN CONTÍNUA)
API SOAP
JAX-WS
API REST
JAX-RS
API PERSISTENCIA
JPA API
API MENSAJERÍA
JMS API
API DE TRANSACCIONES
JTA API
API DE DIRECTORIO
JNDI API
API PAR PARSING XML
JAXP API
JDK’S DE JAVA
OPEN JDK
AMAZON CORRETTO
IBM JDK
¿QUÉ ES JAXP?
(Java API for XML Processing) es el API “estándar” par la manipulación del formato XML. Esta API pone a disposición del programador tres conjuntos de funcionalidades: la modelización, el parsing y la transformación. Se compone de cuatro paquetes principales:
DENTRO DE JAXP ESTÁ javax.xml.parsers. ¿Que apis contiene?
SAX API JAXP – Events
DOM API JAXP – Tree
DENTRO DE JAXP ESTÁ org.w3c.dom. ¿Que apis contiene?
este paquete contiene el conjunto de clases y interfaces necesarias para trabajar con DOM (modelización)
DENTRO DE JAXP ESTÁ org.xml.sax: ¿Que apis contiene?
este paquete contiene el conjunto de clases y interfaces necesarias para trabajar con XSLT (transformación)
XSLT API JAXP – Transformacion XML
PARA QUE SIRVE EL API JAXB API JAXP –
Negocio
PARA QUE SIRVE EL API XSLFO API JAXP
Transformacion PDF
¿Qué es el BITCODE?
El código fuente que contiene el archivo .class generado por el compilador JAVAC se llama BITECODE (código máquina de una CPU Software)
COMO SE LLAMA EL COMPONENTE DEL JDK QUE EJECUTA/INTERPRETA
JAVA(ES UN PROGRAMA QUE ENTIENDE BITECODE Y EJECUTA)
¿Cuándo se crea un fichero MANIFEST.MF? ¿Qué tiene dentro?
Cuando empaquetamos con el comando jar se nos crea un directorio llamado META-INF y dentro se crea un fichero MANIFEST.MF fichero de metadatos.
Este fichero tendrá dentro unos metadatos importantes que podemos establecer dependiendo de nuestras necesidades.
La estructura de este MANIFEST.MF es siempre:
Campo: valor
Un ejemplo:
This creates the JAR file with a manifest with the following contents:
Manifest-Version: 1.0
Class-Path: MyUtils.jar
Created-By: 1.7.0_06 (Oracle Corporation)
¿Qué es JPA?
JPA es la propuesta estándar que ofrece Java para implementar un Framework Object Relational Mapping (ORM), que permite interactuar con la base de datos por medio de objetos, de esta forma, JPA es el encargado de convertir los objetos Java en instrucciones para el Manejador de Base de Datos (MDB).
¿Qué es REPL?
Una consola es un programa que se ejecuta en la shell del sistema (modo texto) y que tiene un prompt en el cual escribimos comandos que se encarga de ejecutar.
En este caso concreto, jShell, se trata de una consola que sigue el sistema REPL: Read-Eval-Print-Loop
SIRVE PARA MUCHOS LENGUAJES
¿Cómo se puede configurar la variable Classpath?
Variable de entorno
Establecerla en el momento de lanzar la app Ej. java -classpath /…/…/lib.jar).
En el fichero MANIFEST.MF Existe un “campo” llamado Class-Path:ruta(s).
¿Qué es un Classloader?
se encarga de cargar las clases en memoria. Se ayuda del Classpath para encontrar donde están esas clases que debe cargar. Para que esto funcione de forma correcta debemos tener configurado ese ClASSPATH de forma correcta. Podemos hacerlo de tres formas.
¿Qué es HEAP?
Memoria dinámica donde se guardan los objetos Java creados de forma dinámica con el operador New().
¿Que JDK de terceros conoces?
OPEN JDK
AMAZON CORRETTO
IBM JDK
¿cómo sacar el Id del Thread por pantalla?
Thread.currentthread().getId();
¿cómo sacar el nombre del Thread por pantalla?
Thread.currentthread().getName();
¿cómo crear dos nuevos hilos?
¿Cuál es la evolución de la ejecución en la JVM?
1 - Las clases base y las enlazadas con el classpath se cargan en memoria a través del ClassLoader pasamos a la segunda fase
2 . Por una parte, tenemos registros como una CPU virtual, tiene también un Stack, que es el apartado donde van a almacenar información los diferentes hilos de ejecución.
3 - Tenemos Heap, memoria dinámica donde se guardan los objetos Java creados de forma dinámica con el operador New().
4. Grabage collector – Los objetos pueden crearse con New(), pero no pueden eliminarse, se marcan como basura y se van recolectando por este componente que lo que esté marcado como basura se lo lleva.
5 . JIT (just in time compiler): es una forma de ejecutar Código, que implica compilación durante la ejecución de un programa. Se hacen las cosas sobre la marcha. Jit genera código atendiendo a las necesidades de esa plataforma. Transforma Bitecode en Código máquina en vivo
¿Qué es la JVM ESPECIFICATION?
Oracle creo una especificación(JAVA VIRTUAL MACHINE ESPECIFICATION) para que cualquier pudiese crearse una JDK. Algunas de las más famosas: OPEN JDK
AMAZON CORRETTO IBM JDK
¿Qué es JIT?
Es una forma de ejecutar Código, que implica compilación durante la ejecución de un programa. Se hacen las cosas sobre la marcha. Jit genera código atendiendo a las necesidades de esa plataforma. Transforma Bytecode en Código máquina en vivo.
¿Qué es el GRABAGE COLLECTOR?
Los objetos pueden crearse con New(), pero no pueden eliminarse, se marcan como basura y se van recolectando por este componente que lo que esté marcado como basura se lo lleva.
¿Cómo se llama el hilo que se ejecuta en el el método main?
Main
¿Para qué sirve el método main?
Main es un método estándar que le sirve a la JRE para saber por donde empezar. Punto de entrada de la aplicación
¿Para que sirve el método run?
El planificador llama al método run par ejecutar un hilo. Esté método está definido en la Clase Thread.
¿Por qué está compuesta una clase?
- Atributos de datos: guardan información. Puede haber clases sin atributos.
- Métodos: son las funciones para implementar la lógica
- Atributos de relación.
Entre las claes se puden dar relaciones de:
- Herencia entre clases –> Extends.
- Herencia entre clases e interface –> Implements
¿Puede haber clases sin atributos?
Si, puede haber clases de lógica en las que hay pocos atributos y puede haber clases más estructurales que son para guardar datos.
¿Qué quieres decir el concepto de encapsulación?
Los objetos están encapsulados, debido a este principio de encapsulación no se puede acceder a los atributos de las clases directamente, debe hacerlo a través de los métodos.
¿Qué es un interfaz?
Los interfaces son una estructura de programación, que representa una declaración funcional. Sirve para obligar a una serie de clases a cumplir con unas especificaciones declaradas en esa interface.
Los interface no pueden tener atributos, solo tiene métodos abstractos.
Todos los desarrolladores que quieran utilizar esta interface realizarán una implementación siguiendo esas especificaciones que han sido declaradas de modo que el funcionamiento sea el mismo para todos.
¿Qué es la herencia?
Relación entre clases para poder extender unas clases en función de otras. La hereancia en JAVA es simple, solo se puede tener un padre.
¿Desde donde no es accesible un atributo Private?
No son accesibles desde los hijos.
¿Desde donde es accesible un atributo Protected?
Puedo acceder desde cualquier hijo, pero no será visible fuera de la jerarquía hijos/padres.
¿Qué es la sobrecarga de métodos?
En el caso de que tengamos un método definido varias veces con el mismo nombre y tenga diferentes parámetros asignados, en función del número de parámetros que pasamos o el tipo de estos, al llamar a ese método, Java, sabrá elegir cual queremos usar.
SubirSueldo(int porcentaje);
SubirSueldo(float cantidad_fija);
SubirSueldo(float porcentraje);
¿Qué es un objeto?
Los objetos son las instancias de las clases.
Enumera las estructuras de programación de Java
paquetes(agrupación de otros objetos)
clases
interfaces
enumerado
anotaciones
¿A que puede afectar la palabra FINAL?
Clase Final: es aquella de la que no se puede heredar, la clase es final, algo así como final… se limita la herencia hacia abajo, hacia arriba no.
Atributo Final: creamos una constante.
Método final: los métodos marcados como final no se pueden sobrescribir.
¿A que puede afectar la palabra FINAL?
Clase Final: es aquella de la que no se puede heredar, la clase es final, algo así como final… se limita la herencia hacia abajo, hacia arriba no.
Atributo Final: creamos una constante.
Método final: los métodos marcados como final no se pueden sobrescribir.
¿Que relaciones se pueden dar entre INTERFACES?
- Herencia entre clases e interface –> Implements
- Herencia entre dos interface –> Extends
¿Para que se usa IMPLEMENTS?
Para que una clase implemente funcionalmente un interface. Es la palabra reservada para “heredar” una interface. Equivalen te al Extends de la herencia.
¿Qué es un ENUMERADO?
Define elementos que pueden ser enumerados.
Public enum color{
Rojo, blanco, negro
}
¿Para que sirven las ANOTACIONES?
Sirven para configurar código a partir de la 1.5
¿Qué diferencia hay entre SOBRESCRITURA Y SOBRECARGA?
La sobrescritura se da cuado hay herencia, tengo un padre y en el hijo tengo la misma función con otro código. En la sobrecarga tengo varios métodos en la misma clase con varios tipos de parámetros.
¿Cuál es la anotación para indicar sobrescritura y que esta se haga bien?
@override. No es obligatoria, solo valida que estés haciendo bien la declaración del método.
¿Cómo se declara una anotación?
public @interface OVERRIDE{}
¿Qué indica @Target(value= ElementType.METHOD) ?
Indica donde se puede definir esa anotación., en este caso encima de. método.
Características de un método estático
Se aplican a la clase Empleado.ajustarIrpfAllEmpleados(20);
No es necesario que se instancien.
Se declara con Public static void …
¿Puede existir sobrescritura sin herencia?
No, sin herencia no hay sobrescritura.
¿Qué diferencia hay entre los métodos de clase o estáticos y los métodos de instancia?
Usos de métodos de instancia. Necesitamos crear el objeto antes de aplicarlos.
Entendemos que para subir el sueldo a un empleado antes hay que crear la instancia del empleado. Una vez lo tenemos podemos subirle el sueldo.
Los métodos static o de clase se aplican a la clase, por eso decíamos que es un método de clase. Pertenece a la clase. No es necesario instanciarlo.
Una clase abstracta es aquella que no se puede…
Instanciar
Principios de una clase ABSTRACTA
Si tiene métodos abstractos la clase es abstracta
No se pueden crear objetos de ella.
Un atributo Private
- Solo se puede usar dentro del ámbito de la clase donde ha sido declarado
- Se heredan atributos y métodos aunque sean privados, pero no tienes acceso desde fuera.
Un atributo Public…
Accesible desde todos los lados
Un atributo PROTECTECT
Es accesible solo para los hijos. PROTEGIDO PARA LA HERENCIA.
Si una clase hereda de otra abstracta, ¿Debe implementar todos los métodos para que la codificación sea correcta?
Debe implementar/sobrescribir los métodos abstractos o bien la clase hija debe ser abstracta
¿Aplica la herencia a lo definido como estático?
No, no se heredan.
¿Que hace el método finalize() y quien se encarga de llamarlo?
El encargable de llamar a este método es el GC, es la única forma en JAVA de “eliminar” un objeto de la memoria.
¿Para que sirven estos métodos Notify(); nifyAll(); - toString(); ?
Sincronización de hilos de ejecución
¿Qué es un Hard LINK?
Cuando igualo dos objetos en Java lo que estoy haciendo es un puntero a un mismo espacio de memoria. Esos objetos apuntan/enlazan al mismo espacio por lo tanto tienen la misma referencia.
¿Qué diferencia hay entre comprar con == o utilizando el método Esquilas()?
El == solo compara referencias.
¿Que significa Castear?
Convertir tipos. Por ejemplo un objeto empleado a uno de tipo empleado.
¿Cómo se llama el proceso mediante el cual se convierte un objeto en un array de bites de manera que puede ser almacenado, enviado por la red o realizar con el cualquier proceso rutinario?
Serialización.
¿Cuando definimos como TRANSIENT un objeto?
A menudo no queremos que el objeto completo se guarde en memoria, para ello definimos como transient los atributos que no queremos que se serialicen.
¿Para que se usa la palabra reservada VOLATILE?
Cuando usamos volatile en un atributo le decimos a la aplicación que busque el contenido de la variable en memoria principal en vez de en la cache que se ha generado en cada hilo.
¿Que es la concurrencia?
Concurrencia se da cuando dos o más tareas se desarrollan en el mismo intervalo de tiempo, pero que no necesariamente están progresando en el mismo instante. Por ejemplo una variable no definida como VOLATILE puede tener concurrencia y adoptar diferentes valores en diferentes momentos de acceso a la misma.
¿Para que se usa SYNCHRONIZED?
Por defecto en JAVA puede haber muchos hilos de ejecución atravesando un método.
En algún caso concreto podemos querer que solo un hilo pase por un método para evitar problemas de inconsistencias, concurrencias, colisiones… por ejemplo imprimir en una impresora… Esto tiene que ver con los algoritmos de EXCLUSIÓN MÚTUA.
Podemos decir que es una transacción se inicia y acaba.
¿Cómo se crea una anotación?
¿Qué es THIS?
El objeto actual
¿Que es Swing y awt.?
Librería de componentes gráficos(botones, ventanas, iconos) que se usan para hacer aplicaciones de CLIENTE DE STANDALONE.
¿Para qué se usa el JNLP(Java network lauching protocol), ?
Par poder ejecutar aplicaciones basadas en tecnología CLIENTE STANDALONE.
Desde una ubicación remota se utilizaba un archivo JNLP(Java network lauching protocol), en este archivo teníamos configurada la URI si dábamos doble click sobre el se descargaba e “instalaba” el programa.
¿Qué es el APP SERVER?
Es un nuevo servidor que se creo sobre el JRE actual necesario para ejecutar aplicaciones.
¿Qué librería se usaba antes de salir JAVA.TIME?
JODA.TIME. A partir de la 1.8 se incorporó java.time que estaba copiado de joda.time. Antes de esto en java nativo solo teníamos DATE.
¿Que son HIBERNATE Y JPA? ¿Para qué sirven?
Son motores de persistencia. Permite guardar información. Convierte objetos java en elementos de una base de datos además de almacenar la información.
JAVA hizo más tarde un API llamada JPA que replicaba HIBERNATE.
¿Para que sirve la clase SYSTEM de JAVA?
Hay ocasiones en que se necesita acceder a recursos del sistema , como son los dispositivos de entrada/salida, el reloj del sistema, etc. Java dispone de la clase System, que proporciona acceso a estos recursos, independientemente de la plataforma. Es decir, que si se ejecuta un programa en una plataforma diferente a la que se ha desarrollado, no es necesaria ninguna modificación para tener en cuenta las peculiaridades de la nueva plataforma.
Nombra Clases o interface para tareas sobre bases de datos.
- DRIVER
- CONECCITON
- STATEMENT
- RESULSET / RESULSETMETADATA.
Clases de JAVA.UTIL
- CALENDAR / DATE
- SANANNER
- STRINGTOKENIZER.
- TIMER / TIMERTASK (SCHEDULE)
- UUID
Clases de JAVA.LANG
MATH
OBJECT/CLASS
STRING/INTEGER…
THREAD
SYTEM
Interfaces de JAVA.LANG
RUNNABLE
ITERABLE
APPENDABLE
AUTOCLOSEABLE
CHARSEQUENCE
CLONEABLE
COMPARABLE<T>
ITERABLE<T>
READABLE
RUNNABLE
THREAD.UNCAUGHTEXCEPTIONHANDLER</T></T>
Anotaciones de JAVA.LANG
OVERIDE
Clases para realizar funciones de red de JAVA.NET
- SERVERSOCKET
- SOCKET
- URLCONNECTION
- URL
- INETADDRESS
¿Para que se usa TRY/CATHC?
Una vez se ha definido un método y se ha usado throw para mandar una excepción debemos ejecutar el método con TRY/CATCH para gestionar el comportamiento atendiendo a si la ejecución da error o no y que debe hacer en cada caso.
¿Cuándo se ejecutan las sentencias incluidas en FINALLY cuando gestionamos una excepción?
Si tenemos definido FINALLY. Siempre se ejecutan las sentencias que hay dentro de esta estructura. Tanto si hay error o no hay error.
¿Para qué se usan THROW Y THROWS?
Cuando definimos un método y queremos que se gestione en él algún tipo de excepción.
¿Qué pasa si da error un método en el que tenemos TRY/CATCH?
E5.g() da error entra dentro del CATCH y realiza lo que tengamos gestionado ahí.
Si hay Finally también se ejecuta lo que esté dentro.
¿Qué pasa si da error un método en el que tenemos TRY/CATCH?
E5.g() da error entra dentro del CATCH y realiza lo que tengamos gestionado ahí.
Si hay Finally también se ejecuta lo que esté dentro.
¿Qué pasa si da error un método en el que tenemos TRY/CATCH?
E5.g() no da error. Se continúa con la ejecuión del código. Si debajo de e.5(g) hay código se ejecuta, si no hay se sigue con el código, en este caso Empleado e6 =new Empleado()
¿Cuáles son los dos tipos de Excepciones que hay?
CHECKED HEREDAN DE EXCPETION–> GESTIONAR CON TRY/CATCH - FINALLY
UNCHECKED HEREDAN DE RUNTIME –> NO HAY QUE GESTIONARLAS
¿Cuál es la jerarquía de la clase TROWABLE?
Superclase de todos los ERRORES Y EXCEPCIONES
¿Se puede gestionar un error en java?
Errores es una subclase de THROWABLE que indica un problema serio en la aplicación. No está pensado para capturarlo ni para subsanarlo, no se puede recuperar de ello.
Nombra dos ejemplos de errores de java
HEREDAN DE VIRTUALMACHINEERROR
* OUTOFMEMORYERROR
A Una máquina virtual se le asingan recursos y memoria.
Un programa está usando tantan memoria que no puede asignar más a los procesos.
* STACKOVERFLOWERROR
Cuando un algoritmo que se ha programado es recursivo y no se ha gestionado bien la condición de parada de manera que nunca salga de ahí. Blucle infinito. Se ha llenado la pila
¿Qué pasa con el constructor por defecto si creo uno nuevo?
Ese que has creado sustituye al de por defecto.
¿Qué funcionalidad tiene el TRY con ()?
En este caso el try que se define con () tiene la partícularidad de que todo lo que se abra dentro de esos paréntesis(ficheros, bases de datos…) lo cierra solo cuando acabe el bloque.
¿Cuando una classe en Java empieza con mayúscula que quiere decir?
Que es una convención.
¿Qué es SLF4J?
Fachada que nos ayuda a abstraernos de las librerías que se usen. Si cambio de librería en un momento dado no tengo que cambiar el código.
¿A que clausula se parece el TRY() en .net?
A la clausula USING.
¿Qué es ANT?
Herramienta que crea una especie fichero BAT llamado build.xml donde podías poner las tareas de automatización(compilar, empaquetar…)es el precursor de herramientas como Maven o Gradle.
¿CUAL ES LA ESTRUCURA QUE MARCA MAVEN PARA PODER INSTALARLO?
my-app/pom.xml
my-app/src/main/java
¿Qué necesita Maven para localizar un artefacto y añadirlo a un proyecto?
Cualquier artefacto(Es como llama MAVEN a las librerías) de MAVEN tienen tres elementos para localizar la librearía.
o GROUPID
o ARTIFACTID
o VERSION
¿Cómo se llama a los elementos de java que vemos entre <> por ejemplo <persona>?</persona>
Clases genéricas.
¿Qué son los JAVA INTERFACE METHOS?
Son métodos que al ser definidos pueden llevar código.
public default boolean esMasRapida(Impresora i) {
if (i.getVelocidad() > this.getVelocidad()) {
return false;
} else {
return true;
}
}
¿Que hay en JAVA.UTIL.CONCURRENT?
Paquete de JAVA con patrones de diseño de programación concurrente.
¿Qué tipos de empaquetados hay en JAVA?
WAR(Web archive), JAR, EAR(Enterprise archive)