Felipe Gaucho presenta en su blog una introducción sobre el
JSR-277, el Java Module System que remplazará a los viejos JAR.
Los autores de la especificación explican que buscan resolver 3 tipos de problemas ocasionados por el actual sistema de jars:
Classpath Hell: ¿Dónde están tus librerías y clases?¿Por qué diferentes IDEs usan diferentes directorios para guardarlos?
JAR Hell: ¿Cómo empaquetar diferentes librerías en un solo JAR?
Extension Hell: ¿Recuerdan la pesadilla resultade de cargar una versión diferente a la esperada de una clase de un JAR no esperado?
Estos problemas evidencian que una de las partes de Java que más ha notado el paso de los años es este sistema de JARs y precisamente Java Module System busca una mejor alternativa. Por ahora se han definidos las siguientes características :
- Sistema de versiones. Como saben, uno de los puntos débiles de los jar es su nulo control de versiones, bueno puedes especificar una versión en el MANIFEST pero de poco sirve.
- Nuevo formato de distribución: JAM, adios a los .jar. Por cierto estos JAM además de soportar la compresión zip de los jar, soportarán Pack200 un nuevo sistema de scompresión que promete archivos más pequeños.
- Repositorios. Parecido al sistema usado por Maven2, pero añadiendo más tipos de repositorios como local, URL, etc.
- Soporte en tiempo de ejecución. La JVM se encargará de gestionar los JAM de forma tal que será capaz de validar modulos y cargarlos de forma dinámica según los necesite tu aplicación.
Java Module System está planeado para publicarse junto a JDK 7, antes llamado Dolphin. ¿Qué les parece esta especificación?