Java -pakke - Java package
En Java -pakke organiserer Java -klasser i navneområder og giver et unikt navneområde for hver type, den indeholder. Klasser i den samme pakke kan få adgang til hinandens pakkeprivate og beskyttede medlemmer.
Generelt kan en pakke indeholde følgende typer typer : klasser, grænseflader , optællinger og annoteringstyper . En pakke giver en udvikler mulighed for at gruppere klasser (og grænseflader) sammen. Disse klasser vil alle være relateret på en eller anden måde - de kan alle have at gøre med en bestemt applikation eller udføre et bestemt sæt opgaver. Programmerere bruger også typisk pakker til at organisere klasser, der tilhører samme kategori eller giver lignende funktionalitet.
Brug af pakker
I en Java -kildefil er den pakke, som denne fils klasse eller klasser tilhører, angivet med package søgeordet . Dette søgeord er normalt det første søgeord i kildefilen. Der kan højst vises en pakkedeklaration i en kildefil.
package java.awt.event;
For at bruge en pakkes klasser inde i en Java -kildefil er det praktisk at importere klasserne fra pakken med en importerklæring. Følgende erklæring
import java.awt.event.*;
importerer alle klasser fra java.awt.eventpakken, mens den næste erklæring
import java.awt.event.ActionEvent;
importerer kun ActionEventklassen fra pakken. Efter en af disse importangivelser ActionEventkan der henvises til klassen ved hjælp af dens simple klassenavn:
ActionEvent myEvent = new ActionEvent();
Klasser kan også bruges direkte uden importangivelse ved at bruge det fuldt kvalificerede navn på klassen. For eksempel,
java.awt.event.ActionEvent myEvent = new java.awt.event.ActionEvent();
kræver ikke en forudgående importangivelse.
Pakkeomfattende Javadoc og kommentarer
Dokumentation, der forklarer pakken som helhed, er skrevet som Javadoc i en fil, der hedder nøjagtigt `package-info.java`. Denne fil er også stedet for annoteringer, der skal bruges på tværs af alle pakkens klasser. Se Java Language Specification .
Pakken uden navn
Hvis der ikke bruges en pakkedeklaration, placeres klasser i en ikke navngivet pakke. Klasser i en ikke navngivet pakke kan ikke importeres af klasser i nogen anden pakke. Den officielle Java Tutorial fraråder dette:
- Generelt er en ikke navngivet pakke kun til små eller midlertidige applikationer, eller når du lige er begyndt på udviklingsprocessen. Ellers hører klasser og grænseflader hjemme i navngivne pakker.
Pakkebeskyttelse
Offentlige medlemmer og klasser er synlige overalt, og private medlemmer er kun synlige i samme klasse. Klasser i en pakke kan få adgang til klasser og medlemmer, der er erklæret med standardadgang ( pakke-privat ) samt klassemedlemmer, der er angivet med protectedadgangsmodifikatoren. Standardadgang (pakke-privat) håndhæves, når en klasse eller et medlem ikke er blevet erklæret som public, protectedeller private. Derimod kan klasser i andre pakker ikke få adgang til klasser og medlemmer, der er erklæret med standardadgang. Dog kan klassemedlemmer erklæret som protectedkan tilgås fra klasserne i den samme pakke samt klasser i andre pakker, der er underklasser af den erklærende klasse.
Oprettelse af JAR -filer
JAR-filer oprettes med jar-kommandolinjeværktøjet. Kommandoen
jar cf myPackage.jar *.class
komprimerer alle .class -filer til JAR -filen myPackage.jar . Indstillingen 'c' på kommandolinjen fortæller jar -kommandoen "at oprette nyt arkiv". Indstillingen 'f' fortæller den at oprette en fil. Filens navn kommer næste før indholdet af JAR -filen.
Pakkernes navngivningskonventioner
Pakker defineres sædvanligvis ved anvendelse af en hierarkisk navngivning mønster , med nogle niveauer i hierarkiet adskilt af perioder ( ., udtales "dot"). Selvom pakker lavere i navngivningshierarkiet ofte omtales som "underpakker" af de tilsvarende pakker højere i hierarkiet, er der næsten ingen semantisk relation mellem pakker. Java -sprogspecifikationen etablerer konventioner om navngivning af pakker for at undgå muligheden for, at to offentliggjorte pakker har samme navn. Navngivningskonventionerne beskriver, hvordan man opretter unikke pakkenavne, så pakker, der er vidt udbredt, har unikke navnerum. Dette gør det muligt at installere og katalogisere pakker separat, let og automatisk.
Generelt begynder et pakkenavn med det øverste domænenavn på organisationen og derefter organisationens domæne og derefter eventuelle underdomæner, der er angivet i omvendt rækkefølge. Organisationen kan derefter vælge et specifikt navn til sin pakke. Efterfølgende komponenter i pakkens navn varierer alt efter organisationens egne interne navngivningskonventioner.
For eksempel, hvis en organisation i Canada kaldet MySoft opretter en pakke til håndtering af brøker, adskiller pakken ca.mysoft.fractions fraktionspakken fra en anden lignende pakke, der er oprettet af en anden virksomhed. Hvis et tysk firma ved navn MySoft også opretter en fraktionspakke, men navngiver den de.mysoft.fractions , defineres klasserne i disse to pakker i et unikt og separat navneområde.
Fuldstændige konventioner for disambiguering af pakkenavne og regler for navngivning af pakker, når internetdomænenavnet ikke kan bruges direkte som et pakkenavn, er beskrevet i afsnit 7.7 i Java Language Specification.
Kernepakker i Java SE 8
| java.lang | - grundlæggende sprogfunktionalitet og grundlæggende typer |
| java.util | - indsamling af data struktur klasser |
| java.io | - filoperationer |
| java.math | - multipræcisions -aritmetik |
| java.nio | - den ikke-blokerende I / O- ramme for Java |
| java.net | - netværksoperationer, sockets, DNS -opslag , ... |
| java.sikkerhed | - nøglegenerering, kryptering og dekryptering |
| java.sql | - Java Database Connectivity (JDBC) for at få adgang til databaser |
| java.awt | - grundlæggende hierarki af pakker til native GUI -komponenter |
| java.tekst | - Giver klasser og grænseflader til håndtering af tekst, datoer, tal og meddelelser på en måde, der er uafhængig af naturlige sprog. |
| java.rmi | - Giver RMI -pakken. |
| java.tid | - Hoved -API'en for datoer, tidspunkter, øjeblikkelige og varigheder. |
| java.bønner | - Pakken java.beans indeholder klasser og grænseflader relateret til JavaBeans -komponenter. |
| java.applet | - Denne pakke indeholder klasser og metoder til at oprette og kommunikere med applets. |
Pakken java.lang er tilgængelig uden brug af en importopgørelse.
Moduler
I Java 9 er "moduler", en slags samling af pakker, planlagt som en del af Project Jigsaw; disse blev tidligere kaldt "superpakker" og oprindeligt planlagt til Java 7.
Moduler beskriver deres afhængigheder i en modulerklæring, der placeres i en fil med navnet modul-info.java ved roden af modulets kildefilhierarki. JDK vil være i stand til at kontrollere dem både ved kompileringstid og runtime. Selve JDK vil blive modulopbygget til Java 9 .