Pakiet Java - Java package

Pakiet Java organizuje Java klas w przestrzeni nazw , zapewniając wyjątkową nazw dla każdego typu zawiera. Klasy w tym samym pakiecie mogą uzyskiwać dostęp do prywatnych i chronionych członków pakietu.

Ogólnie pakiet może zawierać następujące rodzaje typów : klasy, interfejsy , wyliczenia i typy adnotacji . Pakiet umożliwia programiście grupowanie klas (i interfejsów) razem. Wszystkie te klasy będą w jakiś sposób powiązane – wszystkie mogą mieć związek z konkretną aplikacją lub wykonaniem określonego zestawu zadań. Programiści również zazwyczaj używają pakietów do organizowania klas należących do tej samej kategorii lub zapewniających podobną funkcjonalność.

Korzystanie z pakietów

W pliku źródłowym Java pakiet, do którego należy klasa lub klasy tego pliku, jest określony za pomocą package słowa kluczowego . To słowo kluczowe jest zwykle pierwszym słowem kluczowym w pliku źródłowym. W pliku źródłowym może pojawić się co najwyżej jedna deklaracja pakietu.

package java.awt.event;

Aby użyć klas pakietu w pliku źródłowym Java, wygodnie jest zaimportować klasy z pakietu wraz z importdeklaracją. Następująca deklaracja

import java.awt.event.*;

importuje wszystkie klasy z java.awt.eventpakietu, natomiast następna deklaracja

import java.awt.event.ActionEvent;

importuje tylko ActionEventklasę z pakietu. Po jednej z tych deklaracji importowych ActionEventmożna odwoływać się do klasy, używając jej prostej nazwy klasy:

ActionEvent myEvent = new ActionEvent();

Klas można również używać bezpośrednio bez deklaracji importu, używając w pełni kwalifikowanej nazwy klasy. Na przykład,

java.awt.event.ActionEvent myEvent = new java.awt.event.ActionEvent();

nie wymaga wcześniejszego zgłoszenia przywozowego.

Dokumentacja Javadoc dla całego pakietu i adnotacje

Dokumentacja wyjaśniająca pakiet jako całość jest napisana jako Javadoc w pliku o nazwie dokładnie `package-info.java`. Ten plik jest również miejscem na adnotacje, które mają być używane we wszystkich klasach pakietu. Zobacz Specyfikacja języka Java .

Nienazwany pakiet

Jeśli deklaracja pakietu nie jest używana, klasy są umieszczane w nienazwanym pakiecie. Klasy w nienazwanym pakiecie nie mogą być importowane przez klasy z żadnego innego pakietu. Oficjalny samouczek Java odradza to:

Ogólnie rzecz biorąc, nienazwany pakiet jest przeznaczony tylko dla małych lub tymczasowych aplikacji lub gdy dopiero zaczynasz proces tworzenia. W przeciwnym razie klasy i interfejsy należą do nazwanych pakietów.

Ochrona dostępu do pakietu

Członkowie publiczni i klasy są widoczne wszędzie, a członkowie prywatni są widoczni tylko w tej samej klasie. Klasy w pakiecie mogą uzyskiwać dostęp do klas i członków zadeklarowanych z domyślnym dostępem ( package-private ), jak również do członków klas zadeklarowanych z protectedmodyfikatorem dostępu. Domyślnie (pakiet-prywatne) dostęp jest egzekwowane kiedy klasa lub członek nie została zadeklarowana jako public, protectedlub private. Natomiast klasy w innych pakietach nie mają dostępu do klas i członków zadeklarowanych z dostępem domyślnym. Jednak członkowie klasy zadeklarowani jako protectedmogą być dostępni z klas w tym samym pakiecie, a także klas w innych pakietach, które są podklasami klasy deklarującej.

Tworzenie plików JAR

Pliki JAR są tworzone za pomocą narzędzia wiersza polecenia jar. Komenda

jar cf myPackage.jar *.class

kompresuje wszystkie pliki .class do pliku JAR myPackage.jar . Opcja „c” w wierszu poleceń mówi poleceniu jar, aby „utworzyło nowe archiwum”. Opcja „f” mówi mu, aby utworzyć plik. Nazwa pliku jest następna przed zawartością pliku JAR.

Konwencje nazewnictwa pakietów

Pakiety są zwykle definiowane przy użyciu hierarchicznego wzorca nazewnictwa , z niektórymi poziomami w hierarchii oddzielonymi kropkami ( ., wymawiane jako „kropka”). Chociaż pakiety znajdujące się niżej w hierarchii nazewnictwa są często określane jako „podpakiety” odpowiednich pakietów znajdujących się wyżej w hierarchii, prawie nie ma związku semantycznego między pakietami. Specyfikacja języka Java ustanawia konwencje nazewnictwa pakietów, aby uniknąć możliwości, że dwa opublikowane pakiety będą miały tę samą nazwę. Konwencje nazewnictwa opisują sposób tworzenia unikalnych nazw pakietów, tak aby pakiety szeroko rozpowszechnione miały unikatowe przestrzenie nazw. Dzięki temu pakiety można oddzielnie, łatwo i automatycznie instalować oraz katalogować.

Ogólnie nazwa pakietu zaczyna się od nazwy domeny najwyższego poziomu organizacji, a następnie domeny organizacji, a następnie wszelkich subdomen, wymienionych w odwrotnej kolejności. Organizacja może wtedy wybrać konkretną nazwę dla swojego pakietu. Kolejne składniki nazwy pakietu różnią się w zależności od wewnętrznych konwencji nazewnictwa organizacji.

Na przykład, jeśli organizacja w Kanadzie o nazwie MySoft tworzy pakiet do obsługi frakcji, nazwanie pakietu ca.mysoft.fractions odróżnia pakiet frakcji od innego podobnego pakietu utworzonego przez inną firmę. Jeśli niemiecka firma o nazwie MySoft również tworzy pakiet frakcji, ale nazywa go de.mysoft.fractions , wówczas klasy w tych dwóch pakietach są zdefiniowane w unikalnej i oddzielnej przestrzeni nazw.

Pełne konwencje ujednoznaczniania nazw pakietów i zasady nazewnictwa pakietów, gdy nazwa domeny internetowej nie może być bezpośrednio użyta jako nazwa pakietu, są opisane w sekcji 7.7 specyfikacji języka Java.

Pakiety podstawowe w Java SE 8

java.lang — podstawowa funkcjonalność języka i podstawowe typy
java.util — klas struktury kolekcji danych
java.io — operacje na plikach
java.math — arytmetyka wieloprecyzyjna
java.nio Non-blocking I/O framework for Java
java.net — operacje sieciowe, gniazda, wyszukiwania DNS , ...
java.security — generowanie, szyfrowanie i deszyfrowanie kluczy
java.sql Java Database Connectivity (JDBC) w celu uzyskania dostępu do baz danych
java.awt — podstawowa hierarchia pakietów dla natywnych komponentów GUI
java.text — Udostępnia klasy i interfejsy do obsługi tekstu, dat, liczb i komunikatów w sposób niezależny od języków naturalnych.
java.rmi — Zapewnia pakiet RMI.
java.time — Główny interfejs API dla dat, godzin, chwil i czasów trwania.
java.beans — Pakiet java.beans zawiera klasy i interfejsy związane z komponentami JavaBeans.
java.aplet — Ten pakiet zawiera klasy i metody do tworzenia apletów i komunikowania się z nimi.

Pakiet java.lang jest dostępny bez użycia instrukcji import.

Moduły

W Javie 9 , "moduły", rodzaj zbioru pakietów, są planowane jako część Project Jigsaw; były one wcześniej nazywane „superpakietami” i pierwotnie planowane dla Javy 7.

Moduły opisują swoje zależności w deklaracji modułu, która zostanie umieszczona w pliku o nazwie module-info.java w katalogu głównym hierarchii plików źródłowych modułu. JDK będzie mógł je sprawdzić zarówno w czasie kompilacji, jak i w czasie wykonywania. Sam JDK zostanie zmodularyzowany dla Javy 9 .

Bibliografia

Zewnętrzne linki