Java 9 aura des modules en plus des packages. Habituellement, les langues ont l'une ou l'autre. Et la plupart des programmeurs perçoivent deux termes comme des synonymes. Les modules sont construits sur des packages, les traitant comme des primitives. Le motif composite suggère de traiter les primitives et les composites de manière uniforme. Sinon, de mauvaises choses se produiront. Par exemple, regardez le projet Valhalla, où ils essaient de moderniser le supertype commun pour les types primitifs (valeur) et de référence.
Les modules et les packages représentent-ils des notions sémantiquement distinctes? Cela signifie qu'il est judicieux d'avoir les deux pour n'importe quelle langue (séparation des préoccupations). Ou Java doit-il avoir les deux en hommage à la rétrocompatibilité?
Pourquoi introduire un nouveau concept au lieu d'en augmenter un existant?
JSR 376 : "Système de module de plate-forme Java" implémenté dans le projet Jigsaw .
Selon SOTMS
Un module est une collection nommée et auto-descriptive de code et de données. Son code est organisé comme un ensemble de packages contenant des types, c'est-à-dire des classes et des interfaces Java; ses données comprennent des ressources et d'autres types d'informations statiques.
JLS évite soigneusement de définir ce qu'est un package . De Wikipédia :
Un package Java est une technique pour organiser les classes Java en espaces de noms similaires aux modules de Modula, fournissant une programmation modulaire en Java.
Je sais que citer Wikipédia est une mauvaise pratique, mais cela reflète une compréhension commune. Dès l' entrée sur la programmation modulaire:
Le terme package est parfois utilisé à la place de module (comme dans Dart, Go ou Java). Dans d'autres implémentations, il s'agit d'un concept distinct; en Python, un package est une collection de modules, tandis que dans le prochain Java 9, l'introduction du nouveau concept de module (une collection de packages avec un contrôle d'accès amélioré) est prévue.
package
est / fait / signifie, ni ne changera en (avouons-le, assez horrible) système (s) de chemin de classe dans le JRE. La question n ° 2, je pense, est principalement orientée vers l'opinion (elle peut répondre , mais ma réponse et celle de quelqu'un d'autre peuvent différer et aucun de nous n'aurait nécessairement tort).
jigsaw
modules -style sont-ils juste une amélioration technique par rapport aux packages? 3) (sinon 1 et si 2), Java conserve-t-il simplement (ou apparemment) les deux concepts pour une compatibilité descendante. Certaines de ces questions peuvent être résolues, d'autres sont principalement orientées vers l'opinion. Je pense qu'une révision simplifiant les clarifications demandées est de mise ici.