Java 9 Module

Java 9 Module sind eine der größten Veränderungen in der Struktur von Java. Hier gebe ich eine kurze Einführung in das „Java 9 Module System“.

Java 9 Module

Wir werden uns folgende Themen zum Java 9 Module System ansehen.

  1. Einführung
  2. Java SE 9: Jigsaw-Projekt
  3. Probleme des aktuellen Java-Systems?
  4. Vorteile des Java SE 9 Module Systems
  5. Vergleich von JDK 8 und JDK 9
  6. Was ist ein Java 9 Modul?
  7. Mutter des Java 9 Module Systems
  8. Vergleich von Java 8 und Java 9 Anwendungen

Einführung

Oracle Corp hat die Veröffentlichung von Java 9 von März 2017 auf September 2017 verschoben. Wie wir wissen, brachte Java SE 8 drei große neue Funktionen mit (plus einige Verbesserungen und neue Funktionen).

  1. Lambda-Ausdrücke
  2. Stream-API
  3. Datums-API

In ähnlicher Weise wird Java SE 9 drei große Funktionen mitbringen (plus einige Verbesserungen und neue Funktionen):

  1. Java Module System (Jigsaw-Projekt)
  2. Java REPL
  3. Milling Project Coin

In diesem Beitrag werden wir die Grundlagen des Oracle Jigsaw-Projekts besprechen.

Java SE 9: Jigsaw-Projekt

Das Jigsaw-Projekt wird ein völlig neues Konzept von Java SE 9 einführen: Java-Modulsystem. Es handelt sich um ein sehr großes und prestigeträchtiges Projekt von Oracle Corp. im Java-SE-9-Release. Ursprünglich wurde dieses Projekt als Teil des Java-SE-7-Release gestartet. Aufgrund umfangreicher Änderungen wurde es jedoch auf Java SE 8 verschoben und dann erneut verschoben. Nun steht die Veröffentlichung mit Java SE 9 im September 2017 bevor. Hauptziele des Jigsaw-Projekts:

  • Der modulare JDK
    Wie wir wissen, ist das aktuelle JDK-System zu groß. Daher haben sie beschlossen, das JDK selbst in kleine Module aufzuteilen, um eine Reihe von Vorteilen zu erzielen (Wir werden diese bald in den kommenden Abschnitten besprechen).- Modulare Quellcode
    Die aktuellen Quellcode-JAR-Dateien sind zu groß, insbesondere rt.jar ist zu groß. Daher werden sie den Java-Quellcode in kleinere Module aufteilen.- Modulare Laufzeitbilder
    Das Hauptziel dieses Merkmals ist die „Umstrukturierung der JDK- und JRE-Laufzeitbilder, um Module aufzunehmen“.- Kapselung der meisten internen APIs
    Das Hauptziel dieses Features ist es, „den Zugriff auf die meisten internen APIs des JDK standardmäßig zu verhindern, aber einige kritische, weit verbreitete interne APIs zugänglich zu lassen“.- Java Platform Module System
    Das Hauptziel dieses Merkmals ist es, „dem Benutzer zu ermöglichen, ihre eigenen Module zu erstellen, um ihre Anwendungen zu entwickeln“.- jlink: Der Java Linker
    Das Hauptziel dieses jlink-Tools ist es, „dem Benutzer zu ermöglichen, ausführbare Dateien für ihre Anwendungen zu erstellen“.

Wenn Sie diese Dinge nicht klar verstehen, machen Sie sich keine Sorgen. Wir werden diese Konzepte in den kommenden Abschnitten und auch in meinen kommenden Beiträgen ausführlich besprechen.

Probleme des aktuellen Java-Systems?

Im diesem Abschnitt werden wir „Warum wir das Java SE 9-Modulsystem benötigen“ diskutieren, was die Probleme des aktuellen Java-Systems bedeutet. Java SE 8 oder frühere Systeme haben bei der Entwicklung oder Bereitstellung von Java-basierten Anwendungen folgende Probleme.

  • Da das JDK zu groß ist, ist es etwas schwierig, es auf kleinen Geräten zu skalieren. Java SE 8 hat 3 Arten von kompakten Profilen eingeführt, um dieses Problem zu lösen: compact1, compact2 und compact3. Aber es löst dieses Problem nicht.
  • JAR-Dateien wie rt.jar usw. sind zu groß für die Verwendung in kleinen Geräten und Anwendungen.
  • Da das JDK zu groß ist, können unsere Anwendungen oder Geräte keine bessere Leistung unterstützen.
  • Es gibt keine starke Verkapselung im aktuellen Java-System, weil der „public“ Zugriffsmodifikator zu offen ist. Jeder kann darauf zugreifen.
  • Wie das JDK ist auch das JRE zu groß, es ist schwer, Anwendungen zu testen und zu pflegen.
  • Weil der öffentliche Zugang zu offen ist, ist es nicht möglich, auf einige interne, nicht kritische APIs wie sun.*, *.internal.* usw. zuzugreifen.
  • Weil Benutzer auch auf interne APIs zugreifen können, ist Sicherheit ebenfalls ein großes Problem.
  • Die Anwendung ist zu groß.
  • Es ist etwas schwierig, eine geringere Kopplung zwischen Komponenten zu unterstützen.

Um all diese Probleme zu lösen, plant Oracle Corp die Veröffentlichung des Java-Modulsystems in Java SE 9.

Vorteile des Java SE 9-Modulsystems

Das Java SE 9-Modulsystem wird folgende Vorteile bieten:

  • Da Java SE 9 JDK, JRE, JARs usw. in kleinere Module aufteilt, können wir die gewünschten Module verwenden. Es ist also sehr einfach, die Java-Anwendung für kleine Geräte zu skalieren.
  • Leichteres Testen und Warten.
  • Bessere Leistung unterstützen.
  • Da „public“ nicht einfach nur „public“ ist, unterstützt es eine sehr starke Kapselung. (Keine Sorge, es ist ein großes Konzept. Wir werden es bald mit einigen nützlichen Beispielen erkunden).
  • Wir können nicht mehr auf interne, nicht kritische APIs zugreifen.
  • Module können unerwünschte und interne Details sehr sicher verbergen, sodass wir eine bessere Sicherheit erhalten können.
  • Die Anwendung ist sehr klein, da wir nur die benötigten Module verwenden können.
  • Es ist einfach, eine geringere Kopplung zwischen Komponenten zu unterstützen.
  • Es ist einfach, das Prinzip der Einzelverantwortung (SRP) zu unterstützen.

Wir werden alle diese Konzepte bald nacheinander erkunden.

Vergleichen Sie JDK 8 und JDK 9

Wir wissen, was eine JDK-Software enthält. Nach der Installation der JDK-8-Software sehen wir ein paar Verzeichnisse wie bin, jre, lib usw. im Java-Home-Ordner. Oracle Corp hat jedoch diese Ordnerstruktur etwas anders geändert, wie unten gezeigt.

JDK 8 Ordnerstruktur: JDK 9 Ordnerstruktur: Hier enthält JDK 9 KEIN JRE. In JDK 9 ist JRE in einen separaten Verteilungsordner aufgeteilt. Die JDK-9-Software enthält einen neuen Ordner „jmods“. Er enthält eine Reihe von Java-9-Modulen, wie unten gezeigt.

In JDK 9, Kein rt.jar und kein tools.jar HINWEIS:- Zum jetzigen Zeitpunkt enthält „jmods“ 95 Module. Dies kann sich in der endgültigen Version erhöhen. Der Ordner „jmods“ ist unter ${JAVA_HOME}/jmods verfügbar. Diese sind als JDK-Module bekannt.

Was ist ein Java-9-Modul?

A Module is a self-describing collection of Code, Data, and some Resources. It is a set of related Packages, Types (classes, abstract classes, interfaces etc) with Code & Data and Resources. Each Module contains only a set of related code and data to support Single Responsibility (Functionality) Principle (SRP). The main goal of Java 9 Module System is to support Modular Programming in Java. We will discuss on “What is a Module Descriptor” and “How to develop Java Modules” in my coming posts.

Mutter des Java-9-Modulsystems

Ab sofort verfügt das Java 9-Modulsystem über 95 Module im Early Access JDK. Oracle Corp hat die JDK-Jars und die Java SE-Spezifikationen in zwei Sets von Modulen aufgeteilt.

  • Alle JDK-Module beginnen mit „jdk.*“
  • Alle Java SE Spezifikationsmodule beginnen mit „java.*“

Das Java 9-Modulsystem verfügt über ein „java.base“-Modul. Es wird als Basismodul bezeichnet. Es ist ein eigenständiges Modul und hängt nicht von anderen Modulen ab. Standardmäßig hängen alle anderen Module von diesem Modul ab. Deshalb wird das „java.base“-Modul auch als die Mutter der Java 9-Module bezeichnet. Es ist das Standardmodul für alle JDK-Module und benutzerdefinierten Module.

Vergleiche Java 8- und Java 9-Anwendungen

Wir haben bereits viele Java-Anwendungen mit Java 5, 6, 7 oder 8 entwickelt. Wir wissen, wie eine Java 8- oder frühere Anwendung aussieht und was sie enthält. Kurz gesagt, habe ich eine Java 8-Anwendung in einem Diagramm dargestellt, wie unten gezeigt: In Java 8- oder früheren Anwendungen ist das Top-Level-Komponente ein Paket. Es gruppiert eine Reihe von Typen in einer Gruppe. Es enthält auch eine Reihe von Ressourcen. Java 9-Anwendungen unterscheiden sich nicht viel davon. Es wurde nur eine neue Komponente namens „Modul“ eingeführt, die verwendet wird, um eine Gruppe von verwandten Paketen in einer Gruppe zu gruppieren. Und noch eine neue Komponente, der Modul-Deskriptor („module-info.java“). Das ist es. Der Rest der Anwendung ist genauso wie frühere Versionen von Anwendungen, wie unten gezeigt. Wie Java 8-Anwendungen Pakete als Top-Level-Komponenten haben, haben Java 9-Anwendungen Module als Top-Level-Komponenten. HINWEIS: Jedes Java 9-Modul hat genau ein Modul und einen Modul-Deskriptor. Im Gegensatz zu Java 8-Paketen können wir keine mehreren Module in einem einzelnen Modul erstellen. Kurz gesagt kann ich sagen, dass ein Java 9-Modul die folgenden Hauptkomponenten enthält:

  • Eine Modul
  • Modulname
  • Modul-Deskriptor
  • Eine Reihe von Paketen
  • Eine Reihe von Typen und Ressourcen

Hier können Ressourcen die module-info.java (Modulbeschreibung) oder andere Eigenschaften oder XML sein. Wir haben in diesem Beitrag zu viel Theorie diskutiert. Ich denke, das reicht aus, um die Grundlagen des Java 9-Modulsystems zu verstehen. Wir werden in meinem nächsten Beitrag mit der Entwicklung einiger grundlegender Module beginnen. Ich werde einige weitere theoretische Konzepte oder Terminologie des Java 9-Modulsystems diskutieren, wenn nötig. Das ist alles zum Thema „Einführung in das Java 9-Modulsystem“. Wir werden in meinen nächsten Beiträgen einige weitere Konzepte des Java SE 9-Modulsystems besprechen. Bitte hinterlassen Sie mir einen Kommentar, wenn Ihnen mein Beitrag gefallen hat oder wenn Sie Probleme/Vorschläge/Fehler gefunden haben. Vielen Dank, dass Sie meine Tutorials gelesen haben. Viel Spaß beim Lernen von Java SE 9! Referenz: Project Jigsaw

Source:
https://www.digitalocean.com/community/tutorials/java-9-modules