„Java“ paketai yra mechanizmas, apimantis klasių antrinių paketų ir sąsajų grupę. Paketai naudojami:
- Užkirsti kelią pavadinimų nesuderinamumui leisdami klasėms su tuo pačiu pavadinimu egzistuoti skirtinguose paketuose, pvz., college.staff.cse.Employee ir college.staff.ee.Employee.
 - Palengvinkite klasių sąsajų ir kitų komponentų radimą ir naudojimą.
 - Suteikti kontroliuojamą prieigą apsaugotiems nariams, kurie pasiekiami tame pačiame pakete ir pagal poklasius. Default members (no access specifier) are accessible only within the same package.
 
Grupuojant susijusias klases į paketus, „Java“ skatina duomenų inkapsuliavimą, todėl kodą galima pakartotinai naudoti ir lengviau valdyti. Tiesiog importuokite norimą klasę iš paketo, kad galėtumėte naudoti ją savo programoje.
Individualių paketų kūrimas
1 veiksmas: Sukurkite katalogą, kuriame kuriame savo paketus ir Java failus.
mkdir PROGRAMAVIMAS
nuskaityti.next java
2 veiksmas: Dabar pakeiskite katalogą ir pagrindiniame aplanke sukurkite kitą aplanką
CD PROGRAMAVIMAS
mkdir JavaProgramming
cd JavaProgramavimas
mkdir masyvai
3 veiksmas: Dabar sukurkite tuščią tekstinį failą ir parašykite žemiau esantį „Java“ kodą ir nepamirškite jo išsaugoti tokiu pačiu pavadinimu kaip ir klasės su plėtiniu .java (TwoPointers.java)
„TwoPointers“ klasė.
Java
package JavaProgramming.arrays; // Main class present inside the package  public class TwoPointers {  public static void main(String[] args) {  System.out.println('Inside the package');  } } 
   
    Pastaba:   
4 veiksmas: Dabar paleiskite programą nurodydami aplanko kelią
javac srcJavaProgrammingarraysTwoPointers.java
java srcJavaProgrammingarraysTwoPointers.java
Išvestis:
Vykdoma programa su aplanko keliuAplanko struktūra:
Tai vaizdinis tinkinto paketo „Java“ vaizdavimas toliau pateiktame paveikslėlyje. Pirmiausia sukuriame aplanką pavadinimu „Progamming“, o jo viduje sukuriame paketą „Javaprogramming“, o tada sukuriame kitą subpaketą, kuris vadinasi masyvai . Tada jame sukuriame Java klasės failą, kuris parodytas paveikslėlyje žemiau:
Aplanko struktūraDarbas su Java paketais
Katalogo struktūra: Paketų pavadinimai ir katalogų struktūros yra glaudžiai susiję. Pavyzdžiui, jei paketo pavadinimas yra college.staff.cse, trys katalogai yra kolegijos darbuotojai ir cse, kur cse yra personalo viduje, o personalas yra kolegijoje.
Vardų suteikimo konvencijos : Paketų pavadinimai rašomi atvirkštine domenų vardų tvarka pvz. org.geeksforgeeks.practice. Kolegijoje suvažiavimas gali būti:
- college.tech.cse
 - college.tech.ee
 - koledžo.meno.istorija
 
Pavyzdys:
importuoti java.util.*;
Čia util yra antrinis paketas, sukurtas java paketo viduje.
Prieiga prie pamokų pakete
„Java“ galime importuoti klases iš paketo naudodami vieną iš šių metodų:
1. Importuokite konkrečią klasę :
importuoti java.util.Vector;
Taip iš java.util paketo importuojama tik Vector klasė.
2. Importuoti visas klases iš paketo :
importuoti java.util.*;
Tai importuoja visas klases ir sąsajas iš java.util paketo, bet neapima antrinių paketų.
Pavyzdys: Importuokite Vector klasę
Javaimport java.util.Vector; public class Geeks {    public Geeks() {    // java.util.Vector is imported We are able to access it directly in our code.  Vector v = new Vector();    java.util.ArrayList l = new java.util.ArrayList();  l.add(3);  l.add(5);  l.add(7);    System.out.println(l);  }  public static void main(String[] args) {      new Geeks();  } } 
   Išvestis
[3 5 7]
Pastaba:
- Naudojant importo paketą.*; importuoja visas paketo klases, bet ne klases iš savo subpaketų.
 - Kai dviejuose paketuose yra klasės su tuo pačiu pavadinimu (pvz., java.util.Date ir my.package.Date), naudokite visiškai apibrėžtą pavadinimą, kad išvengtumėte konfliktų:
 
importuoti java.util.Date;
15 iš 100,00importuoti mano.paketą.data;
Java paketų tipai
- Integruoti paketai
 - Vartotojo nustatyti paketai
 
1. Integruoti paketai
Šiuos paketus sudaro daugybė klasių, kurios yra Java dalis API .Kai kurie dažniausiai naudojami integruotieji paketai yra:
- java.lang : Yra kalbos palaikymo klasės (pvz., klasės, apibrėžiančios primityvių duomenų tipų matematines operacijas). Šis paketas importuojamas automatiškai.
 - java.io: Sudėtyje yra įvesties / išvesties operacijų palaikymo klasės.
 - java.util : Sudėtyje yra naudingumo klasių, kurios įgyvendina tokias duomenų struktūras kaip susietų sąrašų žodynas ir palaikymas; datos / laiko operacijoms.
 - java.applet: Sudėtyje yra programėlių kūrimo klasės.
 - java.aut: Sudėtyje yra grafinių vartotojo sąsajų komponentų diegimo klasės (pvz., mygtukas ;meniu ir tt). 6)
 - java.net: Yra klasių, skirtų palaikyti tinklo operacijas.
 
2. Vartotojo nustatyti paketai
Tai yra vartotojo apibrėžti paketai.
1. Sukurkite paketą:
Pirmiausia sukuriame katalogą myPackage (pavadinimas turi būti toks pat kaip paketo pavadinimas). Tada sukurkite „MyClass“ kataloge, o pirmasis sakinys yra paketų pavadinimai.
Pavyzdys:
Javapackage myPackage; public class MyClass {  public void getNames(String s)  {   System.out.println(s);   } } 
   
    2. Naudokite klasę programoje:   
Dabar mes naudosime MyClass klasė mūsų programoje.
Java import myPackage.MyClass; public class Geeks {  public static void main(String args[]) {     // Initializing the String variable with a value   String s = 'GeeksforGeeks';    // Creating an instance of class MyClass in the package.  MyClass o = new MyClass();    o.getNames(s);  } } 
   
    Pastaba:   MyClass.java turi būti išsaugotas myPackage kataloge, nes tai yra paketo dalis.  
Statinis importavimas Java
„Java“ statinis importavimas yra skirtas supaprastinti prieigą prie statinių narių ir atskirti ją nuo platesnės diskusijos apie vartotojo apibrėžtus paketus.
Statinis importas yra „Java“ programavimo kalbos (5 ir naujesnės versijos) įdiegta funkcija, leidžianti nariams (laukams ir metodams) klasėje apibrėžti kaip viešus statinis naudoti Java kode nenurodant klasės, kurioje laukas apibrėžtas.
Pavyzdys:
Javaimport static java.lang.System.*; class Geeks {  public static void main(String args[]) {    // We don't need to use 'System.out' as imported using static.  out.println('GeeksforGeeks');  } } 
   Išvestis
GeeksforGeeks
Vardų konfliktų tvarkymas
Kai dviejuose paketuose yra klasė tuo pačiu pavadinimu (pvz., java.util.Date ir java.sql.Date), nurodykite visą paketo pavadinimą, kad išvengtumėte konfliktų.
importuoti java.util.*;
importuoti java.sql.*;
//Ir tada naudokite datos klasę, tada gausime kompiliavimo laiko klaidą:
Pasimatymas šiandien; //KLAIDA-- java.util.Date ar java.sql.Date?
Kompiliatorius negalės išsiaiškinti, kurios datos klasės norime. Šią problemą galima išspręsti naudojant specialų importo teiginį:
serialas postgres
importuoti java.util.Date;
importuoti java.sql.*;
Jei mums reikia abiejų datos klasių, kiekvieną kartą, kai deklaruojame naują tos klasės objektą, turime naudoti visą paketo pavadinimą. Pavyzdžiui:
java.util.Date deadLine = new java.util.Date();
java.sql.Data šiandien = new java.sql.Date();veikimo testavimas
Katalogų struktūra ir CLASSPATH
Paketų pavadinimai atitinka katalogo struktūrą. Pavyzdžiui, klasė Circle pakete com.zzz.project1.subproject2 yra saugoma kaip:
$BASE_DIR/com/zzz/project1/subproject2/Circle.class
- Čia $BASE_DIR reiškia bazinį paketo katalogą.
 - „Taškas“ paketo pavadinime atitinka failų sistemos pakatalogį.
 - Bazinis katalogas ( $BASE_DIR ) gali būti bet kurioje failų sistemos vietoje.
 - Taigi „Java“ kompiliatorius ir vykdymo laikas turi būti informuoti apie $BASE_DIR vietą, kad būtų galima rasti klases.
 - Tai atliekama naudojant aplinkos kintamąjį, vadinamą CLASSPATH .
 - CLASSPATH yra panašus į kitą aplinkos kintamąjį PATH, kurį komandos apvalkalas naudoja ieškodamas vykdomųjų programų.
 
CLASSPATH nustatymas
CLASSPATH galima nustatyti vienu iš šių būdų:
- CLASSPATH gali būti nustatytas visam laikui aplinkoje, kurioje atliekami „Windows“ veiksmai
 
Eikite į Valdymo skydas -> Sistema -> Išplėstinė -> Aplinkos kintamieji.
- Pasirinkite „Sistemos kintamieji“, kad pritaikytumėte CLASSPATH visiems sistemos vartotojams.
 - Pasirinkite „Vartotojo kintamieji“, kad pritaikytumėte jį tik šiuo metu prisijungusiam vartotojui.
 - Redaguoti arba sukurti CLASSPATH: jei CLASSPATH jau yra, pasirinkite jį ir spustelėkite „Redaguoti“ arba, jei jo nėra, spustelėkite „Naujas“
 - Įveskite CLASSPATH išsamią informaciją: lauke „Kintamojo pavadinimas“ įveskite: „CLASSPATH“ Lauke „Kintamojo reikšmė“ įveskite katalogus ir JAR failus, atskirtus kabliataškiais.
 - Lauke „Kintamojo reikšmė“ įveskite katalogus ir JAR failus, atskirtus kabliataškiais. Pavyzdys:
 
.c:javaprojectclasses;d:tomcatlibservlet-api.jar
- taškas (
.) reiškia dabartinį darbo katalogą. - Norėdami patikrinti dabartinį CLASSPATH nustatymą, išduokite šią komandą:
 
> NUSTATYTI CLASSPATH
CLASSPATH galima laikinai nustatyti tam konkrečiam CMD apvalkalo seansui, išduodant šią komandą:
> NUSTATYTI CLASSPATH=.;c:javaprojectclasses;d:tomcatlibservlet-api.jar
Užuot naudoję aplinkos kintamąjį CLASSPATH, taip pat galite naudoti, pavyzdžiui, javac ir java komandų komandinės eilutės parinktį -classpath arba -cp
> java –classpath c:javaprojectclasses com.abc.project1.subproject2.MyClass3
Vartotojo nustatytų paketų iliustracija: Pirmojo paketo kūrimas: Failo pavadinimas – ClassOne.java
Javapackage package_name; public class ClassOne {  public void methodClassOne()  {  System.out.println('Hello there its ClassOne');  } } 
 Kuriame antrąjį paketą: Failo pavadinimas – ClassTwo.java
Javapackage package_one; public class ClassTwo {  public void methodClassTwo()  {  System.out.println('Hello there i am ClassTwo');  } } 
 Naudojant abu sukurtus paketus: Failo pavadinimas – Testing.java
Javaimport package_name.ClassOne; import package_one.ClassTwo; public class Testing {  public static void main(String[] args)  {  ClassTwo a = new ClassTwo();  ClassOne b = new ClassOne();  a.methodClassTwo();  b.methodClassOne();  } } 
 Dabar pažvelkite į paketų ir testavimo klasės failo katalogų struktūrą:
  
Prieigos modifikatoriai paketų kontekste
-     Viešas:   Nariai su
publicmodifikatorius yra pasiekiami iš bet kurios vietos, nepaisant to, ar prieigos klasė yra tame pačiame pakete, ar ne . - Apsaugota: Nariai su apsaugotu modifikatoriumi pasiekiami tame pačiame pakete Poklasiuose
 - Numatytasis: Nariai be modifikavimo pasiekiami tik tame pačiame pakete
 -     Privatus:   Nariai su
privatemodifikatoriai pasiekiami tik toje pačioje klasėje. Jų negali pasiekti klasės, esančios to paties paketo poklasiuose arba skirtinguose paketuose.