Saltar al contenido

Cómo construir el JDK de Java 9

Este artículo pretende dar una idea sobre cómo construir el jdk 9 a partir del código fuente aprovechando el inminente lanzamiento del mismo.

Java 9 está a la vuelta de la esquina, y desde Jarroba queríamos dedicar un artículo para ver cómo construir el jdk.

Es una buena idea pensar en ir comprobando el comportamiento de nuestras aplicaciones en este nuevo JDK, ya que aunque es retrocompatible, por ejemplo, han quitado algunas opciones del recolector de basura (DefNew + CMS, ParNew + SerialOld, Incremental CMS), y ahora G1 es el recolector por defecto.

Tenemos la opción de usar unas de versiones compiladas que están en acceso anticipado que podemos encontrar en la página oficial o estar a la última y divertirnos con el código fuente.

Java 9 aún no está listo para producción, se espera que lo esté para el 2017/07/27, pero siempre conviene ver si estamos preparados. Para nuestros proyectos personales da igual las versiones que usemos, y siempre es interesante ir usando las últimas para ver qué nos depara el futuro, para producción tenemos que encontrar el balance entre estar obsoletos y correr el riesgo de que nos dejen de dar soporte (incluidas actualizaciones de seguridad, lo cual es peligroso) y arriesgarnos a estar a la última, ya que el software no está tan bien probado como cuando lleva ya bastante tiempo.

Hacer una build de la jdk no es algo muy común, ya que la mejor idea es coger un binario e instalarlo, pero a veces nos apetece cacharrear un poco, estar a la última, somos impacientes o queremos colaborar con la creación de la jdk con iniciativas como adoptopenjdk

Este artículo está orientado a usuarios de mac osx, los pasos para otros sistemas operativos son similares, pero solo está probado en osx.

Requisitos

  • Mercurial (ya que el repositorio está en mercurial.)
  • La última JDK8.
  • freetype.

Si consultáis algunos sitios os dirán que instaléis xquartz y luego al hacer el configure, lo hagáis de la siguiente manera:

bash configure --with-freetype-include=/usr/X11/include/freetype2 --with-freetype-lib=/usr/X11/lib --disable-warnings-as-errors --with-boot-jdk=/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home

Los JDK se construyen usando siempre el JDK anterior, es decir, para construir el jdk 7 se usa el jdk 6, para el jdk 8 se usa el jdk 7 y para el jdk 9 se usa el jdk 8

Pasos

Clonamos el repositorio

hg clone http://hg.openjdk.java.net/jdk9/jdk9

Nos vamos al directorio que se acaba de crear

cd jdk9

Ahora tenemos dos opciones, o decirle a bash que nos ejecute el script

bash ./get_source.sh

O cambiarle los permisos (darle permisos de ejecución) y ejecutarlo

chmod u+x get_source.sh
./get_source.sh

Hacemos la configuración

bash configure --with-boot-jdk=/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home --disable-warnings-as-errors

Cuando acabe nos dirá algo como:

====================================================
A new configuration has been successfully created in
/Users/dionisio/jdk9/build/macosx-x86_64-normal-server-release
using configure arguments '--with-boot-jdk=/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home --disable-warnings-as-errors'.
 
Configuration summary:
* Debug level:    release
* HS debug level: product
* JDK variant:    normal
* JVM variants:   server
* OpenJDK target: OS: macosx, CPU architecture: x86, address length: 64
* Version string: 9-internal+0-adhoc.dionisio.jdk9 (9-internal)
 
Tools summary:
* Boot JDK:       java version "1.8.0_131" Java(TM) SE Runtime Environment (build 1.8.0_131-b11) Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)  (at /Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home)
* Toolchain:      clang (clang/LLVM from Xcode 8.3.2)
* C Compiler:     Version 8.1.0 (at /usr/bin/clang)
* C++ Compiler:   Version 8.1.0 (at /usr/bin/clang++)
 
Build performance summary:
* Cores to use:   8
* Memory limit:   16384 MB

Creamos los ejecutables

make clean images

Y ya lo tenemos. Podemos comprobar que todo fue bien haciendo:

build/macosx-x86_64-normal-server-release/jdk/bin/java --version
openjdk 9-internal
OpenJDK Runtime Environment (build 9-internal+0-adhoc.dionisio.jdk9)
OpenJDK 64-Bit Server VM (build 9-internal+0-adhoc.dionisio.jdk9, mixed mode)

Una de las cosas interesantes que trae Java 9 es un REPL llamado JShell. REPL significa read, eval, print and loop (como la consola de python).

  • Read: Lee lo que introducimos.
  • Eval: Evalúa lo que hemos escrito.
  • Print: Muestra el resultado.
  • Loop: Vuelve al inicio.
build/macosx-x86_64-normal-server-release/jdk/bin/jshell
|  Welcome to JShell -- Version 9-internal
|  For an introduction type: /help intro
jshell> System.out.println("Hola")
Hola

Bibliografía

«Cómo construir el JDK de Java 9», de Dionisio Cortés en jarroba.com, con licencia Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0. Obra registrada en Safe Creative.

Dionisio Cortés

Ingeniero técnico en informática de sistemas y graduado en ingeniería de software. Unos dirán que soy un javero venido a menos, otros un pythonista venido a más; el caso es que me lo paso bien programando y cacharreando con cualquier lenguaje y tecnología.

Te puede interesar

Comentarios

Deja un comentario


Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.