Creación de una imagen nativa
Compilación ahead-of-time
Creación de una imagen nativa es una lección gratuita de Java Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Java Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Java Academy incluye 4 lecciones en total.
Construcción de una imagen nativa
La herramienta native-image convierte el bytecode Java compilado en un único ejecutable nativo autocontenido. En esta lección se explica el proceso de compilación, lo que ocurre internamente y cómo ejecutar el resultado.
Empiece con Java convencional
La imagen nativa parte de clases compiladas normales. Imagine que compilamos en código nativo el siguiente programa sencillo.
public class Hello {
public static void main(String[] args) {
System.out.println("Hello from a native binary!");
}
}Compile y después construya
Hay dos pasos: primero, javac Hello.java produce Hello.class; después, native-image Hello produce un ejecutable llamado hello. La compilación tarda mucho más que la compilación del código fuente porque analiza todo el programa.
Análisis de mundo cerrado
native-image realiza un análisis de mundo cerrado: debe conocer todo el código que podría ejecutarse. Partiendo de main, recorre todos los métodos alcanzables e incluye únicamente esos métodos en el binario. Todo lo que no sea alcanzable se elimina (eliminación de código muerto en el momento del enlazado).
Compilación anticipada
Los métodos alcanzables se compilan por adelantado en código máquina nativo. Como no queda bytecode que interpretar ni existe JIT, tampoco hay calentamiento: el programa funciona a toda velocidad desde su primera instrucción.
Inicialización en tiempo de compilación
Para iniciarse rápidamente, native-image puede ejecutar los inicializadores estáticos en tiempo de compilación e incorporar el heap resultante a la imagen (el heap de la imagen). Esto significa que algunos objetos ya existen en el instante en que se inicia el programa.
Ejecución del ejecutable
El resultado es un ejecutable normal del sistema operativo. Se ejecuta directamente: no necesita java -jar ni instalar una JVM en la máquina de destino. También es completamente estático o mayormente estático, según las opciones utilizadas.
Opciones de compilación habituales
Entre las opciones útiles se incluyen:
-o name— nombre del archivo de salida.--no-fallback— falla en lugar de generar una imagen alternativa dependiente de la JVM.-O2/-O3— nivel de optimización.--static— binario completamente enlazado de forma estática (Linux).
Memoria y disco
La propia compilación consume mucha memoria: las aplicaciones grandes pueden necesitar varios gigabytes de RAM y varios minutos de CPU. Este coste se paga una vez durante la compilación, a cambio de un arranque económico y rápido en tiempo de ejecución.
Compilación mediante Maven/Gradle
En proyectos reales, rara vez se ejecuta native-image manualmente. Los plugins de GraalVM native-build-tools lo integran en Maven (native:compile) y Gradle (nativeCompile), de modo que el binario forma parte de su flujo normal de compilación.
Verificación del arranque
Después de compilar, compare el arranque: una ejecución de java -jar puede tardar cientos de milisegundos, mientras que el binario nativo responde en unos pocos milisegundos. Medir esta diferencia es precisamente el objetivo de usar código nativo.
Comprobación rápida
Compruebe su comprensión de la construcción de imágenes nativas.
Resumen
Ha aprendido cómo se construye una imagen nativa:
- Se parte de bytecode compilado;
native-imageproduce un ejecutable autocontenido. - El análisis de mundo cerrado encuentra todo el código alcanzable desde
main. - El código alcanzable se compila con AOT; el código inalcanzable se elimina.
- La inicialización en tiempo de compilación incorpora un heap de imagen para lograr un arranque rápido.
- La compilación es lenta y consume mucha memoria; intégrala mediante plugins de Maven/Gradle.
Preguntas frecuentes
¿La lección «Creación de una imagen nativa» es gratis?
Sí — el texto completo de «Creación de una imagen nativa» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Java Academy, actualiza a CoddyKit PRO. El curso de Java Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Creación de una imagen nativa»?
Compilación ahead-of-time Practicas Java Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Java Academy?
No se requiere experiencia previa. Java Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.
¿Cuánto tiempo toma la lección «Creación de una imagen nativa»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Java Academy?
Sí. Cada lección de Java Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Qué es GraalVM
- Creación de una imagen nativa
- Reflection y configuración
- Compromisos de la imagen nativa