Project Valhalla es un proyecto OpenJDK experimental para desarrollar nuevas funciones de lenguaje importantes para Java 10 y más allá. El proyecto se anunció en julio de 2014 y es un esfuerzo experimental de Oracle , dirigido por el ingeniero Brian Goetz . [1]
Funciones planificadas
Valhalla está incubando características y mejoras del lenguaje Java en estas áreas: [2]
- Tipos de valor ; pequeños 'objetos' altamente eficientes sin herencia.
- Especialización genérica ;
List
por ejemplo. - Genéricos reificados ; conservando el tipo real en tiempo de ejecución.
- soporte ' volátil ' mejorado .
Estas funciones requerirán cambios tanto de sintaxis como de nivel de máquina virtual.
Actividad de proyecto
El proyecto está organizado en la lista de correo OpenJDK 'Project Valhalla'. El proyecto Valhalla ha comenzado en las etapas experimentales, con un anuncio inaugural y propuestas iniciales preliminares.
Publicado hasta la fecha:
- Anuncio del proyecto Valhalla
- Propuesta inicial de 'Tipos de valor'
- Propuesta inicial de 'Especialización genérica'
- Estado de Valhalla, Sección 1: Camino al Valhalla
- Estado de Valhalla, Sección 2: Modelo de lenguaje
Los prototipos experimentales de OpenJDK también se pueden construir a partir de los repositorios de Mercurial. Estos están comenzando a incorporar muchas características de especialización. Tenga en cuenta que estas son fuentes Gnu Make / C ++, y la construcción de OpenJDK requiere experiencia técnica. Consulte las instrucciones de compilación de OpenJDK para obtener más detalles.
Beneficios e implicaciones técnicas
El rendimiento del acceso a la memoria y la eficiencia del acceso a valores 'en caja' son un área importante que deben abordar estas características. Las características de 'Tipo de valor' y la 'Especialización genérica' (cuando se aplican a listas o colecciones) reducen el uso de memoria, pero lo que es más importante, evitan la indirecta del puntero que generalmente causa un error de caché. [3] [4]
En lugar de una lista o matriz de referencias de objetos, que apuntan a valores de datos dispersos en la memoria, las mejoras de Project Valhalla permitirán que los valores de lista o matriz se presenten potencialmente de forma lineal, sin indirección, como un bloque de memoria consecutivo.
Los tipos de valor se conciben como "¡Códigos como una clase, funcionan como un int!" [5] La sincronización y la herencia se excluirían de los tipos de valor. Estos ya no requerirían la identidad del objeto y los gastos generales de memoria / puntero asociados, aunque podrían asumir una forma 'en caja' por compatibilidad. [4]
Ver también
Referencias
- ^ Goetz, Brian. "¡Bienvenido a Valhalla!" . Archivo de correo OpenJDK . OpenJDK . Consultado el 12 de agosto de 2014 .
- ^ Evans, Ben. "Oracle lanza el proyecto Valhalla para Java" . InfoQ . InfoWorld . Consultado el 12 de agosto de 2014 .
- ^ Krill, Paul. "Proyecto Valhalla de próxima generación propuesto; tipos de valor, especialización genérica y volátiles mejorados encabezan la lista de deseos para el Proyecto Valhalla" . JavaWorld . InfoWorld . Consultado el 12 de agosto de 2014 .
- ^ a b "¿Los tipos de valor y la lista
vienen para Java 10?" . LiterateJava.com . Consultado el 12 de agosto de 2014 . - ^ Rose, John; Goetz, Brian; Steele, Guy. "Estado de los valores" . OpenJDK . Consultado el 12 de agosto de 2014 .