Menú
Calendario streams Recursos Newsletter
Volver al archivo

Dos comandos y Java se hace más rápido

GraalVM da 80x, pero no forma parte oficial del ecosistema Java. ¿No hay nada oficial dentro del JDK para mejorar el performance? Sí lo hay: Project Leyden, dos comandos y cero cambios de código.

La semana pasada hablamos de GraalVM: 80x más rápido, aunque también exploramos sus trade-offs.

Además, GraalVM no forma parte oficial del ecosistema Java a pesar de ser de Oracle, por eso hay que preguntarnos.

¿No hay nada oficial dentro de Java para mejorar el performance? Sí lo hay, y se llama Project Leyden: es parte del JDK y se aplica con dos comandos y cero cambios de código.

El problema de Java es conocido. Una app típica de Spring Boot carga entre 15.000 y 25.000 clases al arrancar.

Lo llamativo: de esas miles, casi ninguna es tuya. Por defecto, un framework como Spring carga aproximadamente 17.000 clases al arrancar.

Eso sin contar cosas como Hibernate, Tomcat y el mismo JDK. Y cada una de esas clases pasa por parsing, verificación, loading y linking. Después de todo eso, el JIT todavía necesita tiempo para compilar los métodos más usados. Por eso Spring Boot tarda 3-4 segundos en arrancar y los primeros requests son lentos.

En Kubernetes, por ejemplo, cada pod nuevo vive ese dolor. En serverless, cada cold start es ese dolor. Y la solución hasta hace poco era solo GraalVM, pero te pedía varias cosas para poder usarlo.

Te explico cómo funciona Project Leyden.

Lo que hace es resolver este problema de una forma elegante. La idea, según la documentación oficial: "¿para qué repetir todo ese trabajo en cada arranque si el resultado es siempre el mismo?"

Leyden introduce un training run: corres tu app una vez, la JVM observa qué clases se cargan y qué métodos son hot, y guarda todo en un archivo de cache. La próxima vez, la JVM lee el cache y se salta el trabajo.

Los dos comandos y la configuración exacta los muestro paso a paso en el video.

Hay un resultado documentado que me pareció interesante: el proyecto Spring PetClinic (repo público de Spring) pasó de 4.4 segundos a poco más de 2.6 segundos, aproximadamente 41% menos de startup, cero cambios de código. Te cuento todo esto y más en el video que acabo de subir.

Acelera Java con dos comandos sin cambiar código

Dos cosas honestas:

  • Leyden no llega tan lejos como GraalVM Native Image. Leyden: 40-55% de mejora. GraalVM: 80-95%. Si necesitas arranques en 37 milisegundos (CLI tools, serverless puro), Leyden no te los da.
  • El training run debe reflejar producción. Si tu classpath o tus JVM flags cambian, el cache se invalida. En CI/CD hay que orquestar el training run como un paso extra.

Pero lo que Leyden NO te pide es lo que hace la diferencia: no hay closed-world, no hay archivos de configuración de reflexión, no hay builds de 10 minutos, no hay cambios en debugging. Tu app es la misma. Tu JVM es la misma. Solo que aprende de sí misma.

Además hay otros detalles importantes que no puse aquí para no hacerlo demasiado largo. Puedes ver el video que subí hoy, donde está toda la info.

+41% de performance sin cambiar código

La semana pasada en el canal subí un video hablando acerca de GraalVM, deberías verlo porque tiene mucho valor.

80x de performance con GraalVM

Si ves alguno de los videos, déjame un comentario por allá.

Java Performance 2026: Acelera Java en 2 comandos

Ver video

Comparte este análisis

Recibe el próximo análisis en tu email

Cada semana, un tema técnico diseccionado a fondo. Sin humo, sin atajos. 100% gratis.

Suscribirme gratis
Ver todas las entregas