Vznik prvního objektu a prvního programu Co je to třída? Nejjednodušší nová třída Třída s vlastními daty Manipulace s objekty a s jejich daty Určení jedinečnosti metody Modifikátory viditelnosti Překrývání implicitní viditelnosti členu třídy Klíčové slovo static Nejjednodušší třída jako samostatný program Jak program uložit Překlad programu Jak spustit připravený program v jazyce Java Nejjednodušší odezva prvního programu Jednoduchá aplikace s argumenty Okamžité ukončení aplikace Jak zjistit, že se aplikace chystá ukončit svůj běh Komentáře v kódu S objekty se manipuluje pomocí odkazů Všechny objekty musíte vytvořit Objekty nemusíte mazat Doba platnosti objektů Mazání objektů z paměti Explicitní ukončení platnosti objektu
Práce s třídami a objekty Přirozený jazyk v pojmenování Čeština v identifikátorech
Konvence pojmenování Význam názvů identifikátorů Co je při volbě názvu nejdůležitější Rozlišujte mezi názvy typů a objektů Nepoužívejte v názvech číslice Nepoužívejte názvy bez souvislosti s obsahem třídy nebo objektu Styl pojmenování v jazyce Java Návrhové vzory pojmenování Viditelnost a jedinečnost názvů Umístění nových tříd v balíčcích Informace o typu objektu 1 Informace o typu objektu 2 Informace o typu objektu 3 Název třídy objektu Odkud byla načtena třída Umístění tříd načtených pomocí systémového zaváděče Zjištění viditelnosti objektů libovolného typu Zjištění viditelnosti datové složky Zjištění předka testovaného typu Jak zjistit, zda má třída předka? Je to třída nebo rozhraní? Výpis bázových rozhraní daného rozhraní Seznam rozhraní implementovaných danou třídou Jak zjistit umístění třídy v balíčku Zjišťování názvů členských objektů Nalezení metod pomocí objektů typu Method Volání metod pomocí objektů typu Method Jak lze pomocí objektu typu Class získat datové složky libovolného typu? Nastavení nebo načtení hodnoty datové složky pomocí objektu typu Field Zjištění informací o konstruktorech třídy Tvorba nového objektu pomocí instance typu Constructor Zaručená inicializace datových složek objektu Parametrizovaná inicializace objektu Implicitní a explicitní konstruktory Konstruktor a argumenty Konstruktor v jazyce Java Konstruktory a metody. Je to totéž? Konstruktor nesmí mít žádný návratový typ Proč nelze deklarovat konstruktor jako konečný? Zaručená inicializace pomocí konstruktoru
Volání konstruktorů z konstruktorů Metoda finalize!) Úklid pomocí metody finalized Metoda finalize!) není destruktor V jazyce Java nejsou destruktory Objekty nemusí být vymazány z paměti Singleton - jediný objekt daného typu v celém programu Zpřístupnění tříd - import Vlastnosti a přístupové metody Klíčové slovo final Klíčové slovo return Překrývání metod předka Přetížené metody Rozdíl mezi proměnnou CLASSPATH a příkazem import Načtení třídy neuvedené v proměnné CLASSPATH Indexované vlastnosti Přiřazení hodnoty instanci typu Object Tvorba duplikátů Zapouzdření primitivního typu do objektově orientovaného reprezentanta Změna typu hodnoty Pretypovaní datových typů Pretypovaní primitivních typů Zvláštnost datového typu Boolean
Dialogy a formuláře Návrh dialogů a formulářů v IDE Hlavní okna Rozdíl mezi třídami Frame a Canvas Tvorba a zobrazení oken Zavření okna Ukončení aplikace pomocí systémového tlačítka Zavřít Ukrytí hlavního okna pomocí systémového tlačítka Zavřít Zobrazení okna uprostřed obrazovky Nastavení maximálních rozměrů okna Zákaz změn rozměrů hlavního okna aplikace Změna ikony okna Změna ikony okna (2) Odstranění záhlaví okna Exkluzivní celoobrazovkový režim Celoobrazovkový režim pomocí běžných oken
Celoobrazovkový režim a změna rozměrů okna Oprávnění pro celoobrazovkový režim apletů Okno na celou obrazovku bez okrajů a titulku Okno na celou obrazovku Diagnostika možností průhledných a tvarovaných oken Průhledná a poloprůhledná okna Okna s průhledným obsahem Okna různých tvarů Okno s odleskem Minimalizace a maximalizace hlavního okna aplikace Jak určit, zda je okno minimalizováno nebo maximalizováno Jak určit, zda je okno otevřeno nebo zavřeno Jak používat předdefinované dialogy Jednoduché předdefinované dialogy Informační dialog s vlastní ikonou Vlastní text na tlačítcích předdefinovaných dialogů Dialog, kdy uživatel musí vybrat některou z možností Nemodální dialog Modalita dialogů Implementace dialogů s různým rozsahem modality Uživatelský vstup získaný z dialogu Změna titulku dialogu pomocí komponenty TitleBorder Výběr souboru pomocí standardního dialogu Výběr adresáře pomocí standardního dialogu M D I - v n i t ř n í okna Pravidla užívání vnitřních oken v rozhraní MDI Obsluha událostí v dokumentech aplikace MDI Manipulace se všemi okny aplikace Rychlejší přetahování oken v aplikacích MDI Minimalizace blikání při překreslování (1) Minimalizace blikání při překreslování (2)
Fokus alias ohnisko uživatelského vstupu Definice kláves pro změnu ohniska vstupu v celé aplikaci Klávesy pro přesun ohniska uživatelského vstupu Ověřování textového pole při přesunu ohniska vstupu na jinou komponentu Jak odebrat ohnisko vstupu aktuální aplikaci Pořadí komponent uvnitř okna Přesun výběru na další nebo předchozí komponentu I. Přesun výběru na další nebo předchozí komponentu II.
Sledování změny výběru komponent v celé aplikaci Výběr komponenty ihned po zobrazení okna Změna ohniska uživatelského vstupu Zákaz výběru objektu Zákaz výběru okna Určujeme komponentu, na kterou bude přesunuto ohnisko vstupu Určujeme vybraný objekt nebo vybrané okno Určujeme, zda je ztráta ohniska vstupu dočasná nebo trvalá Nastavení typu ukazatele myši pro vybranou komponentu
Písma použitá v aplikaci Seznam všech dostupných příbuzných písem Více písem v aplikaci Zobrazení odstavce textu Zobrazení textu různými styly Výpočet šířky textu v pixelech před jeho zobrazením Tvar grafického objektu na základě obrysu textu
Ovládací prvky, jejich rozvržení a změny vzhledu Elegantní rozvržení textových polí s popisky - rozvržení typu SpringLayout Dialog s kartami - rozvržení typu CardLayout Dialog Najít - rozvržení typu GroupLayout Umístění grafických prvků v mřížce - rozvržení typu GridBagLayout Zobrazení komponent s menší zobrazovací plochou než jsou možnosti příslušného okna Jak používat motivy v Javě Implicitní motiv uživatelského rozhraní Nastavení motivu uživatelského rozhraní na příkazovém řádku Nastavení motivu uživatelského rozhraní pomocí souboru vlastností Nastavení motivu uživatelského rozhraní v kódu Úprava vlastností motivu Integrace vzhledu aplikací do hostitelského operačního systému Změna motivu po spuštění aplikace Změna systémových vlastností Změna implicitního písma aplikace Změna barvy ovládacích prvků ve vybraném vzhledu Počeštění standardních dialogů Počeštění standardních dialogů (2) Změna vzhledu, zobrazení a hasnutí plovoucích popisků Vlastní motivy grafického uživatelského rozhraní - Synth Vlastní motivy grafického uživatelského rozhraní - Synth deklarativně
Nesměšujte instance tříd knihovny AWT s instancemi tříd knihovny Swing Rozdíly mezi knihovnami AWT a Swing Vykreslování "lehkých" komponent knihovny Swing Kontejnery nejvyšší úrovně Vodicí linky ve stromové struktuře Zákaz klepnutí pravým tlačítkem ve stromové struktuře Podpora ikony v oznamovací oblasti hlavního panelu Přístup do oznamovací oblasti Práce s oznamovací oblastí (třída SystemTray) Implementace ikon v oznamovací oblasti Změna ikony v oznamovací oblasti Změna popisku ikony v oznamovací oblasti Změna rozměrů obrázku použitého v oznamovací oblasti Bublinová nápověda v oznamovací oblasti
Obsluha událostí a posluchači Systém zasílání zpráv v jazyce Java Obsluha událostí tlačítek a nabídek Obsluha klepnutí tlačítka myši Obsluha pohybu ukazatele myši Obsluha stisku kláves Obsluha událostí pomocí anonymní třídy Jak rozpoznat klepnutí myši, poklepání nebo "trojklik"? Čekání na událost typu PropertyChange Čekání na změnu vlastnosti, která má právo změnu odmítnout Úklid posluchačů z paměti Generování klepnutí tlačítka myši Přesun ukazatele myši na obrazovce Simulace stisku klávesy nebo tlačítka myši Způsob určení viditelnosti, přesunutí nebo změny rozměrů komponenty
Kreslení 2D Nejjednodušší kreslení na povrch okna Kreslení primitivních tvarů - bod Vzdálenost mezi dvěma body Kreslení primitivních tvarů - úsečka Kreslení primitivních tvarů - kvadratická křivka Kreslení primitivních tvarů - kubická křivka Kreslení primitivních tvarů - obdélník Kreslení primitivních tvarů - elipsa
Kreslení primitivních tvarů - oblouk Změna tloušťky pera Definice okrajů primitivního grafického objektu Kombinujeme různé tvary Kreslení a vyplňování objektů Kreslení barevného přechodu Kreslíme kruhový diagram (graf) Nastavení barvy Výřez nakresleného tvaru Výřez vymezený textem Převod textového názvu barvy na odpovídající hodnotu Tvorba nových tvarů pomocí čar a křivek Úprava měřítka, oseknutí, překlopení nebo otočení tvaru
1 Obrázek ve stupních šedé Převod barevného obrázku v paměti na stupně šedé Zaostření obrázku Rozmazání obrázku Tvorba reliéfu z rastrového obrázku Úprava obrázku: Měřítko, ořezání, překlopení, otočení. Jak zesvětlit nebo ztmavit obrázek Průhledné pozadí obrázku Dotaz na množství volné zrychlené paměti použitelné pro práci s obrázkem Filtrování složek RGB v obrázku Komprese souboru JPEG Kreslení obrázku v paměti Tvorba a kreslení obrázků v paměti Úprava měřítka, oseknutí, překlopení a otočení obrázku v paměti Práce s pixely v obrázku načteném do paměti Průhledné pixely v obrázku Zjištění hodnoty průhledného pixelu nebo počtu barev použitých v obrázku ve formátu GIF Překlopení obrázku Převod objektu typu Bufferedlmage na objekt typu Image Převod objektu typu Image na objekt typu Bufferedlmage Načtení barevného modelu obrázku Třídy a metody pro práci s barevnými modely Načtení obrázku nebo ikony ze souboru Načtení obrázku ze souboru, vstupního proudu nebo z adresy URL Načtení vybrané části obrázku
Uložení generované grafiky do souboru ve formátu PNG nebo JPEG Výpis všech grafických formátů, které lze načítat a do nichž lze ukládat Určení formátu obrázku v souboru Způsob zjištění, zda lze formát obrázku číst nebo použít k zápisu Rozpohybování pole obrázků Zachycení snímku obrazovky
Práce s obrazovkou Rozlišení obrazovky Rozměry obrazovky Načtení dostupných rozměrů obrazovky, obnovovací frekvence a kvality (počtu) barev Načtení rozměrů obrazovky Způsob zjištění aktuální obnovovací frekvence a kvality barev obrazovky Nastavení rozměrů obrazovky, obnovovací frekvence a kvality barev Počet dostupných obrazovek Lepší výkon v režimu celé obrazovky
Možnosti zobrazení textu Vykreslení prostého textu Přirozenější proložení znaků Podtržení textu Přeškrtnutí textu Změna barvy textu Změna atributu textu u části textu Rozměry textu v nakresleném objektu Změna orientace textu v nakreslených objektech Změna orientace textu v nakreslených objektech Změna velikosti a typu písma v nakreslených objektech Paprskovité zobrazení textu
Formátování textu Formátování a zpracování času Formátování a zpracování času v češtině Vlastní formátovací vzory pro čas Formátování zpráv obsahujících čas Formátování a zpracování kalendářních dat Vlastní formáty kalendářních dat Formátování zpráv obsahující datum Formátovací vzory pro kalendářní data
Formátování zpráv obsahujících čísla Formátování čísel v souladu s místním nastavením Formátování měny v souladu s místním nastavením Formátování procent v souladu s místním nastavením Formátování čísel v exponenciálním zápisu Minimální počet číslic vlevo i vpravo od desetinné čárky v exponenciálním formátu Formátování čísel vlastním formátem Chyby při užívání modifikačních metod třídy String
Hledánív textu Hledání podřetězce v řetězci Hledání podřetězce v řetězci Hledání zalomení řádků v řetězcích Unicode Hledání znaku nebo podřetězce v řetězci Nalezení znaku, části slova nebo slovního spojení Nahrazení znaku, části slova nebo slovního spojení Hledání a nahrazení textu Porovnání řetězců bez ohledu na místní a jazykové nastavení Porovnávání textových řetězců Jak ověřit pořadí řetězců? Jak ověřit pořadí dvou řetězců bez ohledu na velikost písmen? Porovnání řetězce s objektem typu StringBuffer Procházení textu po znacích
Regulární výrazy Vyhledávání pomocí regulárních výrazů Ukázka hledání pomocí regulárních výrazů Funkce „Najít a nahradiť pomocí regulárních výrazů Nahrazení textu proměnnými řetězci Zachycení skupin znaků pomocí regulárního výrazu Užití zachyceného textu ve vzoru regulárního výrazu Užití zachyceného textu ve vzoru nahrazujícího textu Aplikace regulárních výrazů na obsah souboru Převod řetězce na tokeny Zpracování dat oddělovaných určitým znakem Rozdělení textu na odstavce pomocí regulárního výrazu Čtení odstavců pomocí regulárních výrazů Čtení řádků pomocí regulárního výrazu Filtrování řádků ze vstupního proudu Filtrování vstupu pomocí regulárních výrazů
Indexování textu Komentáře v regulárním výrazu Nalezení konců řádku pomocí regulárního výrazu Nalezení textu bez ohledu na konce řádků „Nenasytné" vyhledávání pomocí regulárních výrazů Shoduje se nalezený řetězec se vzorem? Odstranění konce řádku z objektu typu String Odstranění zdvojených mezer Překlad regulárního výrazu s více příznaky Skupiny vzorů, které nezachycují text Záměny řídicích znaků v regulárních výrazech Změna v rozlišování malých a velkých písmen
Převody a kódování řetězců Určování typu znaku Převod řetězce na velká nebo malá písmena Převod znaků mezi kódováním Unicode a UTF-8 Znakové bloky v řetězcích Unicode Převod čísel na textové řetězce Převod hodnoty primitivního datového typu na řetězec Rozklad textu na jednotlivá slova Stanovení hranic slova v řetězci Unicode Stanovení hranic věty v řetězci Unicode Stanovení hranice znaku v řetězci Unicode Načtení seznamu hodnot oddělených tabulátory Rozklad zdrojového kódu v Javě na tokeny Je řetězec platným identifikátorem v jazyce Java? Sestavení řetězce Ukládání řetězců v objektu typu ByteBuffer Načítání dat v požadovaném kódování Převod bajtového pole na řetězec v kódování Base64 Převod dat kódovaných pro přenosy v síti WWW Zápis dat ve vybraném kódování Výpis všech dostupných převaděčů mezi kódováním Unicode a jinými znakovými sadami Převody mezi Unicode a jinými znakovými sadami
Lokalizace uživatelského rozhraní Výpis všech dostupných místních nastavení Tvorba národního prostředí Lokalizace uživatelského rozhraní
Priorita zdrojových souborů jazykového nastavení Priorita jazykového nastavení aplikace Jazykové nastavení aplikace Znaky Unicode v souborech jazykových prostředků Zpětný převod z kódování ASCII do UNICODE Kódování souborů jazykových prostředků Zjištění implicitního jazykového nastavení Vkládání znaků rozšířené abecedy do instance třídy JTextField
XML Standard kódování souborů XML Tvorba modelu DOM ze souboru XML Dotaz na prvek modelu DOM na základě ID Dotaz na kořenový prvek dokumentu DOM Editace textu v uzlech typu CDATA, Comment a Text Hodnota znakové entity v modelu DOM Jak získat z objektu typu DOM Document pouze text Komentáře v dokumentu DOM Kopírování podstromu uzlů v modelu DOM Kopírování podstromu uzlů z jednoho objektu typu Document modelu DOM do jiného Načtení a změna atributu prvku v dokumentu DOM Nový uzel v dokumentu DOM Oddíl CDATA v dokumentu DOM Odebrání uzlu z dokumentu DOM Odstranění všech atributů vybraného prvku v dokumentu DOM Procházení uzlů v dokumentu DOM Procházení uzlů v objektu Document modelu DOM Přidání textového uzlu do dokumentu DOM Přidávání a odebírání atributů prvků v modelu DOM Přidávání instrukcí zpracování do dokumentu DOM Relativní dotazy na uzly v objektech typu Document modelu DOM Rozdělení textového uzlu v dokumentu DOM Slučování textových uzlů v dokumentu DOM Tvorba prázdného dokumentu modelu DOM Ukládání objektů typu DOM Document do souboru XML Výpis všech atributů prvku v dokumentu DOM Vytvoření deklarace DOCTYPE při ukládání souboru XML Změna názvu prvku v dokumentu DOM Převod fragmentu XML na fragment DOM Ignorujeme komentáře v souboru XML
Jak zabránit rozvinutí znakových entit při zpracování souboru XML Převod uzlů CDATA na textové uzly Explicitní nebo implicitní atribut prvku Ošetření chyb při zpracování souboru XML Pracujeme s jazykem XPath XPath: Dotaz na kořenový prvek XPath: Základní dotazy XPath: Pořadí načítaných prvků XPath: Základní dotazy na atributy prvků XPath: Rozlišování velkých a malých písmen Transformace dokumentu XML pomocí stylů XSL Transformace dokumentu XML pomocí stylu XSL do objektu typu DOM Document
Manipulace se soubory Výpis souborů v adresáři Obsah adresáře Tvorba souboru Tvorba nových souborů Výpis kořenového adresáře Odkazují se dvě cesty na stejný soubor? Výpis všech kořenových adresářů Aktuální pracovní adresář Nadřazené adresáře v souborové cestě Soubor nebo na adresář? Dotaz na existenci souboru nebo adresáře Seznam souborů a podadresářů Filtrovaný seznam souborů a podadresářů Seznam souborů jako objektů File Seznam podadresářů Procházení souborů a podadresářů Zpracování všech podadresářů Zpracování všech souborů ve všech podadresářích Tvorba dočasných souborů Odstranění souboru ze souborového systému Odstranění souboru ze souborového systému Velikost souboru Čtení nebo změna značky poslední změny souboru či adresáře Tvorba adresáře Odstranění adresáře Odstranění prázdného adresáře
Odstranění adresáře, který není prázdný Přejmenování souboru nebo adresáře Přesunutí souboru nebo adresáře Kopírované soubory s obrázky jsou poškozeny Relativní souborové cesty Sestavení souborové cesty Převody mezi souborovou cestou a adresou URL Převody adresy URL na souborovou cestu Přesměrování výstupu metody println() do souboru Přesměrování standardního a chybového výstupu Přesměrování výstupního proudu System.err do souboru Načtení textu ze standardního vstupu Čtení textu ze souboru Zápis textu do souboru Připojení textu k existujícímu souboru Odstranění obsahu textového souboru Načtení obsahu souboru do bajtového pole Práce se soubory v režimu náhodného čtení a zápisu Rozdělení souboru Vynucení aktualizace souboru na pevném disku Serializace objektů a jejich členských proměnných Uložení objektu do souboru
Nová rozhraní pro vstup a výstup CojetoNIO? Tvorba datového proudu ze souborového kanálu Zápis do souborového kanálu Čtení ze souborového kanálu Kopírování obsahu jednoho souboru do jiného Tvorba souborového zámku Tvorba sdíleného souborového zámku Tvorba souboru mapovaného do paměti pro čtení Tvorba souboru mapovaného do paměti pro čtení a zápis Tvorba soukromého souboru mapovaného do paměti Tvorba bajtové vyrovnávací paměti Převod mezi objekty typu ByteBuffer a byte Tvorba pohledů na typ ByteBuffer Ukládání dat z objektů typu ByteBuffer do souboru Dotaz na kapacitu vyrovnávací paměti Dotaz na aktuální pozici v objektu ByteBuffer
Vkládání dat do objektů typu ByteBuffer Nebajtové typy v objektech typu ByteBuffer Dotaz na bajty z objektů typu ByteBuffer Pořadí bajtů v objektu typu ByteBuffer Pracujeme s přímou vyrovnávací pamětí Trvalé změny v mapované vyrovnávací paměti Tvorba výstupního proudu z vyrovnávací paměti Tvorba vstupního proudu z vyrovnávací paměti
Komprese a dekomprese Tvorba archivu ZIP Komprese pole bajtů Komprese souboru do formátu GZIP Dekomprese pole bajtů Extrahování souboru ve formátu GZIP Extrahování souboru z archivu ZIP Načtení obsahu archivu ZIP Výpočet kontrolního součtu pro pole bajtů Výpočet kontrolního součtu pro soubor
Internet Reprezentace adres IP v jazyce Java Adresa IP a název hostitele lokálního počítače Adresa IP vybraného hostitele Název hostitele dané adresy IP Testování síťových aplikací bez připojení k síti Tvorba objektu typu URL Zpracování adresy URL Adresa URL s odkazem na aktivní místo v dokumentu Dotazy na archiv JAR prostřednictvím objektu typu URL Načítání záhlaví odpovědi z připojení HTTP Načtení obrázku z adresy URL Načtení textu adresy URL Odeslání požadavku POST pomocí objektu typu URL Práce s třídou URL Pretypovaní z URL naURI Přístup k adrese URL chráněné heslem Zákaz automatického přesměrování Načítání souborů cookie z připojení HTTP Odeslání souboru cookie na server HTTP
Pracujeme na straně serveru JSP versus serviet Rozsah platnosti na stránkách JSP Dotaz na adresu klienta Jednoduchá stránka JSP Základní kostra servietu Čeština na stránkách HTML z kontejneru JSP Čeština na stránkách JSP Čeština na stránkách JSP Nastavení kódování parametrů požadavku HTTP Překódování parametrů požadavku HTTP z Latin 1 Komentáře na stránkách JSP Sdílení stránek JSP Umístění servietu Zahrnutí souboru na stránce JSP Zahrnutí souboru na stránce JSP Zahrnutí další stránky na stránce JSP Předávání parametrů další stránce Předávání požadavků HTTP na stránky JSP dalším stránkám Spouštění kódu na stránkách JSP Přesměrování na stránce JSP Přenesení webového serveru Parametry požadavku na stránce JSP Chybová hlášení na stránkách JSP Zákaz tvorby uživatelské relace Dotaz na hlavičku požadavku Dotaz na parametr požadavku Dotaz na záhlaví požadavku HTTP Podmíněný obsah na stránce JSP - příkaz if Podmíněný obsah na stránce JSP - příkaz switch Dynamický obsah na stránkách JSP Nedovolte uživateli opakovaně odeslat stránku JSP Zjištění adresy URL hostitele prostřednictvím servietu Zjištění adresy URL hostitele prostřednictvím servietu Zjištění adresy URI hostitele prostřednictvím servietu Protokolování v servietu Předkompilování stránky JSP Odeslání obrázku pomocí servietu Transakce na stránkách JSP Tvorba dokumentu XML ze stránky JSP
Ukázka jednoduchého filtru Ukládání dat na stránkách JSP Uložení dat prostřednictvím servietu Dotaz na všechny atributy s platností požadavku Dotaz na všechny atributy s platností relace Dotaz na všechny atributy s platností aplikace Jednoduchý objekt typu JavaBeans Objekt JavaBeans na stránce JSP Víceslovné hodnoty na stránkách JSP z kódu Víceslovné hodnoty na stránkách JSP deklarativně Zamezte souběžným požadavkům na serviet Inicializační parametry servietu v kódu Inicializační parametry servietu deklarativně Zpracování požadavku HEAD Nastavení prostředí pro tvorbu vlastních značek JSTL Deklarace knihoven JSTL na stránce JSP Aplikace jazyka výrazů JSTL Použití příkazů JSTL s formátovacími značkami HTML Dotaz na parametr požadavku pomocí JSTL Ukládání dat pomocí JSTL Zobrazení dat uložených pomocí JSTL Podmíněná tvorba výstupu s knihovnou JSTL: if Podmíněná tvorba výstupu s knihovnou JSTL: choose Jednoduchá uživatelsky definovaná značka Způsob užití uživatelsky definované značky Hodnota atributu URI v direktivě taglib
Sokety Tvorba serverového soketu Tvorba klientského soketu bez časového omezení Tvorba klientského soketu s časovým limitem Čtení textu z objektu typu Socket Zápis textu do objektu typu Socket Odeslání datagramu Příjem datagramu Příjem dat ve skupině vícesměrového vysílání Odesílání dat skupině odběratelů pomocí vícesměrového rozesílání Připojení ke skupině vícesměrového vysílání Odeslání požadavku POST prostřednictvím soketu Problémy s třídou Socket
Tvorba neblokujícího serverového soketu Tvorba neblokujícího soketu Čtení dat ze soketového kanálu Zápis do soketového kanálu Čekání na připojení pomocí serverového soketového kanálu Řízení neblokujících serverových soketů pomocí objektů typu Selector Řízení neblokujících soketů pomocí objektů typu Selector Ošetření síťové komunikace pomocí neblokujících soketových kanálů Způsob zjištění, zda vzdálený počítač zavřel připojení Tvorba klientského soketu SSL Tvorba serverového soketu SSL
Distribuované systémy Komunikace mezi dvěma stroji JVM na jednom počítači Posílání odkazů prostřednictvím soketů RMI versus sokety Volání systémových funkcí pomocí skriptů jazyka Perl Překlad kódu v jazyce IDL Implementace objektu proxy Tvorba objektu proxy Spouštění registru RMI Spouštění názvového serveru Definice a export přenositelných vzdálených objektů Definice a export vzdáleného objektu Načtení návratové hodnoty vzdálené metody Předávání argumentů vzdálené metodě Vyhledání vzdáleného objektu a volání jeho metod Vyhledání vzdáleného objektu a volání jeho metod Vyvolávání výjimek ze vzdálených metod Tvorba a mazání vnořeného kontextu názvové služby (Naming Service) Tvorba počátečního kontextu pro názvovou službu (Naming Service) Užití adresy URL jako názvu počátečního kontextu Vyhledání objektu pomocí názvové služby Přidávání, náhrada, odstraňovania přejmenování vazeb v názvové službě Dotaz na úplný název objektu Výpis obsahu názvové služby
Správa paměti Mazání nepotřebných objektů Platnost objektů
Je třeba určit, kdy bude objekt nepotřebný Je třeba určit, kdy bude objekt vymazán z paměti Explicitní uvolnění neplatných objektů z paměti Explicitní uvolnění neplatných objektů z paměti Explicitní uvolnění neplatných objektů z paměti Dotaz na velikost dynamické paměti (haldy) v bajtech Dotaz na volnou paměť v dynamické oblasti Dotaz na maximální velikost haldy v bajtech Dotaz na velikost obsazené paměti Jak zachovat objekt, dokud je dostatek paměti K čemu je vlastnictví objektu v systémové schránce? Jak určit, zda je položka stále v systémové schránce Třída pro vkládání obrázků do systémové schránky Vkládání obrázků do systémové schránky Výběr obrázků ze systémové schránky Vložení textu do systémové schránky Výběr textu ze systémové schránky
Souběžné zpracování Tvorba pracovního vlákna odvozením od bázové třídy Tvorba pracovního vlákna implementací rozhraní Zastavení vlákna Zachycení okamžiku ukončení běhu vlákna Určení okamžiku, kdy dojde k ukončení běhu vlákna Čekání na ukončení běhu vlákna Pozastavení aktuálního vlákna Nepoužívejte metody suspendQ a resumed Korektní pozastavení běhu vlákna Implementace fronty pracovních vláken Seskupování vláken Jak vyhledat kořenovou skupinu vláken Rekurzivní procházení všech vláken ve skupině Výpis všech spuštěných vláken Určujeme, zda vlákno drží synchronizační zámek Ukončení aplikace se spuštěnými vlákny Zcela bezpečná třída pro užití ve vláknech Třída částečně bezpečná pro užití ve vláknech Zastavení všech vláken po stisku Ctrl+C
Tisk Tisk textu Tisk do souboru Tisk hlavního okna aplikace Implementace rozhraní Printable Kostra jednoduchého tiskového programu Zobrazení dialogu Tisk Zobrazení dialogu Vzhled stránky Dotaz na rozměry celé stránky Dotaz na rozměry tisknutelné oblasti Nastavení počtu kopií tiskové úlohy Nastavení orientace tištěné stránky Nastavení orientace tištěné stránky Tisk stránek v různých formátech Dotaz na implicitní tiskovou službu Nalezení všech dostupných tiskových služeb Nalezení tiskových služeb s podporou určitého formátu Nalezení tiskárny Nalezení tiskárny s možností barevného tisku Vyhledání tiskových služeb pro datové toky Tiskové služby pro datové toky v určitém formátu Tvorba tiskové služby pro datové toky Atributy tiskové služby Atributy tiskové úlohy podporované tiskovou službou Čekání na změnu stavu tiskové úlohy Čekání na změny atributu tiskové úlohy Čekání na změny stavů tiskových služeb Dotaz na implicitní hodnotu atributu tiskové úlohy Dotaz na možné hodnoty atributu tiskové úlohy Implementace hlídače dokončení tiskové úlohy Způsob užití hlídače dokončení tiskové úlohy Zrušení tiskové úlohy Kostra programu využívajícího tiskové služby Tisk datového proudu do souboru
Soubory zásad a správce zabezpečení Používejte správce zabezpečení Deklarativní aktivace správce zabezpečení Konfigurace ochrany souborů
Kdy se zapíná správce zabezpečení Udělování oprávnenia ochrana souborového systému Nastavte vždy jen minimální oprávnění Ochrana systémových vlastnosti pomocí oprávnění Udělení oprávnění na základě podpisu autora Udělení oprávnění více třídám na základě podpisu Udělení kombinovaného oprávnění na základě podpisu Adresy URL v souborech zásad Kombinujte různé typy oprávnění Jak zjistit provázanost oprávnění? Rozvinutí systémových proměnných v souborech zásad Správa souborů zásad Tvorba nového souboru zásad Dotaz na oprávnění pro adresu URL Dotaz na oprávnění pro vybraný adresář Výpis všech udělených oprávnění
Certifikáty, digitální podpisy, elektronické klíče a šifrování Certifikát zabezpečení Digitální podpis I. Digitální podpis II. Cesta k certifikátu příslušného serveru SSL Dotaz na rozlišovací názvy předmětu a vydavatele certifikátu X509 Export certifikátu do souboru Export certifikátu do souboru pomocí nástroje keytool Import veřejného klíče ze souboru certifikátu Import veřejného klíče ze souboru certifikátu Import veřejného klíče ze souboru certifikátu do nového úložiště certifikátů Jak upravit soubor zásad pro ověření identity ve vhodném úložišti certifikátů Načtení certifikátu z úložiště certifikátů Ověření validity certifikační cesty Převod certifikátů X509 z typu javax na typ java Převod certifikátů X509 z typu java na typ javax Tvorba certifikační cesty Přidání certifikátu do úložiště certifikátů Výpis certifikátů nedůvěryhodnějších certifikačních úřadů z úložiště certifikátů Výpis všech aliasů v úložišti certifikátů Výpis všech aliasů v úložišti certifikátů pomocí nástroje keytool
Výpis všech dostupných algoritmů pro ověřování validity certifikační cesty Výpis všech dostupných formátů certifikátů Načtení a uložení souboru v apletu Veřejný a soukromý klíč Dotaz na bajty generovaného páru klíčů Dotaz na bajty generovaného symetrického klíče Dotaz na parametry DSA pro dvojici klíčů Dotaz na přihlašovací jméno aktuálně přihlášeného uživatele Generování bezpečného náhodného čísla Načtení dvojice klíčů z úložiště certifikátů Jak ověřit oprávnění pro přístup k adresáři Ověření podpisu bajtů ve vyrovnávací paměti Ověření podepsaného objektu v jazyce Java Konfigurace přihlášení k aplikaci Ověřování uživatele při přihlášení k aplikaci Řízení přístupu k objektu Tisk trasovacích zpráv systému zabezpečení Tvorba podpisu Tvorba vlastního typu oprávnění Příklady užití vlastního typu oprávnění Výpis všech oprávnění udělených načtené třídě Zákaz ověřování validity při připojení HTTPS Tvorba páru šifrovacích klíčů s vlastním podpisem Tvorba seznamu parametrů pro algoritmus Diffie-Hellman Key Agreement (DH) Tvorba soukromého a veřejného klíče DH Tvorba symetrického klíče DES Tvorba symetrického klíče Blowfish Tvorba symetrického klíče Triple DES Tvorba symetrického klíče MAC pro algoritmus SHA1 Tvorba symetrického klíče MAC pro algoritmus MD5 Tvorba konspektu zprávy algoritmem MAC k ověření integrity zprávy Tvorba šifrovaného výpisu zprávy algoritmem MD5 Tvorba soukromého a veřejného klíče RSA Tvorba soukromého a veřejného klíče DSA Tvorba klíčů na základě parametrů DSA Generování tajného klíče pomocí algoritmu Diffie-Hellman Key Agreement (DH) Šifrování objektů algoritmem DES Třída pro šifrování algoritmem DES Příklad užití třídy DesEncrypter Třída pro šifrování algoritmem DES na základě hesla
Príklad užití třídy DesEncrypterPass Šifrování souboru nebo proudu algoritmem DES Příklad užití třídy DesFileEncrypter Převod 56bitové hodnoty na klíč algoritmem DES Výpis všech dostupných typů kryptografických služeb Výpis všech implementací daného typu kryptografické služby Výpis všech dostupných generátorů soukromých nebo veřejných klíčů Výpis všech dostupných generátorů symetrických klíčů Výpis všech dostupných podpisových algoritmů Seznam všech dostupných bezpečných generátorů náhodných čísel Seznam všech dostupných šifrovacích a dešifrovacích algoritmů Výpis všech dostupných algoritmů pro šifrování zpráv
Přehrávání zvuků, zvukových souborů a sekvencí MIDI Jednoduchý zvukový signál Aplikační rozhraní Java Sound JMF (Java Media Framework) Digitálně vzorkovaná zvuková data v Javě Formátovaná zvuková data Datové formáty Souborové formáty Čtení a zápis zvuků Program neskončí po ukončení metody main() Diagnostika přítomnosti zvukového subsystému Java Sound Načtení zvukového souboru z místního disku Načtení zvukového souboru ze sítě Jak načíst zvukový soubor bez hlavičky? Formát zvukového souboru Souborový formát zvukového souboru Jak zjistit formáty podporované zvukovým systémem? Úprava formátu zvukového souboru pro přehrávání v Javě Přehrání zvukových souborů Přehrávání souborů MP3 pomocí Java Sound API Nepřetržité přehrávání zvukového souboru Jak se dovíte, že jsou k dispozici další data pro zápis nebo čtení Proč jsou metody getFramePosition() a getMicrosecondPosition() tak nepřesné? Rozdíl mezi metodami isActiveO a isRunningO Nedostatek paměti při přehrávání zvukových souborů o velikosti větší než 5 MB
Postupné přehrávání zvukové stopy z datového proudu Délka zvukové stopy Délka zvukového souboru Pozice zvukové stopy Nastavení hlasitosti přehrávání zvukové stopy Pouštění mono-proudu jen do jednoho stereo-kanálu Událost ukončení přehrávání zvukového souboru Co je to sekvence MIDI Zvukové banky MIDI Která zvuková baňkaje implicitní, když je jich v počítači více? Načtení implicitní zvukové banky Načtení zvukové banky z konkrétního souboru Zjištění základních údajů o zvukové bance Zobrazení seznamu nástrojů dostupných ve zvukové bance Proč metoda getAvailablelnstrumentsQ vrací prázdné pole? Chyba „MIDI OUT transmitter not available" Načtení sekvence MIDI z místního disku Načtení sekvence MIDI ze sítě Souborový formát sekvence ve formátu MIDI Přehrávání sekvence ve formátu MIDI Přehrávání sekvence ve formátu MIDI z datového proudu Délka sekvence ve formátu MIDI Pozice sekvenceru MIDI Nastavení hlasitosti přehrávání sekvence ve formátu MIDI Opakované přehrávání sekvence MIDI v JDK 1.4Opakované přehrávání sekvence MIDI v JDK 1.5+ Korektní ukončení přehrávání sekvence MIDI
Java Media Framework (JMF) Rozdíl mezi JMF a rozhraním Java Sound API Diagnostika prostředí pro tvorbu aplikací s podporou multimédií Diagnostika prostředí pro tvorbu aplikací s podporou multimédií Jednoduchý způsob ověření, zda multimediální soubor půjde přehrát ve vaší aplikaci Adresa souboru s multimediálním obsahem Tvorba objektu přehrávače multimediálního obsahu Přehrávání multimediálního souboru V jednoduchosti je síla: Přehrávač souborů MP3 Zobrazení videa pomocí lehkých komponent knihovny JFC/Swing Univerzální panel pro zobrazení přehrávače médií v okně Mini Media Player
MDI Media Player Dotaz na aktuální snímek Dotaz na délku filmu v sekundách Dotaz na počet snímků ve filmu Převinutí multimediálního souboru Převíjení filmu v přehrávači
Ovladače JDBC Získání ovladačů JDBC pro příslušné databáze Načtení ovladače JDBC Ovladač použitý pro databázové připojení Výpis všech načtených ovladačů JDBC Výpis parametrů pro tvorbu připojení JDBC
Databáze a práce s daty Dotaz na záznamy z databázové tabulky Připojení k databázi ODBC a výpis obsahu tabulky Tvorba nové databázové tabulky Vložení nového záznamů do tabulky Vložení záznamu do tabulky pomocí výsledné sady Vymazání všech záznamů z databázové tabulky Vymazání celé tabulky z databáze Vymazání záznamu z tabulky pomocí výsledné sady Vymazání vybraného záznamu z databázové tabulky Vymazání vybraného záznamu z databázové tabulky Aktualizace záznamu v databázové tabulce Ovlivnění počtu záznamů načítaných z databáze Potřebujeme zjistit počet záznamů v tabulce Potvrzení nebo vrácení aktualizace databáze Uložení binárních dat v databázové tabulce Načtení binárních dat uložených v databázové tabulce Načtení binárních dat pomocí objektu typu Blob Zpracování výjimek při práci s databázemi SQL Varovné zprávy databázového serveru Zástupné znaky v příkazech jazyka SQL Výpis detailů o připojené databázi Dotaz na maximální délku názvu tabulky v databázi Zjišťujeme, jaké funkce má databáze pro datum a čas Zjišťujeme, jaké funkce má databáze pro práci s řetězci Zjišťujeme, jaké funkce má databáze pro práci s čísly
Zjišťujeme, zda databáze podporuje transakce Jaké systémové funkce obsahuje připojená databáze Dotaz na dostupné typy SQL připojené databáze Jaké uložené procedury obsahuje připojená databáze Žádost o seznam všech tabulek v databázi Dotaz na všechna klíčová slova připojené databáze Dotaz na možnost užití dávkového zpracování příkazů Dotaz na podporu dynamických výsledných sad
Databáze a výsledné datové sady Tvorba dynamické obousměrné výsledné sady Jak zjistit, zda lze výslednou sadu aktualizovat Tvorba obousměrných výsledných datových sad Jak zjistit, zda je výsledná sada obousměrná Je vybraný záznam ve výsledné sadě první? Zjištění pozice vybraného záznamu v obousměrné výsledné sadě Je vybraný záznam ve výsledné sadě poslední? Procházení záznamů v obousměrné výsledné sadě Názvy sloupců ve výsledné sadě Načítání dat z výsledné sady Hodnoty NULL v datech výsledné sady Zjišťujeme počet záznamů ve výsledné sadě Efektivnější zjištění počtu záznamů ve výsledné sadě Jaké výsledné datové sady lze používat v připojené databázi Aktualizace záznamu v databázové tabulce Obnovení záznamu v dynamické výsledné sadě Jak stornovat nechtěnou aktualizaci dat Připojení k databázím MySQL Připojení k databázím Oracle Připojení k databázím SQL Server
Java ME a NetBeans Mikroedice jazyka Java CLDC (Connected Limited Device Configuration) MIDP (Mobile Information Device Profile) CDC (Connected Device Configuration) Jak vyvíjet aplikace pro mobilní zařízení v integrovaném vývojovém prostředí NetBeans Visual Mobile Designer Práce ve vizuálním návrháři Práce s emulátory
Umístění úložiště emulátoru Velikost úložiště emulátoru Jak přidat kontakty do databáze emulátoru Tvorba kontaktů pro testování Ovládání emulátoru Pozastavení aplikace spuštěné v emulátoru Úprava výkonu emulátoru Seznam emulátorů podporovaných v IDE NetBeans Přidání nové platformy emulátoru do NetBeans Změna implicitního zařízení emulátoru Nastavení platformy CLDC/MIDP Samostatné spuštění emulátoru
Midlety Základní kostra midletu Jednoduchý midlet Jak na úvodní obrazovky v aplikacích typu Java ME Úvodní obrazovka midletu Neznámá velikost displeje Využití celého displeje telefonu Midlet s úvodní obrazovkou Prohlížeč souborů v mobilním zařízení Personal Information Management - PIM Synchronizace kontaktů, kalendáře a seznamu úkolů Tvorba kontaktů programově Prohlížeč kontaktů Tvorba vyčkávací stránky pro úlohy spouštěné na pozadí Připojení k síti Přihlašovací obrazovka Vlastní program pro posílání zpráv SMS Co je to formát SVG Příklad jazyka SVG Zobrazení vektorového obrázku Otevření vektorové animace SVG
Databáze v mobilním zařízení Jak ukládat data v mobilním zařízení Citlivá osobní data v mobilním zařízení Jak ukládat data do mobilní databáze Jak číst data z mobilní databáze
Zobrazení záznamů z mobilní databáze Jak třídit záznamy v mobilní databázi Jak vyvolat reakci na změny v databázi Jak vymazat záznam z mobilní databáze Jak vymazat celou databázi aplikace Jak zjistit názvy všech databází aplikace Jak zjistit velikost databáze Jak zjistit, o kolik lze velikost databáze ještě zvětšit
Mobile Media API (JSR135 API) Hlavní objekty pro zpracování multimédií Generování tónů Jak určit kmitočet a výšku tónu Tvorba přehrávačů Typy mediálního obsahu Adresování různých typů médií Seznam podporovaných typů mediálních souborů Seznam podporovaných protokolů Určení typu mediálního souboru z adresy URL Zachycení zvuku v mobilním zařízení Přehrávání nahrávky Nastavení hlasitosti přehrávání
Konfigurace a instalace mobilních aplikací Vývoj aplikací pro různé typy zařízení pomocí konfigurací projektu Vývoj aplikací pro různé typy zařízení pomocí atributů typu Ability Vývoj aplikací pro různé typy zařízení pomocí direktiv preprocesoru Spouštění více konfigurací najednou ve vývojovém prostředí NetBeans Jak připravit aplikaci s pomocí vývojového prostředí NetBeans Jak připravit aplikaci vlastními silami Jak dostat aplikaci do mobilního telefonu Jak dostat aplikaci do mobilního telefonu protokolem WAP Nastavení typů MIME na serveru HTTP, jenž nabízí vaše midlety Proč je lepší v deskriptoru JAD uvádět absolutní adresu URL souboru JAR
Bezdrátové technologie Spojení platformy J2ME a technologie Bluetooth StandardJSR-82 Minimální požadavky technologie Bluetooth a J2ME
Co je to BCC Možnosti aplikačního rozhraní JSR-82 Bluetooth 2.2/3.0 = 24 Mb/s Inicializace zásobníku Bluetooth Informace o lokálním zařízení Informace o vzdáleném zařízení Vyhledávání zařízení Vyhledávání služeb Registrace služby Bluetooth Komunikace Emulace sériového portu Server sériového připojení Bluetooth Klient sériového připojení Bluetooth Formát adresy URL pro spojení se zařízením standardu Bluetooth Není třeba stále vyhledávat dostupná zařízení Chyba ve specifikaci Server typu Bluetooth Klient typu Bluetooth Posílání dat sítí GPRS