JPMS steht für Java Platform Module System. Dies ist eine neue Funktion in Java 9. Unsere Java-Anwendungen und Java-Pakete können mit Hilfe des Java-Modulsystems in Java-Module gepackt werden. Mit Java-Modulen können wir festlegen, welche Pakete des Moduls und anderer Java-Module es sehen können sollen. Das Java-Modul listet außerdem die für die Ausführung erforderlichen Java-Module auf.
Java Platform System ist auch als Java Jigsaw oder Project Jigsaw bekannt. Zur Zeit seiner Entwicklung wurde der Name Jigsaw verwendet. Der Hauptzweck dieser Entwicklung besteht darin, die JRE modularer zu gestalten. JPMS löst mehrere große Probleme, nämlich Classpath/JAR Hell, umfangreiches einzelnes JDK, Versionskonflikte und Sicherheitsprobleme.
Lassen Sie uns nun tiefer in das Java Platform Modularity System eintauchen, um mehr darüber zu erfahren.
Es ist wichtig zu bedenken, dass JPMS eine SE-Funktion (Standard Edition) ist und alle Java-Versionen betrifft. Dennoch besteht der Zweck dieses Patches darin, die Ausführung der meisten Programme ohne Änderungen beim Wechsel von Java 8 auf Java 9 zu ermöglichen. Sein Hauptzweck besteht darin, verwandte Pakete zu sammeln, die für das Modul sichtbar sind, und gleichzeitig einige Komponenten vor externen Benutzern des Moduls zu verbergen.
Der Start von JPMS hat die folgenden erklärten Ziele –
Organisieren Sie große Anwendungen und Bibliotheken ganz einfach.
Sicherheit verbessern
Anwendungsleistung verbessern
Verwalten Sie Plattformausfälle für kleine Geräte.
Verbesserte Struktur.
Bisher war der Klassenpfad der Hauptfaktor dafür, auf was ein Programm zugreifen kann, wenn es in Java ausgeführt wird. Obwohl der Klassenpfad diese Rolle spielt und klar verstanden wird, wird er letztendlich zu einem großen, undifferenzierten Eimer, in den alle Abhängigkeiten eingebunden werden.
Der Modulpfad fügt eine Ebene über dem Klassenpfad hinzu. Es fungiert als Speicherplatz für Pakete und wählt aus, auf welche Pakete eine Anwendung zugreifen kann.
Klassenpfad |
Modulpfad |
---|---|
Gilt für alle Java-Versionen |
Nur verfügbar für Java 9 und höher |
Keine Notwendigkeit für module-info.java |
Benötigen Sie module-info.java | ?
Das Hinzufügen der Bibliothek funktioniert nur, wenn das Projekt nicht über module-info.java verfügt |
Die Bibliothek kann ohne module-info.java arbeiten |
Nur nicht-modulare Bibliotheken hinzufügen |
Es können sowohl modulare als auch nicht modulare Elemente hinzugefügt werden |
Schwache Kapselung und Abstraktion |
Starke Kapselung und Abstraktion |
Modularität ist schwach |
Sehr modular |
Eine Bibliothek kann nicht zu einem Projekt hinzugefügt werden, indem ein Teil davon zum Klassenpfad hinzugefügt wird |
Wir können den erforderlichen Teil der Bibliothek nur zum Projekt hinzufügen, indem wir ihn zum Modulpfad hinzufügen |
JDK besteht aus Modulen. Wenn Sie das JDK auf Ihrem System verwenden, verfügen Sie auch über den Quellcode. Wenn Sie das noch nicht wussten, lesen Sie hier nach, um mehr zu erfahren.
Im JDK-Installationsverzeichnis gibt es ein /lib-Verzeichnis. In diesem Verzeichnis finden Sie eine src.zip-Datei. Extrahieren Sie es dann in das Verzeichnis /src. Suchen Sie anschließend im Verzeichnis /src nach dem Verzeichnis /java.base. Dort finden Sie die Datei module-info.java und öffnen sie schließlich.
Nach den Javadoc-Kommentaren oben finden Sie einen Ordner namens modulesection.base, gefolgt von der Exportzeile. Das Format ist etwas esoterisch, daher gehen wir nicht zu sehr darauf ein.
Wie Sie sehen können, exportiert das Modul java.base mehrere bekannte Java-Pakete, darunter java.io. So funktioniert das Modul, das Pakete sammelt.
Die Anforderungen der-Richtlinie sind das Gegenteil des Exports. Daher ist für das angegebene Modul möglicherweise ein Modul erforderlich. Geben Sie den Modulpfad auf die gleiche Weise an, wie Sie den Klassenpfad angeben, wenn Sie den Java-Compiler für das Modul ausführen. Dadurch ist es möglich, Abhängigkeiten aufzulösen.
Java 9 wurde unter Berücksichtigung der Abwärtskompatibilität entwickelt. Die neue Modulstruktur stellt jedoch eine große Veränderung dar und es kann zu Problemen kommen, insbesondere bei großen Codebasen.
Der folgende Befehl kann bei der Fehlerbehebung von Problemen hilfreich sein, die von Ihrer Codebasis herrühren. Wenn der Befehl jdeps auf eine Klasse verweist, sucht er nach Abhängigkeiten und den Modulen, die diese erfordern.
Wenn Ihre Abhängigkeiten Probleme verursachen, möchten Sie möglicherweise mit einer neueren Version des Pakets erstellen, von dem Sie abhängig sind und das mit Java 9 kompatibel ist. Wenn nicht, sollten Sie nach Optionen suchen.
So lösen Sie java.lang.NoClassDefFoundError -
Javax/xml/bind/JAXBException
Dies ist der Code, der sich darüber beschwert, dass die zugewiesene Klasse nicht gefunden werden kann, weil sie in ein Modul migriert wurde und für den konsumierenden Code nicht sichtbar ist. Es gibt mehrere Lösungen.
JPMS ist ein ziemlich bedeutender Übergang, daher wird die Einführung einige Zeit dauern. Da es sich bei Java 8 um eine Version mit Langzeitunterstützung handelt, besteht glücklicherweise kein unmittelbarer Bedarf.
Langfristig wird es jedoch notwendig sein, alte Projekte zu migrieren und neue Projekte sinnvoll mit Modulen zu nutzen, um vielleicht einige der gebotenen Vorteile nutzen zu können.
JPMS steht für Java Platform Module System und wurde in den frühen Entwicklungsstadien auch Projektpuzzle genannt. Es erleichtert Entwicklern die Organisation großer Anwendungen und Bibliotheken. Es verbessert die Struktur und erhöht das Sicherheitsniveau der Plattform. Es wird auch zur Verbesserung der Anwendungsleistung verwendet und ist nützlich für die Plattformzerlegung für kleinere Geräte. Die Hauptidee dahinter besteht darin, eine Sammlung verwandter Pakete für das Modul sichtbar zu machen und gleichzeitig Elemente vor externen Verbrauchern im Modul zu verbergen.
Das obige ist der detaillierte Inhalt vonJPMS: Java Platform Module System. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!