b3t6 - Java Flashcards
Qué es la JDK de java?
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
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
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
Qué contienen los ficheros .class de java?
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
Qué hace la herramienta “java” de la JDK sobre un fichero .class?
Lo ejecuta o interpreta
Qué tienen los ficheros .java?
Código fuente
Qué es una consola REPL?
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)
Qué es JRE?
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
Qué es el JVM?
Es la máquina virtual de java. Es el intérprete de los ficheros .class con código bytecode
Qué es la variable de entorno CLASSPATH del JRE?
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)
Qué tres formas hay de indicarle a la JVM el contenido de CLASSPATH?
- Configurando la variable de entorno CLASSPATH
- Al lanzar la aplicación java, indicárselo con un comando “java -classpath /…/…/lib.jar”
- En el fichero MANIFEST.mf existe un “campo” llamado Class-Path:ruta(s) (dentro de un fichero .jar)
Qué tiene un fichero .jar?
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 )
Qué contiene la JVM?
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)
Cómo se diferencia la marca para el comentario Javadoc del comentario normal?
Javadoc: /** ….*/
Normal: / * … * / (pero sin espacio, lo pongo porque la aplicación no lo escapa)
Cómo se consulta qué hilo está ejecutando el programa?
Thread.currentThread().getName();
Qué hace el método .start() de un hilo?
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.
Qué es la encapsulación en Java?
Que haga falta acceder a los atributos de una clase a través de un método, no directamente
Cuál es la palabra reservada para herencia en Java?
extends
Public class Director extends Empleado
Qué es la sobrecarga en Java?
Es cuando hay varios métodos en una clase con el mismo nombre, pero con distintos parámetros en tipo o número
Para qué sirven las siguientes estructuras de programación de Java?
- 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:
Qué significa la palabra final en Java en
- Clases
- Métodos
- Atributos
- Clases: Clase que no se puede heredar
- Métodos: Método que no se puede sobreescribir
- Atributos: Constante, atributo que no se puede modificar
Qué es un enumerado en java y cómo se declara?
Se declara como enum y sirve para darle valores concretos
public enum Color{
rojo, blanco, negro
}
Para qué sirven las anotaciones en Java
Son elementos de programación que sirven para CONFIGURAR código (clases, métodos, atributos, …)
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 partir de la versión de Java 1.5
Para qué sirve la anotación @Override en java? Es obligatoria?
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.