Přílohy
10. Přílohy Příloha 1 – Java SDK od firmy Sun Firma SUN v současné době nabízí na http://java.sun.com/ tři verze vývojového prostředí (SDK – Software Development Kit) pro Javu: -
Java 2 Standard Edition – určeno pro vývoj "běžných" aplikací v Javě, která je nyní k dispozici ve verzi 1.3.1 pro tří prostředí: 32-bitová Windows, Sun Solaris a Linux, dokumentace je k dispozici v HTML formátu,
-
Java 2 Enterprise Edition – určeno pro vývoj celopodnikových aplikací pro různé platformy,
-
Java 2 Micro Edition – určeno pro vývoj aplikací v Javě pro "malá" zařízení (handheldy, ...),
Instalace vývojového prostředí pro Javu je v prostředí Windows jednoduché – z WWW stránky se stáhne instalační soubor (program.exe o velikosti přibližně 30MB) a ten se spustí. Je vhodné si nastavit do proměnné PATH adresář se spustitelnými programy (obvykle C:\JDK1.3\BIN), aby jejich spouštění bylo jednodušší. Firma SUN dále nabízí RunTime Environment,což je prostředí pro spouštění již přeložených aplikací v Javě, součástí je i tzv. Java Plug-In – podpora pro spouštění apletů v aktuálních verzích WWW prohlížečů, RunTime prostředí je k dispozici ve dvou verzích – US English verzi a v mezinárodní (Internationalized) verzi. Na stránkách http://java.sun.com/ jsou dále k dispozici různé další knihovny a doplňky k jazyku Java (např. knihovna pro šifrování, knihovna pro zpracování pošty, prostředí pro servlety a JSP).
Vytvoření a spuštění programu, V příkazu java se udává jméno třídy, ve které spustí metodu třídy main. Příslušný soubor třídy (soubor .class) se vyhledává ve standardní knihovně javy (rt.jar) a v aktuálním adresáři. Pokud je definována proměnná CLASSPATH, hledá se příslušná třída i v adresářích a archivech uvedených v této proměnné. Pokud je v definici třídy uveden balík (package), musí se jméno třídy uvést včetně celého jména balíku15. V tomto případě musí být příslušný soubor .class v odpovídajícím podadresáři. Vysvětlíme si to na následujícím příkladě: Nechť je definována následující struktura adresářů C:\java \cz \vse \it_112 a v posledním adresáři nechť je přeložený program pole.class, který má definován package cz.vse.it_112; 15
V tomto pravidle je jedna výjimka – jméno balíku se nemusí uvádět v případě třídy java.lang. 89
Přílohy poté lze spustit tento program jedním z následujících způsobů: java cz.vse.it_112.pole tato varianta spuštění je úspěšná při splnění aspoň jednoho z následujících předpokladů: proměnná prostředí CLASSPATH se odkazuje na adresář C:\JAVA příkaz se zadá v adresáři C:\JAVA, java cz/vse/it_112/pole ve jménu třídy lze nahradit tečky lomítky java –cp c:\java cz.vse.it_112.pole cesta ke třídě se uvede na příkazové řádce. Následující způsoby spuštění jsou chybné: java cz\vse\it_112\pole
- obrácená lomítka
java pole
- není celý název třídy
java cz.vse.it_112.Pole
- velké písmeno místo malého
v těchto případech vypadá chybové hlášení následovně: Exception in thread "main" java.lang.NoClassDefFoundError: pole (wrong name: cz/vse/it_112/pole) at java.lang.ClassLoader.defineClass0(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:403) at java.security.SecureClassLoader.defineClass (SecureClassLoader.java:101) at java.net.URLClassLoader.defineClass (URLClassLoader.java:248) at java.net.URLClassLoader.access$1(URLClassLoader.java:216) at java.net.URLClassLoader$1.run(URLClassLoader.java:197) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:191) at java.lang.ClassLoader.loadClass(ClassLoader.java:280) at sun.misc.Launcher$AppClassLoader.loadClass (Launcher.java:275) at java.lang.ClassLoader.loadClass(ClassLoader.java:237) Pokud se soubor s příslušným jménem nenajde, vypadá chybové hlášení následovně (následující chyba vznikla po zadání příkazu java cz/vse/it_112/pole1, přičemž neexistuje soubor pole1.class): Exception in thread "main" java.lang.NoClassDefFoundError: cz/vse/it_112/pole1 V případě mnohých aplikací v Javě je vhodné si pro jejich spouštění vytvořit dávkový soubor. Např. pro spouštění programu Jindent může dávkový soubor jindent.bat obsahovat následující řádek: java –cp c:\javautil\jindent.jar Jindent –cr –w –f %1
Programy obsažené v Java SDK od firmy SUN javac - příkazem javac se spouští překladač, který zkontroluje syntaxi vytvořeného programu a v případě, že je bez syntaktických chyb, vytvoří bytecode tj. soubory s koncovkou class (z jednoho souboru s koncovkou java vznikne tolik souborů s koncovkou class kolik obsahuje tříd včetně vnitřních). 90
Přílohy java – příkaz ke spouštění aplikací, má dvě základní syntaxe: java [volby] jméno_třídy [parametry] java [volby] –jar archiv.jar [parametry] V první variantě je parametrem jméno třídy – tato třída musí obsahovat metodu public static void main (String args[]) která se spustí a které se předají případné parametry z příkazové řádky. V druhé variantě se spouští aplikace uložená v archivu jar – podrobněji je to popsáno v příloze číslo 4. Z voleb je nejdůležitější specifikace adresářů a jar souborů, ve kterých se mají vyhledávat jednotlivé třídy (soubory class) – to se provádí pomocí volby –classpath (či zkráceně –cp). Adresáře a archivy lze též specifikovat pomocí environment proměnné CLASSPATH. Následuje ukázka dávkového souboru pro spouštění programu bluej, který hledá jednotlivé třídy ve 4 souborech jar (a v archivu rt.jar, který obsahuje základní třídy a který se prohledává automaticky): set CLASSPATH=c:\bluej\lib\bluej.jar;c:\bluej\lib\editor.jar set CLASSPATH=%CLASSPATH%;c:\bluej\lib\antlr.jar; set CLASSPATH=%CLASSPATH%;C:\jdk1.3\lib\tools.jar C:\jdk1.3\bin\java bluej.Main %1 %2 %3 %4 %5 %6 %7 %8 %9 javaw – stejný příkaz jako java s tím rozdílem, že se nevytváří konzolový vstup/výstup. Obvykle se používá pro spouštění grafických aplikací. appletviewer – program pro testování apletů, javadoc – program slouží pro dokumentování vytvořených tříd z komentářů vložených do zdrojového textu programu, ukázka použití je uvedena v příloze č. 3. jar – tento program slouží pro vytváření archivů .jar, které obsahují větší množství tříd a jsou zkompresovány. Použití archivů jar umožňuje rychlejší provádění programů (méně souborů, menší objem) a jednodušší distribuci aplikací (jeden soubor). Podrobnější popis programu jar je v příloze 4. javap - The Java Class File Disassembler – umožňuje metody a proměnné přeloženého programu (souboru .class) a s parametrem –c převést tento soubor do čitelné formy. Od jiných výrobců jsou k dispozici nástroje pro převod souborů .class do zdrojového textu. Ve většině vývojových prostředí i jako samostatné produkty jsou k dispozici nástroje, které mají za úkol zabránit zpětnému generování zdrojového kódu – pro tuto činnost se v Javě používá pojem obfuscate (zatemnit, poplést). jdb – Java Debugger – je přes příkazovou řádku ovládaný jednoduchý nástroj pro krokování programů v Javě, který umožňuje definovat zarážky (breakpoints) a vypisovat obsahy proměnných. Grafická vývojová prostředí obvykle obsahují komfortnější možnosti pro krokování programu. keytool, jarsigner a policytool slouží k zabezpečení vytvořených aplikací v Javě – program keytool generuje dvojice klíčů a vytváří self-signed certifikáty dle X.509 v1, dále spravuje klíče uložené v zásobníku klíčů (keystore). Klíče a certifikáty se používají k digitálnímu podepisování vytvořených aplikací a apletů. Jarsigner digitálně podepisuje aplikace v souboru JAR a umožňuje v souborech JAR zkontrolovat digitální podpisy. K tomu využívá uživatelský zásobník klíčů.
91
Přílohy rmic, rmid, rmiregistry a serialver – tyto programy se používají při tvorbě a ladění vzdálených procedur vytvářených dle specifikace Remote method invocation (RMI), javah – generování hlavičkových souborů objektů potřebných k tomu, aby se k nim dalo přistupovat z jazyka C, pokud se při volání z jazyka C postupuje dle specifikace JNI (Java Native Interface) nejsou hlavičkové soubory obvykle potřeba.
92
Přílohy
Příloha 2 – Popis originální dokumentace Javy od firmy SUN
Jméno třídy Hierarchie třídy Implementovaná rozhraní
Úplná hlavička třídy
Dostupné proměnné třídy. Typy a modifikátory proměnných. Přehled konstruktorů třídy. Přehled veřejných (public) a protected metod třídy.
V prvním sloupci je uveden typ návratové hodnoty a případné modifikátory (static, protected, final, ...)
Ve druhém sloupci jsou uvedeny názvy metod, parametry a stručný popis. Všimněte si, že přetížené metody (např. compareTo) jsou uvedeny vícekrát.
93
Přílohy
Přehled metod zdědených z předků. Následuje popis jednotlivých proměnných, konstruktorů a metod.
Ukázka popisu jedné metody na příkladu metody valueOf.
Úplné hlavičky metody.
Popis metody.
Popis parametrů metody. Popis návratové hodnoty.
94
Seznam výjimek, které v metodě mohou vzniknout.
Přílohy
Příloha 3 - Konvence pro psaní programů v Javě V této příloze jsou popsané konvence pro psaní programů v Javě založené na standardech firmy SUN. Jejich cílem je usnadnit čtení programů vytvořených jinými osobami a omezení některých chyb, které mohou vznikat z nepozornosti.
Jména souborů Pro přípony souborů existují následující standardy: Java source
.java
Java bytecode
.class
Java archive
.jar
Součástí každého adresáře by měl být soubor README či index.html, ve kterém je popsán obsah adresáře.
Struktura zdrojového souboru Javy Soubory by neměly mít více než 2000 řádek. Každý zdrojový soubor obsahuje jednu veřejnou třídu/rozhraní. Veřejná třída by měla předcházet privátní třídy a rozhraní v tomto souboru. Zdrojový soubor by se měl skládat z následujících části: -
úvodní komentáře, které by měly obsahovat název souboru, historii změn a případné autorské údaje, viz příklad:
/* * File: Kniha.java * * 21 jan 2001 xabcd01 * 26 jan 2001 xabcd01 */
prvni verze doplnena metoda vlozISBN
-
příkazy package a import
-
vlastní třídy a rozhraní včetně popisu jednotlivých tříd/rozhraní a metod. Následující tabulka obsahuje přehled jednotlivých částí třídy/rozhraní v doporučeném pořadí: Část deklarace třídy/rozhraní dokumentace k třídě/rozhraní (/** .... */) příkaz class nebo interface komentáře k implementaci třídy/rozhraní (pokud jsou potřeba) proměnné třídy (static) proměnné instance konstruktory metody
Poznámky popisy a komentáře, které převezme Javadoc komentáře k implementaci celé třídy, u kterých není vhodné, aby byly v dokumentaci generované pomocí Javadoc v pořadí public, protected, standardní (tj. bez modifikátorů přístupu) a nakonec private ve stejném pořadí, jako proměnné třídy metody by měly být seřazeny dle funkční příbuznosti, tak aby čtení bylo snazší
95
Přílohy Zarovnávání, odsazování Odsazovat by se mělo po 4 mezerách. Jednotlivé řádky by neměly být delší než 80 znaků, neboť poté jsou obtížně zobrazované na mnoha terminálech či v některých nástrojích. Řádky je vhodné rozdělovat za čárkou či před operátorem.
Komentáře Rozlišují se dva typy komentářů: -
dokumentační, které se zahrnují do dokumentace vytvářené programem Javadoc (/** .... */),
-
implementační, které se podobají komentářům z C++ (/* ....*/ a //)
Dokumentační komentáře musí být uvedeny před každou deklarací třídy, metody, rozhraní či proměnné, které mají modifikátor přístupu public či protected. Začínají znaky /** a končí znaky */. Text může obsahovat formátovací znaky HTML a speciální příznaky pro Javadoc: @author
jméno-autora třídy
@version
číselné označení verze třídy
@see
odkaz na jinou třídu/metodu či na nějaké URL
@param
jméno_parametru
@return
popis návratové hodnoty z metody
@exception
jméno_výjimky
popis parametru popis výjimky, která může nastat v metodě
Následuje příklad dokumentačních komentářů: /** * Tato trida slouzi ke generovani vystupu s ruznymi zpusoby * kodovani ceskych znaku * *@author xabcd01 *@created 27. may 2001 */ public class Unicode { /** *obsahuje seznam ceskych znaku v kodovani Unicode v notaci Javy */ public static final String retezec = "\u00e1\u00c1\u00e9 ..."; /** * metoda main dle prvniho parametru prikazove radky vytiskne .* retezec na standardni vystup v pozadovanem kodovani * *@param ARGS prvni parametr prikazove radky obsahuje retezec * specifikujici pozadovane kodovani .*@see Supported Encoding v dokumentaci JDK */ public static void main(String ARGS[]) { ... Příkaz javadoc Unicode.html vygeneruje dokumentaci ve formátu html.
96
Přílohy Implementační komentáře slouží ke komentování implementace třídy a měly by se používat v případě, kdy slouží ke lepšímu čtení či porozumění kódu. Neměly by duplikovat informace, které lze snadno vyčíst z vlastního kódu. Potřeba psát implementační komentáře je někdy příznakem nízké kvality návrhu kódu – v tomto případě je vhodnější přepsat kód. Následují příklady implementačních komentářů: /* * komentář, který je na více * řádcích */ /* jednořádkový komentář */ příkaz
// komentář, který končí na konci řádku
Deklarace Na každém řádku by měla být uvedena deklarace pouze jedné proměnné: int velikost;
// velikost souboru
Součásti deklarace by měla být i inicializace s výjimkou případů, kdy počáteční hodnota závisí na nějaké operaci. Deklarace by měly být na začátku bloku (na začátku metody, na začátku třídy, ...) a ne až před prvním použitím. Pro toto pravidlo existuje jedna výjimka – řídící proměnná cyklu u příkazu for: for (int i = 0; i < maxLoops; i++) { ... }
Příkazy Na každém řádku by měl být pokud možno jen jeden příkaz. Následují doporučené způsoby formátování jednotlivých jazykových konstrukcí: if (podmínka) { příkazy } else { příkazy } while (podmínka) { příkazy } try { příkazy; } catch (ExceptionClass e) { příkazy; } finally { příkazy; }
97
Přílohy
Mezery Prázdné řádky zvyšují čitelnost kódu, pokud oddělují logické celky. Okolo operátorů (+ - * = ...) by měly být na obou stranách mezery. Mezery by měly být i před a za závorkou.
Konvence pro pojmenovávání Typ identiPravidlo pro pojmenování fikátoru balík (package) jméno balíku by mělo obsahovat na začátku jméno domény organizace v obráceném pořadí (cz.vse, com.sun), další strukturování záleží na vnitřních konvencích organizace, jméno by mělo obsahovat pouze malá písmena, třída (class) jméno třídy by mělo být podstatné jméno (více podstatných a přídavných jmen) začínající velkým písmenem rozhraní obdobně jako u třídy (interface) metoda jméno metody by mělo obsahovat sloveso, mělo by začínat malým písmenem, další slova v názvu by měla začínat velkým písmenem proměnná jméno proměnné by mělo začínat malým písmenem, pokud obsahuje více slov, tak další by měla začínat velkým písmenem, jméno proměnné by nemělo obsahovat znaky $ a _, jméno proměnné by mělo vyjadřovat obsah, neměly by se používat jednoznaková jména s výjimkou řídících proměnných cyklů typu integer (proměnné i, j, k, l, m, n) konstanta jména konstant by měla být složena z velkých písmen, pro oddělení slov je použito podtržítko _
98
Příklady com.sun.eng org.acm.sequin.pretty cz.vse.xabcd01.ukol2 org.gjt.mm.mysql class Kniha; class Casopis; class VstupniSchranka; interface Publikace; interface Schranka; vratMax(); ulozDelku(); nactiVetu(); Date datumNarozeni; int pocetVet; float studijniPrumer; int i;
static final int MIN_WIDTH = 4; static final int GET_THE_CPU = 1;
Přílohy
Příloha 4 – Jar – vytváření a používání archivů Formát souborů JAR (Java Archive), které se používají pro seskupování více souborů (většinou soubory .class, mohou být i další) do jednoho zkompresovaného, je odvozen z formátu souborů ZIP. Soubory JAR jsou přenositelné mezi jednotlivými platformami a mohou obsahovat další doplňující informace o vložených souborech – používá k tomu tzv. „manifest“ soubor (METAINF\MANIFEST.MF) a případně soubory s digitálními podpisy (META-INF\*.SF). Soubory JAR se vytvářejí pomocí programu jar, který je součástí Java SDK. Program jar má parametry příkazové řádky odvozené od archivačního program tar, který se používá v unixových operačních systémech, a vypadá následovně: jar [volby] archiv vstupní_soubor[y] Volby jsou následující: C U T X
x soubor F
V
0 m manifest M
bude se vytvářet archiv (create) existující archiv se bude aktualizovat (přidávat či měnit soubory) vypíše se obsah existujícího archivu (table of contents) soubory z archivu se zapíší do aktuálního adresáře a případně do podadresářů (extract) z archivu se vypíše pouze zadaný soubor je zadán vstupní/výstupní archiv (jeho jméno je nutné uvádět i s koncovkou .jar), pokud není uveden tento parametr, použije se standardní vstup (s parametrem x či t) nebo standardní výstup (při vytváření) na obrazovce zobrazuje podrobněji svoji činnost (verbose) soubory se pouze vkládají, nekompresují uživatelem vytvořený soubor manifest je uveden na příkazové řádce nebude se vytvářet soubor MANIFEST.MF
Příklady použití: vytvoření archivu: jar cvf mujArchiv.jar *.class jar cvf it_112.jar cz\vse\it_112\*.class aktualizace archivu jar uvf it_112.jar cz\vse\it_112\*.class výpis obsahu archivu jar tvf it_112.jar extrahování souboru z archivu do aktuálního adresáře a podadresářů jar xvf it_112.jar vytvoření archivu včetně vlastního manifest souboru jar cvfm mujManifest.mf mujArchiv.jar *.class
99
Přílohy Do jar archivu lze vkládat (a z něho používat) i obrázky a zvukové soubory. Soubor jar lze specifikovat v proměnné CLASSPATH pro vyhledávání tříd (souborů .class): set CLASSPATH=”mujArchiv.jar;it_112.jar;.” - java bude vyhledávat soubory .class i v archivech mujArchiv.jar, it_112.jar a v aktuálním adresáři (a samozřejmě ve standardním archivu jre\lib\rt.jar). Následují dva příklady použití souborů jar v appletu:
V pomocném souboru MANIFEST.MF v archivu jar mohou být uloženy informace o verzích tříd, digitální podpisy tříd a některé další. Zde si popíšeme, jak vytvořit spustitelný archiv. Pokud máte aplikaci zabalenou v souboru JAR, potřebujete v souboru Manifest.mf označit třídu, která se má spouštět (tj. třídu, ze které se má spustit metoda public static void main (String[] args)). Toho se docílí řádkem: Main-Class: třída v Manifest souboru, který se vloží programem jar do archivu. Vlastní spuštění aplikace poté proběhne následujícím příkazem java –jar archiv.jar
100
Přílohy
Příloha 5 - Kódování českých znaků v Javě V souvislosti s Javou se můžete setkat s následujícími způsoby kódování českých znaků: -
Unicode – pro každý znak se používá 16 bitů, toto kódování používá Java vnitřně, pokud chcete zadat znak v tomto kódování v řetězci, je nutné mu předřadit znaky \u,
-
UTF-8 – jedná se v podstatě o jiný způsob zápisu znaků Unicode (obdobně jako zápis \u....), přičemž se používá proměnlivá délka pro jednotlivé znaky (přibližně lze říct, že pro znaky anglické abecedy se používá jeden byte, pro znaky dalších hláskových abeced dva byte, pro znaky obrázkových abeced se používají tři byte). Existuje jednoznačný algoritmus pro převod mezi UTF8 a Unicode. Kódování UTF-8 se výrazně prosazuje v protokolech na Internetu i v Unixu.
-
CP1250 – kódování znaků středo a východoevropských národů nepoužívajících azbuku v MS Windows,
-
ISO8859_2 – mezinárodní standard kódování znaků středo a východoevropských národů nepoužívajících azbuku, používá se např. v Unixu a v některých protokolech na Internetu,
-
CP852 – kódování znaků středo a východoevropských národů nepoužívajících azbuku v DOSu (standard IBM používaný i firmou Microsoft),
-
MacCentralEurope – kódování znaků středo a východoevropských národů nepoužívajících azbuku na MacIntoshi,
znak Unicode hex. zápis á 00e1 Á 00c1 č 010d Č 010c ď 010f Ď 010e é 00e9 É 00c9 ě 011b Ě 011a í 00ed Í 00cd ň 0148 Ň 0147 ó 00f3 Ó 00d3 ř 0159 Ř 0158 š 0161 Š 0160 ť 0165 Ť 0164
Unicode zápis v Javě \u00e1 \u00c1 \u010d \u010c \u010f \u010e \u00e9 \u00c9 \u011b \u011a \u00ed \u00cd \u0148 \u0147 \u00f3 \u00d3 \u0159 \u0158 \u0161 \u0160 \u0165 \u0164
UTF-8 hex. zápis c3a1 c381 c48d c48c c48f c48e c3a9 c389 c49b c49a c3ad c38d c588 c587 c3b3 c393 c599 c598 c5a1 c5a0 c5a5 c5a4
CP1250 hex. zápis e1 c1 e8 c8 ef cf e9 c9 ec cc ed cd f2 d2 f3 d3 f8 d8 9a 8a 9d 8d
ISO8859_2 hex. zápis e1 c1 e8 c8 ef cf e9 c9 ec cc ed cd f2 d2 f3 d3 f8 d8 b9 a9 bb ab
CP852 hex. zápis a0 b5 9f ac d4 d2 82 90 d8 b7 a1 d6 e5 d5 a2 e0 fd fc e7 e6 9c 9b
MacCentralEurope 87 E7 8B 89 93 91 8E 83 9E 9D 92 EA CB C5 97 EE DE DB E4 E1 E9 E8
101
Přílohy ú Ú ů Ů ý Ý ž Ž a A
00fa 00da 016f 016e 00fd 00dd 017e 017d 0061 0041
\u00fa \u00da \u016f \u016e \u00fd \u00dd \u017e \u017d a A
c3ba c39a c5af c5ae c3bd c39d c5be c5bd 61 41
fa da f9 d9 fd dd 9e 8e 61 41
fa da f9 d9 fd dd be ae 61 41
a3 e9 85 de ec ed a7 a6 61 41
9C F2 F3 F1 F9 F8 EC EB 61 41
Pokud ve zdrojovém textu programu jsou v řetězci použity národní znaky, překladač javac odhaduje jejich kódování dle svého prostředí – tj. např. v českých Windows (i v DOS okně) kódování CP1250, v Unixu v závislosti na nastavení locales (ISO8859_2 nebo často ISO8859_1). Proto je z důvodů přenositelnosti vhodnější psát národní znaky v Unicodu (tj. např. á ve tvaru \u00e1). Při běhu javovských programů se též provádí konverze znaků – vstupu do kódování Unicode a výstupu z kódování Unicode. Z kterého a do kterého kódu se převádí záleží opět na prostředí, ve kterém se program spouští. Aktuálně používanou kódovou stránku lze vypsat pomocí System.getProperty("file.encoding"). Třídy InputStream, OutputStream a jejich potomci mají problémy při zpracování textových vstupů/výstupů s ohledem na správné konverze kódů a z tohoto důvodů v Javě 1.1 přibyly třídy Reader a Writer. Programátor má možnost určit znakovou sadu v konstruktorech tříd InputStreamReader a OutputStreamWriter. V instancích těchto tříd lze též zjistit aktuální znakovou sadu metodou getEncoding(). Pro třídění řetězců s národními znaky dle českých pravidel se používá třída Collator. Další podrobnosti o kódování a lokalizaci programu lze nalézt v dokumentaci JDK.
102
Přílohy
Příloha 6 - Seznam termínů a zkratek Termín Abstraktní metoda -
Definice pouze deklarace metody v abstraktní třídě, v potomcích této třídy musí být metoda naimplementována
Abstraktní třída
třída sloužící jako předek několika tříd jejichž společné vlastnosti představuje, obsahuje abstraktní metody, nelze vytvářet instance této třídy pomocí vlastního konstruktoru
Anonymní vnitřní třída
nepojmenovaná vnitřní třída, obvykle definovaná na místě parametru metody vnější třídy
Applet
programy běžící v rámci WWW stránky na stanici klienta v prohlížeči
Balík (package)
pojmenovaná knihovna tříd a rozhraní
Datový typ proměnné
označuje typ dat uložených v proměnné např. číslo, text, instanci konkrétní třídy
Dědičnost
vztah mezi třídami, umožňuje k základní třídě (předkovi) přidat další vlastnosti a vytvořit tak odvozenou třídu (potomka)
Dynamické datové struktury (kontejnery)
třídy, jejichž instance slouží k uložení odkazů na předem neznámý počet instancí jiných tříd
Garbage collector (čistič paměti)
speciální proces, který se stará o uvolńování nepotřebných objektů z paměti
GUI (Graphic User Interface)
grafické uživatelské rozhraní
Hodnota proměnné
vlastní obsah proměnné
HTML (Hypertext Markup Language)
jazyk pro vytváření hypertextových dokumentů
Identifikátor proměnné
pojmenování proměnné
Iterátor (Iterator)
objekt, jehož úkolem je zpřístupnit prvky kontejneru
Java
objektově orientovaný programovací jazyk
Java archive (JAR)
archiv přeložených tříd a doplňujících souborů, používá se při distribuci aplikací
Java bytecode
mezikód vytvořený překladačem, který je interpretován JVM
Javadoc
program sloužící pro vytváření programátorské dokumentace tříd ve formátu HTML
JDK (Java Development Kit)
základní prostředí pro vytváření a spouštění programů v Javě
JVM (Java Virtual Machine)
platforma pro spuštění aplikací v Javě (zajišťuje vazbu na HW a OS a interpretuje bytecode)
103
Přílohy Termín
Definice
Kolekce (Collection)
lineární dynamická datová struktura
Konstanta
proměnná jejíž hodnota se nemění
Konstruktor
speciální metoda pro vytváření instancí tříd
Mapa (Map) – též asociativní pole nebo
kontejner, který umožňuje ukládat dvojice klíč a hodnotu, klíč
slovník (Dictionary)
musí být jednoznačný
Metoda
funkční složka objektu, pomocí metod popisujeme činnost objektů
Metoda instance
metoda, která se provádí pro konkrétní instanci třídy, bez existence instance není možno ji spustit
Metoda třídy
metoda, kterou je možno spustit bez existence instance,spouští se se jménem třídy
Množina (Set)
lineární dynamická datová struktura, ve které má každý prvek jedinečnou hodnotu
Modifikátor třídy
klíčové slovo uvedené před slovem class určující další vlastnosti třídy
Objekt
představuje souhrn dat a činností, které od něj můžeme žádat. Každý objekt má určité rozhraní, prostřednictvím kterého komunikuje s jinými objekty.
Polymorfismus
možnost využívat v programovém kódu stejnou syntaktickou podobu pro metody s různou vnitřní reprezentací
Proměnná
proměnnou určují tři části: identifikátor, datový typ a vlastní hodnota proměnné,
Přetečení proměnné
týká se numerických proměnných a označuje stav, kdy při aritmetické operaci dojde k překročení rozsahu této proměnné
Přetěžování metod (overloading)
možnost vytvořit v jedné třídě více metod stejného jména, které se liší počtem nebo pořadím nebo typem parametrů
Přetypování
změna/upřesnění datového typu proměnné
Rozhraní (interface)
definuje hlavičky metod, které musí každá třída implementující toto rozhraní naimplementovat
Servlet
programy běžící na WWW serveru
Seznam (List)
lineární dynamická datová struktura, ve které se hodnoty jednotlivých prvků mohou opakovat
Třída (class)
je obecný popis vlastností a činností objektů
UML (Unified Modelling Language)
standard pro zápis/zobrazení objektových modelů
104
Přílohy Termín Unicode
Definice rozšířená znaková sada využívající 16 bitů pro uložení jednotlivých znaků
URL (Uniform Resource Location)
identifikátor označující umístění dokumentu v rámci Internetu
UTF8
pravděpodobně nejrozšířenější způsob zápisu/přepisu/přenosu znaků v Unicode pomocí "běžných" znaků, standard v rámci Internetu
Vnitřní třída
třída definovaná uvnitř jiné třídy
Vstupní a výstupní proudy (Input/Output
zobecnění vstupů a výstupů
streams) Výjimka (exception)
chybový stav, který narušuje běžný postup zpracování metody
Zapouzdření
vlastnost tříd a instancí, možnost skrýt implementaci třídy a poskytnout uživateli rozhraní potřebné pro použití třídy
105
Přílohy
Literatura a odkazy Literatura Chan M.C., Griffith S. W., Iasi A. F.: 1001 tipů Java. Unis Publishing 1997. ISBN 80-86097-11-0. Eckel B.: Thinking in Java. Prentice Hall, 1998. ISBN 0-13-659723-8. Eckel B.: Thinking in Java 2nd Edition. Prentice Hall, 2000. ISBN 0-13-027363-5. Eckel B.: Myslíme v jazyku Java, knihovna programátora. První část překladu anglického originálu. Grada Publishing, 2001. ISBN 80-247-9010-6. Eckel B.: Myslíme v jazyku Java, knihovna zkušeného programátora. Druhá část překladu anglického originálu. Grada Publishing, 2001. ISBN 80-247-0027-1. Grand M.: Java - Referenční příručka jazyka. Druhé vydání. Computer Press 1998. ISBN 80-7226071-5. Herout P.: Učebnice jazyka Java. Kopp 2000. ISBN 80-7232-115-3. Rowe G. W.: An Introduction to Data Structures and Algorithms with Java. Prentice Hall 1998. ISBN 0-13-857749-8. Virius M., Štrupl D.: JBuilder verze 3, podrobný průvodce. Grada Publishing 1999. ISBN 80-7169890-3.
Informace o Javě na Internetu java.sun.com/j2se/1.3/docs/ on-line dostupná dokumentace JDK od firmy SUN, java.sun.com/docs/books/tutorial/index.html tutoriál k výuce Javy od firmy SUN, je provázán s on-line dokumentací, www.bruceeckel.com zde jsou volně ke stažení knihy B. Eckela týkající se jazyků Java a C++, java.sun.com informace o Javě od firmy SUN, www.javaworld.com na tomto serveru lze najít množství informací pro vývojáře v Javě, www.javalobby.com zpravodajský server specializovaný na oblast Javy, www.jars.com server s velkým množstvím aplikací a knihoven objektů v Javě, www.ibm.com/java www stránky firmy IBM zaměřené na Javu, kde jsou k dispozici různé produkty pro Javu, výukové kursy zaměřené na Javu i mnoho informací pro vývojáře v Javě,
106
Přílohy Vývojová prostředí a nástroje pro Javu Java SDK (java.sun.com ….) Firma SUN vytváří základní vývojová prostředí pro jazyk Java pro operační systémy Solaris, Linux a Windows 9x/NT/2000. Další firmy vytvářejí vývojová prostředí pro další operační systémy (např. IBM). Nad těmito základními vývojovými prostředími vznikají grafická vývojová prostředí dalších firem, která umožňují pohodlnější vývoj aplikací. BlueJ (www.bluej.org) Grafická nadstavba nad Java SDK, určená pro výuku Javy (se zaměřením na definici objektů a vazeb mezi objekty) napsaná na univerzitě Monash v Austrálii. V poslední verzi umožňuje dokumentovat vazby mezi objekty pomocí UML. JBuilder (www.borland.com) Firma Inprise/Borland nyní uvolnila základní verzi svého produktu k bezplatnému používání. Verze Professional a Enterprise jsou rozšířené o další vývojové nástroje pro vytváření rozsáhlých aplikací. NetBeans (www.netbeans.org) Vývojové prostředí vytvořené českou firmou NetBeans, nyní rozvíjené jako OpenSource. Forte (forte.sun.com) Vývojové prostředí založené na NetBeans vyvíjené a distribuované pod hlavičkou firmy SUN. Základní verze je distribuována zdarma. IBM VisualJava (www.ibm.com/java) Kvalitní vývojové prostředí od firmy IBM, jejíž základní verze (s omezením na 800 objektů) je volně ke stažení. Jikes (www.ibm.com/developerworks/opensource) Překladač (náhrada programu javac, k používání potřebuje nainstalovaný Java SDK) od firmy IBM, který se šíří pod GNU licencí. Tento překladač je rychlejší a méně náročný na výkonnost počítače než javac z Java SDK. Program Jikes používá stejné parametry na příkazové řádce jako javac, z rozšíření doporučuji prostudovat parametr ++ (překlad v inkrementálním režimu, který ještě více zrychluje překlad při vývoji aplikace) a +P, kdy překladač kontroluje některé další chyby. Výstup je často menší, než výstup překladače javac – program jikes nezahrnuje do výstupu kód, který se nepoužívá. Jlint (www.ispras.ru/~knizhnik) V distribuci se nacházejí dva programy. Program antic, který hledá problematické konstrukce ve zdrojovém souboru (např. chybějící závorky v matematických výrazech, chyby v konstrukci case …). Druhý program jlint hledá v přeloženém programu (v bytecodu) podezřelé konstrukce, které obvykle znamenají logickou chybu. Program jlint pro vyhledání chyb potřebuje překlad s parametrem –g (začlenění tabulky lokálních proměnných do bytecodu). Doporučuji programy antic a jlint nainstalovat a používat. 107
Přílohy Jopt (www-i2.informatik.rwth-aachen.de/~markusj/jopt) Program Jopt (Java Class File Optimizer) analyzuje všechny metody v programu a snaží se zrušit ty části, které nejsou potřeba. V průměru se sníží velikost programu (souboru jar) o 30%. Současně provádí drobné optimalizace bytecodu. Realj (www.realj.org) Jednoduché vývojové prostředí pro Javu napsané v jazyku C, které lze zdarma používat pro výuku a je vhodné pro méně výkonné počítače. JCreator (www.jcreator.com) Další vývojové prostředí pro Javu napsané v jazyku C s nízkými nároky na technické vybavení, které lze zdarma používat.
108