Selon une proposition d’amélioration du JDK (JEP) postée la semaine dernière sur Internet, l'outil Java Packager pourrait être intégré au projet de modularisation Jigsaw. Java Packager est utilisé pour compiler, packager et déployer des applications Java par ligne de commande. « En raison de la taille du JRE, quand il intègre un runtime dans son package, Java Packager génère d'énormes binaires qui peuvent atteindre 100 Mo pour certaines distributions », fait valoir le JDK Enhancement Proposal. « Jigsaw va permettre d’utiliser des outils et des techniques qui réduiront la taille du JRE qu’il faut emballer ».

La proposition stipule que, majoritairement, le workflow du packageur ne sera pas modifié. Mais les outils de Jigsaw seront ajoutés et remplaceront certaines étapes. Toujours selon le JEP, le packageur servira uniquement à créer des applications avec le runtime JDK 9. Les utilisateurs qui souhaitent créer une application Java 8 peuvent toujours utiliser le packageur Java livré avec la version 8 de Java.

Livraison en 2016

Le JEP, qui porte la référence officielle JEP 275, a été introduit mi-mai, mais la proposition a été mise à jour jeudi dernier, même si le document n’en fait pas état. À l’origine, la modularisation devait être intégrée dans Java 8, livré en mars 2015, mais le projet a été repoussé à Java 9, dont la sortie est prévue en 2016. Récemment, Mark Reinhold d'Oracle, architecte en chef de la plate-forme Java chez Oracle, a évoqué sur un blog les avantages d'un système modulaire pour Java. En particulier, il a déclaré que la modularisation renforcerait la fiabilité de la configuration, assurerait une forte encapsulation et plus d'évolutivité et améliorait la performance.

Le JDK Enhancement Proposal dépend entièrement du projet Jigsaw. Comme l’explique le JEP, ce projet ajoute la notion de chemin d’accès au module à celle de chemin d’accès au répertoire ou Classpath. « De nouvelles options et configurations seront ajoutées à l'API du packageur, au plug-in Ant, et à CLI pour permettre à l'utilisateur de spécifier les modules et les chemins d’accès aux modules, en plus des JAR et des chemins d’accès aux classes. Cela pourra nécessiter quelques ajouts dans les ressources de l’app existante ».