Java package
Een Java package is een mechanisme binnen Java om klassen te organiseren in namespaces. Java broncode die binnen eenzelfde categorie/functie vallen kunnen hierdoor gegroepeerd worden. Dit kan door middel van een package
statement bovenaan het beginbestand om aan te geven waartoe ze behoren. Java packages kunnen worden opgeslagen in gecomprimeerde JAR files.
- Een package benoemd een unieke namespace voor het type dat het bevattypes it contains.
- Een package verzorgt een deel van de toegangs faciliteiten.
- Een package bevat de volgende typen:
Het aangeven van een package
Om binnen een Java bron bestand aan te geven binnen welk package hij valt word de volgende syntax gebruikt:
package nl.mijnbedrijf.code;
Dit dient altijd eerste statement te zijn in een bron bestand. Hierdoor wordt herkenning van de hiërarchie versimpelt.
Het gebruik van packages in ander bestanden
Om een package binnen een Java bestand te gebruiken moet de klasse geimporteerd worden met een import
statement.
De statement
import java.util.*;
importeert alle klassen van het java.util
package, terwijl
import java.util.Date;
importeerd alleen de Date
klasse vanuit een package. Na het gebruike van één van deze import statements kan de Date
klasse gebuikt worden door gebruik van zijn klasse naam:
Date huidigeDatum = new Date();
Ook kunnen klassen direct gebruikt worden zonder dat de import
statement gebruikt word. Dit kan dan gedaan worden door gebruik te maken van de volledige naam van de klasse.
java.util.Date huidigeDatum = new java.util.Date();
Naam conventie voor een Package
Een package word normaal in een hiërarchisch patroon, met daarin verschillende niveau's die afgeschiden zijn door punten (.
) (ook wel in het engels "dot" genoemd). Een package lager in de hiërarchie word vaak een "subpackage" genoemd. Hierbij hoeft geen semantisch relatie te bestaan met hoger of lager gelegen packages. De Java Language Specification [EN] beschrijft een naam conventie waardoor duplicering van namen van packages word voorkomen. De conventie beschrijft een unieke manier/methode om te garanderen dat packages wereldwijd gebruikt kunnen worden met een unieke benaming. Dit om de installatie en het gebruik van packages makelijker te maken.
Package namen moeten altijd in kleine ASCII letters gemaakt worden (dus niet met hoofdletters). In het kort begint een package met een top level domain naam van een organisatie gevolgd door subdomeinen in willekeurige volgorde. De top level domeinen zijn bijvoorbeeld nl, com, edu, gov, mil, net, org of één van de Engelse twee-letter combinaties die een land op de wereld identificeren zoals gespecificert staat in de ISO Standaard 3166, 1981. Voor meer informatie over de standaarden bekijk bijvoorbeeld de documenten rfc920.txt en rfc1032.txt op de RFC index.
Bijvoorbeeld een Nederlands bedrijf laat zijn package met nl. beginnen, terwijl een bedrijf uit Belgie met be. zou beginnen. Dus als beiden MijnBedrijfheten word dat voor het Nederlandse bedrijf nl.mijnbedrijf.code en voor de Belgische be.mijnbedrijf.code hierdoor kunnen klassen uniek ge-identificeerd worden binnen verschillende packages.
Een verdere volledige uitleg is te vinden (in het engels) op 7.7 Unique Package Names van het boek the Java Language Specification.