Novinky pro Flash/Flex vývojáře

V minulém článku jsme viděli, co Adobe do blízké budoucnosti zamýšlí s Flashem jako s platformou, dnes se podíváme, pomocí jakých vývojářských technologií budeme moci pro Flash Platform vyvíjet.

Novinek je i tentokrát celá řada a jejich šíře je taková, že je ani nestihneme všechny detailně popsat, a tak se zastavíme aspoň u těch nejdůležitějších. Mezi ně patří:

  • Flex 4: Flex framework / SDK je po mnoho let tím, co k Flash platformě přitahuje aplikační vývojáře, kteří by k ní pravděpodobně jinak vůbec nepřičichli. Flex 4 je za několik posledních let zdaleka největším releasem s mnoha důležitými dopady, které si popíšeme níže.
  • Flash Builder 4: Kromě frameworku samotného je pro adopci technologie důležitý i primární vývojářský nástroj. Ten se ve verzi 4 jmenuje Flash Builder (dříve Flex Builder) a i v něm je celá řada nových, příjemných vlastností.
  • Flash Catalyst: Catalyst je nový nástroj v portfoliu Adobe, který je cílen primárně na designery aplikací (tj. lidi, kteří definují vzhled a chování uživatelského rozhraní).
  • CS5: Creative Suite je balík designersko-vývojářských aplikací, z nichž jsou pro Flex / Flash vývoj relevantní především Flash Pro, Photoshop, Illustrator, Fireworks a okrajově i pár dalších.
  • Serverové technologie: Ačkoliv je Flash primárně klientskou záležitostí, Adobe dodává i vlastní serverové produkty, mezi které patří například LifeCycle Data Services, ColdFusion, Media Server a další.

Flex 4

Flex má pro Flash Platform strategický význam. S trochou nadsázky lze říci, že před Flexem byl Flash jen plugin do prohlížeče pro online video, pár oddechových her a otravné reklamy, zatímco po nástupu Flexu a jazyku ActionScript 3 se svět dočkal nové zajímavé aplikační platformy, která má velmi slušný komponentový framework, dobrý objektově orientovaný jazyk, pohodlné IDE, a přitom běží téměř na každém počítači světa. Po vydání běhového prostředí Adobe AIR jsme navíc byli svědky boomu mnoha zajímavých aplikací, které by bez Flexu jen těžko vznikly, nebo aspoň ne tak rychle. Důležitost Flexu je tedy pro Flash jako platformu velmi vysoká.

Abychom pochopili motivaci k velkým změnám ve Flexu 4, je potřeba podívat se zhruba rok a půl zpátky, tedy na začátek roku 2008. Tehdy vyšel Flex 3, který byl solidním, vyspělým releasem, protože navazoval na verzi 2 bez nějakých přelomových změn (přelomový byl právě Flex 2, se kterým se začíná psát moderní éra Flexu; předtím to byl “jen” drahý a ne příliš rozšířený serverový produkt Macromedie). Ačkoliv je Flex 3 úspěšný a široce používaný, v mnoha ohledech dosáhl svých mezí. Jeden příklad za všechny: kompoziční model uživatelského rozhraní je málo pružný, např. tlačítko může obsahovat pouze popisek a ikonku, ale nic jiného. Pokud například designer aplikace potřebuje, aby se v tlačítku zobrazovala nějaká grafika (nebo třeba video), je nutno se uchýlit k workaroundům – a to už člověk neprogramuje ve frameworku, ale proti němu. Do toho všeho přišel Silverlight 2, který měl řadu konceptů “správně” už od začátku.

Tam někde tedy vznikla potřeba zásadním způsobem Flex framework přepracovat, aby odpovídal moderním nárokům. Výsledkem je právě Flex 4, který přináší následující hlavní novinky:

  • Komponentová architektura “Spark“, která odděluje data a chování komponenty od její vizuální reprezentace (tak fungují třeba komponenty v WPF nebo v Silverlightu; původní architektura komponent z Flexu 3 naproti tomu připomíná spíše Windows Forms nebo ASP.NET Web Forms)
  • Grafická primitiva jako čáry, obdélníky a elipsy jsou nyní podporovány rovnou v MXML (MXML je značkovací jazyk pro tvorbu uživatelských rozhraní, používaný ve Flexu), tedy na úrovni frameworku. Dříve bylo nutno volat grafická API Flash Playeru z ActionScriptu nebo používat knihovny třetích stran (např. Degrafa).
  • FXG je nový formát, který podporuje sadu grafických elementů naznačenou v předchozím bodu, ale umožňuje je uložit i samostatně, nezávisle na jakékoliv flexové aplikaci. Stává se tak ideálním formátem pro přenos grafiky mezi jednotlivými aplikacemi Adobe, což je důležité pro workflow mezi designerem a vývojářem.
  • Mnoho bylo uděláno na poli vývojářské produktivity. Proces kompilace je nyní 2× – 7× rychlejší, kupříkladu. Flex má taky nyní 2-way data binding, bohatší CSS selektory, zcela přepracované a hodně vylepšené stavy (states) a podobně.
  • No a potom samozřejmě řada dalších vylepšení, jak se na velký release sluší a patří, např. podpora 3D efektů, pokročilá podpora textových vlastností díky Flash Text Engine, nové možnosti animací a podobně.

Zastavil bych se nyní na chvíli u komponentové architektury Spark a u formátu FXG. Ty totiž umožňují ve Flexu něco, co dřív nebylo triviální – hladké workflow mezi designérem a vývojářem. Představte si například, že designer vytvoří wireframe ve Photoshopu, pak ho skrze formát FXG naimportuje do Catalystu (viz níže) a programátor nakonec dostane funkční prototyp, kam “jenom” doplní aplikační logiku. Ačkoliv je tento příklad idealistický a proces bude v reálném životě komplikovanější, Flex 4 přináší prostředky, které tyto scénáře velmi ulehčí, což je skvělé.

Aby článek nebyl celý optimisticky růžový, musím poznamenat, že Flex 4 přinese také své problémy. Vzhledem k rozsahu změn Adobe nestihne implementovat vše už ve verzi 4 a některé věci se tak budou dodělávat až později. Například nový komponentový systém zatím neimplementuje všechny komponenty, které existovaly v systému původním (ten se nazývá “Halo” nebo “MX”). To v praxi znamená, že bude nutno kombinovat nové Spark komponenty s těmi původními, například nová komponenta Group bude muset být vložena do MX komponenty ViewStack, protože ta nemá svou Spark náhradu. Tato dualita komponent přináší celou řadu drobných či větších komplikací, např. nutnost kombinovat různé jmenné prostory v MXML i v CSS nebo nutnost zkoumat, jak dobře spolu které dvě komponenty spolupracují (snaha Adobe je o co největší vzájemnou interoperabilitu, ta ale není stoprocentní).

Pokud se na Flex 4 podívám jako člověk, co se ho teprve učí, v podstatě nyní musím mít minimálně představu o dvou zcela odlišných komponentových frameworcích – a z vlastní zkušenosti můžu říct, že přechod na verzi 4 bude dělat problém i některým stávajícím Flex vývojářům. Nedá se ale nic dělat, naznačené problémy je nutno chápat jako “nutné zlo”, které na oplátku Flex vývojářům do budoucna otevře mnoho nových možností.

Nástroje

O novinkách ve Flash Builderu 4 by se dal napsat samostatný článek, zde je aspoň rychlý přehled novinek, které osobně vnímám jako nejdůležitější:

  • Drtivou většinu času vývojář tráví psaním kódu, proto potěší jakékoliv zvýšení inteligence editoru. Zde musím upřímně říct, že pokud jste zvyklí na čirou magii nástrojů ze světa .NETu nebo Javy, kdy editory ví pomalu lépe než vy, co vlastně chcete napsat, tak to se ve Flash Builderu nekoná. Nicméně i tak jsou změny velmi výrazné a současný stav editoru ve FB4 bych nazval “komfortní standard”. Napovídání při psaní kódu nyní inteligentně filtruje nabídku podle kontextu, v tooltipu se zobrazuje kontextová nápověda, navigace v kódu pomocí Ctrl+Click funguje spolehlivěji než ve FB3 a tak dále a tak dále.
  • Vizuální návrhář byl velmi kvalitní už ve FB3 (první opravdu funkční WYSIWYG, se kterým jsem kdy pracoval – uhádnete, proč jsem ho nepotkal ve světě HTML?), přesto bych ho znovu vyzdvihl i ve FB4. Nyní totiž musí ve skutečnosti podporovat dva komponentové frameworky, a dělá to velmi dobře.
  • Velká pozornost byla věnována wizardům pro napojení na datové zdroje (PHP, Java, webové služby, ColdFusion, libovolný backend). Nejsem zrovna fandou jednorázově generovaného kódu, nicméně jednorázová úspora času je značná. (Ukázku práce s novými nástroji naleznete v článku Jak na to: Spojení Flex 4 a PHP ve Flash Builderu 4, který vyšel na Zdrojáku minulý týden – pozn. red.)
  • Co je naopak užitečné velmi a prakticky v každé aplikaci, je Network Monitor. Dělá v podstatě to, co nástroje typu Fiddler, ale nyní přímo z rozhraní Flash Builderu.
  • Srdce vývojáře ještě potěší vestavěná podpora unit testů, které lze nyní generovat z produkčního kódu (pokud praktikujete test-after, jinak samozřejmě můžete psát testy manuálně, pokud praktikujete TDD) a vykonávat je přímo v prostředí Flash Builderu.
  • Rovněž debugování se dočkalo řady příjemných vylepšení, jako např. radikálně vylepšené okno expressions, podmíněné breakpointy a tak dále.

Vylepšení je samozřejmě daleko více, ale pro hrubý přehled toho, jak na tom Flash Builder teď zhruba je, to bude muset stačit. Upgrade jednoznačně doporučuji, a to už klidně na momentálně vydanou druhou betu – používám ji několik hodin denně pro vývoj reálných aplikací a bez větších problémů.

Flash Catalyst

Novinkou v nástrojích Adobe je Flash Catalyst, aplikace pro návrh interaktivních uživatelských rozhraní. Pokud znáte sadu nástrojů Expression od Microsoftu, tak Catalyst zhruba odpovídá Blendu (nejsem si jistý, jestli lze podobnou analogii najít v Javě nebo v dalších technologiích – když tak mě prosím doplňte v komentářích).

Jak jsme si už naznačili v předchozím textu, idea Adobe je taková, že grafický návrh začne v jednom z jejich grafických nástrojů typu Photoshop, pomocí formátu FXG dojde k naiportování assetů do Catalystu, kde se přidá interaktivita a na vývojáře zbude “pouze” dopsání aplikační logiky v jeho oblíbeném Flash Builderu. Při práci v týmu toto oddělení potom umožní souběžnou práci vývojáře a designéra, která je v současné verzi rovněž možná, ale ne tak dobře podporovaná.

Rovněž popis Catalystu by byl na dlouho, ale to znovu bylo spíše na samostatný článek. Zájemci, stahujte druhou beta verzi z Adobe Labs.

Creative Suite 5

Z chystané verze CS5 je pro vývojáře na platformě Flash nejrelevantnější nástroj Flash Pro, který je pro Flash původním (a kdysi jediným) vývojovým prostředím. Je historicky orientovaný spíše na designery a obsahuje tedy koncepty jako je časová osa, práce s klipy a podobně, ačkoliv v posledních verzích se Adobe snaží Flash Pro zatraktivnit i pro klasické vývojáře. Dočkáme se tak lepšího ActionScript editoru (ten byl v předchozích verzích oproti Flex Builderu opravdu velmi chudý), v první betě bude Flash Pro navíc jediným vývojovým prostředím pro vývoj aplikací pro iPhone (později bude přidána podpora do Flash Builderu, kde podle mého názoru dává větší smysl), zlepší se integrace s Flash Builderem (FB bude možné používat jako editor ActionScript souborů) a tak dále. Ještě jedna změna bude hodně příjemná: místo ukládání Flash Pro zdrojáků do proprietárního, binárního formátu FLA (Flash Authoring) bude nyní možno zvolit ukládání do nového XML formátu, který tak bude možno lépe verzovat a podobně.

Podpora Flashe v ostatních aplikacích (Photoshop, Fireworks apod.) pak bude především na úrovni exportu do nového formátu FXG, jak již bylo zmíněno výše. Funkčně malá změna, ale s velkým dopadem na možný workflow a potenciálně i na prodej těchto produktů. Vidíme tedy, jak se Flash stává leitmotivem i v dalších, dříve ne zcela souvisejících aplikacích.

Serverové technologie

Nejvíce prezentovanou novinkou byl ColdFusion 9, ale abych se přiznal, o této technologii mnoho nevím a bez nároku na citování nějakého zdroje bych se i domníval, že v ČR není příliš rozšířený. Některé vlastnosti jsou ale zajímavé, dobrý přehled novinek je v tomto videu z letošní konference Adobe MAX: http://tv.adobe.com/…oldfusion-9/.

Z dalších serverových produktů je potom pro vývojáře zajímavý především produkt LiveCycle Data Services, který pro Flex aplikace nabízí pohodlné zpřístupnění dat ze serverového backendu (Java only). Základní verze zvaná BlazeDS je open-source, pokročilejší verze, která už je komerční, potom nabízí několik zajímavých funkcí navíc, jako např. offline podporu pro AIR aplikace, synchronizaci dat a podobně. Z novinek oznámených na Adobe MAX bych vypíchl především nový produkt LiveCycle Express, který znamená vstup Adobe do cloud computingu. LiveCycle Express bude totiž verzí LCDS běžící na serverech Adobe, což může být pro některé zákazníky zajímavá alternativa.

Nějaká zklamání?

Celkově musím říct, že letošní MAX přinesl tolik příjemných novinek, že jsem to snad ani nečekal. Pokud bych měl zmínit jednu věc, která mě mrzí (ale nebyla zas tak nečekaná), je absence jakýchkoliv oznámení o vývoji ActionScriptu jako takového. ActionScript 3 byl pro Flash kritický pro přechod od čistě animační platformy k platformě aplikační, ale konkurence nespí a feature-set podobný Javě devadesátých let nebo C# v1 dnes vypadá poněkud zastarale. ActionScript nemá vlastnosti jako generické typy, abstraktní třídy, privátní konstruktory, přetěžování metod, inferenci typů proměnných, lambda výrazy a další, což v řadě případů znamená nutnost psát méně elegantní a o něco hůře udržovatelný kód. Je ale pravda, že většina zmíněných věcí je z kategorie “nice to have” a nejsou něčím, co by znemožňovalo psaní velkých aplikací v ActionScriptu. Pokud by ale Adobe napřesrok chtěla něčím vývojáře potěšit, ActionScript 4 by byla určitě jedna z nejlepších možností.

No a potom ještě jedna věc – vývojáři na Linuxu se nedočkali žádného povzbudivého oznámení ohledně Flash Builderu pro jejich operační systém (FB pro Linux je už delší dobu v alfa verzi, ale nic víc).

Shrnutí

Jak naznačuje délka článku a současně fakt, že jsme na většinu novinek nahlédli pouze letmo, Adobe toho pro vývojáře letos představilo opravdu hodně, a to jsem nezmínil zdaleka všechno. Například je v rané alfa verzi mobilní varianta Flex frameworku, která kromě výkonnostních optimalizací nutných pro běh na hardwarově slabých zařízeních přinese i užitečnou sadu komponent, např. framework pro navigaci mezi jednotlivými obrazovkami. Nebo se pravděpodobně dočkáme podpory Edit&Continue, což je napříč platformami často požadovaná věc a ve Flashi / Flash Builderu v současnosti nic takového není.

Novinek je zkrátka mnoho a vývojáře může jen těšit, že Adobe pro vývoj nad Flash Platform poskytuje čím dál lepší a komfortnější nástroje. Zkombinujte si to s výrazně větším dosahem Flashe, který nás v nejbližších letech čeká, a máme tu skutečně zajímavou, multiplatformní technologii. Máme se na co těšit!

Komentáře: 5

Přehled komentářů

Pavel Šimek ViewStack
Borek Bernard Re: ViewStack
Pavel Šimek Re: ViewStack
Borek Bernard Re: ViewStack
Pavel Šimek Re: ViewStack
Zdroj: https://www.zdrojak.cz/?p=3101