Como construir el JDK de Java 9


Java 9 está a la vuelta de la esquina, y desde Jarroba queríamos dedicar un artículo para ver como 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 pagina oficial o estar a la última y divertirnos con el código fuente.

Java 9 aun no esta 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 articulo esta orientado a usuarios de mac osx, los pasos para otros sistemas operativos son similares, pero solo esta probado en osx.

Requisitos

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

Si consultais algunos sitios os dirán que instaleis 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

Referencias

Comparte esta entrada en:
Safe Creative #1401310112503
Como construir el JDK de Java 9 por "www.jarroba.com" esta bajo una licencia Creative Commons
Reconocimiento-NoComercial-CompartirIgual 3.0 Unported License.
Creado a partir de la obra en www.jarroba.com

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies

ACEPTAR
Aviso de cookies