P. TomanZ. Kotala: Java
Predchozi (Obsah) Dalsi

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.*;

Pozn.: 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].



Predchozi
Converted by Selathco 0.85 on 08.02.1999 05:00
Dalsi