Cadenas compactas en Java 9
Menú de navegaciónMenú
Categorías

La mejor forma de Aprender Programación online y en español www.campusmvp.es

Cadenas compactas en Java 9

Las cadenas de caracteres representan una importante fracción de toda la información con la que operan los programas, indistintamente del lenguaje de programación usado. Tanto el almacenamiento de las cadenas como su tratamiento tienen un gran impacto en la mayoría de aplicaciones, de ahí que se demande de los compiladores y máquinas virtuales una representación y gestión lo más eficientes posible de estas.

En Java, String es el tipo fundamental a la hora de trabajar con cadenas de caracteres. Este usa internamente un vector de tipo char para almacenar los caracteres (lo podemos comprobar fácilmente abriendo el módulo de clase String.java), lo cual implica que cada uno de ellos ocupa 2 bytes. De esta forma se facilita la codificación Unicode de 16 bits:

Cadenas en java 8

Hay multitud de idiomas basados en el alfabeto occidental, con algunas variaciones, que no precisan más de 256 símbolos distintos, no siendo necesaria la codificación Unicode. En estos casos las cadenas ocupan el doble de lo que en realidad es indispensable, lo cual afecta tanto al espacio necesario para almacenarlas como a la eficiencia de las operaciones que operan sobre ellas.

Una de las novedades introducidas en Java 9 afecta a la representación del tipo String que, como se aprecia en la imagen siguiente, ha cambiado el tipo char por byte para los elementos de la cadena. Esta modificación está documentada en el JEP 254, titulado Compact Strings. La clase String cuenta con un atributo adicional, llamado coder, que permite a los métodos que operan sobre cadenas saber si están utilizándose uno o dos bytes por carácter. De esta forma se sigue dando soporte a alfabetos extendidos, al tiempo que se reduce la ocupación en memoria y mejora la eficiencia cuando se opera con alfabetos simplificados:

A diferencia de las compressed strings que se introdujeron en Java 6, y que fueron posteriormente descartadas en la versión 7 debido a los fallos de implementación, las cadenas compactas de Java 9 son una características activada por defecto. Es decir, no tendremos que hacer nada para optimizar nuestro código a la hora trabajar con cadenas de caracteres, simplemente recompilar nuestro código para la nueva versión de la plataforma.

Según distintos análisis realizados, el uso de memoria de las aplicaciones llega a reducirse un 21% y su eficiencia mejora en torno a un 7% tras la introducción de las cadenas compactas. Estos números, lógicamente, variarán de aplicación a aplicación según la cantidad de información textual y las operaciones que se lleve a cabo sobre ellas.

Recomendamos el siguiente vídeo de Aleksey Shipilëv para aquellos interesados en profundizar en esta novedad de Java 9:

 

Francisco Charte Francisco lleva más de 30 años dedicado a la enseñanza en informática, tanto en centros privados y públicos como a través de sus libros y artículos. Autor de más de 120 libros y varios centenares de artículos en revistas nacionales e internacionales. Charte es Doctor en Tecnologías de la información y la comunicación por la Universidad de Granada. Puedes seguirlo en Twitter en @fcharte Ver todos los posts de Francisco Charte

No te pierdas ningún post

Únete gratis a nuestro canal en Telegram y te avisaremos en el momento en el que publiquemos uno nuevo.

Archivado en: Lenguajes y plataformas

Agregar comentario