Oracle GraalVM es un Java Development Kit (JDK) de alto rendimiento que puede acelerar el rendimiento de las aplicaciones basadas en Java y Java Virtual Machine (JVM) mediante un compilador alternativo just in time (JIT). Reduce la latencia de las aplicaciones, mejora el rendimiento máximo al disminuir el tiempo de recopilación de elementos no utilizados e incluye soporte continuo de Oracle.
También hay una herramienta de imágenes nativa que compila códigos de byte Java con antelación (ahead-of-time, AOT) y genera ejecutables nativos para algunas aplicaciones que se inician casi al instante y utilizan muy pocos recursos de memoria.
GraalVM comenzó en 2011 como un proyecto de investigación en Oracle Labs para crear una plataforma de ejecución que pudiera ejecutar varios lenguajes de programación con un alto rendimiento. El núcleo del proyecto GraalVM es el compilador de GraalVM de optimización avanzada, que se utiliza como compilador just in time (JIT) para Java Virtual Machine (JVM) o por la función de imagen nativa de GraalVM para compilar códigos de byte Java con antelación en un código de máquina nativo. El marco de implantación del lenguaje Truffle de GraalVM funciona con el compilador de GraalVM para ejecutar JavaScript, Python, Ruby y otros lenguajes soportados en JVM con un rendimiento excepcional.
Al utilizar GraalVM en modo JIT, la JVM utiliza el compilador JIT de GraalVM para crear un código de máquina específico de la plataforma a partir del código de byte Java mientras se ejecuta la aplicación. La compilación se realiza incrementalmente durante la ejecución del programa, con optimización adicional aplicada al código que se ejecuta con frecuencia. Este enfoque garantiza que el código de las zonas activas se ejecute muy rápido gracias a la función en línea agresiva, el análisis de escape parcial y otras optimizaciones avanzadas. Algunas optimizaciones reducen las asignaciones de objetos, lo que alivia la carga en el recopilador de elementos no utilizados. Esto ayuda a mejorar el rendimiento máximo de las aplicaciones de ejecución prolongada.
La utilidad de imágenes nativas de GraalVM también puede compilar código de byte Java para generar ejecutables de máquinas nativos con antelación (es decir, en el momento de la creación). Estos ejecutables se inician casi al instante y consumen una fracción de la memoria que utilizaría la misma aplicación Java que se ejecuta en JVM. Los ejecutables nativos también son compactos, ya que solo incluyen las clases, los métodos y las bibliotecas dependientes que necesita la aplicación.
GraalVM también admite la interoperabilidad en varios idiomas a través del marco de implementación de lenguajes Truffle. Truffle permite a los programas escritos en lenguajes compatibles utilizar bibliotecas de varios idiomas. Por ejemplo, un programa JavaScript puede invocar métodos Ruby y compartir valores sin hacer copias. Cuando se ejecuta en JVM, Truffle colabora con el compilador de GraalVM para compilar lenguajes soportados en el código de la máquina nativo para un rendimiento óptimo, al igual que Java.
Si deseas más información sobre el compilador de GraalVM, lee el libro electrónico GraalVM for Dummies
El compilador de GraalVM incluye una serie de algoritmos de optimización adicionales que proporcionan mejoras significativas en el rendimiento y el consumo de recursos. Las funciones de imagen nativa de GraalVM soportan una serie de funciones avanzadas, incluido el recopilador de elementos no utilizados G1, punteros comprimidos y optimización guiada por perfiles, lo que ayuda al compilador a generar códigos más eficientes.
GraalVM viene incluido en la suscripción a Java SE sin costo adicional. Incluye soporte continuo de Oracle con acceso a las correcciones de seguridad y las actualizaciones de rutas esenciales para obtener un rendimiento y una fiabilidad más predecibles. Para la migración de Java a la nube, GraalVM se puede utilizar gratuitamente en Oracle Cloud Infrastructure (OCI).
GraalVM permite que los desarrolladores creen códigos más eficientes, con un mayor aislamiento y una mayor agilidad para los entornos híbridos o en la nube. Estas son algunas de las razones por las que cada vez más empresas utilizan GraalVM actualmente:
Las innovaciones de GraalVM ayudan al código Java a mantenerse al día con las demandas de computación actuales con un rendimiento más veloz para responder con rapidez a las necesidades de los clientes. El optimizador avanzado mejora los picos de rendimiento. También optimiza el consumo de memoria minimizando las asignaciones de objetos para reducir el tiempo dedicado a realizar la recopilación de elementos no utilizados. La ejecución de GraalVM en modo JIT puede aumentar el rendimiento hasta en un 50 %. Esto libera memoria más pronto, para que se puedan ejecutar otras cargas de trabajo en la misma infraestructura y reducir los costos de TI.
Creación de aplicaciones nativas de la nubeLa herramienta de imágenes nativa de Oracle GraalVM compila aplicaciones Java con antelación en binarios de máquinas. Los ejecutables nativos se inician casi 100 veces más rápido y consumen hasta cinco veces menos memoria en comparación con la ejecución en una JVM.
Conforme las organizaciones trasladan las cargas de trabajo a la nube y pagan por hora por el uso de los recursos del sistema, GraalVM puede lograr un ahorro de los costos operativos. Estos resultados hacen que los ejecutables nativos generados por GraalVM sean ideales para la implementación de microservicios, un área soportada por los marcos de microservicios principales, como Helidon, Micronaut, Quarkus y Spring Boot.
Desarrollar programas en varios idiomas y mejorar la productividadPuedes ejecutar Java y otros lenguajes, como JavaScript, en la Java Virtual Machine (JVM) con un rendimiento excelente. SuiteScript de Oracle NetSuite es un lenguaje de extensión para que los usuarios finales personalicen las aplicaciones que se ejecutan en NetSuite. Oracle GraalVM habilitó a NetSuite para embeber un tiempo de ejecución de JavaScript basado en Truffle que puede compilar JavaScript en un código de máquina que se ejecuta cuatro veces más rápido que SuiteScript cuando se ejecuta en la JVM.
GraalVM incluye un compilador de optimización avanzado que genera códigos de máquina mientras el programa ejecuta just in time (JIT) para acelerar el rendimiento de las aplicaciones Java. Al hacer la compilación con antelación, la imagen nativa se inicia de forma rápida y utiliza menos memoria, lo que la hace idónea para una implementación nativa de la nube. Admite programas en varios idiomas para mejorar la productividad al permitir a los desarrolladores utilizar las mejores bibliotecas necesarias para resolver los problemas de negocios, independientemente del idioma en que estén escritos.