Hlavní navigace

Myslíme v jazyku Java

Lukáš Zapletal 31. 1. 2003

Chcete začít programovat v Linuxu? Kniha "Myslíme v jazyku Java" od Bruce Eckela, kterou vydala Grada již v roce 2000, je jednou z nejlepších učebnic svého druhu. Podíváme se jí na zoubek. K dispozici je také zdarma na webu (v angličtině).

Operační systém Linux a jazyk Java se v poslední době staly jedním z hojně používaných řešení. Nedivme se, jedná se o levnou a výkonnou věc. Také proto se Javě tak věnujeme. Java je silný, objektově orientovaný jazyk se širokou komunitou, nabízející především vysokou produktivitu vývoje. Pokud tedy nehodláte psát operační systém, je Java právě pro vás. Navíc si myslím, že Java je nanejvýš vhodná pro výuku OOP. Potom můžete klidně přejít na C++, ale ujišťuji vás, že už to pravděpodobně neuděláte.

Kniha Thinking in Java od Bruce Eckela je podle mého názoru jasně nejlepším materiálem, který se dá zdarma z internetu stáhnout. Nakladatelství Grada Publishing připravilo překlad druhého vydání (v současnosti se na webu vyskytuje již třetí). Grada dílo rozdělila do dvou knih. Druhá část má podtitul Knihovna zkušeného programátora. Překlad vyhotovil Bogdan Kiszka, lektoroval mu Miroslav Virius.

Myslíme v jazyku Java jsem poprvé četl v originále, teprve v minulém roce jsem si koupil druhý díl, a když jsem nedávno objednával nějakou literaturu na Vltavě, rozhodl jsem se podpořit pana Eckela zakoupením také prvního dílu a připravit pro vás recenzi. Myslím totiž, že toto dílo za to stojí.

Díl první

V prvním dílu se nepředpokládá žádná znalost programování, stačí jen počítač (nejlepší řešení bude zřejmě OS Linux) a Java JDK (balík s překladačem a dokumentací). Hned ze začátku se dozvíte o základech OOP, první kapitola je totiž velice slušným úvodem do UML analýzy (doménová analýza, návrh komponent, diagramy tříd, sekvencí apod.) Pan Eckel šikovně již v těchto fázích vysvětluje, co je pro návrh v Javě nejlepší.

Po přečtění druhé a třetí kapitoly již budete umět objekty v Javě vytvářet, používat, naučíte se vytvářet metody a volat je. Dozvíte se, že vlastně všechno je v Javě objekt (tedy kromě primitivních datových typů, ale i ty mají samozřejmě své objektové protějšky) a naučíte se základní syntaxi pro řízení běhu programu s přihlédnutím k rozdílům oproti C++ (moc jich není). Všechny kapitoly na sebe navazují a každá je uzavřena sadou praktických cvičení, což umožňuje knihu používat i jako učebnici pro různé semináře.

Čtvrtá kapitola se zaobírá inicializací a úklidem objektů v Javě. Detailně je popsán systém konstruktorů a pečlivě je zde vysvětleno, proč v Javě chybí destruktory. Na příkladech jsou ukázány programátorské metody, které destruktory částečně nahrazují.

Pátá až sedmá kapitola pokračuje ve výkladu OOP. Zapouzdření, skládání, dědičnost a mnohotvárnost (polymorfismus) jsou témata, která musí bezpečně ovládat každý programátor, který chce využít sílu OOP. Dozvíte se nejen, jak všechno v Javě využít, ale díky přehledným příkladům se mnoho nových informací dozvíte i v obecné rovině.

Předposlední, tedy osmá kapitola je věnována rozhraním a vnitřním třídám. Tato kapitola je hodnotná zvláště pro ty, kteří již znají C++, protože jak rozhraní, tak vnitřní třídy C++ nepodporuje (protože je nepotřebuje). Problematice vnitřních tříd je věnována značná pozornost, protože se hojně používají při tvorbě GUI.

Poslední kapitola je ze všech nejzajímavější. Je věnována kontejnerům (pole, dynamická pole, hashe apod), které nabízí standardní knihovna Javy. Detailně jsou probrány všechny typy, které Java2 nabízí.

Díl druhý

Navazuje samozřejmě na díl první, ovšem dá se číst i jako samostatná kniha, což jsem si také sám vyzkoušel. První kapitola pojednává o výjimkách. Dozvíte se, jak je používat, na co je klíčové slovo finally, naučíte se vytvářet vlastní výjimky a také je vyvolávat, zachycovat a přeposílat.

V druhé kapitole se dozvíme něco o vstupu a výstupu. Kdo nikdy neprogramoval v Javě, bude to pro něho velice důležitá kapitola. Nepodává sice vyčerpávající výklad rozsáhlé I/O knihovny, ale pro začátek zcela postačí. Obsahuje také paragraf o komprimaci, převodu na tokeny a serializaci objektů. Za zmínku stojí, že se v třetím vydání (na webu) nalézá i stručný popis tříd New I/O (nio), které se objevilo ve verzi Java 1.4.

V další kapitole nazvané Tvorba oken a apletů jsou na příkladech popsány všechny základní vizuální komponenty Javy a jsou zde vysvětleny základy technologie JavaBeans. Kniha se plně věnuje Javě2 a knihovně Swing. Pokud máte zájem něco se dozvědět o starší knihovně Java1, můžete si stáhnout první vydání knihy.

Samostatné dvě kapitoly tvoří vlákna a distribuované systémy. Tato problematika je již pro zkušenější vývojáře. Jsou zde popsány techniky synchronizace, síťové programování, JDBC, RMI, CORBA a JINI. Dozvíte se také několik základních informací o servletech a JSP. Kapitola je jako všechny v obou dílech uzavřena několika domácími úkoly.

Druhý díl obsahuje ještě několik dalších menších kapitol a dodatků (RTTI, JNI atd.), nikde nechybějící odkazy na zdroje, kterých je pro Javu více než dost, a také praktické rady pro návrh aplikací.

Příklady ke knize se dají stáhnout z internetu a samy o sobě si zaslouží jedničku s hvězdičkou. Jsou totiž vytvořeny velice důkladně a pokrývají snad všechny základní problémy, které mohou u Javy nastat. Všechny příklady jsou pečlivě okomentovány a jsou pro ně připraveny sestavovací skripty pro Apache Ant. Chcete-li se dozvědět něco o nějaké třídě z API, stačí použít grep a ihned máte na talíři několik příkladů.

Oba díly jsou přeloženy (až na pár výjimek: …special bit of code in lieu…, …preserves growing temperature… aj.) téměř precizně. Celý překlad má určitou formu, kterou bohužel mnoho překladů počítačové literatury tak moc postrádá. Pan Kiszka se striktně drží již přeložených výrazů a nepřekládá ta slova, u kterých se to nehodí (reader – čtenář, apod).

Knihu bych doporučil zejména začátečníkům a hlavně těm, kteří by chtěli začít programovat (nejen v Linuxu). Java je totiž skvělým nástrojem, jak vytvářet přenositelné aplikace. Myslím také, že se podle tohoto díla dají pochopit základní pilíře objektově orientovaného programování. Pro pokročilé bych doporučil spíše tituly Java efektivně nebo Java programujeme profesionálně.

Za oba tituly (celkem o 900 stranách) zaplatíte zhruba 800 korun českých. Objednat si je můžete ve vašem oblíbeném internetovém obchodu.

Link: Thinking in Java

Našli jste v článku chybu?

8. 4. 2005 17:01

bj (neregistrovaný)
Kniha Thinking in C++ je dobra. Problem je, ze je rozdelena do kapitol z logickeho hlediska, ne z hlediska jak se v C++ implementuje. To muze nekoho zmast a pripadat mu neprehledne. Napr. specialni kapitola o inicializaci a cisteni pameti. V jinych knihach se proste popise, jak vypada trida, co je to konstruktor a destruktor ale zde je to proste jinak.

4. 2. 2003 22:49

Jan Koutnik (neregistrovaný)

Skutecne objektovy jazyk je SmallTalk. Na ten bych se moc netesil...

DigiZone.cz: Česká televize mění schéma ČT :D

Česká televize mění schéma ČT :D

Lupa.cz: Slevové šílenství je tu. Kde nakoupit na Black Friday?

Slevové šílenství je tu. Kde nakoupit na Black Friday?

Vitalia.cz: „Připluly“ z Německa a možná obsahují jed

„Připluly“ z Německa a možná obsahují jed

Podnikatel.cz: Vládu obejde, kvůli EET rovnou do sněmovny

Vládu obejde, kvůli EET rovnou do sněmovny

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

Lupa.cz: Avast po spojení s AVG propustí 700 lidí

Avast po spojení s AVG propustí 700 lidí

Lupa.cz: Není sleva jako sleva. Jak obchodům nenaletět?

Není sleva jako sleva. Jak obchodům nenaletět?

Lupa.cz: Propustili je z Avastu, už po nich sahá ESET

Propustili je z Avastu, už po nich sahá ESET

120na80.cz: Jak oddálit Alzheimera?

Jak oddálit Alzheimera?

Podnikatel.cz: Na poslední chvíli šokuje vyjímkami v EET

Na poslední chvíli šokuje vyjímkami v EET

Lupa.cz: Co se dá měřit přes Internet věcí

Co se dá měřit přes Internet věcí

DigiZone.cz: Sony KD-55XD8005 s Android 6.0

Sony KD-55XD8005 s Android 6.0

120na80.cz: Bojíte se encefalitidy?

Bojíte se encefalitidy?

120na80.cz: Rakovina oka. Jak ji poznáte?

Rakovina oka. Jak ji poznáte?

DigiZone.cz: NG natáčí v Praze seriál o Einsteinovi

NG natáčí v Praze seriál o Einsteinovi

Podnikatel.cz: EET: Totálně nezvládli metodologii projektu

EET: Totálně nezvládli metodologii projektu

Lupa.cz: Proč firmy málo chrání data? Chovají se logicky

Proč firmy málo chrání data? Chovají se logicky

Měšec.cz: Finančním poradcům hrozí vracení provizí

Finančním poradcům hrozí vracení provizí

Podnikatel.cz: EET zvládneme, budou horší zákony

EET zvládneme, budou horší zákony

Lupa.cz: UX přestává pro firmy být magie

UX přestává pro firmy být magie