Cuando Java se creó por primera vez para programar un mando a distancia, la idea de que algún día podría convertirse en la base de los negocios de muchas empresas de alcance mundial ni siquiera estaba en la pizarra. Hoy, sin embargo, Java es utilizado por el 80% de las empresas de todo el mundo, con 3.000 millones de JVM activas en todo el mundo y 12 millones de desarrolladores creando aplicaciones.
Es una lástima, por tanto, que mantenerse al día con lo último en Java pueda ser una propuesta difícil para un equipo de desarrollo y su personal de operaciones. A menudo es aconsejable recurrir a un proveedor a la hora de crear la arquitectura Java, aunque sólo sea para asegurarse de que todos los miembros de la organización utilizan las mismas versiones e implementaciones del lenguaje. Por supuesto, el servicio, la asistencia, los parches de seguridad y las correcciones de errores son una ventaja añadida a la estandarización.
Red Hat y OpenJDK
Afortunadamente para la comunidad Java en general, Java es de código abierto y se distribuye bajo la Licencia Pública General (GPL) como OpenJDK. Esto significa que está escrito y diseñado por la comunidad de desarrolladores y proveedores más interesados en que Java avance como tecnología. Sin embargo, como cualquier lenguaje de programación, la plataforma tiene muchas piezas móviles que se han ido acumulando a lo largo de sus casi 30 años de historia, y eso significa que puede ser difícil mantener todo ese software alineado y actualizado.
Red Hat ha participado en OpenJDK desde sus inicios, y uno de los proyectos que más nos ha gustado ver evolucionar a la comunidad ha sido el de las compilaciones de la plataforma. Aunque IcedTea era la compilación de Java 8 Web Profile disponible en la comunidad de código abierto, Java ha recorrido un largo camino desde aquellas primeras distribuciones.
Con el tiempo, la Fundación Eclipse convirtió este trabajo en el grupo de trabajo Adoptium. En la actualidad, las compilaciones de OpenJDK están disponibles gratuitamente en este grupo de trabajo, bajo el nombre de Temurin. El objetivo del proyecto Temurin y del grupo de trabajo Adoptium no es sólo proporcionar binarios de OpenJDK, sino también probar exhaustivamente el código asociado a ellos.
Puede leer también | Instalación de Netbeans y OpenJDK en Rocky Linux 9 paso a paso
El Grupo de Trabajo Adoptium combinó los esfuerzos de Red Hat, Microsoft, Amazon, Google y la comunidad en general para producir no sólo Temurin, sino también el proyecto AQAvit. AQAvit proporciona una colección de más de 350.000 pruebas que van más allá de las pruebas del Java Test Compatibility Kit que ya se utilizaban para certificar la conformidad de las implementaciones Java.
AQAvit se diseñó para probar patrones de utilización y requisitos del mundo real, y está diseñado de forma tan genérica que puede integrarse en los flujos de trabajo tradicionales de las aplicaciones Java como un conjunto de pruebas de seguridad y durabilidad.
Red Hat también ofrece soporte directo de OpenJDK a través de varios de sus productos y canales. Por ejemplo, si se suscribe a Red Hat Enterprise Linux, ya tiene soporte para OpenJDK. Si paga por utilizar una versión de RHEL ofrecida por su proveedor de nube, eso también incluye soporte de OpenJDK.
Si quieres modernizar tus aplicaciones Java para la nube y quieres aligerar las cargas que soportan tus servidores de aplicaciones Java, el proyecto Quarkus se ha encargado de llevar Java a los contenedores y Kubernetes. Quarkus aporta algunas características más de criatura a Java, unas que son específicamente útiles para los desarrolladores que construyen aplicaciones en la nube altamente escalables.
Puede leer también | Presentada oficialmente la Máquina Virtual Libre - OpenJDK
Por ejemplo, las aplicaciones Java tradicionales son monolitos de larga duración; por tanto, el tiempo de arranque no es un aspecto terriblemente importante de la optimización. Pero las aplicaciones basadas en contenedores se inician y detienen constantemente para satisfacer las demandas de escalado, y ahorran dinero cuando no están en uso. Así pues, Quarkus ofrece un tiempo de arranque muy rápido para las aplicaciones. Esto también tiene el beneficio añadido de acortar los bucles de retroalimentación para los desarrolladores que buscan ver los resultados de sus cambios de código.
Y aunque muchas aplicaciones Java se considerarían semilegales hoy en día, eso no significa que no haya muchas innovaciones interesantes bajo el capó. Una de las principales mejoras introducidas en Java ha sido el Java Flight Recorder (JFR), que permite supervisar y perfilar las aplicaciones Java sin necesidad de realizar modificaciones.
Sin embargo, existen algunos problemas a la hora de escalar JFR, especialmente en lo que respecta a las grabaciones en vuelo. Para ayudar a aliviar estos problemas, Red Hat patrocinó la creación del proyecto Cryostat. Cryostat gestiona de forma segura sus grabaciones JFR desde sus cargas de trabajo en contenedores.
Ecosistema Java
En el ecosistema Java, GraalVM sigue evolucionando y madurando. Este compilador de optimización avanzada puede facilitar el proceso de desarrollo y aumentar su rendimiento, gracias a sus capacidades de depuración, supervisión y creación de perfiles. Y no sólo se limita a Java, GraalVM también es compatible con R, Python y C. Red Hat tiene su propia distribución de GraalVM conocida como Mandrel.
Aunque llevamos muchos años trabajando para dar soporte y actualizar Java tanto en la comunidad upstream como en nuestros propios productos, también estamos muy centrados en el futuro del lenguaje y en la próxima generación de aplicaciones Java.
También hemos dedicado tiempo y código a este objetivo. El recolector de basura Shenandoah, por ejemplo, es un proyecto upstream en el que estamos interesados en avanzar. Red Hat también ha contribuido a la adaptación del OpenJDK a ARM de 64 bits. Este recolector de basura de baja pausa pretende hacer la tarea más predecible y consistente. Tanto si se trata de un montón de 200 GB como de 2 GB, este nuevo proyecto debería requerir la misma cantidad de tiempo de pausa para ambos. El objetivo final es desvincular los tiempos de pausa del tamaño del montón.
Puede leer también | Red Hat Enterprise Linux llega a la nube de Oracle
También estamos trabajando en el soporte de memoria persistente para las colecciones y en el proyecto Liliput. El objetivo de este último proyecto es reducir las cabeceras de los objetos Java en la JVM de hotspot de 128 bits a 64 bits. Esto reduciría la huella de memoria de la JVM y mejoraría el rendimiento general de Java.
Por supuesto, uno de los mayores atractivos para modernizar las aplicaciones Java es la nube. Llevar sus aplicaciones Java a la nube puede ser una experiencia transformadora tanto para sus desarrolladores como para sus equipos de TI. Quarkus puede ayudar con el traslado, pero Red Hat también proporciona herramientas de migración para ayudar en el proceso.
Independientemente de cómo decida llevar su ecosistema Java a la nube, los mismos pasos generales pueden ayudarle con la transición. En primer lugar, deberá hacer un inventario de todos sus sistemas Java. A continuación, deberá identificar los candidatos más adecuados para la transición. En el mejor de los casos, cuando haya identificado una buena aplicación Java candidata, podrá utilizarla como modelo para el resto de su flota.
¿Qué es OpenJDK?
OpenJDK es una implementación de código abierto de la plataforma Java, que incluye un compilador de Java, bibliotecas y una máquina virtual Java (JVM). Fue lanzado por primera vez por Sun Microsystems en 2006 como parte del proyecto OpenJDK, y ahora es mantenido por la comunidad de desarrolladores de Java.
OpenJDK es una alternativa al JDK (Java Development Kit) propietario que se distribuye por Oracle, y se ha convertido en la base de muchas implementaciones de Java de código abierto, como AdoptOpenJDK y Amazon Corretto.
Puede leer también | Disponible Red Hat Enterprise Linux 9.1 y AlmaLinux 9.1
Entre las ventajas de OpenJDK se encuentran su flexibilidad y su capacidad de personalización, lo que permite a los desarrolladores de Java crear aplicaciones específicas para una variedad de plataformas y dispositivos. Además, el hecho de que sea de código abierto significa que cualquier persona puede descargarlo, modificarlo y distribuirlo sin restricciones, lo que lo convierte en una opción popular para desarrolladores y empresas que buscan reducir los costos de licencia y tener mayor control sobre su plataforma de Java.