10. Přílohy. Příloha 1 Java SDK od firmy Sun. Přílohy. Vytvoření a spuštění programu,



Podobné dokumenty
3. Základy programovacího jazyka Java

Algoritmizace. Cíle předmětu

Úvod. Únor Fakulta informačních technologií VUT. Radek Kočí Seminář Java Úvod 1/ 23

Programové konvence, dokumentace a ladění. Programování II 2. přednáška Alena Buchalcevová

Algoritmizace a programování

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.

Úvod do programování v jazyce Java

Úvod. Leden Fakulta informačních technologií VUT. Radek Kočí Seminář Java Úvod 1/ 22

Program. Organizace semináře Základní principy OOP Úvod do programovacího jazyka Java Distribuce

Vývojové nástroje jazyka Java

Počítačové laboratoře bez tajemství aneb naučme se učit algoritmizaci a programování s využitím robotů CZ.1.07/1.3.12/

Předměty. Algoritmizace a programování Seminář z programování. Verze pro akademický rok 2012/2013. Verze pro akademický rok 2012/2013

Předmluva k aktuálnímu vydání Úvod k prvnímu vydání z roku Typografické a syntaktické konvence... 20

Obsah. Úvod 11 Základy programování 11 Objektový přístup 11 Procvičování 11 Zvláštní odstavce 12 Zpětná vazba od čtenářů 12 Errata 13

Seminář Java II p.1/43

PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1

Programovací jazyk Java

8 Třídy, objekty, metody, předávání argumentů metod

Úvod Seznámení s předmětem Co je.net Vlastnosti.NET Konec. Programování v C# Úvodní slovo 1 / 25

Programování v Javě I. Leden 2008

Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost rozhraním a výjimkám.

7 Formátovaný výstup, třídy, objekty, pole, chyby v programech

Matematika v programovacích

Programování v Javě I. Únor 2009

1. Programování proti rozhraní

Výčtový typ strana 67

Algoritmizace. Algoritmizace (Y36ALG), Šumperk - 1. přednáška 1

Obsah přednášky. 12. Dokumentace zdrojového kódu Tvorba elektronické dokumentace UML. Co je diagram tříd. Ing. Ondřej Guth

Databázové aplikace pro internetové prostředí PHP úvod, základní princip, vkládání skriptu, komentáře, výpis na obrazovku

Algoritmizace a programování

RMI Remote Method Invocation

11. Přehled prog. jazyků

Z. Kotala, P. Toman: Java ( Obsah )

Vytváření a použití knihoven tříd

1. Dědičnost a polymorfismus

Regulární výrazy. Vzory

3 KTE / ZPE Informační technologie

Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15

DSL manuál. Ing. Jan Hranáč. 27. října V této kapitole je stručný průvodce k tvorbě v systému DrdSim a (v

Úvod do programovacích jazyků (Java)

Dnešní téma. Oblasti standardizace v ICT. Oblasti standardizace v ICT. Oblasti standardizace v ICT

Vstupní požadavky, doporučení a metodické pokyny

Generické programování

Maturitní otázky z předmětu PROGRAMOVÁNÍ

Java [džava] nebo [džáva] v americkém slangu "kafe" Sun Microsystems nyní Oracle

Vytváření uživatelských datových typů a funkcí v Javě

Obsah. Kapitola 1. Kapitola 2

TÉMATICKÝ OKRUH Softwarové inženýrství

První kapitola úvod do problematiky

KTE / ZPE Informační technologie

Teoretické minimum z PJV

Objekty strana 11. Abstrakce je základní objektovou vlastností. Skutečnost, kterou chceme do programu promítnout,

10 Balíčky, grafické znázornění tříd, základy zapozdření

3. Třídy. Základní pojmy objektového programování. Třídy

PHP - úvod. Kapitola seznamuje se základy jazyka PHP a jeho začleněním do HTML stránky.

Algoritmizace a programování. Terminálový vstup a výstup

Programovací jazyky. imperativní (procedurální) neimperativní (neprocedurální) assembler (jazyk symbolických instrukcí)

O autorovi O odborném korektorovi Úvod 17 Vývoj jazyka Java Java SE 8 Struktura této knihy Předchozí zkušenosti s programováním nejsou potřebné

Obsah přednášky 9. Skrývání informací. Skrývání informací. Zapouzdření. Skrývání informací. Základy programování (IZAPR, IZKPR) Přednáška 9

7. Datové typy v Javě

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

Ant aneb Ferda Mravenec, práce všeho druhu

Při studiu tohoto bloku se předpokládá, že student je zvládá základy programování v jazyce Java s využitím vývojového prostředí NetBeans.

Objektově orientované programování

Zápis programu v jazyce C#

Class loader. každá třída (java.lang.class) obsahuje referenci na svůj class loader. Implementace class loaderu

Úvod do programovacích jazyků (Java)

Java Cvičení 01. CHARLES UNIVERSITY IN PRAGUE faculty of mathematics and physics

Úvod Vývojová prostředí Štábní kultura Dokumentace Konec. Programování v C# Prostředí a doporučení 1 / 39

Úvod do programování v jazyce Java

Úvod do programování - Java

Remote Method Invocation RMI

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

Programovací jazyk Pascal

Dědění, polymorfismus

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ

Algoritmizace a programování

1 Administrace systému Moduly Skupiny atributů Atributy Hodnoty atributů... 4

Paměť počítače. alg2 1

Objektové programování

Úvodní informace. Petr Hnětynka 2/2 Zk/Z

Úvod do programování - Java. Cvičení č.4

RMI - Distribuované objekty v Javě

Programovací techniky

1 Webový server, instalace PHP a MySQL 13

Vzdělávací oblast: Informatika a informační a komunikační technologie Vzdělávací obor: Programování. Předmět: Programování

7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd

Úvod do programování. Lekce 1

Úvod do jazyka C. Ing. Jan Fikejz (KST, FEI) Fakulta elektrotechniky a informatiky Katedra softwarových technologií

Úvod do programovacích jazyků (Java)

20. Projekt Domácí mediotéka

IRAE 07/08 Přednáška č. 1

17. Projekt Trojúhelníky

ADT/ADS = abstraktní datové typy / struktury

7. Statické prvky třídy

Bridge. Známý jako. Účel. Použitelnost. Handle/Body

Softwarové komponenty a Internet

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Transkript:

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íku 15. 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

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

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

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ří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ř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. Seznam výjimek, které v metodě mohou vzniknout. 94

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 prvni verze * 26 jan 2001 xabcd01 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

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 popis parametru @return popis návratové hodnoty z metody @exception jméno_výjimky 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

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

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 identifikátoru Pravidlo pro pojmenování Příklady 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 com.sun.eng org.acm.sequin.pretty cz.vse.xabcd01.ukol2 org.gjt.mm.mysql 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 class Kniha; class Casopis; class VstupniSchranka; rozhraní (interface) obdobně jako u třídy interface Publikace; interface Schranka; 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 vratmax(); ulozdelku(); nactivetu(); 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 Date datumnarozeni; int pocetvet; float studijniprumer; int i; 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 _ static final int MIN_WIDTH = 4; static final int GET_THE_CPU = 1; 98

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 (META- INF\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 bude se vytvářet archiv (create) U existující archiv se bude aktualizovat (přidávat či měnit soubory) T vypíše se obsah existujícího archivu (table of contents) X soubory z archivu se zapíší do aktuálního adresáře a případně do podadresářů (extract) x soubor z archivu se vypíše pouze zadaný soubor F 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í) V na obrazovce zobrazuje podrobněji svoji činnost (verbose) 0 soubory se pouze vkládají, nekompresují m uživatelem vytvořený soubor manifest je uveden na příkazové řádce manifest M 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

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říloha 5 - Kódování českých znaků v Javě znak Unicode hex. zápis Unicode zápis v Javě UTF-8 hex. zápis CP1250 hex. zápis ISO8859_2 hex. zápis CP852 hex. zápis á 00e1 \u00e1 c3a1 e1 e1 a0 87 Á 00c1 \u00c1 c381 c1 c1 b5 E7 č 010d \u010d c48d e8 e8 9f 8B Č 010c \u010c c48c c8 c8 ac 89 ď 010f \u010f c48f ef ef d4 93 Ď 010e \u010e c48e cf cf d2 91 é 00e9 \u00e9 c3a9 e9 e9 82 8E É 00c9 \u00c9 c389 c9 c9 90 83 ě 011b \u011b c49b ec ec d8 9E Ě 011a \u011a c49a cc cc b7 9D í 00ed \u00ed c3ad ed ed a1 92 Í 00cd \u00cd c38d cd cd d6 EA ň 0148 \u0148 c588 f2 f2 e5 CB Ň 0147 \u0147 c587 d2 d2 d5 C5 ó 00f3 \u00f3 c3b3 f3 f3 a2 97 Ó 00d3 \u00d3 c393 d3 d3 e0 EE ř 0159 \u0159 c599 f8 f8 fd DE Ř 0158 \u0158 c598 d8 d8 fc DB š 0161 \u0161 c5a1 9a b9 e7 E4 Š 0160 \u0160 c5a0 8a a9 e6 E1 ť 0165 \u0165 c5a5 9d bb 9c E9 Ť 0164 \u0164 c5a4 8d ab 9b E8 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 UTF- 8 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, MacCentral- Europe 101

ú 00fa \u00fa c3ba fa fa a3 9C Ú 00da \u00da c39a da da e9 F2 ů 016f \u016f c5af f9 f9 85 F3 Ů 016e \u016e c5ae d9 d9 de F1 ý 00fd \u00fd c3bd fd fd ec F9 Ý 00dd \u00dd c39d dd dd ed F8 ž 017e \u017e c5be 9e be a7 EC Ž 017d \u017d c5bd 8e ae a6 EB a 0061 a 61 61 61 61 61 A 0041 A 41 41 41 41 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říloha 6 - Seznam termínů a zkratek Termín Abstraktní metoda - Abstraktní třída Anonymní vnitřní třída Applet Balík (package) Datový typ proměnné Dědičnost Dynamické datové struktury (kontejnery) Garbage collector (čistič paměti) GUI (Graphic User Interface) Hodnota proměnné HTML (Hypertext Markup Language) Identifikátor proměnné Iterátor (Iterator) Java Java archive (JAR) Java bytecode Javadoc JDK (Java Development Kit) JVM (Java Virtual Machine) Definice pouze deklarace metody v abstraktní třídě, v potomcích této třídy musí být metoda naimplementována 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 nepojmenovaná vnitřní třída, obvykle definovaná na místě parametru metody vnější třídy programy běžící v rámci WWW stránky na stanici klienta v prohlížeči pojmenovaná knihovna tříd a rozhraní označuje typ dat uložených v proměnné např. číslo, text, instanci konkrétní třídy 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) třídy, jejichž instance slouží k uložení odkazů na předem neznámý počet instancí jiných tříd speciální proces, který se stará o uvolńování nepotřebných objektů z paměti grafické uživatelské rozhraní vlastní obsah proměnné jazyk pro vytváření hypertextových dokumentů pojmenování proměnné objekt, jehož úkolem je zpřístupnit prvky kontejneru objektově orientovaný programovací jazyk archiv přeložených tříd a doplňujících souborů, používá se při distribuci aplikací mezikód vytvořený překladačem, který je interpretován JVM program sloužící pro vytváření programátorské dokumentace tříd ve formátu HTML základní prostředí pro vytváření a spouštění programů v Javě platforma pro spuštění aplikací v Javě (zajišťuje vazbu na HW a OS a interpretuje bytecode) 103

Termín Kolekce (Collection) Konstanta Konstruktor Mapa (Map) též asociativní pole nebo slovník (Dictionary) Metoda Metoda instance Metoda třídy Množina (Set) Modifikátor třídy Objekt Polymorfismus Proměnná Přetečení proměnné Přetěžování metod (overloading) Přetypování Rozhraní (interface) Servlet Seznam (List) Třída (class) UML (Unified Modelling Language) Definice lineární dynamická datová struktura proměnná jejíž hodnota se nemění speciální metoda pro vytváření instancí tříd kontejner, který umožňuje ukládat dvojice klíč a hodnotu, klíč musí být jednoznačný funkční složka objektu, pomocí metod popisujeme činnost objektů metoda, která se provádí pro konkrétní instanci třídy, bez existence instance není možno ji spustit metoda, kterou je možno spustit bez existence instance,spouští se se jménem třídy lineární dynamická datová struktura, ve které má každý prvek jedinečnou hodnotu klíčové slovo uvedené před slovem class určující další vlastnosti třídy 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. možnost využívat v programovém kódu stejnou syntaktickou podobu pro metody s různou vnitřní reprezentací proměnnou určují tři části: identifikátor, datový typ a vlastní hodnota 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é 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ů změna/upřesnění datového typu proměnné definuje hlavičky metod, které musí každá třída implementující toto rozhraní naimplementovat programy běžící na WWW serveru lineární dynamická datová struktura, ve které se hodnoty jednotlivých prvků mohou opakovat je obecný popis vlastností a činností objektů standard pro zápis/zobrazení objektových modelů 104

Termín Unicode URL (Uniform Resource Location) UTF8 Vnitřní třída Vstupní a výstupní proudy (Input/Output streams) Výjimka (exception) Zapouzdření Definice rozšířená znaková sada využívající 16 bitů pro uložení jednotlivých znaků identifikátor označující umístění dokumentu v rámci Internetu 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 třída definovaná uvnitř jiné třídy zobecnění vstupů a výstupů chybový stav, který narušuje běžný postup zpracování metody 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

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 2 nd 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-7226- 071-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-7169- 890-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

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

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