– Cześć, Amigo! Dzisiaj porozmawiamy o pakietach.

– Pliki na komputerze są pogrupowane w foldery. Klasy w Javie (każda klasa jest przechowywana w oddzielnym pliku) są pogrupowane w pakiety, które są jak foldery na twardym dysku. Właściwie, żadna nowość. Chciałbym jednak podkreślić dwie rzeczy.

Po pierwsze, unikalna, pełna nazwa klasy składa się z nazwy jej pakietu i nazwy klasy. Oto kilka przykładów:

Unikalna, pełna nazwa Nazwa pakietu Nazwa klasy
java.io.FileInputStream java.io FileInputStream
java.lang.String java.lang String
java.util.ArrayList java.util ArrayList
org.apache.tomcat.Servlet org.apache.tomcat Servlet
Kot Nieokreślony Kot

– Pełna nazwa klasy jest zawsze unikalna.

Byłoby niewesoło, gdybyśmy musieli pisać za każdym razem pełną nazwę, np. java.util.ArrayList. To dlatego Java pozwala importować klasy. Możesz używać skróconych nazw innych klas w swoim kodzie, ale na początku swojej klasy musisz jednoznacznie wskazać, których klas będziesz używać.

– Ale jak to zrobić?

– Na przykład za pomocą takiej linii: import java.util.ArrayList;

– Na początku klasy, zaraz po zadeklarowaniu pakietu, wskazujesz, do której klasy się odnosisz, kiedy używasz w swoim kodzie ArrayList.

– Po co to sobie komplikować? Czy klasy mogą mieć identyczne nazwy?

– Tak. Mogą istnieć klasy o takiej samej nazwie w różnych pakietach. Nie możemy jednak importować dwóch klas o takiej samej nazwie, więc musielibyśmy jedną z nich nazwać jej pełną nazwą.

– Dam Ci analogiczny przykład. Masz kolegę o imieniu Jaś. Żaden problem: każdy wie, o kogo chodzi. Ale gdyby w Twoim biurze było trzech Jasiów, musiałbyś nazywać ich imieniem i unikalnym nazwiskiem, by uniknąć zamieszania.

Po drugie, zawsze jest lepiej umieszczać klasy w pakietach, a nie w folderze root src. Jeśli nie masz wielu klas, to nie jest problem, ale jeśli jest inaczej, łatwo je pomylić. Zawsze twórz klasy wewnątrz pakietów.

W Javie powszechną praktyką jest nadawanie klasom i pakietom znaczących nazw. Wiele firm wypuszcza swe biblioteki (zestawy klas) i nazywa je nazwą firmy czy strony internetowej, żeby nie wprowadzać zamieszania:

Nazwa pakietu Nazwa firmy/projektu
org.apache.common
org.apache.tomcat
org.apache.util
Apache
com.oracle.jdbc Oracle
java.io
javax.servlet
Sun, Java
com.ibm.websphere IBM, WebSphere
com.jboss JBoss