* pro vysvětlění pojmu RIA zde
Jsou Rich Internet Applications opravdu tím správným směrem, kterým se máme vydat?
Zdá se že ano.
RIA opravdu poskytují řadu výhod, především z uživatelského hlediska. Odpadá neustálé čekání na reload a refresh stránek. Ovládání webů, řešených přes tuto technologii, bývá většinou interaktvní a většinou také intuitivní. Práce s webem je díky tomu rychlejší, pohodlnější a v některých připadech i bezpečnější. Například pokud pracujeme s webovým textovým editorem, který svá data odesílá na pozadí serveru, neriskujeme tolik, jako když se celý text pokoušíme uložit až po hodině práce. Prohlížeč se samozřejmě zákařně složí minutu před dokončením a nám nezbude nic.
RIA aplikace vypadají opravdu jako logická evoluce webu a rozšíření stabilního standardu HTTP/HTML o další možnosti. A co když tímto rozšířením přijdeme o některé důležité vlastnosti?
Co třeba členitost webu – tedy rozložení velkých projektů na samostatné stránky.
Adresovatelnost, na jednotlivé stránky přece existují unikátní odkazy, kterými se na ně můžeme instantně přemístit.
Co operace Vpřed a Zpět, bude je stále možné v takovýchto aplikacích použivat?
Teď je na čase si přiblížit dva způsoby, jak na RIA aplikace. V zásadě máme dvě možnosti, jak takovouto aplikaci napsat.
Začneme možností číslo 2. Technologie, se kterými zde můžeme pracovat, se v základu dost liší ale mají jedno společné. Jde o binární pluginy do prohlížečů. Uvnitř těchto programů, řekl bych i kontejnerů, naše aplikace poběží. V podstatě degradujeme prohlížeč na jakési okno okolo našeho pluginu, resp. naší aplikace. Dost zjednodušený pohled na danou problematiku, že? Ale pokud budeme vytvářet složitejší aplikaci s mnoha závislostmi, téměř jistě naše aplikace takto dopadne. Zřejmě několik samostatných stránek s komplexní aplikací typu Flash/Silverlight. Minimální možnost procházení stránek pomoci tlačítek Zpět/Vpřed, odkazy budou možné v zásadě jen na několik hlavních stránek, tedy hlavních uzlů do naší aplikace.
Možnosti indexace našeho webu ve vyhledávačích budou také značně omezené:/
Snad na tom bude lépe varianta č. 1, tedy HTML v kombinaci s JavaScriptem. Aby nedošlo k nedorozumění, pod spojením RIA, HTML a JavaScript mám na mysli aplikaci typu GMail. Tedy aplikaci, která víceméně celá běží na straně klienta a se serverem komunikaje přes, k tomu určené, webové služby. Snad mi lidé prominou tento laický pohled. Blíže jsem celý systém GMailu, potažmo Googlu nezkoumal.
Co se týka propojení celého GMailu adresami, zřejmě funguje. Na jednotlivé části je možné se odkazovat a aplikace se tak chová jako normální aplikace složená ze statických stránek. Tlačítka Vpřed a Zpět jsou také funkční a poslední hledisko, tedy indexování celého webu, je zde irelevantní. Indexovaní webu s veřejnými informacemi by skončilo podobně jako v přechozí variantě, možná o několik bodů lip. Velmi pak záleží na tom, jak bude aplikace udělána, a jestli se majoritní vyhledávače naučí indexovat obsah BLOB pluginů.
V souvislosti s Googlem jsem zde mluvil o webovych službách a komunikaci přes rozhraní. Ale nepřipomíná to až moc komunikaci tlustého klienta se serverem? Do jisté míry jistě ano. Pokud se na GMail podíváme trochu s nadhledem, mohli bychom o něm prohlásit, že je to vlastně tlustý klient, který neběží nativně na počítači uživatele, ale využíva prohlížeč jako svoji operační platformu. Přes prohlížeč se spouští, běží, aktualizuje. Jako prezentační vrstvu používá HTML a CSS, tedy technologie které byly primárně navrhovány k formátování a prezentaci textových informací. Je to jak malovat umělecký obraz drátěným kartáčem. Jde to, ale …
Takový je podle mě stav současných RIA aplikací.
Tento článeček jsem napsal jednak proto, abych si sám utříbil myšlenky a přišel na to, kterým směrem se jako webdevelopr vydat. Ale také proto abych zjistil názor ostatních na danou problematiku. Budu moc rád pokud do dizkuze přidáte i Váš názor.
Děkuji
Ano, bohužel takový je skutečně stav mnoha současných RIA webových aplikací (až se to už ani nedá nazývat webovými aplikacemi). Spousta webů (internetové banky,jobs.cz a další) nefunguje bez JavaScriptu (problém mají slepci, vyhledávače i normální uživatelé, kteří chtějí používat tlačítka vpřed/vzad; eBanka je v tomhle opravdu extrémní a uživatele rovnou odloguje, na dotaz kde nahlásit chybu nereagují).
"Weby" ve flashi jsou taky kapitola sama pro sebe - spousta vizuálního smetí, použitelnost většinou skoro nulová (víte o nějakém slušném?), nezaindexovatelné, nemůžete to odkazovat nebo bookmarkovat, o nezávislosti na proprietárním pluginu také nemůže být řeč. U Silverlight očekávám horší verzi téhož.
Osobně si myslím, že RIA weby nemusejí být katastrofa, pokud se tyto technologie používají opravdu jen tam, kde není jiná možnost. Například webové mapy jsou užitečné, a bez AJAXu by asi moc nefungovaly. Pokud jsou slušně napsané, tak umějí základní funkčnost i bez těhle moderních vymožeností, například Google Maps (na rozdíl od mapy.cz) zobrazí mapu i s vypnutým javascriptem, a umí i základní navigaci.
V momentě, kdy se těmito technologiemi začnou nahrazovat základní věci z HTTP a HTML jako navigace, tak se to stává zlem.
No, mozna bych doplnil tu myslenku riajici, ze aplikace bezi na platfome browseru. Tady jde o prenositelnost a bezpecnost. No a k tomu se prave hodi nejaky ten sandbox mod, poskytovany ria platformou (java, .net, flash a dalsi)
RIA aplikace mohou de-facto fungovat nezavisle na browseru. Browser to obcas ztezuje (Opera s flashem obcas zamrza atp.) Browser ma imho primarni vyznam k ziskani pristupu k tehle aplikace nejakym user-friendly spusobem a moznosti sandno se odkazat nekam na net (proste se otevre novy list). Dalsim duvodem je zaindexovani vyhledavacem. Treba google se do flashe taky dostane, problem je bohuzel s nestrukturovatelnymi informacemi (chybi anotace, ktere explicitne rikaji, co je nadpis, odkaz, seznam atp).
Jasne, javafx umozni aplety pretahovat na plochu a pouzivat jako normalni desktop aplikace. Ale tady jde o zvyk uzivatelu - informace se proste hledaji na internetu tak, ze spustim browser a vybiram ze svych zalozek, pouzivam vyhledavac a k tomu tez nejakou RIA aplikaci.
Abych to shrnul - RIA aplikace nejsou v browseru z duvodu technologickych, nybrz praktickych a uzivatelskych - browser je vlastne jen zakladni prostor, v nemz jsou ruzne informace a aplikace pohromade, aby se s nimi lepe pracovalo.
No, ja myslim, ze prave ty tlacitka zpet, vpred byly urceny primarne k pohybu po tech textovych informacich. Pokud bude v silverlight/flash implementovana aplikace napr. ctecka knih, tak tam bych podobne tlacitka ocekaval, u nejake DB silverlight/flash aplikace spise zase ne...
Nejsem zastáncem technologií jako je Flash a Silverlight. Ale co se týče Ajaxu, tak si myslím, že nějakým směrem se web a webové aplikace vyvíjet musí. A myslím, že pro běžného uživatele to může být jenom přínosem.
(Gmail bych spíše nazval tenkým klientem. Řekl bych, že na straně uživatele "běží" jen to rozhraní.)
Dvě poznámky:
1) JavaScript dnes už není problém ani pro nevidomé uživatele, pokud jej autor umí správně napsat (pokud nevěříte, tak se těch uživatelů sami zeptejte)
2) Tlačítka Zpět/Vpřed u správných HTML RIA aplikací fungují. Není to problém, je to opět jen záležitost provedení
No, mně osobně na RIA vadí 3 věci:
1) Nemožnost použití bez připojení k internetu, nebo s pomalým připojením (GPRS na cestách). Ano, Google to už s GMailem a GOffice nějak řeší, ale jinak nic moc...
2) *Moje* data leží na *cizím* serveru a já jsem na nějaké firmě zcela závislý. Jednak si v nich můžou číst, jednak můžou říct "hoši, končíme" a službu ze dne na den vypnout. Také můžou při výpadku o má data přijít - asi před rokem Seznam potratil asi 5% mailů. Záloha dat z webových aplikací na můj disk se dělá špatně.
3) Pomalost. Pomalost. Pomalost. HTML + CSS + AJAX + JS nikdy nemůže být rychlejší než nativní aplikace.
S pluginy typu Flash/Silverlight mate zrejme pravdu, nebyt jejich rozsireni pres browsery, nikdo by je dnes neznal ani nepouzival. S jejich indexovanim bude ale zrejme problem vzdy.
Duvod, proc se o techto technologiich obcas mluvi jako o problemu, je nejspis v tom, ze je lide pouzivaji k vecem ke kterym nebyly urceny. Nahrazuji jimi "chybejici" funkcnost HTML. Misto toho, aby si daly praci s tim, napsat svuj webik dobre pres HTML a dynamicke prvky se v co nejvetsi mire snazit vyresit pres JavaScript, vytvori komplet cely web ve Flashi. Nevyhody ktere z toho plynou uz ovsem nevidi.
Samozrejme u graficky bohatsich webu/aplikaci je jejich pouziti naprosto v poradku.
JavaScript je tedy opravdu budoucnosti internetu a jeho pouziti se nevyhneme. Mensi nevyhoda z pohledu webdevelopera je, ze u stranek je nutne zachovavat zpetnou kompatibilitu a programovat tak dve verze,jednu s a jednu bez jeho podpory. Casem se ale zrejme JavaScript stane natolik pouzivanym, ze o jeho absenci v browseru ani nebudeme muset uvazovat.
To znamena, ze JS muzeme zacit vesele pouzivat a pripravit tak weby na vstup do dalsi dekady.
Je ale treba ho pouzivat spravne. Jak zde bylo zmineno, JS musi byt napsan tak, aby fungoval ve screenreaderech, zaroven se choval stejne ve vsech browserech a choval se dobre i v kombinaci s HTML. Odladit stranky pro rekneme 4-5 pouzivanych browseru je v soucasnosti opravdu orisek. No snad se s prichodem HTML5 a novych verzi browseru vse trochu vyjasni.
Jak to tak vidim, ten webdeveloping uz neni zas takova sranda jako byvala :)
S premistenim webaplikace na plochu to vubec neni spatny napad, pokud aplikace funguje uz dnes podobne jako tlusty klient(GMail viz odstavec nize), proc z nej rovnou neudelat samostatnou aplikaci.
O GMailu se rozhodne nechci prit, ve skutecnosti by me dost zajimalo jak to maji udelane. Pokud vim nepisou ho ani primo v javascriptu, ale pouzivaji nejakou verzi Javy ktera se pak do JavaScriptu preklada.
V souvislosti s poslednim prohlasenim Googlu, ze GMail pobezi i offline pres GoogleGears, je logicke, ze GM potom pobezi samostatne na strane klienta a data se zde take budou ukladat, dokud nedojde k pripojeni k internetu a synchronizaci cele te veci. To mi prijde jako dalsi priblizeni smerem k tluste aplikaci.
Data na serveru
Citliva data bych tam rozhodne nedaval(ze je google neindexuje rozhodne neznamena, ze to opravu nedela a nebo, ze si je tam nekdo zvedavy neprohlizi). Nastesti za naprosto duvernych povazuju jen minimum dat. Muj dopis babicce a nebo skolni praci, bez prevratneho objevu, ktery zmeni dejiny si tam klidne ulozim;)
Já osobně si myslím, že RIA je přirozená budoucnost internetu. Možnosti webových browseru a HTML jazyka jsou omezené, implementace JavaScriptu je odlišná v různých verzích prohlížečů a systémů, graficky a animačně omezená. Dnes už je to lepší, ale dříve to byl velký problém. Proto dle mého názoru vznikly alternativy typu Flash/Flex/Silverlight/JavaFX atd. Ano, vyžadují mít nainstalovaný virtual, ale nevidím to jako problém.
Osobně se mi zamlouvá Flex, umí historii (vpřed, vzad), umí i deep linking (přímé url odkazy do vnitra aplikace), dobrá grafika, komponenty. Jednoduše se v něm dělá, výstupy jsou smysluplné.
Indexace bude vždy problém, protože je to o programátorech a především o komunikaci mezi hráči jako Adobe, MS a Google. U html stránek je to jednoduché, protože jsou obecně známé SEO. Je ale otázka času, kdy bude doporučené SEO i pro Flash aplikace a programátoři se tím buď budou řídit nebo ne. Po technické stránce v tom takový problém nevidím.
Vzpomeňte na doby, kdy Google nebyl, že nebylo úplně jednoduché se přes vyhledávače dostat ke skutečně požadovaným informacím na netu. Proč? Vyhledávače prostě neuměly z HTML stránek dostat to co bylo požadováno. A programátoři html stránek celé situaci moc nepomáhaly. A teď je podle mne situace pro RIA dost podobná jako tenkrát pro HTML. Řešení ale příjde určitě rychleji, protože jiná možnost ani není. Internet se mění směrem k RIA a musí být kompatibilní se SEO.
Toť mé pochody v hlavě... :-)
S nazorem, ze kombinace HTML, CSS, AJAX, JS je pomalejsi nelze souhlasit. Ajax - pokud spravne pouzivany naopak zrychluje reakce webu, uz jenom protoze updatuje jenom casti stranky. Je potreba si uvedomit, ze ty tzv. RIA jsou obvykle pomerne velke a obsazne stranky, zcela bezne prekracujici 250kB. Pokud by se po kazdem kliknuti mel delat fullpage refresh, tak by to server nemel sanci utahnout uz pri stovkach uzivatelu. Navic JS umoznuje takove veci jako nahravani na pozadi.
Ad rychlost JavaScriptu - jiste, pokud pouziva uzivatel IE (stale vetsina), tak je to pomalejsi, nez kdyz pouzivat FF3 nebo Chrome, ale vyvojari browseru jsou si toho imho velmi dobre vedomi - viz soucasna snaha ty JS engine preprogramovat a zrychlit.
Ad vyvoj RIA - neni pravda, ze je to narocnejsi, nez vyvoj aplikaci v minulosti. Jenom proste nelze pro RIA pouzivat zakladni PHP (coz je jiste pro hromadu "vyvojaru" desny problem), ale je potreba pouzivat ruzne frameworky, ktere uz si samy poresi zobrazovani na ruznych prohlizecich (Seaside, RubyOnRails, Django...).
No ja zase musim povedat, ze nevidim svetlu buducnost klasickeho semantickeho ria teda Ajax+HTML, pokial sa javascript a hlavne dom model nestandardizuju, resp. javacript zostane interpretovany jazyk. Cele ajaxove ria je podla mna jeden velky hack. Osobne favorizujem Flex, je to cisty, jednoduchy a produktivny framework, pomocou ktoreho dosiahnete skutocne vierohodne graficke featury. Jeho slabinou(okrem ceny :) zostavaju naozaj len niektore, prevazne minoritne vyssie uvedene muchy flashu(hlavne teda indexovatelnost). Nehovoriac o tom ze vyvoj flex/flash ide skutocne dopredu milovymi krokmi narozdiel od byrokratikych, zdlhavych a casto nedodrzovanych standardizacii w3c. Po skusenostiach mozem Flex doporucit hlavne do velkych internych enterprise projektov. Zdar.