Java 9 avrà moduli in aggiunta ai pacchetti. Di solito le lingue hanno l'una o l'altra. La maggior parte dei programmatori percepiscono due termini come sinonimi. I moduli sono costruiti sopra i pacchetti, trattandoli come primitivi. Il modello composito suggerisce di trattare uniformemente i primitivi e i compositi. Altrimenti accadranno cose brutte. Ad esempio, guarda il progetto Valhalla, dove cercano di adattare il supertipo comune per i tipi primitivi (valore) e di riferimento.
I moduli e i pacchetti rappresentano nozioni semanticamente separate? Significa che è ragionevole avere entrambi per qualsiasi lingua (separazione degli interessi). O Java deve avere sia come tributo alla retrocompatibilità?
Perché introdurre un nuovo concetto invece di aumentare quello esistente?
JSR 376 : "Sistema modulo piattaforma Java" implementato all'interno del progetto Jigsaw .
Secondo SOTMS
A module is a named, self-describing collection of code and data. Its code is organized as a set of packages containing types, i.e., Java classes and interfaces; its data includes resources and other kinds of static information.
JLS evita accuratamente di definire cos'è un pacchetto . Da Wikipedia :
A Java package is a technique for organizing Java classes into namespaces similar to the modules of Modula, providing modular programming in Java.
So che citare Wikipedia è una cattiva pratica, ma riflette una comprensione comune. Dalla voce sulla programmazione modulare:
The term package is sometimes used instead of module (as in Dart, Go, or Java). In other implementations, this is a distinct concept; in Python a package is a collection of modules, while in the upcoming Java 9 the introduction of the new module concept (a collection of packages with enhanced access control) is planned.