Java 9 Modules

Java 9-modules zijn een van de grootste veranderingen in de structuur van Java. Hier geef ik een korte inleiding op het “Java 9 Module System”.

Java 9 Modules

We zullen de volgende onderwerpen bekijken met betrekking tot het Java 9-modulesysteem.

  1. Introductie
  2. Java SE 9: Jigsaw Project
  3. Problemen van het Huidige Java-systeem?
  4. Voordelen van het Java SE 9 Module System
  5. Vergelijking tussen JDK 8 en JDK 9
  6. Wat is een Java 9-module?
  7. Moeder van het Java 9-modulesysteem
  8. Vergelijking tussen Java 8- en Java 9-toepassingen

Introductie

Oracle Corp heeft de release van Java 9 uitgesteld van maart 2017 naar september 2017. Zoals we weten, bracht Java SE 8 drie grote nieuwe functies met zich mee (plus enkele verbeteringen en nieuwe functies).

  1. Lambda Expressions
  2. Stream API
  3. Date API

Op dezelfde manier komt Java SE 9 met drie grote functies (plus enkele verbeteringen en nieuwe functies):

  1. Java Module System (Jigsaw Project)
  2. Java REPL
  3. Frezen Project Coin

In dit bericht zullen we de basisprincipes van het Oracle Jigsaw-project bespreken.

Java SE 9: Jigsaw Project

Het Jigsaw-project gaat een volledig nieuw concept introduceren in Java SE 9: Het Java-module systeem. Het is een zeer groot en prestigieus project van Oracle Corp in de Java SE 9-release. In eerste instantie zijn ze begonnen met dit project als onderdeel van de Java SE 7-release. Echter, met enorme veranderingen is het uitgesteld naar Java SE 8 en vervolgens opnieuw uitgesteld. Nu staat het op het punt om uitgebracht te worden met Java SE 9 in september 2017. Belangrijkste doelen van het Jigsaw-project:

  • De Modulaire JDK
    Zoals we weten, is het huidige JDK-systeem te groot. Daarom hebben ze besloten om het JDK zelf op te delen in kleine modules om een aantal voordelen te behalen (Deze zullen we binnenkort bespreken in de komende secties). – Modulaire Broncode
    Huidige broncode jar-bestanden zijn te groot, vooral rt.jar is te groot. Daarom gaan ze de Java-broncode opdelen in kleinere modules. – Modulaire Uitvoeringsafbeeldingen
    Het hoofddoel van deze functie is “Herstructurering van de JDK- en JRE-uitvoeringsafbeeldingen om modules onder te brengen”. – Het grootste deel van de interne API’s afschermen
    Het hoofddoel van deze functie is “De meeste interne API’s van de JDK standaard ontoegankelijk maken, maar een paar kritieke, veelgebruikte interne API’s toegankelijk laten”. – Java Platform Module Systeem
    Het hoofddoel van deze functie is “Gebruikers in staat stellen hun eigen modules te maken om hun toepassingen te ontwikkelen”. – jlink: De Java-linker
    Het hoofddoel van deze jlink-tool is “Gebruikers in staat stellen uitvoerbare bestanden te maken voor hun toepassingen”.

Als u deze zaken niet duidelijk begrijpt, maakt u zich geen zorgen. We zullen deze concepten uitgebreid bespreken met enkele nuttige voorbeelden in de komende secties en ook in mijn komende berichten.

Problemen van het huidige Java-systeem?

In deze sectie zullen we bespreken “Waarom we het Java SE 9-modulesysteem nodig hebben”, wat betekent dat de problemen van het huidige Javasysteem. Java SE 8 of eerdere systemen hebben de volgende problemen bij het ontwikkelen of leveren van op Java gebaseerde toepassingen.

  • Omdat de JDK te groot is, is het een beetje moeilijk om te schalen naar kleine apparaten. Java SE 8 heeft 3 soorten compacte profielen geïntroduceerd om dit probleem op te lossen: compact1, compact2 en compact3. Maar het lost dit probleem niet op.
  • JAR-bestanden zoals rt.jar etc. zijn te groot om te gebruiken in kleine apparaten en toepassingen.
  • Omdat de JDK te groot is, kunnen onze toepassingen of apparaten geen betere prestaties ondersteunen.
  • Er is geen sterke encapsulatie in het huidige Javasysteem omdat de toegangsmodifier “public” te open is. Iedereen kan er toegang toe krijgen.
  • Omdat de JDK, JRE te groot is, is het moeilijk om toepassingen te testen en te onderhouden.
  • Omdat het publiek te open is, kunnen ze niet voorkomen dat sommige interne niet-kritieke API’s worden geopend, zoals sun.*, *.internal.* enz.
  • Omdat gebruikers ook toegang hebben tot interne API’s, is beveiliging ook een groot probleem.
  • De toepassing is te groot.
  • Het is een beetje moeilijk om minder koppeling tussen componenten te ondersteunen.

Om al deze problemen op te lossen, zal Oracle Corp het Java Module-systeem uitbrengen in de release van Java SE 9.

Voordelen van het Java SE 9-modulesysteem

Java SE 9 Module System gaat de volgende voordelen bieden

  • Aangezien Java SE 9 JDK, JRE, JAR’s, enzovoort gaat verdelen in kleinere modules, kunnen we de gewenste modules gebruiken. Het is dus heel eenvoudig om de Java-toepassing te schalen naar kleine apparaten.
  • Gemak van testen en onderhoud.
  • Ondersteunt betere prestaties.
  • Omdat public niet alleen public is, ondersteunt het zeer sterke encapsulatie. (Maak je geen zorgen, het is een groot concept. We zullen het binnenkort met enkele nuttige voorbeelden verkennen).
  • We kunnen geen toegang meer krijgen tot interne niet-kritieke API’s.
  • Modules kunnen ongewenste en interne details zeer veilig verbergen, waardoor we een betere beveiliging kunnen krijgen.
  • De applicatie is te klein omdat we alleen de modules kunnen gebruiken die we willen.
  • Het is gemakkelijk om minder koppeling tussen componenten te ondersteunen.
  • Het is gemakkelijk om het Single Responsibility Principle (SRP) te ondersteunen.

We zullen al deze concepten een voor een verkennen binnenkort.

Vergelijk JDK 8 en JDK 9

We weten wat een JDK-software bevat. Na het installeren van JDK 8-software kunnen we een aantal mappen zoals bin, jre, lib etc. zien in de Java Home-map. Echter, Oracle Corp heeft deze mapstructuur iets anders gewijzigd zoals hieronder getoond. JDK 8 Mapstructuur: JDK 9 Mapstructuur: Hier bevat JDK 9 GEEN JRE. In JDK 9 is JRE gescheiden in een aparte distributiemap. JDK 9-software bevat een nieuwe map “jmods”. Het bevat een set Java 9-modules zoals hieronder getoond. In JDK 9, Geen rt.jar en Geen tools.jar OPMERKING:- Tot op heden bevat “jmods” 95 modules. Het kan toenemen in de uiteindelijke versie. De map “jmods” is beschikbaar op ${JAVA_HOME}/jmods. Deze staan bekend als JDK-modules.

Wat is een Java 9-module?

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.

Moeder van het Java 9 Module Systeem

Vanaf nu heeft het Java 9-modulesysteem 95 modules in de Early Access JDK. Oracle Corp heeft de JDK-jars en de specificaties van Java SE opgesplitst in twee sets modules.

  • Alle JDK-modules beginnen met “jdk.*”
  • Alle Java SE-specificatiemodules beginnen met “java.*”

Het Java 9-modulesysteem heeft een “java.base” Module. Het staat bekend als de Basismodule. Het is een onafhankelijke module en is NIET afhankelijk van andere modules. Standaard zijn alle andere modules afhankelijk van deze module. Daarom staat de “java.base” Module ook bekend als De Moeder van Java 9-modules. Het is de standaardmodule voor alle JDK-modules en door de gebruiker gedefinieerde modules.

Vergelijk Java 8- en Java 9-toepassingen

We hebben al veel Java-toepassingen ontwikkeld met behulp van Java 5, 6, 7 of 8. We weten hoe een Java 8- of eerdere toepassing eruitziet en wat het bevat. Kort gezegd heb ik een Java 8-toepassing afgebeeld in een diagram zoals hieronder weergegeven: In een Java 8- of eerdere toepassing is het hoogste niveau component een Pakket. Het groepeert een set gerelateerde typen in een groep. Het bevat ook een set resources. Java 9-toepassingen verschillen hier niet veel van. Er is gewoon een nieuw component geïntroduceerd genaamd “Module”, dat wordt gebruikt om een set gerelateerde pakketten in een groep te groeperen. En nog een nieuw component genaamd Module Descriptor (“module-info.java”). Dat is het. De rest van de toepassing is hetzelfde als eerdere versies van toepassingen zoals hieronder weergegeven. Net als Java 8-toepassingen hebben Java 9-toepassingen Module als hoogste niveau componenten. OPMERKING: – Elke Java 9-module heeft één en slechts één Module en één Module Descriptor. In tegenstelling tot Java 8-pakketten kunnen we niet meerdere modules maken in een enkele module. Kortom, ik kan zeggen dat een Java 9-module de volgende belangrijkste componenten bevat:

  • Een Module
  • Module Naam
  • Module Descriptor
  • Set van Pakketten
  • Set van Typen en Resources

Hier kunnen bronnen module-info.java (Module Descriptor) of andere eigenschappen of XML zijn. We hebben in deze post al te veel theorie besproken. Ik denk dat het genoeg is om de basisprincipes van het Java 9 Module-systeem te begrijpen. We zullen in mijn volgende post wat eenvoudige module-ontwikkeling starten. Ik zal wat meer theorieconcepten of terminologie van het Java 9 Module-systeem bespreken wanneer dat nodig is. Dat is alles over het onderwerp “Kennismaking met het Java 9 Module-systeem”. We zullen in mijn komende berichten wat meer concepten van het Java SE 9 Module-systeem bespreken. Laat me een reactie achter als je mijn bericht leuk vindt of als je problemen/suggesties/typefouten hebt. Bedankt voor het lezen van mijn tutorials. Veel plezier met Java SE 9 leren! Referentie: Project Jigsaw

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