Oracle lanza Java 10 en Marzo 2018 con funcionalidades muy interesantes. La características principales que trae la nueva versión son:
- Variable local de tipo Inferido: (JEP-286) Introduce var a Java, algo que es común en otros lenguajes como JavaScript. Como el compilador puede inferir el tipo de una variable, ya no será necesario establecer el tipo explícitamente para variables locales. Ejemplo: var x = new ArrayList<String>();
- Extensión de CDS (Class Data Sharing): (JEP-310) CDS se introdujo en versiones anteriores para mejorar el rendimiento del arranque de JVM y reducir el uso de recursos cuando se ejecutan varias JVM en la misma máquina física o virtual.
- Extensión del Unicode Language: (JEP-314) Mejoras en la clase java.util.Locale y Api's relacionados. Por ejemplo: Equiquetas para tipo de moneda, primer día de la semana, sobreescritura de región y zona horaria.
- Formato de versionamiento basado en tiempo: (JEP-322) El nuevo formato hará más comprensible la numeración de futuras versión de la jdk.
- Certificados raiz: (JEP-319) Se proporcionará un conjunto por defecto de CA (Autoridades Certificadoras)
- GC (Recolector de Basura) completamente Paralelo para G1: (JEP-307) G1 es un recolector de basura de baja latencia, sin embargo en determinadas ocasiones no era del todo eficiente. A partir de esta versión el rendimiento será mejora ya que podrá realizar recolecciones completas de forma paralela.
- Interfaz del GC Recolector de Basura: (JEP-304) Define un interfaz limpio que permite la integración de forma rápida y sencilla.
- Manejo de hilos: (JEP-312) Permite la parada de hilos de forma individual y económica en lugar de la parada completa de todos los hilos.
- Reservar memoria Heap: (JEP-316) Permite a la JVM reserva diferentes tipos de memoria además de la memoria volátil. Esto permite aprovechar de una forma más eficiente los recursos hardware del sistema.
- Unificación de Repositorios: (JEP-296) Mientras que en Java9 hay 8 repositorios, en Java10 se unificará todo en un único repositorio haciendo posible realizar un único coomit completo para cambios en módulos dependientes.