Pachet Java - Java package
Un pachet Java organizează clasele Java în spații de nume , oferind un spațiu de nume unic pentru fiecare tip pe care îl conține. Clasele din același pachet pot accesa reciproc pachetul - membrii privați și protejați.
În general, un pachet poate conține următoarele tipuri de tipuri : clase, interfețe , enumerări și tipuri de adnotări . Un pachet permite unui dezvoltator să grupeze clase (și interfețe) împreună. Toate aceste clase vor fi legate într-un fel - s-ar putea să aibă toate legătură cu o anumită aplicație sau să îndeplinească un anumit set de sarcini. De asemenea, programatorii folosesc de obicei pachete pentru a organiza clase aparținând aceleiași categorii sau care oferă funcționalități similare.
Folosirea pachetelor
Într-un fișier sursă Java, pachetul la care aparțin clasa sau clasele acestui fișier este specificat cu package cuvântul cheie . Acest cuvânt cheie este de obicei primul cuvânt cheie din fișierul sursă. Cel mult o declarație de pachet poate apărea într-un fișier sursă.
package java.awt.event;
Pentru a utiliza clasele unui pachet într-un fișier sursă Java, este convenabil să importați clasele din pachet cu o importdeclarație. Declarația următoare
import java.awt.event.*;
importă toate clasele din java.awt.eventpachet, în timp ce următoarea declarație
import java.awt.event.ActionEvent;
importă doar ActionEventclasa din pachet. După oricare dintre aceste declarații de import, ActionEventclasa poate fi menționată folosind numele său simplu de clasă:
ActionEvent myEvent = new ActionEvent();
Clasele pot fi, de asemenea, utilizate direct, fără o declarație de import, utilizând numele complet calificat al clasei. De exemplu,
java.awt.event.ActionEvent myEvent = new java.awt.event.ActionEvent();
nu necesită o declarație de import precedentă.
Javadoc la nivel de pachet și adnotări
Documentația care explică pachetul în ansamblu este scrisă ca Javadoc într-un fișier numit exact `package-info.java`. Acel fișier este, de asemenea, locul unde adnotările pot fi utilizate în toate clasele pachetului. Consultați Specificațiile limbajului Java .
Pachetul fără nume
Dacă nu se folosește o declarație de pachet, clasele sunt plasate într-un pachet fără nume. Clasele dintr-un pachet fără nume nu pot fi importate de clase din niciun alt pachet. Tutorialul oficial Java recomandă acest lucru:
- În general vorbind, un pachet fără nume este numai pentru aplicații mici sau temporare sau când abia începeți procesul de dezvoltare. În caz contrar, clasele și interfețele aparțin pachetelor denumite.
Protecție acces pachet
Membrii și cursurile publice sunt vizibile peste tot, iar membrii privați sunt vizibili doar în aceeași clasă. Clasele dintr-un pachet pot accesa clase și membrii declarați cu acces implicit ( pachet-privat ), precum și membrii clasei declarați cu protectedmodificatorul de acces. Implicit acces (pachetul-privat) este executată atunci când o clasă sau un membru nu a fost declarată public, protectedsau private. În schimb, clasele din alte pachete nu pot accesa clasele și membrii declarați cu acces implicit. Cu toate acestea, membrii clasei declarați ca protectedpot fi accesați din clasele din același pachet, precum și din clasele din alte pachete care sunt subclasele clasei declarante.
Crearea fișierelor JAR
Fișierele JAR sunt create cu ajutorul utilitarului linie de comandă jar. Comanda
jar cf myPackage.jar *.class
comprimă toate fișierele .class în fișierul JAR myPackage.jar . Opțiunea „c” din linia de comandă spune comenzii jar să „creeze o arhivă nouă”. Opțiunea „f” îi spune să creeze un fișier. Numele fișierului vine înaintea conținutului fișierului JAR.
Convenții de denumire a pachetelor
Pachetele sunt de obicei definite folosind un model de denumire ierarhică , cu unele niveluri din ierarhie separate prin puncte ( , pronunțat „punct”). Deși pachetele mai mici în ierarhia de denumire sunt adesea denumite „subpachete” ale pachetelor corespunzătoare mai mari din ierarhie, nu există aproape nicio relație semantică între pachete. Specificația limbajului Java stabilește convenții de denumire a pachetelor pentru a evita posibilitatea ca două pachete publicate să aibă același nume. Convențiile de denumire descriu cum să creați nume de pachete unice, astfel încât pachetele care sunt distribuite pe scară largă să aibă spații de nume unice. Aceasta permite pachetelor să fie instalate și catalogate separat, ușor și automat.
.
În general, un nume de pachet începe cu numele de domeniu de nivel superior al organizației, apoi domeniul organizației și apoi orice subdomenii, listate în ordine inversă. Organizația poate alege apoi un nume specific pentru pachetul său. Componentele ulterioare ale numelui pachetului variază în funcție de convențiile interne de denumire interne ale unei organizații.
De exemplu, dacă o organizație din Canada numită MySoft creează un pachet pentru a face față fracțiilor, denumirea pachetului ca.mysoft.fractions distinge pachetul fracțiuni de un alt pachet similar creat de o altă companie. Dacă o companie germană numită MySoft creează și un pachet de fracțiuni, dar îl numește de.mysoft.fractions , atunci clasele din aceste două pachete sunt definite într-un spațiu de nume unic și separat.
Convențiile complete pentru dezambiguizarea numelor de pachete și regulile pentru denumirea pachetelor atunci când numele de domeniu Internet nu poate fi utilizat direct ca nume de pachet sunt descrise în secțiunea 7.7 din Specificația limbajului Java.
Pachete de bază în Java SE 8
| java.lang | - funcționalitatea limbajului de bază și tipurile fundamentale |
| java.util | - clase de structură a datelor de colectare |
| java.io | - operații de fișier |
| java.math | - aritmetica multipreciziei |
| java.nio | - cadrul I / O non-blocant pentru Java |
| java.net | - operațiuni de rețea, socketuri, căutări DNS , ... |
| java.securitate | - generarea cheilor, criptarea și decriptarea |
| java.sql | - Java Database Connectivity (JDBC) pentru a accesa bazele de date |
| java.awt | - ierarhia de bază a pachetelor pentru componentele GUI native |
| java.text | - Oferă clase și interfețe pentru tratarea textului, a datelor, numerelor și mesajelor într-un mod independent de limbile naturale. |
| java.rmi | - Oferă pachetul RMI. |
| java.time | - API-ul principal pentru date, ore, instanțe și durate. |
| java.fasole | - Pachetul java.beans conține clase și interfețe legate de componentele JavaBeans. |
| java.applet | - Acest pachet oferă clase și metode pentru a crea și a comunica cu applet-urile. |
Pachetul java.lang este disponibil fără utilizarea unei declarații de import.
Module
În Java 9 , „module”, un fel de colecție de pachete, sunt planificate ca parte a Project Jigsaw; acestea au fost denumite anterior "superpachete" și inițial planificate pentru Java 7.
Modulele își vor descrie dependențele într-o declarație de modul care va fi plasată într-un fișier numit module-info.java la rădăcina ierarhiei fișierului sursă a modulului. JDK le va putea verifica atât la compilare, cât și la runtime. JDK în sine va fi modularizat pentru Java 9 .