Balíčky v Javě jsou mechanismem, který zapouzdřuje skupinu dílčích balíčků tříd a rozhraní. Balíčky se používají pro:
- Předcházejte konfliktům názvů tím, že povolíte existenci tříd se stejným názvem v různých balíčcích, jako je college.staff.cse.Employee a college.staff.ee.Employee.
 - Usnadněte si organizaci vyhledávání a používání rozhraní tříd a dalších komponent.
 - Poskytněte řízený přístup pro chráněné členy, kteří jsou přístupní v rámci stejného balíčku a podle podtříd. Výchozí členové (bez specifikátoru přístupu) jsou přístupní pouze v rámci stejného balíčku.
 
Seskupením souvisejících tříd do balíčků Java podporuje zapouzdření dat, díky čemuž je kód znovu použitelný a snáze se s ním manipuluje. Jednoduše importujte požadovanou třídu z balíčku a použijte ji ve svém programu.
Vytváření vlastních balíčků
Krok 1: Vytvořte adresář, ve kterém vytvoříme naše balíčky a soubory Java.
mkdir PROGRAMOVÁNÍ
jak vybrat sloupce z různých tabulek v sql
Krok 2: Nyní změňte adresář a vytvořte další složku v hlavní složce
PROGRAMOVÁNÍ CD
mkdir JavaProgramming
cd JavaProgramming
pole mkdir
Krok 3: Nyní vytvořte prázdný textový soubor a napište níže uvedený Java kód a nezapomeňte jej uložit pod stejným názvem jako třída s příponou .java (TwoPointers.java)
Třída TwoPointers.
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');  } } 
   
    Poznámka:   Do souboru programu nezapomeňte přidat název balíčku.
Krok 4: Nyní spusťte program s definovanou cestou složky
javac srcJavaProgrammingarraysTwoPointers.java
java srcJavaProgrammingarraysTwoPointers.java
výstup:
Spuštěný program s cestou ke složceStruktura složky:
Toto je vizuální znázornění vlastního balíčku v Javě na obrázku níže. Nejprve vytvoříme složku s názvem Progamming a v ní vytvoříme balíček Javaprogramming a poté vytvoříme další podbalíček, který se nazývá pole . Poté v něm vytvoříme soubor třídy Java, který je znázorněn na obrázku níže:
Struktura složekPráce s Java balíčky
Struktura adresáře: Názvy balíčků a adresářové struktury spolu úzce souvisí. Pokud je například název balíčku college.staff.cse, pak tři adresáře jsou zaměstnanci školy a cse, kde cse je uvnitř zaměstnanců a zaměstnanci jsou uvnitř školy.
Konvence pojmenování : Názvy balíčků se zapisují v opačném pořadí než názvy domén, např. org.geeksforgeeks.practice. Na vysoké škole může být konvence:
- college.tech.cse
 - college.tech.ee
 - vysokoškolské.historie umění
 
Příklad:
import java.util.*;
Zde util je dílčí balíček vytvořený uvnitř balíčku java.
Přístup k třídám uvnitř balíčku
V Javě můžeme importovat třídy z balíčku pomocí jedné z následujících metod:
1. Importujte konkrétní třídu :
import java.util.Vector;
Tím se importuje pouze třída Vector z balíčku java.util.
2. Importujte všechny třídy z balíčku :
import java.util.*;
To importuje všechny třídy a rozhraní z balíčku java.util, ale nezahrnuje dílčí balíčky.
Příklad: Importujte třídu Vector
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();  } } 
   Výstup
[3 5 7]
Poznámka:
- Použití importního balíčku.*; importuje všechny třídy v balíčku, ale ne třídy z jeho dílčích balíčků.
 - Pokud mají dva balíčky třídy se stejným názvem (např. java.util.Date a my.package.Date), použijte plně kvalifikovaný název, abyste předešli konfliktům:
 
import java.util.Date;
integer double javaimport my.package.Date;
Typy balíčků Java
- Vestavěné balíčky
 - Uživatelsky definované balíčky
 
1. Vestavěné balíčky
Tyto balíčky se skládají z velkého počtu tříd, které jsou součástí Javy API Některé z běžně používaných vestavěných balíčků jsou:
- java.lang : Obsahuje třídy jazykové podpory (např. třídy, které definují primitivní datové typy matematických operací). Tento balíček je automaticky importován.
 - java.io: Obsahuje třídy pro podporu operací vstupu/výstupu.
 - java.util : Obsahuje pomocné třídy, které implementují datové struktury jako Linked List Dictionary a podporu; pro operace Datum/Čas.
 - java.applet: Obsahuje třídy pro vytváření apletů.
 - java.aut: Obsahují třídy pro implementaci komponent pro grafická uživatelská rozhraní (jako tlačítko ;nabídky atd.). 6)
 - java.net: Obsahuje třídy pro podporu síťových operací.
 
2. Uživatelem definované balíčky
Jedná se o balíčky, které definuje uživatel.
1. Vytvořte balíček:
Nejprve vytvoříme adresář myPackage (název by měl být stejný jako název balíčku). Potom vytvořte MyClass v adresáři s prvním příkazem, který bude obsahovat názvy balíčků.
Příklad:
Javapackage myPackage; public class MyClass {  public void getNames(String s)  {   System.out.println(s);   } } 
   
    2. Použijte třídu v programu:   
Nyní použijeme Moje třída třídy v našem programu.
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);  } } 
   
    Poznámka:   MyClass.java musí být uložena v adresáři myPackage, protože je součástí balíčku.  
Statický import v Javě
Statický import v Javě je o zjednodušení přístupu ke statickým členům a odděluje jej od širší diskuse o uživatelsky definovaných balíčcích.
Statický import je funkce představená v programovacím jazyce Java (verze 5 a vyšší), která umožňuje členům (polím a metodám) definovat ve třídě jako veřejné statický k použití v kódu Java bez určení třídy, ve které je pole definováno.
Příklad:
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');  } } 
   Výstup
GeeksforGeeks
Řešení konfliktů jmen
Pokud dva balíčky obsahují třídu se stejným názvem (např. java.util.Date a java.sql.Date), zadejte úplný název balíčku, abyste předešli konfliktům.
import java.util.*;
import java.sql.*;
//A pak použijte třídu Date, pak dostaneme chybu při kompilaci:
Datum dnes; //CHYBA-- java.util.Date nebo java.sql.Date?
Kompilátor nebude schopen zjistit, jakou třídu Date chceme. Tento problém lze vyřešit pomocí konkrétního příkazu importu:
kde najdu nastavení prohlížeče
import java.util.Date;
import java.sql.*;
Pokud potřebujeme obě třídy Date, musíme použít úplný název balíčku pokaždé, když deklarujeme nový objekt této třídy. Například:
java.util.Date deadLine = new java.util.Date();
java.sql.Date today = new java.sql.Date();znak na řetězec v jazyce Java
Struktura adresáře a CLASSPATH
Názvy balíčků odpovídají adresářové struktuře. Například třída Circle v balíčku com.zzz.project1.subproject2 je uložena jako:
$BASE_DIR/com/zzz/project1/subproject2/Circle.class
- Zde $BASE_DIR představuje základní adresář balíčku.
 - „Tečka“ v názvu balíčku odpovídá podadresáři systému souborů.
 - Základní adresář ( $BASE_DIR ) může být umístěn kdekoli v systému souborů.
 - Proto musí být kompilátor Java a runtime informováni o umístění $BASE_DIR, aby bylo možné třídu najít.
 - Toho je dosaženo pomocí proměnné prostředí nazvané CLASSPATH .
 - CLASSPATH je podobná jiné proměnné prostředí PATH, kterou používá příkazový shell k hledání spustitelných programů.
 
Nastavení CLASSPATH
CLASSPATH lze nastavit kterýmkoli z následujících způsobů:
- CLASSPATH lze trvale nastavit v prostředí, jak je to ve Windows
 
Přejděte na Ovládací panely -> Systém -> Upřesnit -> Proměnné prostředí.
- Chcete-li použít CLASSPATH pro všechny uživatele v systému, vyberte 'System Variables'.
 - Vyberte 'Uživatelské proměnné', chcete-li je použít pouze pro aktuálně přihlášeného uživatele.
 - Upravit nebo vytvořit CLASSPATH: Pokud CLASSPATH již existuje, vyberte jej a klikněte na 'Upravit' nebo pokud neexistuje, klikněte na 'Nový'
 - Zadejte podrobnosti CLASSPATH: Do pole 'Název proměnné' zadejte: 'CLASSPATH' Do pole 'Hodnota proměnné' zadejte adresáře a soubory JAR oddělené středníky.
 - Do pole 'Hodnota proměnné' zadejte adresáře a soubory JAR oddělené středníky. Příklad:
 
.c:javaprojectclasses;d:tomcatlibservlet-api.jar
- tečka (
.) představuje aktuální pracovní adresář. - Chcete-li zkontrolovat aktuální nastavení CLASSPATH, zadejte následující příkaz:
 
> NASTAVIT CLASSPATH
CLASSPATH lze dočasně nastavit pro tuto konkrétní relaci shellu CMD zadáním následujícího příkazu:
> SET CLASSPATH=.;c:javaprojectclasses;d:tomcatlibservlet-api.jar
Namísto použití proměnné prostředí CLASSPATH můžete také použít například volbu příkazového řádku -classpath nebo -cp příkazů javac a java
> java –classpath c:javaprojectclasses com.abc.project1.subproject2.MyClass3
Ilustrace uživatelsky definovaných balíčků: Vytváření našeho prvního balíčku: Název souboru – ClassOne.java
Javapackage package_name; public class ClassOne {  public void methodClassOne()  {  System.out.println('Hello there its ClassOne');  } } 
 Vytváříme náš druhý balíček: Název souboru – ClassTwo.java
Javapackage package_one; public class ClassTwo {  public void methodClassTwo()  {  System.out.println('Hello there i am ClassTwo');  } } 
 Využití obou vytvořených balíčků: Název souboru – 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();  } } 
 Nyní se podívejte na adresářovou strukturu jak balíčků, tak souboru testovací třídy:
  
Přístup k modifikátorům v kontextu balíčků
-     Veřejnost:   Členové s
publicmodifikátor jsou přístupné odkudkoli bez ohledu na to, zda je přistupující třída ve stejném balíčku nebo ne . - Chráněný: Členové s chráněným modifikátorem jsou přístupní v rámci stejného balíčku In podtříd
 - Výchozí: Členové bez modifikátoru jsou přístupní pouze v rámci stejného balíčku
 -     soukromé:   Členové s
privatemodifikátor jsou přístupné pouze v rámci stejné třídy. Nemohou k nim přistupovat třídy ve stejných podtřídách balíčků nebo různých balíčcích.