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