
Java ha sido el sueño de un programador y cuál es la mejor manera de cuantificar la popularidad de Java con la nueva versión de lanzamiento de Java 13. Después de la propuesta inicial de mejora de Java, ha habido avances en las características de JDK que harán volar la mente del desarrollador de Java con una nueva gama de características después del lanzamiento oficial el 17 de septiembre de 2019.
Pero ¿por qué crees que Java es tan popular?Java ha sido una locura entre los programadores debido a su independencia de plataforma y la capacidad de ejecutarse en diferentes computadoras. Ha estado allí durante tanto tiempo que ha sido adoptado por organizaciones como bancos, compañías de seguros, empresas, agencias y principalmente por
empresas de outsourcing de software .
Java ha estado allí en el negocio para desarrollar aplicaciones de Android, aplicaciones web de Java, herramientas de software y aplicaciones científicas.
Profundicemos en las estadísticas y calculemos el índice de popularidad de las aplicaciones Java entre otros lenguajes de programación competidores.
Según el reciente informe de septiembre de
Tiobe Index , las aplicaciones y los programadores de Java han estado contemplando su posición y han estado dando un momento difícil a otros lenguajes de programación.

Después de ver la tribu de popularidad de Java entre los otros lenguajes de programación, pasemos a las características de Java 13 JDK de un vistazo:
- JEP 350: archivos dinámicos de CDS
- JEP 351: ZGC: liberar memoria no utilizada
- JEP 353: Reimplemente la API de Socket Legacy
- JEP 354: Expresiones de cambio (Vista previa)
- JEP 355: bloques de texto (vista previa)
Dado que no podemos esperar muchos cambios después del lanzamiento inicial de Java 12, todavía hay cambios a nivel funcional que podrían mover a los programadores de Java a nuevas características estables. El objetivo es finalizar las funciones de vista previa en la próxima versión LTS para que sean lo suficientemente estables y se vean bien durante los próximos tres años. Se espera que para septiembre de 2021, Java 17 se hará cargo del legado de Java 8 y 11.
En este blog, lo llevaré a través de las últimas características que puede esperar de Java 13.-> Archivos dinámicos de CDSAdemás de las nuevas características que son obvias para los
desarrolladores de Java , han sucedido muchas cosas bajo el techo de JVM y la biblioteca de su clase. Class Data Sharing (CDS) se introdujo en Java 5. El objetivo final de CDS es acortar los tiempos de inicio de las aplicaciones Java almacenando cierta información sobre las clases en los archivos de Class Data Sharing. Los datos pueden cargarse en tiempo de ejecución y ser utilizados por varias JVM.
Hasta Java 10, sin embargo, los archivos compartidos solo eran accesibles para Bootstrap ClassLoader. A partir de Java 10, CDS se extendió mediante el uso compartido de datos de clase de aplicación (AppCDS). AppCDS permite que el cargador de clases de plataforma y sistema incorporado, así como los cargadores de clases definidos por el usuario, accedan a los archivos de CDS. Se requieren listas de clases para crear los archivos CDS para identificar las clases que se cargarán.
Anteriormente, estas listas de clases debían determinarse mediante ejecuciones de prueba de la aplicación para determinar qué clases se cargaron realmente durante la ejecución. Desde Java 12, los archivos CDS predeterminados se entregan con el JDK de forma predeterminada, que se basa en la lista de clases del JDK.
Los archivos dinámicos de CDS ahora se basan en esto. El objetivo es guardar las ejecuciones de prueba adicionales de la aplicación. Una vez que se ha ejecutado una aplicación, solo se archivan las clases de la biblioteca y la aplicación recién cargadas que no están incluidas en el CDS de capa base / predeterminada. El archivado dinámico se activa con comandos de línea de comandos. En una extensión futura, el archivo de clases podría ejecutarse de forma completamente automática y transparente.
-> ZGC: No comprometer memoria no utilizadaHoy en día, no es tan raro que las aplicaciones tengan que servir a miles de usuarios al mismo tiempo. Dichas aplicaciones necesitan mucha memoria y la gestión de la memoria es importante y afecta el rendimiento de la aplicación. Para cumplir con los requisitos establecidos, Oracle ha introducido el Z Garbage Collector (
ZGC ) en Java 11, ya que promete pausas muy cortas al limpiar los recuerdos del montón con varios terabytes.
Anteriormente, no liberaba la memoria de almacenamiento dinámico liberada reservada para aplicaciones. Como resultado, las aplicaciones consumen mucha más memoria de la necesaria. Una aplicación que se ejecuta en entornos de bajos recursos se ve particularmente afectada. Otros recolectores de basura como el G1 y Shenandoah ya admiten la liberación de memoria no utilizada.
-> API de socket renovadasJava Socket y Java ServerSocketAPI son fragmentos del JDK 1.0. La mayoría de ellos consisten en legado de Java y C Code. Esto hace que el mantenimiento y la extensibilidad sean mucho más difíciles. Se supone que el NioSocketImpl reemplazará al obsoleto PlainSocketImpl ahora. NioSocketImpl ya se basa en la implementación existente de Nueva E / S y utiliza su infraestructura existente en el JDK.
La implementación anterior no es compatible con otras extensiones planificadas del lenguaje. Por ejemplo, los problemas de concurrencia dificultan el uso futuro de los hilos de usuario livianos (fibra, parte del Proyecto Loom).
-> Mejoras para expresiones de interruptorSi observa la función desde el punto de vista del desarrollador, entonces es el punto lo que es simplemente interesante. Por ejemplo, las Expresiones de cambio se introdujeron como una vista previa en Java 12 y se ha ampliado debido a los comentarios de los usuarios. Las expresiones de cambio son una alternativa a las declaraciones de cambio engorrosas y propensas a errores.
El mayor cambio en las normas de codificación que se pudo ver en Java 13 es el reemplazo del salto de palabra clave en la expresión de cambio por rendimiento. El fondo es la mejor diferenciación entre una declaración de cambio (con posible interrupción) y expresiones (con rendimiento). La declaración de rendimiento sale del interruptor y devuelve el resultado de la rama actual, similar a un retorno.
Por ejemplo, el fragmento de código a continuación muestra el escenario en el que la declaración de Switch se ha utilizado con break y, en la otra parte, la expresión de Switch se ha utilizado con el rendimiento para superar la diferencia entre los dos.
-> Bloques de texto en lugar de Literales de cadena sin formatoEl bloque de texto es un nuevo tipo para definir cadenas literales en el lenguaje Java. Se puede usar para denotar una cadena en cualquier lugar donde se pueda usar un literal de cadena, pero ofrece una mayor expresividad y una menor complejidad accidental. La primera implementación de Raw String Literals ha planteado muchas preguntas ya que los usuarios han brindado comentarios sobre el mismo que tiene múltiples preguntas múltiples.
Después de todo, muchas aplicaciones Java pueden procesar fragmentos de código de otros lenguajes como HTML o SQL. Hasta ahora, tales cadenas solo podían definirse de una manera engorrosa, lo que las hace difíciles de leer.
Por ejemplo, se deben usar comandos de control adicionales (escapar con \ n) para los saltos de línea. Otros idiomas, como Groovy, Scala o
Kotlin, ofrecen desde hace tiempo la posibilidad de definir textos de varias líneas.
El nuevo bloque de texto usa comillas triples como delimitadores y se puede usar donde se permiten cadenas normales.
El fragmento de código a continuación explica la diferencia entre los dos:

Las comillas triples de apertura y cierre deben estar en una línea separada. Sin embargo, el contenido real comienza con la segunda línea. Esto aumenta la legibilidad del código fuente, ya que la sangría de la primera línea se muestra correctamente en el texto fuente.
ConclusiónLos cambios descritos hasta ahora se definieron en los JEP (Protocolos de mejora de Java). Sin embargo, hay más adaptaciones directamente en la biblioteca de la clase. Pero primero, debe instalar Java 13 mientras la versión de Java 14 todavía está en proceso.
Los cambios son inciertos y ha habido ciertas características, como Expresiones de cambio y Bloqueo de texto, que se pueden finalizar. Sin embargo, el próximo lanzamiento está en camino.