Java 9 wird Module zusätzlich zu Paketen enthalten. Normalerweise haben Sprachen die eine oder andere. Und die meisten Programmierer nehmen zwei Begriffe als Synonyme wahr . Module werden auf Paketen aufgebaut und als Grundelemente behandelt. Ein zusammengesetztes Muster legt nahe, Grundelemente und Verbundwerkstoffe gleichmäßig zu behandeln. Sonst passieren schlimme Dinge. Schauen Sie sich zum Beispiel das Projekt Valhalla an, in dem versucht wird, gängige Supertypen für primitive (Wert) und Referenztypen nachzurüsten.
Sind Module und Pakete semantisch getrennte Begriffe? Das heißt, es ist sinnvoll, für jede Sprache beides zu haben (Trennung der Anliegen). Oder muss Java beides als Tribut an die Abwärtskompatibilität haben?
Warum ein neues Konzept einführen, anstatt das bestehende zu erweitern?
JSR 376 : "Java Platform Module System" implementiert im Rahmen des Projekts Jigsaw .
Laut SOTMS
Ein Modul ist eine benannte, selbstbeschreibende Sammlung von Code und Daten. Sein Code ist in Paketen organisiert, die Typen enthalten, dh Java-Klassen und -Schnittstellen. Seine Daten umfassen Ressourcen und andere Arten statischer Informationen.
JLS vermeidet sorgfältig, zu definieren, was ein Paket ist . Aus Wikipedia :
Ein Java-Paket ist eine Technik zum Organisieren von Java-Klassen in Namespaces, die den Modulen von Modula ähneln und eine modulare Programmierung in Java ermöglichen.
Ich weiß, dass das Zitieren von Wikipedia eine schlechte Praxis ist, aber es spiegelt allgemeines Verständnis wider. Vom Einstieg in die modulare Programmierung:
Der Begriff Paket wird manchmal anstelle von Modul verwendet (wie in Dart, Go oder Java). In anderen Implementierungen ist dies ein unterschiedliches Konzept. In Python ist ein Paket eine Sammlung von Modulen, während in Java 9 die Einführung des neuen Modulkonzepts (eine Sammlung von Paketen mit erweiterter Zugriffskontrolle) geplant ist.
package
lautet / bedeutet /, und sie werden auch nicht zu (seien wir ehrlich, ziemlich schrecklich) Klassenpfadsystemen in der JRE wechseln. Frage Nr. 2 ist meiner Meinung nach in erster Linie meinungsorientiert (sie ist beantwortbar , aber meine Antwort und die einer anderen Person können sich unterscheiden, und keiner von uns würde sich notwendigerweise irren).
jigsaw
-Style-Module nur eine technische Verbesserung gegenüber Paketen? 3) (wenn nicht 1 und wenn 2), behält Java einfach (oder scheinbar) beide Konzepte für die Abwärtskompatibilität bei. Einige dieser Fragen sind beantwortbar, andere sind in erster Linie meinungsorientiert. Ich denke, eine Änderung zur Vereinfachung der angestrebten Klarstellung ist hier angebracht.