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
requiresdeklaruje zależności;java.basejest uwzględniany niejawnieexportsudostępnia pakiet; cała reszta jest enkapsulowana- Moduły są budowane i uruchamiane z użyciem
--module-pathoraz--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
- module-info.java
- requires i exports
- Usługi z provides/uses
- Migracja do modułów