0Pricing
Java Academy · Lekcja

module-info.java

Deklarowanie modułu

module-info.java to bezpłatna lekcja Java Academy na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Java Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Java Academy zawiera 4 lekcji w sumie.

System modułów

System modułów platformy Java (JPMS), wprowadzony w Javie 9, umożliwia grupowanie pakietów w nazwane moduły z jawnymi zależnościami i granicami.

Deklaracja znajduje się w specjalnym pliku: module-info.java.

Dlaczego moduły

Przed wprowadzeniem modułów classpath był płaskim, nieustrukturyzowanym zbiorem plików JAR. Każdy mógł uzyskać dostęp do dowolnej publicznej klasy, a brakujące zależności ujawniały się dopiero w czasie działania programu.

Moduły zapewniają silną enkapsulację i niezawodną konfigurację, weryfikowane podczas kompilacji i uruchamiania.

Gdzie znajduje się module-info

module-info.java znajduje się w katalogu głównym drzewa źródeł, nad katalogami pakietów. Kompiluje się do pliku module-info.class w katalogu głównym modułu.

Każdy moduł zawiera dokładnie jeden taki plik.

Minimalna deklaracja

Najprostszy moduł zawiera tylko nazwę. Zgodnie z konwencją nazwy używają odwrotnej notacji DNS, podobnie jak pakiety.

module com.example.app {
}

Deklarowanie zależności

Elementu requires należy użyć, aby określić zależność od innego modułu. Każdy moduł niejawnie wymaga java.base, dlatego tego modułu nigdy nie trzeba deklarować.

module com.example.app {
    requires java.sql;
    requires java.logging;
}

Udostępnianie pakietu

Domyślnie pakiety modułu są ukryte. Elementu exports należy użyć, aby udostępnić publiczne typy pakietu innym modułom.

module com.example.app {
    exports com.example.app.api;
}

Silna enkapsulacja

Każdy pakiet, którego nie export, jest całkowicie niedostępny z zewnątrz, nawet jego publiczne klasy. To najważniejsza różnica w porównaniu ze światem classpath.

Wewnętrzne pakiety pozostają wewnętrzne, a przestrzeganie tej zasady wymusza JVM.

Zasady nazewnictwa modułów

Nazwy modułów podlegają tym samym regułom leksykalnym co pakiety: są to identyfikatory rozdzielone kropkami. Należy wybrać stabilną i globalnie unikatową nazwę, ponieważ inne moduły odwołują się do tego modułu po nazwie.

Zmiana nazwy modułu jest zmianą niezgodną wstecz dla korzystających z niego modułów.

Pełniejszy przykład

Rzeczywista deklaracja łączy elementy requires i exports. Ten moduł zależy od modułu rejestrowania i udostępnia wyłącznie pakiet zawierający jego publiczne API.

module com.example.orders {
    requires java.logging;
    requires com.example.payments;

    exports com.example.orders.api;
}

Kompilowanie modułu

Kompilowanie odbywa się z użyciem opcji obsługujących moduły. Opcje --module-source-path i -d wskazują kompilatorowi położenie kodu źródłowego i wynikowych plików.

  • javac -d out --module-source-path src $(find src -name '*.java')
  • java --module-path out --module com.example.app/com.example.app.Main

Ścieżka modułów

Moduły są wyszukiwane na ścieżce modułów (--module-path), będącej modularnym następcą classpath. Przed uruchomieniem program uruchamiający odczytuje deskryptor każdego modułu, aby zbudować graf zależności.

Szybkie sprawdzenie

Proszę przypomnieć sobie domyślną widoczność pakietów.

Podsumowanie

Poznali Państwo podstawy pliku module-info.java:

  • Jeden deskryptor na moduł, umieszczony w katalogu głównym kodu źródłowego
  • requires deklaruje zależności; java.base jest uwzględniany niejawnie
  • exports udostępnia pakiet; cała reszta jest enkapsulowana
  • Moduły są budowane i uruchamiane z użyciem --module-path oraz --module

Następnie: dyrektywy requires i exports omówione szczegółowo.

Często zadawane pytania

Czy lekcja „module-info.java” jest bezpłatna?

Tak — pełny tekst „module-info.java” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Java Academy, przejdź na CoddyKit PRO. Kurs Java Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „module-info.java”?

Deklarowanie modułu Ćwiczysz Java Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Java Academy?

Nie wymagamy żadnego doświadczenia. Java Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.

Ile czasu zajmuje lekcja „module-info.java”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Java Academy?

Tak. Każda lekcja Java Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. module-info.java
  2. requires i exports
  3. Usługi z provides/uses
  4. Migracja do modułów
← Powrót do Java Academy