Programmeurs zijn een georganiseerde groep als het gaat om het schrijven van code. Ze houden ervan hun programma's zo in te richten dat ze op een logische manier stromen en afzonderlijke codeblokken aanroepen die elk een bepaalde taak hebben. De klassen die ze schrijven organiseren, worden gedaan door pakketten te maken.
Met een pakket kan een ontwikkelaar klassen (en interfaces) samen groeperen. Deze klassen zijn allemaal op een of andere manier gerelateerd - ze kunnen allemaal te maken hebben met een specifieke toepassing of een specifieke set taken uitvoeren. De Java API zit bijvoorbeeld vol met pakketten. Een van hen is het pakket javax.xml. Het en zijn subpakketten bevatten alle klassen in de Java API die te maken hebben met XML.
Als u klassen in een pakket wilt groeperen, moet elke klasse een pakketinstructie hebben die boven aan het .java-bestand is gedefinieerd. Het laat de compiler weten tot welk pakket de klasse behoort en moet de eerste regel code zijn. Stel je bijvoorbeeld voor dat je een eenvoudig Battleships-spel maakt. Het is logisch om alle benodigde klassen in een pakket genaamd slagschepen te stoppen:
oorlogsschepen
class GameBoard
Elke klasse met de bovenstaande pakketverklaring bovenaan maakt nu deel uit van het Battleships-pakket.
Gewoonlijk worden pakketten opgeslagen in een overeenkomstige map op het bestandssysteem, maar het is mogelijk om ze op te slaan in een database. De map op het bestandssysteem moet dezelfde naam hebben als het pakket.
Hier worden alle klassen opgeslagen die bij dat pakket horen. Als het slagschippakket bijvoorbeeld de klassen GameBoard, Ship, ClientGUI bevat, worden er bestanden met de naam GameBoard.java, Ship.java en ClientGUI.java opgeslagen in een directory-oproep slagschepen.
Het organiseren van lessen hoeft niet op één niveau te zijn. Elk pakket kan zoveel subpakketten bevatten als nodig. Om het pakket en de subverpakking te onderscheiden een "." wordt tussen de pakketnamen geplaatst.
De naam van het pakket javax.xml geeft bijvoorbeeld aan dat XML een subpakket is van het pakket javax. Het stopt daar niet, onder XML zijn er 11 subpakketten: binden, crypto, datatype, naamruimte, parsers, soap, stream, transformeren, validatie, ws en XPath.
De mappen op het bestandssysteem moeten overeenkomen met de pakkethiërarchie. De klassen in het pakket javax.xml.crypto leven bijvoorbeeld in een mapstructuur van ... \ javax \ xml \ crypto.
Opgemerkt moet worden dat de gemaakte hiërarchie niet wordt herkend door de compiler. De namen van de pakketten en subpakketten tonen de relatie die de klassen die ze bevatten met elkaar hebben.
Maar wat de compiler betreft, is elk pakket een afzonderlijke set klassen. Het beschouwt een klasse in een subpakket niet als onderdeel van het bovenliggende pakket. Dit onderscheid wordt duidelijker als het gaat om het gebruik van pakketten.
Er is een standaard naamgevingsconventie voor pakketten. Namen moeten kleine letters zijn. Bij kleine projecten met slechts enkele pakketten zijn de namen meestal eenvoudige (maar betekenisvolle!) Namen:
pakket pokeranalyzer
pakket mycalculator
In softwarebedrijven en grote projecten, waar de pakketten in andere klassen kunnen worden geïmporteerd, moeten de namen onderscheidend zijn. Als twee verschillende pakketten een klasse met dezelfde naam bevatten, is het belangrijk dat er geen naamconflict bestaat. Dit wordt gedaan door ervoor te zorgen dat de pakketnamen verschillen door de pakketnaam te beginnen met het bedrijfsdomein voordat deze wordt opgesplitst in lagen of functies:
pakket com.mycompany.utilities
pakket org.bobscompany.application.userinterface