Einführung in die Deklaration von Paketen im Rahmen der Lehre des Programmierens mit der Programmiersprache Java. (Java packagedefinition Java package definition Paketdefinition Java Pakete definieren Java Paketdeklaration Java), Lektion, Seite 721387
https://www.purl.org/stefan_ram/pub/java_paketdeklaration_de (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
Java-Kurs

Paketdeklarationen in Java

Die Bezeichner der Standardklassen sind im Paket "java.lang" enthalten, damit sie nicht mit anderen Namen kollidieren.

Wenn Bibliotheken, also Sammlungen nützlicher Deklarationen, in Java erstellt werden, sollten diese in einem Paket enthalten sein, damit Namenskollisionen vermieden werden.

p/K.java
package p; public final class K 
{ public static void main( final java.lang.String[] args ) 
{ java.lang.System.out.println( "Hallo!" ); }}

Die Übersetzungseinheit "K.java" beginnt mit der Paketdeklaration "package p;", das bedeutet, daß die Klasse "K" zum Paket "p" gehören soll. Die Klassendatei "K.class" muß dann auch in dem Unterverzeichnis "p" enthalten sein und die Java -Maschine muß aus einem Verzeichnis aus aufgerufen werden, in dem dieses Unterverzeichnis durch den Pfad "p" erreichbar ist.

Ein Paketdeklaration muß vor allem anderen ganz am Anfang der Übersetzungseinheit  stehen (auch vor Importdeklarationen).

Konsole
cd p 
javac K.java 
java K

Exception in thread "main" java.lang.NoClassDefFoundError: K (wrong name: p/K)
cd .. 
java p.K

Hallo!

Es ist also nicht richtig die Klasse "K" aus Unterverzeichnis "p" heraus zu starten, vielmehr muß dies aus dem übergeordneten Verzeichnis geschehen, in dem die Klassendatei den Pfad "p/K.class" hat.

Namenlose Pakete

Wenn Klassen geschrieben werden, die nicht nur vorübergehend benötigt werden, sondern dauerhaft Dienste für verschiedene Projekte bereitstellen sollen, sollten sie immer in einem benannten Paket enthalten sein, denn sonst ist es nicht möglich, sie aus einem benannten Paket heraus zu verwenden, da ein namenloses Paket nicht importiert oder zur Eingrenzung eines Namens verwendet werden kann.

So kann in dem folgenden Beispiel die Klasse "Test" aus einem namenlosen Paket nicht in der Klasse "Versuch" aus dem Paket "tut" verwendet werden.

Test.java
public final class Test { public static int wert() { return 58421; }}

tut/Versuch.java
package tut;
public final class Versuch 
{ public static void main( final java.lang.String[] args )  
{ java.lang.System.out.println( Test.wert() ); }}

Konsole
tut/Versuch.java:5: cannot resolve symbol 
symbol : variable Test 
location: class tut.Versuch 
{ java.lang.System.out.println( Test.wert() ); }} 
^

In dem Paket "java.lang" werden verschiedene Klassennamen verwendet, die ein Programmierer auch für Klassendeklarationen verwendet könnte, die der Klassenname "Object" oder der Klassenname "Class". Ein Klassendatei, wie "Object.class" in einem Verzeichnis aus der Suchliste der Javamaschine könnte aber zu Störungen bei der Verwendung der Standardklasse "java.lang.Object" führen, die dann beispielsweise nicht mehr als "Object" erreicht werden könnte.

Verwendung benannter Pakete

Das spricht dafür, entweder auch allen Namen von Klassen aus dem Paket "java.lang" immer die Eingrenzung "java.lang." voranzustellen oder bei jedem deklarierten Klassennamen zu prüfen, ob dieser nicht auch der Name einer Klasse aus dem Paket "java.lang" ist oder alle Klassen in einem benannten Paket zu deklarieren, da es dann nicht zu Verwechslungen mit den Standardklassen aus dem Paket "java.lang" kommen kann.

Verschiedene Probleme mit der Definition von Klassen in namenlosen Paketen, sprechen dafür, Klassen immer  in benannten Paketen zu deklarieren.

Wenn eine Klasse mit einer geeigneten Methode "main" in einem Paket "tut" deklariert wird, dann sollte sie sich also in einem Unterverzeichnis "tut" relativ zu dem Verzeichnis, aus dem die Java-Werkzeuge aufgerufen werden, befinden. Auch unter Betriebssystemen, die sonst einen inversen Schrägstrich "\" zum Trennen von Pfadteilen (Verzeichnisnamen) verwenden, kann beim Aufruf des Java-Übersetzers manchmal auch der Schrägstrich "/" zu diesem Zweck verwendet werden (was aber nicht immer funktioniert, dann muß doch das betriebssystemspezifische Zeichen, wie beispielsweise der inverse Schrägstrich "\", verwendet werden). Bei der Angabe der auszuführenden Klasse ist dann die Java-Namensraumschreibweise zu verwenden, da die Javamaschine "java" die Angabe einer Klasse erwartet.

tut/Hallo.java
package tut;
public final class Hallo 
{ public static void main( final java.lang.String[] args ) 
{ java.lang.System.out.println( "Hallo!" ); }}

Konsole
javac tut/Hallo.java 
java tut.Hallo

Hallo!

Zusammengesetzte Paketnamen

Ein Paketname kann auch aus mehreren  durch einen Punkt "." getrennten Bezeichnern zusammengesetzt werden. Dabei entsprechen den einzelnen Namensteilen Teile von Pfadnamen des Verzeichnisses des Pakets. Das Paket "a.b" muß also in dem Verzeichnis "a/b" enthalten sein, also dem Unterverzeichnis "b" des Unterverzeichnisses "a".

Es ist beispielsweise denkbar, mit dem ersten Namensteil die Arbeitsgruppe zu bezeichnen, welches das Projekt herstellt, und mit dem zweiten Namensteil einen thematischen Bereich einzugrenzen.

So kann beispielsweise das Paket "tut.komm" verwendet werden. Der erste Namensteil "tut" kennzeichnet Pakete, die im Rahmen dieses Lehrtextes (engl. tutorial ) entstanden sind. Der zweite Namensteil "komm" kennzeichnet das Paket mit Klassen zur Unterstützung von Kommunikation.

Aufgrund der vorgeschriebenen Verzeichnisstruktur sammelten sich so alle Pakete dieses Lehrtextes in einem Verzeichnis "tut", dessen Unterverzeichnisse bestimmten Themen entsprechen und alle zu diesem Thema gehörenden Dateien enthalten.

tut/komm/Gruesse.java
package tut.komm;
public final class Gruesse
{ public static void hallo() 
{ java.lang.System.out.print( "Hallo" ); }}

HalloEC2.java
public final class HalloEC2 
{ public static void main( final java.lang.String[] args ) 
{ tut.komm.Gruesse.hallo(); java.lang.System.out.println( ", Maria!" ); }}

Der Übersetzeraufruf "javac HalloEC2.java" bewirkt bereits die Übersetzung der Quelldatei "tut/komm/Gruesse.java" in eine Klassendatei. Falls diese erneut übersetzt werden soll, dann wäre aus dem Verzeichnis von "HalloEC2.java" der Aufruf "javac tut/komm/Gruesse.java" nötig.

Konsole [im Verzeichnis von "HalloEC2.java"]
javac HalloEC2.java 
java HalloEC2

Hallo, Maria!

Namen für Pakete

Nur von einer Person verwendete Pakete können ohne besondere zusätzliche Regeln benannt werden.

Wenn Pakete verteilt werden, dann sollte es verhindert werden, daß ein gewählter Paketname von mehreren Herstellern verwendet wird.

Dazu schlägt sun  vor, Internet-Bereichsnamen als einmalige Paketnamen  zu verwenden. Die Reihenfolge der Namensteile wird zur Bildung des Paketbezeichners allerdings vertauscht. So kann der Besitzer des Bereichs "example.com" das Paket "com.example" verwenden.

Wegen dieser Konvention muß man auch darauf achten, die üblichen Internet-Bereichsnamen der höchsten Ebene nicht für andere Bezeichner zu verwenden, da sie sonst mit Paketnamen kollidieren könnten.

Ein einmaliger Paketname dient nur zur eindeutigen Kennzeichnung eines Pakets, er gibt keinen Hinweis darauf, daß das Paket von einem Rechner mit dem verwendeten Internet-Bereichsnamen erhalten (kopiert) werden kann.

Der Text "java" darf nicht am Anfang eines deklarierten Paketnamens stehen, wenn der Autor nicht JavaSoft  ist.

Da Paketnamen in der Regel aus kleinen  Buchstaben bestehen, kann man sie leicht von den Namen von Typen (z.B. Klassen) unterscheiden, die mit einem großen  Buchstaben beginnen.

Beispiel Konstanten

Die folgende Klasse stellt gelegentlich benötigte mathematische Konstanten bereit. (Allerdings stehen einige solcher Konstanten auch in der Standardklasse "Math" bereits zur Verfügung, die im Einsatzfall benutzt werden sollten.)

tut/math/Konstante.java
package tut.math; 
 
public final class Konstante 
{ public static double π(){ return 3.14159265358979324; } 
public static double e(){ return 2.71828182845904524; }}

Konstante [Dokumentation]
Method Summary 
static double e() - Eulersche Zahl 
static double π() - Kreiszahl

KonstanteKlient.java
public final class KonstanteKlient 
{ public static void main( final java.lang.String[] args ) 
{ java.lang.System.out.print ( "Der Umfang eines Kreises mit dem Radius 9.8 ist " ); 
java.lang.System.out.print ( 2 * tut.math.Konstante.π() * 9.8 );  
java.lang.System.out.println( "." ); }}

System.out
Der Umfang eines Kreises mit dem Radius 9.8 ist 61.57521601035995.

Falls die Verwendung des kleinen griechischen Pis "π" zu Problemen führt, so kann dies überall durch den Text "pi" ersetzt werden.

Fehlsichtbarkeit (»default«)

Ist bei einer Klasse, einer Methode oder einem Felde kein Sichtbarkeitsmodifizierer (wie »public« oder »private«) angegeben, so ist das Paket der Gültigkeitsbereich.

Seiteninformationen und Impressum   |   Mitteilungsformular  |   "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram.   |   Eine Verbindung zur Stefan-Ram-Startseite befindet sich oben auf dieser Seite hinter dem Text "Stefan Ram".)  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. Schlüsselwörter zu dieser Seite/relevant keywords describing this page: Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram721387 stefan_ram:721387 Java packagedefinition Java package definition Paketdefinition Java Pakete definieren Java Paketdeklaration Java Java Package definieren; Java Packages definieren; source, source code,sourcecode, Programmier sprache java, Java Programm Java Programmiersprache Java Sprache Java Programmierung Programmieren in Java, Die Programmiersprache Java Javapgrammierung, Java-Programmierung, Java2, Java1.2, Java1.3, Java1.4, Java1.5, Java 2, Java 1.2, Java 1.3, Java 1.4, Java 1.5, Java 1.6, Java 1.7, Java 1.8, Java 8, Java 1.9, Java 9, Java 1.10, Java 10, Tiger, Dolphin, objektorientierte Programmierung, Java sun, , Softwareentwicklung, Software-Entwicklung, Software Entwicklung, Softwareprogrammierung, Software-Programmierung, Software Programmierung, Softwareherstellung, Software-Herstellung, Software Herstellung, Softwareerstellung, Software-Erstellung, Software Erstellung, Softwareengineering, Software-Engineering, Software Engineering, Softwareenginering, Software-Enginering, Software Enginering, Softwaremethodik, Software-Methodik, Software Methodik, Programmiermethodik, Programmier-Methodik, Programmier Methodik, Softwaredidaktik, Software-Didaktik, Software Didaktik, Methodik des Programmierens, Didaktik des Programmierens, Fachdidaktik des Programmierens, Fach-Didaktik des Programmierens, Programmieren, Programmierung, Computer Science, Informatik, Informatik, Informationspädagogik, Informationspaedagogik, Programmierer, programmieren, Quellcode, Quelltext, Quelle, Quellen, Informatiker, Fachinformatiker, Entwickler, mit Stil, mit Stiel, mit Still, , Einführung, Einfuehrung, Einführungen, Einfuehrungen, eLearning-Modul, e-Learning-Modul, eLearning-Module, e-Learning-Module, Kurs Berlin, Kurse Berlin, Kursus, Vortrag, Vorträge, Vortraege, Lehrgang, Lehrgänge, Lehrgaenge, kostenloses Lehrmaterial, kostenlose Lehrmaterialien, Vorlesung, Vorlesungen, Unterrichtseinheit, Unterrichtseinheiten, kostenloses Unterrichtsmaterial im Internet, kostenlose Unterrichtsmaterialien im Internet, Ausbildung, Ausbildungen, für die Ausbildung, Fortbildung, Fortbildungen, Weiterbildung, Weiterbildungen, Schulung Berlin, Schulungen Berlin, Internetschulung, Webschulung, Kursunterlage, Kursunterlagen, trainer Berlin, Didaktik, Informatikunterricht, Primer, Skript FH, Skripte FH, Skriptum FH, Skripts FH, Script FH, Scripte FH, Scriptum FH, Scripts FH, howto, how-to, how to, Lehrbuch, Buch, Bücher, Buecher, Bericht, Crash Kurs Berlin, Crash-Kurs Berlin, Crashkurs Berlin, Report, Sachtext, Sachtexte, Übung, Übungen, Uebung, Uebungen, course, PbclevtugFgrsnaEnz, lecture note, lecture notes, Tutorial, Tutor, Tutorium, Teacher, Lehrer Berlin, Trainer Berlin, Beratung Berlin, Anleitung zum, Anleitungen zum, Einführung, Einfuehrung, Einführungen, Einfuehrungen, Handbuch für, Handbücher, Handbuecher, Support, Diplomarbeit, Facharbeit, Hausarbeit, Hausarbeiten, Werk, Werke, Text, Übungsblatt, Uebungsblatt, Lösung, Loesung, Lösungen, Loesungen, Auflösung, Aufloesung, Auflösungen, Aufloesungen, Facharbeit, Facharbeiten, Forum, Training, manual, Folie, Folien, Lehrmittel, beratung, Definition von, Allgemeine Erklärung, Allgemeine Erklaerung, Allgemeine Erklärungen, Allgemeine Erklaerung, Allgemeine Erklaerungen, Einfache Erklärung einfach, Einfache Erklaerung einfach, Einfache Erklärungen, Einfache Erklaerung, Einfache Erklaerungen, zum Thema, FAQ, FAQs, Konzept, Lernkurs, Lern-Kurs, Lernkurse, Lern-Kurse, eine kurze Erklärung, Begriff, Begriffe, Erklärung zu Begriffen, begriffbestimmung, begriffbestimmung, Begriffsbestimmung, Begriffserklärung, Begriffserklaerung, Wort, Worterklärung, Worterklaerung, Definition, Beispiel, Beispiele, Bedeutung, Bedeutungen, was bedeutet, Begriffsdefinition, für Anfänger, fuer Anfaenger, für Einsteiger, für Beginner, zum selber Lernen, handout, hand out, web based training, WBT, Net Based Training, NBT, computer based training, CBT, virtual learning environment, virtual university, für die Schule, Seminar, Seminare, Vorgehensweise, Pädagogik, Paedagogik, Akademie, Onlineacademie, Onlineakademie, Wissen, Unterrichtsvorbereitung für das Fach, Unterricht, für Lehrer, für Lehrerinnen, Referat, Referate, Hausaufgabe, Hausaufgaben, Tip, Tipp. Tipps und Tricks, Tips und Tricks, Methode, Methoden, Methodik, Funktion, Funktionsweise, Aufbau, Prinzip, Grundlage, Grundlagen, Internetschulung, Unterlage, Unterlagen, Struktur, Frage, Fragen, Antwort, Antworten, Schulunterricht, zum erlernen, was ist das?, wie?, lerne, Onlineausbildung, Onlinelehrgang, Onlinekurs, Onlinebuch, Webbuch, Academy, Fachhochschule, FH, TFH, Hochschule, Universität, Universitaet, Uni, Schule, Berufsschule, Gymnasium, Erste Schritte mit, Dozent, Dozenten, Zusammenfassung, Übersicht, Term, Fachwort, Fachbegriff, Fachbegriffe, Grundbegriff, Grundbegriffe, Lektion, Lektionen, Bedienungsanleitung, Bedienungsanleitungen, Spezialist, Spezialisten, Coaching, Coach, Fachbuch, technologie, Unterschied zwischen, Unterschiede zwischen, lehren, unterrichten, für das Studium, für Studenten, für Studentinnen, für Studierende, für Schüler, für Schülerinnen, Wie kann ich, Wie kann man, Hilfe, selber, erstellen, Erstellung, Beginner, Online-Seminar, Online-Kurs, Online-Schulung, ich, gebrauchsanweisung, gebrauchsanleitung, Bedienungsanweisung, Einweisung, Kurzinfo, Internet-Kurs, Internet-Kurse, Online-Training, Intensiv, Intensivkurs, Vortragsreihe, Präsentation, Grundzüge, Mitschrift, Mitschriften, Verständnis, verstehen, anwenden, Hintergrundwissen, Hintergrund, Hintergründe, content, Funktionsprinzip, Schritt für Schritt; E-Learning; elearning; online learning; Fernlehre, Fernlehrgang, Fernlehrgänge, Referent, Referenten, Fernkurs, Fernkurse, Fernstudium, Fernschule, Fernuniversität, Fernlehrer, Denken, Qualifizierungsmaßnahme, Qualifizierung, Qualifizierungen, Volkshochschulkurs, Volkshochschulkurse, Internet-Learning-Plattform, Online-Learning-Plattform, E-Learning-Plattform, Internetlearning-Plattform, Onlinelearning-Plattform, Elearning-Plattform, jetzt, Kochbuch, einfach erklärt, Kenntnis, Kenntniss, Kenntnisse, deutsche Hilfe, lernen und verstehen; blended learning; courseware, Profi, Profis, professionell, professionelle, professionelles, profesionell, profesionelle, profesionelles, professionel, gekonnt, für Könner, Grundkurs, Leistungskurs, Aufbaukurs, Lehrtext, Lehrtexte, Fachtext, Fachtexte, Ausarbeitung, distance learning, Online Seminar, distance education, Online Tutorium, Online Tutorien, technology-based learning, Computer based learning, CBL, Internet Based learning, IBL, Web based learning, WBL, online-learning, OL, online-training, OT, CAI, Computer Assisted Instruction, CUU, Computerunterstützter Unterricht, Computer-unterstützter Unterricht, Know how, Grundkenntnis, Grundkenntnisse, Kompetenz, Schulungsunterlagen, Insiderwissen, Rat, Lehrerinnen und Lehrer, ABC, Überblick, Arbeitsblatt, Sekundarstufe, Oberstufe, Material, Materialien, Unterrichtsentwurf, Unterrichtsentwürfe, Lerntip, Lerntips, Lerntipp, Lerntipps, ebook, schnell lernen, Lerner, Lernender, Lernende Erwachsenenbildung, Frage und Antwort, Selbststudium, Selbstudium, Umschulung, , kostenlos, kostenlose, kostenloses, kosten los, kosten lose, kosten loses, gratis, free, frei, freie, freies, privat, private, privates, homepage, home-page, home page, website, web site, webpage, web-page, web page, webpages, web-pages, web pages, webseite, Web-Seite, Webseite, Webseiten, Web-Artikel, Web Artikel, online, on-line, on line, download downloaden, down load, or, deutsch, deutsche, deutsches, deutscher, Deutschland, deutschsprachig, deutschsprachige, deutschsprachiges, german, germany, and, uebersicht, Uerbersicht, uebersichten, Uebersichten, Übersicht, übersicht, Übersichten, übersichten, Uebersicht, uebersicht, Uebersichten, uebersichten, Info, Infos zu, Information über, ueber, Informationen über, Auskunft, Auskünfte, Auskuenfte, Dienst, PbclevtugFgrsnaEnz, Angebot, Angebote, Anbieter, server, für, fuer, in, an, keyword, keywords, key word, keywords, internet, internets, net, network, net work, networks, net works, web, www, world wide web, Theorie, Praxis, Anwendung, DV, IT, glossar, fachwörterbuch it-glossar, computer lexikon, Computerlexikon, Computer-Lexikon, Lexikon, computer lexicon, Computerlexicon, Computer-Lexicon, Lexicon, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 was ist ein, was ist das, was sind, definiere, definition, define, Inhalt, html, xhtml, free im netz, PDF Text, digital, digitale, binär, binäre, elektronisch, elektronische, fachbegriff, fachbegriffe, konzept, Begriff, allgemein, allgemeine, allgemeines, Technik, Datentechnik, Digitaltechnik, Binätechnik, online lesen; , Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd721387, slrprddef721387, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram.
https://www.purl.org/stefan_ram/pub/java_paketdeklaration_de