Java-paketit ovat mekanismi, joka kapseloi ryhmän luokkien alipaketteja ja rajapintoja. Paketteja käytetään:
- Estä nimiristiriidat sallimalla samannimisten luokkien olemassaolo eri paketeissa, kuten college.staff.cse.Employee ja college.staff.ee.Employee.
 - Helpota luokkien käyttöliittymien ja muiden komponenttien paikallistamisen ja käytön järjestämistä.
 - Tarjoa valvottu pääsy suojatuille jäsenille, jotka ovat käytettävissä samassa paketissa ja alaluokkien mukaan. Oletusjäsenet (ei käyttöoikeusmääritteitä) ovat käytettävissä vain samassa paketissa.
 
Ryhmittelemällä toisiinsa liittyvät luokat paketeiksi Java edistää tietojen kapselointia, mikä tekee koodista uudelleenkäytettävän ja helpommin hallittavan. Tuo vain haluttu luokka paketista käyttääksesi sitä ohjelmassasi.
Mukautettujen pakettien luominen
Vaihe 1: Luo hakemisto, johon luomme pakettimme ja Java-tiedostomme.
mkdir OHJELMOINTI
isäntä linux
Vaihe 2: Vaihda nyt hakemistoa ja luo toinen kansio pääkansioon
cd ohjelmointi
mkdir Java-ohjelmointi
cd Java-ohjelmointi
mkdir-taulukot
Vaihe 3: Luo nyt tyhjä tekstitiedosto ja kirjoita alla oleva Java-koodi ja älä unohda tallentaa sitä samalla nimellä kuin luokka .java-tunnisteella (TwoPointers.java)
TwoPointers-luokka.
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');  } } 
   
    Huomautus:   Älä unohda lisätä paketin nimeä ohjelmatiedostoon.
Vaihe 4: Suorita nyt ohjelma määrittämällä kansion polku
javac srcJavaProgrammingarraysTwoPointers.java
java srcJavaProgrammingarraysTwoPointers.java
Lähtö:
Ajetaan ohjelmaa kansiopolullaKansiorakenne:
Tämä on visuaalinen esitys mukautetusta paketista Java-kielellä alla olevassa kuvassa. Ensin luodaan kansio nimeltä Progamming ja sen sisään luodaan paketti Javaprogramming ja sitten luodaan toinen alipaketti, joka on ns. taulukoita . Sitten luomme sen sisään Java-luokkatiedoston, joka näkyy alla olevassa kuvassa:
Kansion rakenneJava-pakettien työskentely
Hakemistorakenne: Pakettien nimet ja hakemistorakenteet liittyvät läheisesti toisiinsa. Jos paketin nimi on esimerkiksi college.staff.cse, niin kolme hakemistoa ovat college staff ja cse, joissa cse on henkilöstön sisällä ja henkilökunta yliopiston sisällä.
Nimeämissopimukset : Pakettien nimet kirjoitetaan käänteisessä järjestyksessä kuin verkkotunnukset, esim. org.geeksforgeeks.practice. Yliopistossa sopimus voisi olla:
- college.tech.cse
 - college.tech.ee
 - college.art.history
 
Esimerkki:
silmukoille java
tuonti java.util.*;
Tässä util on Java-paketin sisällä luotu alipaketti.
Pääsy luokkiin paketin sisällä
Javassa voimme tuoda luokkia paketista jommallakummalla seuraavista tavoista:
1. Tuo tietty luokka :
tuonti java.util.Vector;
Tämä tuo vain Vector-luokan java.util-paketista.
2. Tuo kaikki luokat paketista :
tuonti java.util.*;
Tämä tuo kaikki luokat ja liitännät java.util-paketista, mutta ei sisällä alipaketteja.
Esimerkki: Tuo Vector-luokka
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();  } } 
   Lähtö
[3 5 7]
Huomautus:
- Käyttämällä tuontipakettia.*; tuo kaikki paketin luokat, mutta ei luokkia alipaketteistaan.
 - Kun kahdella paketilla on samanniminen luokkia (esim. java.util.Date ja my.package.Date), käytä täydellistä nimeä ristiriitojen välttämiseksi:
 
tuonti java.util.Date;
tuo my.package.Date;
Java-pakettien tyypit
- Sisäänrakennetut paketit
 - Käyttäjän määrittämät paketit
 
1. Sisäänrakennetut paketit
Nämä paketit koostuvat suuresta määrästä luokkia, jotka ovat osa Javaa API .Jotkin yleisesti käytetyistä sisäänrakennetuista paketeista ovat:
- java.lang : Sisältää kielen tukiluokkia (esim. luokat, jotka määrittelevät primitiivisen tietotyypin matemaattisia operaatioita). Tämä paketti tuodaan automaattisesti.
 - java.io: Sisältää luokat syöttö/lähtötoimintojen tukemiseksi.
 - java.util : Sisältää hyödyllisyysluokkia, jotka toteuttavat tietorakenteita, kuten Linked List Dictionary ja tuki; Päivämäärä/aika -toiminnoille.
 - java.applet: Sisältää luokat sovelmien luomiseen.
 - java.aut: Sisältää luokat graafisten käyttöliittymien komponenttien toteuttamiseen (kuten painike ;valikot jne.). 6)
 - java.net: Sisältää luokkia verkkotoimintojen tukemiseen.
 
2. Käyttäjän määrittämät paketit
Nämä ovat käyttäjän määrittelemiä paketteja.
1. Luo paketti:
Ensin luodaan hakemisto myPackage (nimen tulee olla sama kuin paketin nimi). Luo sitten MyClass hakemistoon siten, että ensimmäinen lause on pakettien nimet.
Esimerkki:
Javapackage myPackage; public class MyClass {  public void getNames(String s)  {   System.out.println(s);   } } 
   
    2. Käytä luokkaa ohjelmassa:   
Nyt käytämme MyClass luokkaa ohjelmassamme.
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);  } } 
   
    Huomautus:   MyClass.java on tallennettava myPackage-hakemistoon, koska se on osa pakettia.  
Staattinen tuonti Javassa
Static Import Javassa on staattisten jäsenten käytön yksinkertaistamista ja erottaa sen laajemmasta keskustelusta käyttäjän määrittelemistä paketeista.
Staattinen tuonti on Java-ohjelmointikielessä (versiot 5 ja uudemmat) esitelty ominaisuus, joka sallii jäsenet (kentät ja menetelmät) määritellä luokassa julkisiksi staattinen käytettäväksi Java-koodissa määrittelemättä luokkaa, jossa kenttä on määritetty.
he ovat laulajia
Esimerkki:
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');  } } 
   Lähtö
GeeksforGeeks
Nimiristiriitojen käsittely
Kun kaksi pakettia sisältää samannimisen luokan (esim. java.util.Date ja java.sql.Date), määritä paketin koko nimi ristiriitojen välttämiseksi.
tuonti java.util.*;
tuo java.sql.*;
//Ja käytä sitten Date-luokkaa, niin saamme käännösaikavirheen:
Päivämäärä tänään; //ERROR-- java.util.Date vai java.sql.Date?
Kääntäjä ei pysty selvittämään, minkä päivämääräluokan haluamme. Tämä ongelma voidaan ratkaista käyttämällä erityistä tuontilauseketta:
tuonti java.util.Date;
tuo java.sql.*;
Jos tarvitsemme molemmat Date-luokat, meidän on käytettävä koko paketin nimeä aina, kun ilmoitamme uuden objektin kyseisestä luokasta. Esimerkiksi:
java.util.Date deadLine = uusi java.util.Date();
java.sql.Date today = new java.sql.Date();ketjuta java-merkkijono
Hakemistorakenne ja CLASSPATH
Pakettien nimet vastaavat hakemistorakennetta. Esimerkiksi luokka Circle paketissa com.zzz.project1.subproject2 on tallennettu seuraavasti:
$BASE_DIR/com/zzz/projekti1/alaprojekti2/Circle.class
- Tässä $BASE_DIR edustaa paketin perushakemistoa.
 - Paketin nimessä oleva "piste" vastaa tiedostojärjestelmän alihakemistoa.
 - Perushakemisto ( $BASE_DIR ) voi sijaita missä tahansa tiedostojärjestelmässä.
 - Siksi Java-kääntäjälle ja ajonaikaisuudelle on tiedotettava $BASE_DIR:n sijainnista luokat paikantamiseksi.
 - Se saavutetaan ympäristömuuttujalla nimeltä CLASSPATH .
 - CLASSPATH on samanlainen kuin toinen ympäristömuuttuja PATH, jota komentotulkki käyttää suoritettavien ohjelmien etsimiseen.
 
Asetetaan CLASSPATH
CLASSPATH voidaan asettaa jollakin seuraavista tavoista:
- CLASSPATH voidaan asettaa pysyvästi ympäristössä vaiheet Windows on
 
Siirry kohtaan Ohjauspaneeli -> Järjestelmä -> Lisäasetukset -> Ympäristömuuttujat.
- Valitse 'Järjestelmämuuttujat' ottaaksesi CLASSPATHin käyttöön kaikille järjestelmän käyttäjille.
 - Valitse "Käyttäjämuuttujat", jos haluat käyttää sitä vain tällä hetkellä kirjautuneelle käyttäjälle.
 - Muokkaa tai luo CLASSPATH: Jos CLASSPATH on jo olemassa, valitse se ja napsauta "Muokkaa" tai jos sitä ei ole, napsauta "Uusi"
 - Syötä CLASSPATH-tiedot: Kirjoita "Muuttujan nimi" -kenttään: "CLASSPATH" Syötä "Muuttujan arvo" -kenttään hakemistot ja JAR-tiedostot erotettuina puolipisteillä.
 - Kirjoita Muuttujan arvo -kenttään hakemistot ja JAR-tiedostot puolipisteillä erotettuina. Esimerkki:
 
.c:javaprojectclasses;d:tomcatlibservlet-api.jar
- Piste (
.) edustaa nykyistä työhakemistoa. - Voit tarkistaa CLASSPATH:n nykyisen asetuksen antamalla seuraavan komennon:
 
> SET CLASSPATH
CLASSPATH voidaan asettaa väliaikaisesti kyseiselle CMD-komentotulkkiistunnolle antamalla seuraava komento:
> SET CLASSPATH=.;c:javaprojectclasses;d:tomcatlibservlet-api.jar
CLASSPATH-ympäristömuuttujan sijaan voit käyttää esim. javac- ja java-komentojen komentorivin valitsinta -classpath tai -cp.
> java –classpath c:javaprojectclasses com.abc.project1.subproject2.MyClass3
Kuva käyttäjän määrittelemistä paketeista: Ensimmäisen paketin luominen: Tiedostonimi – ClassOne.java
Javapackage package_name; public class ClassOne {  public void methodClassOne()  {  System.out.println('Hello there its ClassOne');  } } 
 Toisen paketin luominen: Tiedostonimi – ClassTwo.java
Javapackage package_one; public class ClassTwo {  public void methodClassTwo()  {  System.out.println('Hello there i am ClassTwo');  } } 
 Molempia luotuja paketteja hyödyntäen: Tiedostonimi – 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();  } } 
 Tarkastellaan nyt sekä pakettien että testausluokkatiedoston hakemistorakennetta:
  
Pääsymuokkaimet pakettien kontekstissa
-     Julkinen:   Jäsenet kanssa
publicmodifiereihin pääsee mistä tahansa riippumatta siitä, onko pääsyluokka samassa paketissa vai ei . - Suojattu: Jäsenet, joilla on suojattu muuntaja, ovat käytettävissä samassa paketissa Alaluokissa
 - Oletus: Jäsenet, joilla ei ole muokkausta, ovat käytettävissä vain samassa paketissa
 -     Yksityinen:   Jäsenet kanssa
privatemodifikaattorit ovat käytettävissä vain saman luokan sisällä. Saman paketin alaluokkien tai eri pakettien luokat eivät voi käyttää niitä.