Java 17 (OpenJDK 17) como JVM por defecto

Introducción

En esta versión, se ha migrado y certificado la plataforma para utilizar por defecto la última versión LTS de Java, la 17, como JVM para todos los módulos de la plataforma.

Con esto se garantiza, si algún proyecto lo neccesita, el soporte a largo plazo de la JVM mediante Oracle Java SE según el siguiente calendario de releases:

A la vez que permite a los desarrolladores utilizar las ultimas novedades de Java así como cualquier librería de terceros sin compatibilidad para Java 8.

Proceso de migración

El proceso de migración a Java 17 para un proyecto como Onesait Platform ha pasado por los siguientes pasos:

  • A nivel de código fuente, al tratarse de un proyecto Maven con un pom padre que centraliza toda la configuración de la JVM, basta con modificar la versión de Java a utilizar.

<java.version>17</java.version> <maven.compiler.source>17</maven.compiler.source> <maven.compiler.target>17</maven.compiler.target>
  • Recompilar y pasar todos los test de la plataforma utilizando OpenJDK-17 y resolver cualquier problema. En nuestro caso resolverlos fue bastante sencillo y se resolvió subiendo de versión alguna libreria de terceros y tocando alguna línea de código.

  • Contenerizar todos los módulos de la plataforma para que utilicen OpenJDK-17-jre en vez de OpenJDK-1.8. En este caso, la plataforma dispone de una imagen base para todos sus módulos, de manera que todos tengan una configuración de sistema operativo y software unificada, siendo la JRE parte de esa configuración. De este modo cambiar de JVM a nivel global se hace desde el Dockerfile de la imagen base, construyendo dicha imagen y actualizandola en el registro.

FROM alpine:3.15 RUN apk --update add openjdk17-jre-headless
  • Instalar OpenJDK-17 en nuestros sistemas CI/CD (Jenkins) para construir la plataforma.

  • Hacer un despliegue de la plataforma y ejecutar una bateria completa de pruebas para certificar la plataforma.