10. Přílohy

Transkript

10. Přílohy
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:
<applet code=Animator.class
archive="jars/animator.jar"
width=460 height=160>
<param name=foo value="bar">
</applet>
<applet code=Animator.class
archive="classes.jar, images.jar, sounds.jar"
width=460 height=160>
<param name=foo value="bar">
</applet>
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

Podobné dokumenty

projekt eVIK: výuka, individualizace, koučink

projekt eVIK: výuka, individualizace, koučink adresa), skupinově (skupina – např. třída, učitelé) nebo dát k dispozici komukoliv (s odkazem, nebo volně vyhledatelné na webu). Ne­ výhodou je nutné internetové připojení (lze sice využívat i  off...

Více

Skripta OMP 1535KB 4.12. 2004 05:44:10

Skripta OMP 1535KB 4.12. 2004 05:44:10 (téměř 50% programu) byla dodána, ale nikdy ji uživatelé nepoužívali a zbytek byl dodán v takovém stavu, že byl nepoužitelný. Tato čísla naznačují, že s programovými produkty to skutečně není tak j...

Více

Objektově orientovaná tvorba softwaru

Objektově orientovaná tvorba softwaru 1.8.7 Dědění mezi třídami .............................................................................................................. 37

Více

Ovládání laboratorního modelu Mindstorms NXT (spike) pomocí PC

Ovládání laboratorního modelu Mindstorms NXT (spike) pomocí PC mezi portem a vstupními piny mikroprocesoru ARM7. Schmittův klopný obvod je speciální komparátor s hysterezí, jehož výstup závisí nejen na hodnotě vstupu, ale i na jeho původním stavu. Signály umož...

Více

zde - DSN

zde - DSN objekt. Takovou službu poskytuje aplikace rmiregistry, metoda Naming.rebind v našem příkladě zpřístupňuje stub objektu HelloImpl pod jménem HelloServer na počítači localhost. Formát jména ve volání...

Více