Na českém trhu nenajdete mnoho knih o technologii Adobe Flex. Ve skutečnosti je v češtině k sehnání jedna jediná – Adobe Flex, kompletní průvodce tvorbou interaktivních aplikací. V této recenzi si ji představíme.
Úvod a několik postřehů
Autorem je Borek Bernard a obálka knihy o něm říká, že patří k lidem s nejdelšími komerčními zkušenostmi s Flex frameworkem u nás. Působí mimo jiné jako školitel práce v Adobe Flex, vývojářské příspěvky píše na svůj DevBlog a na Twitteru ho můžeme sledovat jako @borekb. Pokud by vás zajímalo pozadí práce na této knize, napsal o něm na svém blogu (což je mimochodem moc zajímavé čtení).
Kniha má 400 stran a designem nevybočuje ze standardu CPressu. Pozorné oko nalezne sem tam chybějící slovo nebo písmeno, občas přebývají značky, které upozorňují na jiný typ sazby, ale těchto nedostatků je v celém textu minimum. Z hlediska jazykové kvality je na tom kniha lépe než některé další publikace stejného vydavatele a ani puristé nebudou uraženi.
Na začátku najdeme odstaveček o doporučeném způsobu čtení. Tato kniha se má číst stylem od začátku do konce a pokud na to přistoupíte, nebudete litovat. Znalosti a informace postupně přibývají a navazují na sebe, jakmile se objeví nový koncept nebo prvek, je buď okamžitě vysvětlen, nebo je odkázáno na další část knihy. Během čtení jsem neměl pocit chaosu, text naopak plyne uspořádaně a bez násilných skoků.
Celá kniha je protkána velkým množstvím rámečků, v nichž i zkušenější flexaři naleznou zajímavé rady, tipy a triky – ať už klávesové zkratky, vysvětlení nebo doplňující poznámky. Výčet faktů je obohacen také o zkušenosti, takže se dozvíme, i které věci mohou dělat v praxi potíže.
V době psaní knihy byla aktuální verze Flex 4.1 a Flash Builder 4. V současnosti máme verzi 4.6, takže většina věcí, které jsou v knize označovány za budoucí, je již realitou. Autor na základě tehdy platných plánů Adobe doplňuje text informacemi typu: „Spark komponenty budou plně fungovat s novou verzí komponenty DataGrid, která přijde v příští verzi Flex frameworku (4.5).“
Výhodou je mít určité znalosti některého z objektových programovacích jazyků, protože ActionScript, který se ve Flexu používá, je velmi podobný např. C#. Text je však dostatečně popisný a srozumitelný, takže ani čtenáři, kteří s programováním začínají (nebo se pohybují v kódování HTML a CSS), nebudou tápat. Zdrojové kódy zde navíc nejsou nosnou částí, ale slouží spíše k demonstraci popsaných principů.
Pokročilejší vývojáři se znalostí Flexu mohou být překvapeni zajímavými tipy v podobě klávesových zkratek nebo poznámek k programovacímu stylu. Ano, nenaučíme se tu totiž pouze Flex a ActionScript, ale také dobré způsoby vývoje softwaru obecně. Kniha je totiž plná poznámek o doporučených postupech ve vývoji reálných aplikací.
Velmi oceňuji, že se autor nespokojuje s prostým konstatováním „je to tak a tak“ (např. skutečnost, že ve Flexu 4 je potřeba přidávat posuvníky manuálně), ale u věcí, které by mohly vyvolávat pochybnosti nebo otázky, dodává i vysvětlení (v tomto případě rámeček „Proč scrollování není podporováno automaticky“). Čtenář tak neabsorbuje pouze čisté informace, ale zasazuje si je do kontextu nenásilnou formou „proč a jak“.
Ve Flexu se pracuje se dvěma komponentovými modely – MX a Spark. Původní MX je doporučeno nahrazovat Sparkem, který se poprvé objevil ve čtvrté verzi. Tuto komplikaci řeší kniha vysvětlením, co vlastně komponentový model je, a autor následně napříč textem uvádí, které komponenty ještě nemají ve Sparku obdobu a v které verzi Flexu se očekává. Perličkou jsou pak možnosti nahrazení chybející Spark komponenty alternativou (pro ty, kteří se chtějí striktně držet modelu Spark).
Náplň knihy
Pojďme si nyní projít knihu kapitolu po kapitole s tím, že prostý výčet témat zkusím obohatit o detaily, které mě zaujaly a mohou být přínosné i dalším čtenářům.
První kapitola uvádí Flash Platform a zasazuje do ní Flex framework tak, aby čtenář získal základní povědomí o jeho pozici mezi ostatními technologiemi. Součástí je také ukázka profesionálních aplikací vytvořených ve Flexu, aby čtenář získal představu, co vše technologie umožňuje. Pro úplnost jsou zmíněny i podobné technologie (Silverlight, Java, HTML 5).
Druhá kapitola se jmenuje První kroky a seznamujeme se v ní s Flash Builderem coby vývojovým prostředím pro Adobe Flex. Ačkoliv je Flex framework otevřený a existuje pro něj několik IDE, kniha pro některé ukázky využívá právě „oficiální“ produkt Adobe. Flash Builder však není problém nahradit jakýmkoliv jiným prostředím, neboť základní principy jsou stejné.
Na konci je vytvořena první malá interaktivní aplikace a text pokračuje vysvětlením toho, jak vlastně pracuje kompilátor a jaké jsou možnosti jeho nastavení a nasazování na server.
Třetí kapitola je již techničtější a podrobně rozebírá, jaké prostředky technologie nabízí. Tedy z čeho se skládá Flex SDK, jak funguje kombinace dvou jazyků (MXML a ActionScriptu), principy zanořování elementů a atributů, základy syntaxe ActionScriptu, kompilátory, generování dokumentace apod.
Další kapitoly navazují na znalosti obsažené dříve. Čtvrtá kapitola seznamuje čtenáře s tím, že Flex je založen na komponentách a popisuje postupně jejich jednotlivé typy. Důraz je kladen mimo jiné na to, jaké společné předky určité ovládací prvky mají a jak se to promítá do jejich používání. Jakoby mimochodem, v rámečcích, se také například dozvíme, co znamená datový typ hvězdička nebo jaký je rozdíl mezi DropDownListem a ComboBoxem.
V páté kapitole začneme komponenty řízeně rozmisťovat a dozvíme se, jaké typy layoutů a pozicování Flex podporuje. Následují v praxi neustále používané kontejnery, jejich odlišnosti a možnosti nastavení, zjistíme také, proč existují tři komponenty HGroup, VGroup a Group, když by stačila jen jedna, apod.
Šestá kapitola se zabývá esencí každé aplikace – práci s daty. A to nejen těmi ve vzdálených databázích, ale také v lokálních proměnných a souborech. Zjistíme, že flexová aplikace potřebuje serverovou mezivrstvu v podobě aplikačního serveru a dozvíme se, jaké možnosti máme v tomto ohledu k dispozici. V této kapitole je také vysvětlen velmi důležitý koncept data bindingu (vázání dat), včetně tipů pro jeho ladění, které není úplně snadné. Dále zde nalezneme podrobný popis práce s komponentami pro zobrazování dat – patří mezi ně DataGrid pro zobrazení tabulkových dat, včetně popisu jeho nejpoužívanějších vlastností, List nebo Tree. Také se mimochodem dozvíme, jak se pracuje s kolekcemi.
„Formattery jsou tak jednoduché, až vás to možná po mnoha komplexních komponentách Flex frameworku překvapí.“
V sedmé kapitole se naučíme využívat grafických možností Flash Playeru, protože pojednává o efektech, skinech a vzhledu aplikací obecně. Dočteme se tu o základních grafických tvarech, o tom, jak dodat stín, nebo jak objekty rozhýbat animací. Naučíme se vytvořit kompletní dynamický skin od začátku do konce a autor nám pak předvede, jak „se to dělá v praxi“ s použitím Flash Builderu a již existujících skinů. Kapitola končí přehledem témat vzhledu, kterými se však hlouběji nezabývá.
Náplní osmé kapitoly je tvorba vlastních komponent, což je věc v (alespoň mé) praxi používaná často – ne vždy totiž framework nabízí přesně to, co potřebujeme, a potom je potřeba si jej trochu přizpůsobit. Komponenty můžeme tvořit jak v Action Scriptu, tak deklarativně pomocí MXML a kniha neopomíjí ani jeden způsob (ačkoliv je MXML běžnější). V rámci kapitoly si vytvoříme složenou komponentu, na níž je demonstrováno několik věcí – tvorba vyskakovacích oken, předávaní dat do a ven z komponenty (k tomu si přečteme zásady dobrého návrhu API), vlastní události, skinovatelnost a další věci.
Devátá kapitola je označena jako sdružující, protože v ní je několik témat, která již nejsou pro vývoj tak důležitá a tvoří je menší funkční oblasti. Patří mezi ně: podpora drag & drop, tisk, animace při startu aplikace a lokalizace. Kromě toho se dozvíme, proč jsou některé třídy v balíčku flash.* a jaký to má dopad, nebo že Flex je dodávaný i s německou lokalizací.
Pokud vás zajímá, jak ve flexové aplikaci zprovoznit tlačítko Zpět webového prohlížeče nebo používat deep linking, dozvíte se to v desáté kapitole, která se zabývá tématem s poněkud kryptickým názvem: Integrace s běhovými prostředími. Kromě spolupráce s webovým prohlížečem a JavaScriptem se dočteme o technologii Adobe AIR a tvorbě desktopových aplikací ve Flex frameworku.
Aby bylo pojednání o vývoji RIA softwaru kompletní, jedenáctá kapitola se točí kolem dalších činností spojených s programováním – ladění aplikací, testování, cachování knihoven (což je pohled do fungování Flashe), tvorby dokumentace – a přidává několik užitečných rad k optimalizaci výkonu a programovacím technikám obecně.
Závěr
Kniha je protkána drobnými užitečnými tipy a radami, nejen ohledně Flexu a Flash Builderu (některé zmíněné klávesové zkratky jsou k nezaplacení), ale také vývoje softwaru obecně. Budete-li ji číst od začátku do konce, což se nakonec ukazuje jako vhodná forma, je velmi pravděpodobné, že si cestou uděláte i několik poznámek. Knihu lze doporučit v obou případech – pokud se chystáte s Flexem začít i pokud jej již používáte a nebráníte se rozšíření obzorů. Nováček ocení pozvolné přibývání informací, samouk si zasadí věci, které zná, do kontextu.