Crearea unui modul
Odată cu lansarea JDK 9, în limbajul Java a apărut o nouă funcționalitate - modularitatea. Modularitatea permite împărțirea codului în unități structurale separate - module. De fapt, un modul reprezintă un grup de pachete sau resurse, reunite într-un întreg, la care se poate face referire prin numele modulului.
Până la Java 9 au existat mai multe niveluri de încapsulare a funcționalității. Primul nivel era reprezentat de o clasă, în care puteam defini variabile și metode cu diferite niveluri de acces. Următorul nivel era reprezentat de un pachet, care, la rândul său, reprezenta o colecție de clase.
Totuși, în timp, aceste niveluri s-au dovedit insuficiente. Modulul a devenit următorul nivel de încapsulare, care reunea mai multe pachete.
Un modul este format dintr-un grup de pachete. De asemenea, modulul include lista tuturor pachetelor care fac parte din modul și lista tuturor modulelor de care depinde modulul respectiv. Suplimentar (dar opțional), poate include fișiere de resurse sau fișiere de biblioteci native.
Ca nume al modulului poate fi utilizat un identificator arbitrar format din caractere alfanumerice și caractere de subliniere. Totuși, se recomandă ca numele modulului să corespundă cu numele pachetelor cu care începe modulul.
Să definim și să utilizăm cel mai simplu modul. Să presupunem că fișierele sursă sunt plasate în folderul C:\java (sau alt folder de pe discul dur). Vom crea în acest folder un director pe care îl vom numi demo. Acest director va reprezenta modulul.
În directorul demo vom defini un nou fișier module-info.java cu următorul cod:
module demo {
}
Acest fișier reprezintă descriptorul modulului (module descriptor). Acest fișier poate conține doar definiția modulului.
Cu ajutorul cuvântului cheie module se definește modulul numit demo, adică exact ca și directorul în care este plasat acest fișier. După numele modulului, folosind acolade, se poate defini corpul modulului, dar în acest caz codul modulului nu conține nicio instrucțiune.
În continuare, în directorul demo vom crea un folder com. În folderul com vom crea un folder fdc, iar în folderul com/fdc - un folder hello.
În folderul com/fdc/hello vom defini un nou fișier Hello.java:
package com.fdc.hello;
public class Hello {
public static void main(String[] args) {
System.out.println("Hello Demo Module!");
}
}
Numele pachetului fișierului - com.fdc.hello reflectă structura folderelor în care este plasat fișierul. Fișierul în sine definește clasa Hello, care în metoda main afișează pe consolă mesajul "Hello Demo Module!".
În cele din urmă, structura proiectului va arăta astfel:

Acum vom compila totul. Pentru aceasta, mai întâi, vom naviga în linia de comandă/terminal la folderul în care se află modulul demo.
Apoi, pentru a compila modulul, vom executa următoarea comandă:
javac demo/module-info.java demo/com/fdc/hello/Hello.java
După compilarea modulului demo, vom rula programul folosind următoarea comandă:
java --module-path demo --module demo/com.fdc.hello.Hello
Parametrul --module-path indică calea către modul, iar --module indică clasa principală a modulului.
La tastarea comenzii, în loc de parametrul --module-path, se poate utiliza prescurtarea -p, iar în loc de parametrul --module, prescurtarea -m.
Și pe consolă va apărea mesajul "Hello Demo Module!"
