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.
Cómo se declara en java una anotation?
public @interface NombreAnotación{}
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?
Para qué tipo de elemento se le puede aplicar, (clase, método, atributo,..)
Qué hace el modificador java “static”? A qué elementos se le puede aplicar?
Se aplica a atributos y métodos, convirtiéndolos en atributos y métodos de clase
Para qué sirve el modificador abstract en java, y a qué elementos se le puede aplicar?
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
Se puede instanciar (crear un objeto de) una clase abstract?
No, no se puede.
Para qué se usa el modificador private en java¿
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
Para qué sirve el modificador en java “protected”
Para dar visibilidad sobre métodos y atributos sólo a las clases hijas y clases en el mismo paquete, pero no al resto
Nombra 5 IDEs (entornos/editores de desarrollo) java
Eclipse, IntelliJ, Netbeans, BlueJ, JDeveloper
Cuándo es necesario importar una clase en otra?
Cuando están en diferentes paquetes
Cuál es el orden de los modificadores al declarar una clase java?
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.
Quién es el encargado en llamar al método finalize() de los objetos (heredado de Object)?
El Garbage Collector
El == qué compara de dos objetos?
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.
Cuál es el formato del constructor por defecto en java¿
Public NombreClase (){}
Para qué se usa la palabra native en java?
Es para indicar que un método está implementado en otro lenguaje mediante una librería externa, en lugar de en java
Par qué se usa la palabra volatile en java?
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
Par qué se usa la palabra transient en java?
Para indicar que el atributo al que se le ponga transient no se serialice