„Hi, Amigo! Heute sprechen wir über Pakete.“

„Dateien auf einem Computer werden in Ordnern gruppiert. Klassen in Java (jede Klasse wird in einer eigenen Datei gespeichert) werden zu Paketen gruppiert, die Ordnern auf der Festplatte entsprechen. Hier gibt es also nichts neues. Ich möchte allerdings zwei Dinge betonen.“

Erstens besteht der vollständige einzigartige Name einer Klasse aus ihrem Paketnamen gefolgt vom Klassennamen. Hier ein paar Beispiele:“

Vollständiger eindeutiger Name Paketname Klassenname
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
Katze Nicht spezifiziert Katze

„Ein vollständiger Klassenname ist immer einzigartig.“

„Es wäre ziemlich nervig, wenn wir den langen Namen, z.B. java.util.ArrayList, jedes Mal ausschreiben müssten. Aus diesem Grund kann man in Java Klassen importieren. Du kannst die Kurznamen anderer Klassen in deinem Code verwenden, aber am Anfang deiner Klasse musst du explizit angeben, welche Klassen du verwenden wirst.“

„Wie macht man das?“

„Mit einer Zeile, die so aussieht: import java.util.ArrayList;

„Am Anfang einer Klasse, unmittelbar nach der Deklaration des Pakets, kannst du angeben, auf welche Klasse du dich beziehst, wenn du ArrayList in deinem Code verwendest.“

„Warum macht man das so kompliziert? Können Klassen identische Namen haben?“

„Ja. Es kann Klassen mit dem gleichen Namen in verschiedenen Paketen geben. Wir können nicht zwei Klassen mit identischen Namen importieren, also müssten wir eine von ihnen mit ihrem vollständigen Namen angeben.“

„Ich möchte es dir anhand einer Analogie erklären. Du hast einen Kollegen namens Jim. Kein Problem: Jeder weiß, wer er ist. Aber wenn es drei Jims in deinem Büro gäbe, müsstest du sie bei ihren vollständigen einzigartigen Namen nennen, um Missverständnisse zu vermeiden.“

Zweitens ist es immer besser, Klassen in Paketen zu platzieren, statt im Stammordner src. Wenn du nur wenige Klassen hast, ist das kein Problem, aber wenn es viele sind, kannst du leicht durcheinander kommen. Erstelle Klassen immer innerhalb von Paketen.“

In Java ist es üblich, Klassen und Paketen nachvollziehbare Namen zu geben. Viele Unternehmen veröffentlichen ihre Bibliotheken (Klassengruppen) und benennen sie nach ihrer Firma oder Website:“

Paketname Firmen-/Projektname
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