X

Entérate cómo la nube y las nuevas tecnologías habilitan la transformación en los negocios y en la sociedad

La llegada de Java 15

This is a syndicated post, view the original post here

Como la entrega puntual de mejoras en Java 15 lo demuestra, la plataforma Java está bien posicionada para el desarrollo y el crecimiento modernos en la nube.

Por Sharat Chander*

El 2020, celebramos 25 años de Java. En el transcurso de esos años, Java proporcionó a los usuarios más de dos décadas de innovación basada en el impulso de mejoras anteriores, como Generics en Java 5, Lambdas en Java 8 y Modules en Java 9, que colectivamente terminaron aumentando el desempeño, la estabilidad y la seguridad de la plataforma Java durante el recorrido.

Y, demostrando aún más el camino de innovación continua de Java, Oracle se enorgullece en anunciar la disponibilidad general de Java 15 a todos los desarrolladores y empresas, representando la sexta versión del recurso, como parte de la frecuencia de seis meses para el cronograma.  Por más de dos años, este nivel de previsibilidad permite que los desarrolladores administren más fácilmente la adopción de innovaciones, gracia a un flujo constante de cambios graduales y esperados.

Java 15 ya está disponible
Oracle ofrece dos versiones binarias de Java 15:

•     Oracle OpenJDK 15 se ofrece bajo la Licencia Pública General GNU de código abierto v2, con la Excepción Classpath (GPLv2+CPE).

•    Oracle JDK 15 se ofrece bajo una licencia comercial para aquellos que desean soporte comercial o están usando Oracle JDK como parte de un producto o servicio Oracle.

-Lee más: Java en 2020

Oracle JDK 15 recibirá, como mínimo, dos actualizaciones trimestrales, de acuerdo con el cronograma de actualizaciones de correcciones críticas (CPU) de Oracle), antes del lanzamiento de Oracle JDK 16. Java 16 estará a disposición de todos en marzo del 2021, y las compilaciones de acceso anticipado de Oracle OpenJDK 16 ya se están disponibles en jdk.java.net.

Java 15, juntos

De forma semejante a lo que ocurrió con Java 11, Java 12, Java 13 y Java 14, seguimos celebrando las contribuciones realizadas por muchos individuos y organizaciones de la Comunidad OpenJDK al Java 15. ¡Todos nosotros construimos juntos el Java!

Ritmo constante de JDK 15
El ritmo global de cambio a lo largo del tiempo de JDK permaneció esencialmente constante por muchos años, pero con la frecuencia de seis meses del cronograma, el ritmo en el cual las innovaciones listas para producción se entregan aumentó mucho.

En vez de suministrar docenas de miles de correcciones y aproximadamente cien Propuestas de Mejora JDK (JEPs) en una gran versión a cada pocos años, las mejoras se entregan en versiones de recursos menores, en un cronograma más manejable y previsible, con frecuencia de seis meses. Estas alteraciones pueden variar de un recurso significativo a pequeñas mejoras, mantenimiento de rutina, correcciones de bugs y mejoras en la documentación. Cada alteración se representa en un único envío para un problema específico en JDK Bug System.

De los 2.136 problemas de JIRA marcados como corregidos en Java 15, 1.702 fueron concluidos por personas que trabajan para Oracle, mientras 434 fueron contribuciones de desarrolladores individuales o que trabajan para otras organizaciones. Analizar los problemas y agrupar los datos de la organización de los destinatarios resulta en el siguiente gráfico de organizaciones que patrocinan el desarrollo de correcciones en Java 15:

 

A Oracle le gustaría agradecer a los desarrolladores que trabajan para organizaciones como ARM, Amazon, IBM, Intel, NTT Data, Red Hat, SAP y Tencent por sus importantes contribuciones. Somos agradecidos también por ver contribuciones de organizaciones menores, como Ampere Computing, Bellsoft, Longsoon y desarrolladores independientes, que contribuyeron colectivamente con el 3% de las correcciones en Java 15. Y, por último, pero no menos importante, los gustaría agradecer por las primeras contribuciones de Datadog y de Microsoft.

También nos gustaría reconocer y agradecer a los muchos desarrolladores experimentados que analizaron las alteraciones propuestas, a los usuarios pioneros, que probaron compilaciones de acceso anticipado y relataron sus problemas y también a los profesionales dedicados, que realizaron comentarios en las listas de discusión de OpenJDK.

Agradecemos mucho las contribuciones de las siguientes personas, que realizaron comentarios útiles sobre la calidad de la compilación, errores de calidad registrados o que ofrecieron actualizaciones frecuentes:

•    Uwe Schindler (representando a Apache Lucene)
•    Xeno Amess (representando a Apache Maven)
•    Tilman Hausherr (representando a Apache PDFBox)
•    Mark Thomas (representando a Apache Tomcat)
•    Raphael Winterhalter (representando a Byte Buddy)
•    Simone Bordet (representando a Eclipse Jetty)
•    Peter Karich (representando a Graphhopper)
•    Marc Hoffmann (representando a JaCoCo)
•    Vincent Privat (representando a JOSM)
•    Christian Stein (representando a JUnit)
•    Norman Maurer (representando a Netty)

Qué hay de novedad en Java 15
Java 15 ofrece a los usuarios catorce mejoras/alteraciones principales, incluyendo un módulo de incubadora, tres recursos de visualización, dos recursos obsoletos y dos remociones.

Algunas mejoras se presentan en los módulos de incubadora, un medio de suministrar APIs y herramientas todavía no finalizadas a los desarrolladores, permitiendo que ellos hagan comentarios que pueden mejorar la calidad de la plataforma Java.

De la misma manera, algunas mejoras se presentan como recursos de visualización, que son recursos de lenguaje o VM de la Plataforma Java SE totalmente especificados e implementados, pero que no son permanentes. Ellos están disponibles en una versión del recurso JDK para recibir comentarios de desarrolladores con base en el uso real, permitiendo que se conviertan en permanentes en una versión futura.

De esa manera, los desarrolladores tienen la oportunidad de realizar comentarios oportunos y los proveedores de herramientas tienen la oportunidad de crear soporte para el recurso antes que la mayor parte de los desarrolladores Java lo usen en producción.

Finalmente, algunos cambios sirven para reducir el tamaño y el alcance de JDK por la Depreciación, que es una técnica para transmitir informaciones sobre el ciclo de vida de un API. La depreciación incentiva las aplicaciones a migrar hacia lejos de API, evita que las aplicaciones formen nuevas dependencias de API e informa a los desarrolladores sobre los riesgos de dependencia continua de API. 

Con la herramienta jdeprscan, presentada por primera vez en Java 9, los usuarios pueden realizar análisis estáticos de sus archivos jar (o alguna otra agregación de archivos de clase) para identificar usos de elementos API obsoletos, permitiendo que ellos se preparen anticipadamente para su retirada futura.

Las 14 JEPs entregadas con Java 15 pueden identificarse en cuatro categorías diferentes:

Nuevos recursos

JEP 339 Algoritmo de firma digital Curva de Edwards
Este recurso mejora la seguridad y el desempeño, implementando firmas criptográficas usando el algoritmo de firma digital Curva de Edwards (EdDSA), de acuerdo con lo descrito en RFC 8032. EdDSA es un moderno esquema de firma de curva elíptica con varias ventajas sobre los esquemas de firmas existentes en JDK. El objetivo principal de esta JEP es la implementación de este esquema de acuerdo con lo estandarizado en RFC 8032. Este nuevo esquema de firma no sustituye a ECDSA.

JEP 371 Clases ocultas
Este recurso ayuda estructuras que necesitan generar clases en tiempo de ejecución. Las estructuras generan clases para ampliar dinámicamente su comportamiento, pero es importante limitar el acceso a esas clases. Las clases ocultas son útiles porque solamente pueden accederse por reflexión, no por un código de bytes común. Además, las clases ocultas pueden descargarse independientemente de otras clases, permitiendo reducir el volumen de memoria de una estructura.

Visualización y recursos experimentales que ahora están finalizados

JEP 377 ZGC: GC escalable de baja latencia
ZGC se integró a JDK 11 por JEP 333, con el objetivo de mejorar la productividad reduciendo los tiempos de pausa de GC, manejar heaps con tamaños que varían de relativamente pequeños (algunos cientos de megabytes) a muy grandes (muchos terabytes) y establecer una base para recursos futuros de GC y optimizaciones aprovechando punteros de colores y barreras de carga. Con JEP 377, ZGC se transforma de un recurso experimental en un recurso de producción.

JEP 378 Bloques de Texto
Los bloques de texto fueron propuestos por JEP 355 el 2019. Un bloque de texto es una cadena de caracteres literal con varias líneas que evita la necesidad de la mayoría de las secuencias de escape, formatea automáticamente la cadena de caracteres de forma previsible y permite que los desarrolladores controlen el formato, cuando sea necesario. Con JEP 378, los Bloques de Texto se convirtieron en un recurso permanente del lenguaje Java.

JEP 379 Shenandoah
Shenandoah se integró a JDK 12 por JEP 189. Fue marcado como experimental para coincidir con el estatus de otros nuevos GCs, como Epsilon GC y ZGC. JEP 379 transforma el recolector de basura (GC) Shenandoah de un recurso experimental en un recurso de producto, pero no propone alterar el GC estándar, que sigue siendo G1, y tampoco propone alterar el proceso de desarrollo de Shenandoah, que seguirá ofreciendo soporte tanto para JDK más actual, como para JDKs LTS/STS populares.

Incubación y visualización de recursos

JEP 360 clases selladas - primera visualización
Este recurso de visualización mejora la productividad del desarrollador, mejorando la programación Java con clases e interfaces selladas, permitiendo que el autor de una clase o interface controle el código responsable de implementarla, brindando una manera más declarativa que los modificadores de acceso para restringir el uso de una superclase y ofrecer soporte a direcciones futuras en la correspondencia de estándares, apoyando el análisis exhaustivo de estándares.

JEP 375 Correspondencia de estándares para instanceof - segunda visualización
Este recurso de visualización, presentado por primera vez en JEP 305 como parte de JDK 14, mejora la productividad del desarrollador, eliminando la necesidad de código de texto común y debe permitir un código seguro de tipo más conciso.

JEP 384 Registros - segunda visualización
Los registros mejoran la productividad del desarrollador, ofreciendo una sintaxis compacta para declarar clases que actúan como operadoras transparentes para datos inmutables. Los registros fueron propuestos por JEP 359 a mediados del 2019 y se entregaron como un recurso de visualización en JDK 14. Esta JEP propone una nueva visualización del recurso en JDK 15, tanto para incorporar mejoras con base en los comentarios, como para ofrecer soporte a formas adicionales de clases e interfaces locales en el lenguaje Java.

JEP 383 API de acceso a la memoria externa - segunda incubadora
API de acceso a la memoria externa fue propuesta por JEP 370 y dirigida a JDK 14 e fines del 2019, como una API de incubación. Esta JEP propone incorporar mejoras con base en los comentarios e incubar nuevamente la API en JDK 15. Este recurso de incubación define una API para permitir que programas Java accedan a memoria externa de forma segura y eficiente fuera del heap do Java.

Modernización de JDK
JDK tiene miles de recursos implementados por millones de líneas de código y es importante preservar la confiabilidad y la capacidad de mantenimiento de esos códigos. Recursos desactualizados o con poquísimo uso pueden tener su código retirado, mientras otros recursos pueden tener su código reescrito para mayor estabilidad y desempeño. Si no se ponen obsoletos, los recursos no se retiran hasta el lanzamiento de una versión. JDK 15 reprueba dos recursos y retira dos otros recursos que se hicieron obsoletos. JDK 15 también moderniza la implementación de la pila de red.

JEP 374 Desactivar y reprobar el bloqueo polarizado
JEP 374 desactiva el bloqueo polarizado por defecto y reprueba todas las opciones de línea de comando relacionadas.

JEP 385 Reprobar la activación de RMI para retirada
JEP 385 reprueba el mecanismo de activación de RMI para retirada futura. La activación de RMI es una parte obsoleta de RMI y es opcional desde Java 8. Ninguna otra parte de RMI será reprobada.

JEP 372 Retirar el interpretador JavaScript Nashorn
JEP 372 retira el interpretador de script JavaScript Nashorn y sus APIs, además de la herramienta jjs. El interpretador, las APIs y la herramienta fueron reprobados para retirada en JDK 11 con la intención expresa de retirarlos en una versión futura.

JEP 381 Retirar los puertos Solaris y SPARC
JEP 381 retira el código-fuente y el soporte de compilación para los puertos Solaris/SPARC, Solaris/x64 y Linux/SPARC. Estos puertos fueron reprobados para retirada en JDK 14 con la intención expresa de retirarlos en una versión futura.

JEP 373 Reimplementar API de zócalo de datagrama heredada

Este recurso mejora la capacidad de mantenimiento y la estabilidad de JDK, sustituyendo las implementaciones subyacentes de APIs java.net.DatagramSocket y java.net.MulticastSocket por implementaciones más sencillas y modernas. Las nuevas implementaciones serán de fácil adaptación para trabajar con threads virtuales y actualmente se están explorando en el Proyecto Loom. Esta es una continuación de la propuesta de mejora JEP 353, que ya reimplementó el zócalo de API antiguo.

Soporte de herramientas
El soporte de herramientas actual ayuda a aumentar la productividad del desarrollador.  Con Java 15, seguimos abiertos a los esfuerzos de los principales proveedores de IDE, cuyas soluciones de herramientas ofrecen soporte a los desarrolladores para las versiones actuales de Java. Los desarrolladores pueden contar con el soporte a Java 15 para los siguientes IDEs:

1.    JetBrains IDEA
2.    Apache NetBeans
3.    Eclipse Marketplace

Java sigue siendo el lenguaje de programación favorito de los programadores de software. 

Como la entrega puntual de mejoras en Java 15 lo demuestra, por medio de la planificación continua y fundamentada, y de la integración del ecosistema, la plataforma Java está bien posicionada para el desarrollo y el crecimiento modernos en la nube.

*Sharat Chander es Director de Gestión de Productos de Java SE

Be the first to comment

Comments ( 0 )
Please enter your name.Please provide a valid email address.Please enter a comment.CAPTCHA challenge response provided was incorrect. Please try again.