Dione
Z. KotalaP. Toman: Java
Predchozi (Obsah) Dalsi

12. Balφky (packages)

Balφky (packages) jsou slou╛φ k vytvß°enφ nov²ch prostor∙ jmen (namespaces) (1) a umo╛≥ujφ nap°φklad vytvß°enφ knihovnen t°φd a rozhranφ. (2) Ka╛d² balφk je obvykle reprezentovßn adresß°em (3) , 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 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. (4) ┌plnΘ jmΘno t°φdy Thread je java.lang.Thread. ┌plnΘ jmΘno statickΘ 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 balφk∙m Java Core API a aktußlnφmu adresß°i. 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.awt.Toolkit;

je mo╛nΘ volat statickou metodu:

java.awt.Toolkit.getDefaultToolkit();

rovn∞╛ jen jako:

Toolkit.getDefaultTooklit();

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 a rozhranφ 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 zajistit umφst∞nφ p°elo╛enΘho souboru do adresß°e jmΘnoBalφku.

Priklad 12.4.
Soubor Tetris.java obsahujφcφ zdrojov² text:

package game;

public class Tetris {
   // ...
}

musφ b²t p°elo╛en do adresß°e 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, (5) 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∙, p°ehrßvßnφ zvuk∙ a poskytuje p°φstup k n∞kter²m funkcφm internetovΘho prohlφ╛eΦe.

  • java.awt - obsahuje komponenty grafickΘho u╛ivatelskΘho rozhranφ (GUI) jako jsou okna, dialogy, menu, popisky, tlaΦφtka, textovß pole atd.

    • java.awt.datatransfer - obsahuje podporu pro prßci se schrßnkou (clipboardem).

    • java.awt.event - definuje rozhranφ a t°φdy pro zpracovßnφ udßlostφ, podrobn∞ji viz. A.2..

    • java.awt.image - umo╛≥uje manipulaci s obrßzky (ve spoluprßci s t°φdou java.awt.Image).

  • java.beans - definuje rozhranφ a t°φdy pro vytvß°enφ komponent podle standardu JavaBeans pou╛φvan²ch v prost°edφch vizußlnφho programovßnφ.

  • java.io - obsahuje t°φdy pro prßci s datov²mi proudy, viz kap. 15..

  • java.lang - obsahuje zßkladnφ t°φdy runtime systΘmu (Object, Thread, Compiler, Process, Runtime, Class, ClassLoader, SecurityManager, Throwable), t°φdu matemack²ch funkcφ (Math) a t°φdy obalujφcφ primitivnφ datovΘ typy (String, Void, Byte atd.).

    • java.lang.reflect - obsahuje t°φdy pro introspekci, tj. zji╣╗ovßnφ informacφ o t°φdßch a objektech.

  • java.math - balφk pro matematickΘ v²poΦty s libovolnou p°esnostφ v cel²ch (t°φda BigInteger) a desetinn²ch Φφslech (t°φda BigDecimal).

  • java.net - umo╛≥uje sφ╗ovou komunikaci prost°ednictvφm socket∙ (protokol TCP/IP).

  • java.rmi - obsahuje prost°edky pro v²voj distribuovan²ch program∙ pomocφ vzdßlenΘho spou╣t∞nφ metod (Remote Method Invocation - RMI).

    • java.rmi.dgc - implementuje distribuovan² garbage collector.

    • java.rmi.registry - poskytuje registr vzdßlen²ch objekt∙.

    • java.rmi.server - obsahuje podporu serverovΘ strany RMI.

  • java.security - obsahuje obecnΘ t°φdy a rozhranφ pro manipulaci s ve°ejn²mi a privßtnφmi klφΦi, digitßlnφmi podpisy, certifikßty atd.

    • java.security.acl - datovΘ struktury pro kontrolovan² p°φstup k prost°edk∙m (resources).

    • java.security.interfaces - poskytuje rozhranφ pro generovßnφ klφΦ∙ podle RSA (asymetrickß ╣ifra) a DSA (digitßlnφ podpisy).

  • 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.

    • java.util.zip - umo╛≥uje prßci s komprimovan²mi soubory formßtu ZIP a GZIP, generovßφ kontrolnφch souΦt∙ a CRC32.

ReferenΦnφ popis t∞chto balφk∙ a dal╣φ dokumentaci obsahuje [JDK97].


  • (1) Tzn. ╛e do dvou r∙zn²ch balφk∙ lze umφstit shodn∞ pojmenovanΘ t°φdy a rozhranφ.
  • (2) Umφst∞nφ t°φd a rozhranφ do balφk∙ mß vliv na p°φstupovß prßva (viz 11.4.).
  • (3) Je mo╛nΘ namφsto adresß°ovΘ struktury pou╛φt databßzi.
  • (4) Zßpis cesty se li╣φ podle operaΦnφho systΘmu.
  • (5) Auto°i Javy se z°ejm∞ bavφ tφm, ╛e tento nßzev obΦas zm∞nφ - v JDK 1.1.3 pln² nßzev znφ Java Platform 1.1.3 Core API.

Predchozi
Converted by Selathco v0.9 on 25.09.1999 19:46
Dalsi