resumen JAVA
resumen JAVA
resumen JAVA
Java.
JDK es un kit de desarrollo de Java, que proporciona herramientas para desarrollar programas
en Java.
JIT significa compilación Just In Time, que ayuda a aumentar el rendimiento de la aplicación
Java al convertir el código de bytes de Java en código nativo en cierto umbral.
JVM significa máquina virtual Java y es el proceso que ejecuta la aplicación Java.
Cuando compilamos un archivo .java, el compilador Java genera un archivo .class (contiene
byte-code) con el mismo nombre del archivo. Este archivo .class entra en varios pasos cuando
lo ejecutamos.
Subsistema Java Class Loader
1. Carga: genera los datos binarios correspondientes y los guarda en el área de
métodos (“method area” –vea la imagen anterior)
2. Vinculación o Enlace
• Verificación: asegura la exactitud del archivo .class, es decir, comprueba si este
archivo está formateado correctamente y generado por un compilador válido o no.
Si la verificación falla, obtenemos la excepción de tiempo de
ejecución java.lang.VerifyError.
• Preparación: JVM asigna memoria para las variables de clase e inicializa la
memoria a los valores predeterminados.
• Resolución: es el proceso de reemplazar referencias simbólicas del tipo con
referencias directas. Se realiza buscando en el área del método (method area) para
localizar la entidad a la que se hace referencia.
3. Inicialización
• Cargador de clases Bootstrap (Bootstrap class loader): cada implementación de
JVM debe tener un cargador de clases de arranque, capaz de cargar clases
confiables. Carga las clases API centrales de java presentes en el
directorio JAVA_HOME/jre/lib. Esta ruta se conoce popularmente como ruta de
arranque. Se implementa en lenguajes nativos como C, C++.
• Cargador de clases de extensiones (Extension class loader): es un elemento
secundario del Bootstrap class loader. Carga las clases presentes en los directorios
de extensiones JAVA_HOME/jre/lib/ext (Ruta de extensión) o cualquier otro
directorio especificado por la propiedad del sistema java.ext.dirs. Está
implementado en Java por la clase sun.misc.Launcher$ExtClassLoader.
• Cargador de clases de sistema/aplicación (system/Application class loader): es
secundario del cargador de clases de extensión. Es responsable de cargar las clases
desde la ruta de la clase de aplicación. Internamente utiliza la variable de entorno
asignada a java.class.path. También se implementa en Java mediante la clase
sun.misc.Launcher$AppClassLoader.
Memoria JVM
• Área de método (Method area): en el área de método, se almacena toda la
información del nivel de clase, como el nombre de clase, el nombre inmediato de la
clase principal, la información de métodos y variables, etc., incluidas las variables
estáticas. Solo hay un área de método por JVM, y es un recurso compartido.
• Área Heap (Heap area): la información de todos los objetos se almacena en el área
heap. También hay un área heap por JVM. También es un recurso compartido.
• Área de pila (Stack area): para cada subproceso, JVM crea una pila en tiempo de
ejecución que se almacena aquí. Cada bloque de esta pila se llama registro de
activación/marco de pila que almacena los métodos de llamadas. Todas las variables
locales de ese método se almacenan en su marco correspondiente. Una vez que
finaliza un hilo, JVM destruirá la pila en tiempo de ejecución. No es un recurso
compartido.
• Registros de PC (PC Registers): Almacena la dirección de la instrucción de ejecución
actual de un hilo. Obviamente, cada hilo tiene registros de PC separados.
• Pilas de métodos nativos (Native method stacks): para cada hilo, se crea una pila
nativa separada. Almacena información del método nativo.
Motor de ejecución
• Intérprete: interpreta el bytecode línea por línea y luego lo ejecuta. La desventaja aquí
es que cuando se llama un método varias veces, cada vez se requiere interpretación.
• Compilador Just-In-Time (JIT): se usa para aumentar la eficiencia del intérprete.
• Recolector de basura: destruye objetos no referenciados.
Interfaz nativa de Java
Es una interfaz que interactúa con las Bibliotecas de métodos nativos y proporciona las
bibliotecas nativas (C, C++) necesarias para la ejecución
Bibliotecas de métodos nativos
Es una colección de bibliotecas nativas (C, C ++) que requiere el motor de ejecución.
Entre las palabras más utilizadas y por lo tanto más conocidas se encuentran las de la
siguiente lista:
Int define un dato o variable como de tipo entero, generalmente números negativos o
positivos.
Float define un dato de tipo flotante, es decir valores con coma (,) por ejemplo 12,2.
Char un char es un carácter, una letra, un espacio, una coma, un punto, etc.
Boolean define un dato de tipo lógico, cuyo resultado es verdadero o falso
Const crea una variable constante de alcance global o local y no puede cambiarse
posteriormente.
Break fuerza la salida de un bucle (sale completamente del mismo).
Continue sale de la iteración actual y salta directamente a la siguiente.
For estructura que se utiliza para ejecutar un bloque de código un número determinado de
veces.
While bucle que repite una acción siempre y cuando se cumpla una condición booleana de
control.
True representa el valor verdadero de una expresión booleana.
False representa el valor falso de una expresión booleana.
Una interface es una especie de mapa que dice lo que hay que hacer y los métodos abstractos,
cuando son implementados en una clase, dicen cómo se hace.