Moduli Java 9

Java 9 i moduli sono uno dei cambiamenti più significativi nella struttura di Java. Qui darò una breve introduzione di alto livello sul “Sistema di Moduli Java 9”.

Moduli Java 9

Esamineremo i seguenti argomenti sul sistema di moduli di Java 9.

  1. Introduzione
  2. Java SE 9: Progetto Jigsaw
  3. Problemi del Sistema Java Attuale?
  4. Vantaggi del Sistema di Moduli Java SE 9
  5. Confronto tra JDK 8 e JDK 9
  6. Cosa sono i Moduli Java 9?
  7. Madre del Sistema di Moduli Java 9
  8. Confronto tra le Applicazioni Java 8 e Java 9

Introduzione

Oracle corp ha rinviato il rilascio di Java 9 da marzo 2017 a settembre 2017. Come sappiamo, Java SE 8 è arrivato con tre nuove importanti funzionalità (oltre ad alcuni miglioramenti e nuove funzionalità).

  1. Espressioni Lambda
  2. API di Stream
  3. API di Data

Allo stesso modo, Java SE 9 arriva con tre nuove importanti funzionalità (oltre ad alcuni miglioramenti e nuove funzionalità):

  1. Sistema di Moduli Java (Progetto Jigsaw)
  2. Java REPL
  3. Progetto di Fresatura Coin

In questo post, discuteremo i concetti di base del progetto Oracle Jigsaw.

Java SE 9: Progetto Jigsaw

Il progetto Jigsaw introdurrà un concetto completamente nuovo in Java SE 9: Sistema di Moduli Java. Si tratta di un progetto molto ampio e prestigioso sviluppato da Oracle Corp nella versione Java SE 9. Inizialmente, il progetto è stato avviato come parte del rilascio di Java SE 7. Tuttavia, con importanti modifiche, è stato rinviato prima a Java SE 8 e poi nuovamente rinviato. Ora è pronto per il rilascio con Java SE 9 a settembre 2017. Obiettivi Principali del Progetto Jigsaw:

  • Il JDK modulare
    Come sappiamo, il sistema corrente del JDK è troppo grande. Quindi hanno deciso di suddividere il JDK stesso in piccoli moduli per ottenere diversi vantaggi (discuteremo presto nei prossimi paragrafi).- Codice sorgente modulare
    I file jar del codice sorgente attuale sono troppo grandi, soprattutto rt.jar è troppo grande. Quindi stanno per suddividere il codice sorgente di Java in moduli più piccoli.- Immagini di runtime modulare
    L’obiettivo principale di questa funzionalità è “Ristrutturare le immagini di runtime del JDK e del JRE per ospitare i moduli”.- Incapsulare la maggior parte delle API interne
    L’obiettivo principale di questa funzionalità è “Rendere inaccessibili per impostazione predefinita la maggior parte delle API interne del JDK, ma lasciare accessibili alcune API interne critiche e ampiamente utilizzate”.- Sistema di moduli della piattaforma Java
    L’obiettivo principale di questa funzionalità è “Consentire all’utente di creare i propri moduli per sviluppare le proprie applicazioni”.- jlink: Il collegatore Java
    L’obiettivo principale di questo strumento jlink è “Consentire all’utente di creare eseguibili per le proprie applicazioni”.

Se non si comprendono chiaramente queste cose, NON preoccuparsi. Discuteremo questi concetti in modo approfondito con alcuni utili esempi nei prossimi paragrafi e anche nei miei prossimi post.

Problemi del sistema Java attuale?

In questa sezione, discuteremo del “Perché abbiamo bisogno del Sistema di Moduli Java SE 9”, il che significa i problemi del Sistema Java Attuale. I sistemi Java SE 8 o precedenti hanno i seguenti problemi nello sviluppo o nella distribuzione di applicazioni basate su Java.

  • Poiché il JDK è troppo grande, è un po’ difficile ridurlo alle dimensioni dei dispositivi piccoli. Java SE 8 ha introdotto 3 tipi di profili compatti per risolvere questo problema: compatto1, compatto2 e compatto3. Ma non risolve questo problema.
  • I file JAR come rt.jar ecc. sono troppo grandi per essere utilizzati nei dispositivi e nelle applicazioni piccole.
  • Poiché il JDK è troppo grande, le nostre applicazioni o dispositivi non riescono a supportare una migliore performance.
  • Non c’è una forte incapsulazione nel sistema Java attuale perché il modificatore di accesso “public” è troppo aperto. Chiunque può accedervi.
  • Poiché il JDK, il JRE è troppo grande, è difficile testare e mantenere le applicazioni.
  • Poiché il pubblico è troppo aperto, non è possibile evitare l’accesso ad alcune API interne non critiche come sun.*, *.internal.* ecc.
  • Poiché l’utente può accedere anche alle API interne, la sicurezza è anche un grosso problema.
  • L’applicazione è troppo grande.
  • È un po’ difficile supportare un minor accoppiamento tra i componenti.

Per risolvere tutti questi problemi, Oracle Corp sta per rilasciare il sistema di moduli Java nella versione Java SE 9.

Vantaggi del Sistema di Moduli Java SE 9

Il sistema dei moduli di Java SE 9 fornirà i seguenti vantaggi

  • Poiché Java SE 9 dividerà JDK, JRE, JAR ecc. in moduli più piccoli, possiamo utilizzare i moduli che vogliamo. Quindi è molto facile ridimensionare l’applicazione Java per dispositivi piccoli.
  • Semplicità di testing e manutenzione.
  • Supporta una migliore performance.
  • Poiché il pubblico non è solo pubblico, supporta un’incapsulamento molto forte. (Non preoccuparti, è un concetto importante. Lo esploreremo presto con alcuni esempi utili).
  • Non possiamo più accedere alle API interne non critiche.
  • I moduli possono nascondere dettagli indesiderati e interni in modo molto sicuro, possiamo ottenere una migliore sicurezza.
  • L’applicazione è troppo piccola perché possiamo utilizzare solo i moduli che vogliamo.
  • È facile supportare un minor accoppiamento tra i componenti.
  • È facile supportare il principio della singola responsabilità (SRP).

Esploreremo tutti questi concetti uno per uno presto.

Confronto tra JDK 8 e JDK 9

Sappiamo cosa contiene un software JDK. Dopo aver installato il software JDK 8, possiamo vedere un paio di directory come bin, jre, lib ecc nella cartella Home di Java. Tuttavia, Oracle Corp ha cambiato leggermente questa struttura della cartella come mostrato di seguito. Struttura della cartella JDK 8: Struttura della cartella JDK 9: Qui JDK 9 NON contiene JRE. In JDK 9, JRE è separato in una cartella di distribuzione separata. Il software JDK 9 contiene una nuova cartella “jmods”. Contiene un insieme di Moduli Java 9 come mostrato di seguito. In JDK 9, No rt.jar e No tools.jar NOTA:- A oggi, “jmods” contiene 95 moduli. Potrebbe aumentare nella versione finale. La cartella “jmods” è disponibile in ${JAVA_HOME}/jmods. Questi sono conosciuti come Moduli JDK.

Cos’è un Modulo Java 9?

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.

Madre del Sistema Modulo Java 9

Al momento, il Sistema Modulare di Java 9 conta 95 moduli nell’Early Access JDK. Oracle Corp ha separato i file JAR di JDK e le specifiche di Java SE in due insiemi di moduli.

  • Tutti i moduli JDK iniziano con “jdk.*”
  • I moduli delle specifiche di Java SE iniziano con “java.*”

Il Sistema Modulare di Java 9 include un modulo “java.base”. È noto come Modulo Base, un modulo indipendente che non dipende da nessun altro modulo. Per impostazione predefinita, tutti gli altri moduli dipendono da questo. Per questo motivo, il Modulo “java.base” è anche conosciuto come La Madre dei Moduli Java 9, il modulo predefinito per tutti i moduli JDK e moduli definiti dall’utente.

Confronta le Applicazioni Java 8 e Java 9

Abbiamo già sviluppato molte applicazioni Java utilizzando Java 5, 6,7 o 8. Sappiamo come apparirebbe un’applicazione Java 8 o precedente e cosa contiene. In breve, ho rappresentato un’applicazione Java 8 in un diagramma come mostrato di seguito: In un’applicazione Java 8 o precedente, il componente di livello superiore è un Package. Raggruppa un insieme di tipi correlati in un gruppo. Contiene anche un insieme di risorse. Le applicazioni Java 9 non hanno molte differenze da questo. Ha semplicemente introdotto un nuovo componente chiamato “Modulo”, utilizzato per raggruppare un insieme di Pacchetti correlati in un gruppo. E un altro nuovo componente chiamato Descrittore del Modulo (“module-info.java”). Questo è tutto. Il resto dell’applicazione è uguale alle versioni precedenti delle applicazioni come mostrato di seguito. Come le applicazioni Java 8 hanno Pacchetti come componenti di livello superiore, le applicazioni Java 9 hanno Modulo come componenti di livello superiore. NOTA: – Ogni Modulo Java 9 ha un solo e unico Modulo e un solo Descrittore del Modulo. A differenza dei Pacchetti Java 8, non possiamo creare più moduli in un singolo Modulo. In breve, posso dire che un Modulo Java 9 contiene i seguenti componenti principali:

  • Un Modulo
  • Nome del Modulo
  • Descrittore del Modulo
  • Insieme di Pacchetti
  • Insieme di Tipi e Risorse

Ecco le risorse che possono essere module-info.java (Descrittore del modulo) o qualsiasi altra proprietà o XML. Abbiamo discusso abbastanza teoria in questo post. Penso che sia sufficiente per comprendere le basi del sistema dei moduli di Java 9. Inizieremo lo sviluppo di moduli di base nel mio prossimo post. Discuterò ulteriori concetti teorici o la terminologia del sistema dei moduli di Java 9 quando necessario. Questo è tutto riguardo all’argomento “Introduzione al sistema dei moduli di Java 9”. Affronteremo ulteriori concetti del sistema dei moduli di Java SE 9 nei miei prossimi post. Lasciami un commento se ti è piaciuto il mio post o se hai problemi/suggerimenti/errori di tipo. Grazie per aver letto i miei tutorial. Buono studio di Java SE 9! Riferimento: Project Jigsaw

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