12. Balíky (packages)
Balíky (packages) se v Javě nazývají knihovny tříd
a rozhraní. (1) Každý balík je obvykle
reprezentován adresářem (2) , který obsahuje přeložené třídy (soubory .class).
Vnořováním adresářů vzniká hierarchie balíků.
Část hierarchie standardního Java Core API vypadá takto:
java
|
+--- applet
+--- awt
| |
| +--- event
| +--- datatransfer
+--- io
+--- lang
+--- net
Jména adresářů odpovídají jménům balíků. Pro přístup ke třídám,
statickým metodám a členským proměnným se v balících se používá tečkové
notace:
jménoBalíku.jménoTřídy
jménoBalíku.jménoTřídy.jménoMetody ( parametry )
jménoBalíku.jménoTřídy.jménoProměnné
Složená jména se oddělují tečkou (místo lomítek u adresářů). Jméno
včetně balíku specifikuje úplné jméno (fully qualified name).
Priklad 12.1. |
Soubor Thread.class je uložen v adresáři java/lang. (3) Úplné
jméno třídy Thread je java.lang.Thread. Úplné jméno metody currentThread() obsažené v této třídě je java.lang.Thread.currentThread().
|
Cestu k balíkům udává systémová proměnná CLASSPATH Ta standardně
obsahuje pouze cestu k aktuálnímu adresáři a k balíkům Java Core API.
Změna nastavení CLASSPATH viz D.1..
12.1. Import tříd
Protože psaní úplných jmen v programu je zdlouhavé, umožňuje Java používat
neúplná (jednoduchá) jména (simple names). Na začátku
zdrojového souboru je potřeba rozšířit rozsah platnosti identifikátorů na
požadované třídy. K tomu slouží klíčové slovo import:
import úplnéJménoTřídy ;
Priklad 12.2. |
Po importu:
import java.lang.Thread;
je možné volat statickou metodu:
java.lang.Thread.currentThread()
pouze jako:
Thread.currentThread()
|
Importu více tříd jedním příkazem se docílí pomocí znaku "*" - tzv. import na žádost (import on demand):
import jménoBalíku.*;
Pokud by však docházelo ke kolizi jmen (dvě stejně pojmenované třídy
v různých balících), je třeba pro rozlišení použít úplná jména, jinak
ohlásí překladač chybu.
Priklad 12.3. |
Importu všech potřebných tříd z balíku java.applet
se dosáhne pomocí:
import java.applet.*;
|
V každém zdrojovém textu je automaticky proveden import všech tříd z balíku
java.lang (viz 12.3.).
12.2. Vytváření balíků
Java umožňuje programátorovi vytvářet vlastní balíky. Na začátku zdrojového
souboru je pouze třeba uvést:
package jménoBalíku ;
a před překladem zdrojový soubor nahrát do adresáře jménoBalíku.
Priklad 12.4. |
Soubor Doom3D.java obsahující zdrojový text:
package game;
public class Doom3D {
// ...
}
musí být přeložen v adresáři game.
|
Je třeba zdůraznit, že všechny třídy, u kterých není specifikován balík,
patří automaticky do jednoho(!) implicitního balíku (default
package).
12.3. Java Core API
Java Platforma obsahuje standardní aplikační rozhraní, tzv. Java Core
API, (4) přičemž
počet obsažených balíků (a tříd) s každou major nebo
minor verzí (viz 4.1.1.) roste.
Zde je přehled balíků z Java Core API v JDK 1.1:
- java.applet - umožňuje tvorbu appletů, poskytuje přístup
k některým funkcím Internetového prohlížeče a umožňuje přehrávání zvuků.
- java.awt - obsahuje komponenty grafického uživatelského rozhraní
(GUI), jako jsou okna, dialogy, menu, tlačítka, a dále obsahuje balíky datatransfer - pro práci se schránkou (clipboardem), event - pro
zpracování požadavků uživatele (klávesnice a myš) a image - pro
manipulaci s grafickými formáty GIF a JPEG. Podrobněji viz příloha A..
- java.beans - definuje rozhraní a třídy pro vytváření komponent
používaných v prostředích vizuálního programování (RAD).
- java.io - obsahuje třídy pro práci s datovými proudy, viz
kap. 15..
- java.lang - obsahuje základní třídy pro fungování programů
(Object, Thread, Compiler, Process, Runtime,
Class, ClassLoader, SecurityManager, Throwable),
matematiku (Math) a třídy reprezentující základní datové typy (String, Void, Byte atd.). Podbalík reflect obsahuje třídy
pro inspekci datových typů.
- java.math - umožňuje práci s velkými čísly.
- java.net - umožňuje síĽovou komunikaci pomocí TCP/IP, a zadávání
adres ve formátru URL.
- java.rmi - obsahuje prostředky pro vývoj distribuovaných
programů pomocí vzdáleného spouštění metod (Remote Method
Invocation).
- java.security - definuje třídy pro zajištění bezpečnosti (přístup
k objektům).
- java.sql - umožňuje připojení a práci s SQL databázemi pomocí
ovladačů JDBC (Java DataBase Connectivity).
- java.text - umožňuje práci s textem (formátování, parsing atd.)
- java.util - obsahuje pomocné třídy několika základních
programových struktur (zásobník, slovník, hašovací tabulka), generování
náhodných čísel a manipulaci s řetězci, a dále balík zip umožňuje práci
s komprimovanými soubory.
Referenční popis těchto balíků obsahuje [JDK97].
|