Galahad, el nuevo proyecto de OpenJDK para fusionar la compilación nativa de GraalVM
OpenJDK dio a conocer hace poco dio a conocer una noticia en la cual propone la creación de un nuevo proyecto, el cual tiene como nombre «Galahad» tiene la finalidad de fusionar algunas partes del código de GraalVM Community Edition en el kit de desarrollo de Java.
El equipo anunció que el objetivo inicial del proyecto Galahad es contribuir con la última versión del compilador JIT de GraalVM e integrarlo como una alternativa al compilador JIT de la máquina virtual HotSpot existente. Este es el último desarrollo en un esfuerzo de larga duración para proporcionar la capacidad de compilar aplicaciones Java en código de máquina antes de que se ejecute el programa.
GraalVM es una máquina virtual de Java (JVM) y un kit de desarrollo de Java (JDK) creado por Oracle. Es un entorno de tiempo de ejecución de alto rendimiento que ayuda a mejorar el rendimiento y la eficiencia de las aplicaciones.
Sus objetivos incluyen: escribir un compilador más rápido y fácil de mantener, mejorar el rendimiento de los lenguajes que se ejecutan en la JVM, reducir los tiempos de inicio de las aplicaciones, integrar soporte multilenguaje en el ecosistema de Java, así como proporcionar un conjunto de herramientas de programación para hazlo GraalVM agrega un compilador de optimización al JDK.
Esto optimiza el rendimiento de los diferentes idiomas y asegura la interoperabilidad de las aplicaciones multilingües. Junto con la compatibilidad con el código Java, GraalVM también admite otros lenguajes de programación, incluidos Scala, Kotlin, Groovy, Clojure, R, Python, JavaScript y Ruby.
Esencialmente, permite a los desarrolladores ejecutar código de manera eficiente en varios idiomas y bibliotecas dentro de una sola aplicación. El proyecto OpenJDK ahora quiere aprovechar estas características y recientemente anunció una hoja de ruta que le permitirá admitir GraalVM.
El soporte de GraalVM está destinado principalmente a proporcionar a los usuarios de OpenJDK la capacidad de compilar aplicaciones Java en código de máquina antes de la ejecución del programa. A primera vista, esto parece algo extraño.
De hecho, una de las primeras cosas que aprende un nuevo desarrollador de Java es que «el lenguaje de programación de Java no se compila en código de máquina, sino en código de bytes de JVM». Esta simple máxima tiene profundas implicaciones, la más fundamental de las cuales es que la plataforma Java se basa en un poderoso entorno de ejecución dinámica, la JVM, para la ejecución.
Este entorno de tiempo de ejecución permite técnicas de ejecución dinámicas, como la carga de clases y la reflexión, que no tienen análogos reales en los lenguajes compilados antes de tiempo (AOT). De hecho, es el punto de partida de todo lo que hace que Java sea tan poderoso y lo que lo hizo tan revolucionario cuando llegó a la escena del software hace unos 25 años. A pesar de esto, siempre ha habido interés en la capacidad de compilar programas Java directamente en código de máquina y ejecutarlos de forma independiente sin una JVM.
Hay varias razones para este deseo: reducir el tiempo de calentamiento de las aplicaciones Java para que alcancen su máximo rendimiento, reducir los requisitos de memoria de las aplicaciones Java, o simplemente un deseo general de evitar el uso de recursos para los subsistemas de tiempo de ejecución que una aplicación puede no necesitar. Varios proyectos han intentado realizar esta posibilidad. El más reciente, y posiblemente el más exitoso hasta la fecha, es el proyecto GraalVM. Este proyecto no es de OpenJDK, sino de un proyecto de investigación de Oracle Labs. La primera versión de producción, GraalVM 19.0, llegó en mayo de 2019.
Desde entonces, GraalVM ha operado como un proyecto independiente con un ciclo de lanzamiento diferente y una interacción limitada con OpenJDK.
Por ahora, Galahad se enfoca en contribuir con la última versión del compilador JIT de GraalVM e integrarlo como una alternativa al compilador C2. Posteriormente, se agregará la tecnología de compilación AOT necesaria para que el compilador JIT Graal esté disponible instantáneamente al inicio de JVM. Cabe señalar que no se confirmará la base de código completa de GraalVM, solo los componentes centrales JIT y AOT, así como la herramienta Native Image. Las funciones patentadas de Oracle presentes en GraalVM Enterprise Edititon no deben asignarse al proyecto.
Finalmente si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace.