Přejít k navigační liště

Zdroják » JavaScript » První GDE summit a HTML5 technologie v Googlu

První GDE summit a HTML5 technologie v Googlu

Co to znamená být Google Developer Expert? Jak proběhl GDE sraz v San Franciscu? Jaká je budoucnost Google Closure, Angularu a Dartu? Co je to Este.js? To se dozvíte v dnešním článku.

Google Developers Expert (GDE), je nový program Googlu pro nezávislé experty, kteří nepřímo propagují některou z jeho technologií, ať už přednáškami, psaním, open source projektem, či prostě jen tak, že ji používají. Říká se, že neexistují slavní vývojáři, jen hlasití, a snad proto jsem byl Filipem Hráčkem navržen do programu za Česko, pro HTML5 technologie.

Na celém procesu mne překvapila minimální byrokracie. Pár mailů a jeden pohovor. Po Skypu, s rodilým mluvčím a špatným spojením, což vždy procvičí mou telepatii. O výsledku jsem se dozvěděl tak, že mi rovnou přišla pozvánka na první summit do San Franciska, nic víc, žádné zbytečné maily. Chválím.

První den jsme přetrpěli nezbytné organizační meetingy a socializační workshop, který nás, pod záminkou naučíme vás se prezentovat, měl sblížit. Vidět přes 40 geeků z celého světa trénovat svůj body language velmi nedůvěryhodným bývalým hercem byl zajímavý zážitek.

Podstatný byl však den druhý, kdy nám byli předhozeni vedoucí projektů, za které jsme GDE členství dostali. Největší zastoupení měl Android a HTML5. Ačkoliv jsem byl zvolen za HTML5, nejvíce mne zajímaly informace o Google Closure Tools, což je dle mého mínění stále nejpropracovanější a nejrobustnější technologie pro vývoj webových aplikací, a jejím vztahu k ostatním Google technologiím.

Abyste tomu rozuměli, Google je zajímavá firma. V současnosti aktivně vyvíjí hned tři různé technologie pro vývoj webových aplikací. Každá je fundamentálně jiná, a každá má své vlastní nej, přičemž Google masivně propaguje pouze dvě z nich. Tyto technologie jsou: Angular, Closure, Dart. Pokusím se vysvětlit, proč Google vsadil na tři koně, proč nijak nepropaguje Closure, co to znamená pro programátory, ale nejprve zmíněné technologie stručně představím.

Angular a Google Closure

Angular pokračuje tam, kde jQuery skončilo. jQuery nedokázalo překročit svůj stín DOM helper nástrojů a jednoduchého systému pluginů. To bylo však cool před mnoha lety, dnes se ale to nejzajímavější odehrává mezi javascriptovými MVC frameworky. Ty ordinují strukturu aplikace ve snaze oddělit model, view, a to co zbude tak, aby se aplikace lépe udržovala a testovala. Angular skrze svůj šablonovací systém ještě více usnadňuje práci s DOM. Angular také evangelizuje testování a dependency injection, pojmy donedávna v javascriptovém světě neznámé. Když jsem Angular viděl poprvé, nemohl jsem pochopit, proč jej Miško nenapsal s využitím Closure Tools. Angular jde sice s Closure použít, ale jen nešikovně, a bez využití Closure Compileru. Compiler je velmi mocný nástroj, který dodává javascriptu mocnou statickou analýzu (neocenitelné při refactoringu), a s ničím nesouměřitelnou míru komprese (neocenitelné pro vývoj mobilních aplikací).

Bohužel, Angular je psán „stringly typed“ kódem, se kterým si kompiler z principu neporadí. S klukama z týmu Angular jsme měli oblíbenou zábavu. Pokaždé když jsme se potkali, já se ptal „Kdy bude Angular fungovat s Compilerem?“ a odpověď byla „Ale on funguje,“ na což já vždy odpověděl „Ale ne v advanced módu, a o něm to je.“ Pak jsme se zasmáli a mikrodebatu uzavřeli tím, že Angular je prostě jiná filozofie. Až nedávno zaběhnutý rituál Miško přerušil: „Ahoj, budeš mít radost, přepisuju Angular pro advanced mód, a děsně mě to štve.“ :) Vysvětlím. Angular lze dnes skutečně začít používat okamžitě, stačí přidat jeden soubor z CDN a můžeme vesele kódovat. S Google Closure takhle snadno začít nejde. Za ty úžasnosti, co nám Closure poskytuje, platíme složitějším nastavením dev stacku. Ostatně to byl jeden z důvodů, proč jsem svůj dev stack (a nejen ten) poskytl světu pod názvem github.com/steida/este.

Zpět k Angularu. Nejúžasnější na Angularu je jeho šablonovací systém. Closure Templates takhle mocné nejsou (ale mají zas jiné výhody). Dobrá zpráva je, že se připravuje Angular 2, který bude mít šablonovací systém s Closure compilerem kompatibilní. Je to logické, byla by veliká škoda mít dvě skvělé, ale nekompatibilní technologie.

Dart

Dart je velmi ambiciózní projekt. Není to jen zcela nový jazyk, ale i virtuální stroj. Dart přebírá z Google Closure několik podstatných principů: volitelné typování, kompilace, statická analýza, standardní set knihoven. Dart je myslím budoucnost vývoje, minimálně v Googlu. Je jedno, jestli Dart uspěje mimo Google. To je rozdíl oproti Microsoftu, který technologii která se neujme, nemilosrdně zařízne (Silverlight a mnoho dalších). Microsoft je firma životně závislá na tom, aby vývojáři její technologie používali. Google je v jiné situaci, technologie si vyvíjí, jak potřebuje, jeho příjmy plynou odjinud. Je další důvod, proč věštit Dartu budoucnost – Java. Dart by mohl v Androidu Javu elegantně nahradit.

Na GDE summitu jsem potkal několik velmi zanícených Dartistů a naše první setkání nemohlo skončit jinak, než hádkou na téma Closure vs. Dart. Stačilo pár minut, a Kevin Moore začal lomit rukama a vykřikovat: „Don’t talk to him, he is crazy!“ Po dalších mnoha minutách výměn názorů Kevin přiznal, že čas Dartu ještě nenadešel. Ukázal jsem mu Este.js, technologii nad Closure postavenou, kterou můžete začít produktivně používat už dnes, a Kevin otočil: „I love this guy, he is crazy!“

Jak to tedy je. Dart pozorně sleduji od jeho prvopočátků, stejně jako mnoho dalších frameworků. Stále platí „use right tool for your job“, a já chtěl vždy používat ty nejlepší. Nejlepší pro mne znamená především maximálně robustní. Jak dlouho běží v produkci, jakou má podporu, jak se vyvíjí. Tohle je zvláště na webovém vývoji zásadní. Neexistuje lépe prověřená technologie než Google Closure Tools. Jsou v ní napsané nejpoužívanější aplikace internetu. GMail, GMapy, GPlus, v podstatě GCokoliv používá něco z Closure. Armáda odpočatých skvěle placených programátorů, výsledek mnoha let jejich práce. Tohle žádný open source framework v dohledné době nepřebije. Ale teď tu máme Dart. Znamená to, že Google Closure zahodí? Rozhodně ne. V Googlu dobře vědí, že zahodit Closure by byla single worst strategic mistake.

Closure vs Dart

O Closure vs. Dart jsem se bavil s několik programátory, odpovědi shrnuje asi nejlépe tento stručný dialog s jedním z nich:

Já: „Bude Closure Googlem aktivně používán i za dva roky?“
Google: „I za pět.“
Já: „A Dart?“
Google: „Still interesting research project.“

Z tohoto pohledu je zajímavé, proč Google Closure daleko více nepropaguje? Odpověď jsem tušil a interní zdroje mi ji potvrdily. Closure není žádný oficiální projekt Googlu, kterým by Google sledoval nějaké své business cíle. Je to nástroj, který si programátoři vyvinuli pro sebe, a který opensourcovali ve svém volném čase. A který se spontánně vyvíjí prostě proto, že ho Google používá všude. Angular mi přijde jako nějaký interní startup Googlu pro budování ninja superhero komunit. Nedivil bych se, kdyby rozpočet pro Angular šel z kolonky PR. A Dart? Dartem chce Google v delším období patrně odstřihnout Javu, a zcela určitě vytvořit vlastní vývojářský ekosystém pro Chrome OS a web. Více o Closure tu nemá smysl psát, protože bych jen opakoval argumenty z dřívějšího článku. Zajímá-li vás Closure více, napište mi nebo přijďte na školení.

Poslední den byl věnován různým sociálním aktivitám. Vřele doporučuji návštěvu muzea počítačové historie. Je opravdu velmi dobře vybavené. Byl jsem dojat, když jsem si fotil mikročip s kapacitou miliónkrát menší, než má můj iPhone. Je neuvěřitelné, jak obrovský udělal HW pokrok, zvláště když to srovnáme se SW. Prohlédli jsme si také celý Google Plex. Evgeniy, GDE z Ruska, naprosto vše detailně fotil. Říkám mu, „Evgeniy, ty už máš tolik fotek, že si v Moskvě můžete postavit kompletní kopii GoogleHQ!“. Jen se na mě usmál, přiložil si prst ke rtům, a řekl: „Psst!“ ;)

Komentáře

Subscribe
Upozornit na
guest
10 Komentářů
Nejstarší
Nejnovější Most Voted
Inline Feedbacks
View all comments
Čelo

Fajn článek. Dík za letmý pohled do zákulisí. (opravil bych „standartní set“)

Martin Hassman

Opraveno, díky.

Borek Bernard

Dík, Dane, něco jsem se dozvěděl a ještě se u toho pobavil :)

mormegil

Řekl bych, že jestli je Evgeniy z Ruska, tak to není Evgeniy, ale Jevgenij. :-)

Eda

Fajn článek, díky. Kéž by tu na Zdrojáku Steida publikoval víc…

Jen drobnost: „…stále nepropracovaněj­ší…“ má být pravděpodobně „nejpropracova­nější“.

Martin Hassman

To si my přejeme taky. Ale Dan se snaží 8-)

Martin Hassman

A překlep jsem opravil, unikl i korektorce. Díky.

Ladislav Thon, Dart GDE

Chudák Kevin :-) Teď si nejsem jistý, že mám opravdu litovat, že jsem to tentokrát nestihl :-)

Ale je tady jedno zajímavé téma. Zkusím popsat, jak to vidím já. Google je monstrózní firma, která je životně závislá na webu. Pokud Google není firma, která píše zdaleka nejvíc kódu pro prohlížeče na světě, je určitě jedna z TOP 5. A protože v Googlu píšou pro prohlížeče veliké aplikace (říká se, že Gmail má půl miliónu řádek kódu v JS), není divu, že se snaží na tomhle poli výrazně inovovat. Nejenom JS jako jazyk, ale i web jako platforma na takové věci prostě nebyly stavěné.

To je důvod, proč vzniklo Chrome a V8, to je důvod proč vznikl Google Web Toolkit a to je taky důvod, proč vznikly Google Closure Tools. GWT a Closure žily nějakou dobu spokojeně vedle sebe, jenže se ukázalo, že ani jedno prostě nestačí (psát prohlížečové aplikace v Javě chtějí snad jenom masochisti a enterprise vývojáři, a s použitím Closure je JS vlastně úplně jiný jazyk). Proto v Googlu poslali GWT k ledu (resp. do rukou vývojářské komunity) a proto vznikl Dart — jako logické pokračování GWT a Closure. A stejně jako nějakou dobu spokojeně koexistovalo GWT s Closure, teď budou nějakou dobu spokojeně koexistovat Closure s Dartem.

Určitě jsou v Googlu lidi, kteří si myslí, že za dva roky (nebo i za pět let) bude Dart „still interesting research project“, ale podle náznaků v issue trackeru lze usoudit, že stejně tak jsou v Googlu lidi, kteří se už teď Dart snaží používat (nebo ho aspoň vyhodnocují jako možnou volbu). K tomu je třeba připočíst, že Dart se na veřejnost dostal v extrémně raném stádiu, a i když za ten cca rok a půl udělal Dart tým spoustu práce, pořád je to spíš alfa verze než mainstreamová záležitost. Což neznamená, že se Dart nedá použít (v jazyce jako takovém už nebudou žádné zásadní zpětně nekompatibilní změny a velký refaktoring základní knihovny se pomalu chýlí ke konci), jenom to znamená, že „early adopters only“. Proto jsem taky na DevFestu tvrdil, že Dart je jazyk budoucnosti (a můj odhad byl, že asi tak 2 až 3 roky vzdálené budoucnosti).

Enum a statická analýza kódu

Mám jednu univerzální radu pro začínající programátorty. V učení sice neexistují rychlé zkratky, ovšem tuhle radu můžete snadno začít používat a zrychlit tak tempo učení. Tou tajemnou ingrediencí je statická analýza kódu. Ukážeme si to na příkladu enum.