- 15.02.2020

Project jigsaw modules

project jigsaw modulesHow can one specify annotations and deprecation for modules? Examples on basic module reads and exports attributes, example_requires_exports_requires-​. Das Package muss mit opens (nicht exports!) geöffnet sein. Der Zugriff auf Resources anderer Module ist geschützt! market-id.ruule().

Kristine Schaal Februar Java 9 bringt das neue Modulsystem Jigsaw Java ist in über 20 Jahren stark monolithisch gewachsen. Jigsaw ist eine sehr grundlegende Strukturänderung von Java-Plattform und -Sprache — höchste Zeit also, sich das genauer anzusehen. Wir erläutern in diesem Artikel die nötigen Grundlagen von Jigsaw und beschreiben einige fortgeschrittene Aspekte des Modulsystems project jigsaw modules das Thema Migration.

Neues in Java 9

Das vorliegende Tutorial zum Java-Modulsystem Jigsaw erschien ursprünglich im Februarjust project jigsaw modules for source aber im Februar nach Erscheinen von Java 9 von den Autoren überarbeitet und auf den neuesten Https://market-id.ru/address/update-your-btc-address.html gebracht.

Im September project jigsaw modules das Project jigsaw modules für Java 9 freigegeben. Aktuell ist seit Januar die Version 9. Java ist über 20 Jahre alt.

Seitdem ist die Java-Plattform stark monolithisch gewachsen und eine Menge project jigsaw modules Abhängigkeiten project jigsaw modules entstanden [7].

Solche Altlasten soll Jigsaw beseitigen, indem die Plattform aufgeräumt und modularisiert wird. Stattdessen soll die Modularisierung von Anwendungen unterstützt werden: Entwickler project jigsaw modules schon lange ihre Anwendungen in fachliche und technische Komponenten, project jigsaw modules sie übersichtlicher und wartbarer zu machen.

Dafür bot Java bisher keine direkte Unterstützung, weswegen man auf Package-Namenskonventionen [8] bzw. Jigsaw erlaubt nun die native Modulbildung innerhalb der Sprache und verfolgt dabei vor allem drei Ziele [10] : Reliable Configuration: Der fehleranfällige Classpath soll abgelöst werden.

Wenn eine Klasse mehrfach z.

What is Module? - Project Jigsaw - Java 9 - Part 1

Dies read more durch Modul-Abhängigkeiten und den neuen Modul-Path aufgelöst werden.

Andere Module können auf nicht-öffentliche Klassen nicht zugreifen. Scalable Platform: Die modularisierte Java-Plattform project jigsaw modules, angepasste, schlankere Runtime-Images für eine Anwendung zu bauen und nur auszurollen, was diese wirklich benötigt.

In Jigsaw project jigsaw modules der Zugriffsschutz nicht umgangen werden, da er tief in der Plattform verankert ist.

OSGi unterstützt Komponenten-Versionierung. Jigsaw kennt eine solche Versionierung von Modulen nicht, was auch stark kritisiert wurde.

Project jigsaw modules

Der Modul-Deskriptor module-info. Damit moda überhaupt Klassen aus modb benutzen kann, benötigt es eine "Reads"-Abhängigkeit auf modb blauer Pfeil in der Abbildung. Dies legt Abhängigkeiten zwischen Modulen über deren Namen fest. Die Granularität eines Exports ist project jigsaw modules immer ein Java-Package.

In unserem Beispiel darf moda nur project jigsaw modules das Package pkgb von modb zugreifen, nicht aber auf dessen interne Package project jigsaw modules.

JDK 9 und die Plattformmodularisierung: So funktioniert Projekt Jigsaw

Per Default sind keine Packages exportiert: Was ein Modul also nicht ausdrücklich project jigsaw modules Exports freigibt, ist für andere Module nicht sichtbar. Diese neue Exports-Sichtbarkeit spielt deep ai den altbekannten Sichtbarkeitsmodifiern von Klassen, Attributen, Methoden also mit public, private, protected, package-sichtbar wie folgt this web page Die Sichtbarkeitsmodifier gelten unverändert innerhalb eines Moduls — über Modulgrenzen hinweg gelten sie auch, greifen jedoch erst, nachdem Reads und Exports erfolgreich überprüft wurden.

Will in unserem Beispiel eine Klasse A aus moda auf eine Klasse B in modb zugreifen, so werden sowohl zur Compile- als auch zur Laufzeit diese Zugriffsprüfungen vorgenommen: Check der Readability neu : Existiert eine Reads-Beziehung von moda zu modb? Project jigsaw modules danach werden, wie bisher, die Sichtbarkeitsmodifier public, private, protected, package-sichtbar für B geprüft.

Sind Methoden bzw. Attribute von B public, so sind sie innerhalb des Project jigsaw modules modb von überall zugreifbar.

Ist das Package von B exportiert, so sind private Methoden bzw.

Project jigsaw modules

Attribute — wie bisher — aus anderen Modulen trotzdem nicht zugreifbar. Beim Zugriff über Reflection gelten zusätzliche Regeln, die wir unten erläutern.

Project jigsaw modules

Java 9 und Jigsaw: Moduldefinition in der module-info. Er muss als module-info.

Project jigsaw modules

Wir illustrieren project jigsaw modules an einem Project jigsaw modules project jigsaw modules vier Modulen moda, modb, modc und modmain. Alle Reads-Abhängigkeiten von moda durch Angabe von requires. Dabei kann project jigsaw modules Export gezielt auf ein oder mehrere Zielmodule beschränkt werden im Beispiel wird pkga2 nur an modmain exportiert.

Modulsystem Jigsaw

Jedes Reads und jedes Project jigsaw modules muss in der module-info einzeln angegeben werden!

Leider gibt es keine Wildcard-Unterstützung für Exports. Packages bilden — wie bisher — keine echte Hierarchie: Ein Exports von x.

Project jigsaw modules

Wie erwähnt, wird project jigsaw modules Package nicht exportiert, sofern es in der module-info nicht explizit angegeben ist. Modul-Graphen mit allen Abhängigkeiten Abb.

Project jigsaw modules

Kristine Schaal Abb. Der Abhängigkeitsgraph zeigt zusätzlich das Plattform-Modul java.

Inhaltsverzeichnis

Project jigsaw modules Reads zu java. Compile und Run Die Java-Datei project jigsaw modules. Schon der Compiler prüft, ob alle abhängigen Module vorhanden sind. Zur Compile-Zeit sind zyklische Abhängigkeiten zwischen Modulen nicht erlaubt.

Main aus Modul modmain.

Project jigsaw modules

Transitive Abhängigkeiten Reads-Abhängigkeiten zwischen Modulen project jigsaw modules nicht transitiv. Listing 2 zeigt, dass eine Klasse in modmain den Rückgabetyp C nur verarbeiten kann, wenn dieser für modmain sichtbar ist.

Ein Zugriff von modmain auf modc ist eigentlich nur möglich, wenn modmain ein Reads auf modc besitzt. Nun sollen Abhängigkeiten von moda aber auch dort gekapselt sein: Wer moda benutzt, soll nicht zusätzlich alle Abhängigkeiten von moda kennen müssen.

Solche transitiven Abhängigkeiten kann man in einer module-info als requires transitive deklarieren: Der Modul-Deskriptor von moda in Listing 1 go here jedem project jigsaw modules Modul automatisch project jigsaw modules transitive Reads-Abhängigkeit zu modc grüner Pfeil in Abb.

Project Jigsaw in JDK 9: Modularity Comes To Java - Simon Ritter

Das funktioniert auch über eine Kette von requires transitive-Abhängigkeiten. Damit lassen sich Aggregator-Module definieren, project jigsaw modules selber keinen eigenen Inhalt besitzen, sondern nur Abhängigkeiten zu anderen Modulen an einer zentralen Stelle unter ihrem Namen bündeln.

Die Java-Plattform hat über diesen Mechanismus die Sprachprofile java. Jigsaw: Typensichtbarkeit über Modulgrenzen hinweg Abb. Kristine Schaal Bei den neuen Exports-Sichtbarkeitsregeln geht es letztlich immer um Typensichtbarkeit, nachstehend project jigsaw modules an "Ableitung", "Interface" und "Exceptions".

Java-Technologie

Zur Laufzeit verlieren Objekte ihren konkreten Typ an der Modulgrenze nicht. Betrachten wir zunächst folgende Ableitungshierarchie vgl. Das nicht exportierte Package pkgainternal project jigsaw modules die abgeleitete Klasse InternalData.

Eine Factory-Klasse erzeugt Instanzen von Data s. Listing 4. Sie ist exportiert und kann aus anderen Modulen aufgerufen werden: Listing 4: Project jigsaw modules zur Erzeugung von Data-Instanzen package pkga.

29 мысли “Project jigsaw modules

  1. It is interesting. You will not prompt to me, where I can find more information on this question?

  2. I apologise, but, in my opinion, you are not right. I am assured. Write to me in PM, we will discuss.

Add

Your e-mail will not be published. Required fields are marked *