Budoucnost WWW?

Před několika měsíci jsem rozepsal tento post, dnes ho snad s trochou štěstí dokončím. Kupodivu se za tu dobu mnoho nezměnilo, jen přibylo pár frameworků:

Přítomnost má marketingové jméno Web 2.0, ať už to znamená cokoli a ať už je to k něčemu dobré či ne.

Jednou z možných cest do budoucnosti se zdál být semantický web. Ale jak to tak vypadá, vítězí spíš zaměření na aplikace – mnoha technologií semantického www se jistě dočkáme, ale výsledný cíl se nejspíše bude lišit.

Ale aplikace, které žijí jen v prohlížeči, mají mnoho potíží. Méně pokročilí uživatelé nejspíše zkousnou GUI, které se nemůže možnostmi měřit s desktopovými aplikacemi. Ale každého dříve či později stihne zdánlivě neodstranitelná potíž – webové aplikace pro svůj život potřebují připojení k internetu. A to může být kámen úrazu. Dokud používám Mail.app nebo Outlook, mohu psát dopisy i ve vlaku, kde nemám k dispozici Síť. Ale Gmail mi to neumožní. Podobně narážím i s organizovátky času nebo online textovými editory. Jsou po ruce stále, kdykoli a kdekoli – ale jen, pokud je po ruce i připojení.

Nebudu to zdržovat – jsou možnosti, jak toto prokletí obejít. A zdá se, že v poslední době se s nimi roztrhl pytel.

  • Můžeme se vzdát života v prohlížeči, webovosti, a vsadit na desktopové technologie – jen je lépe deployovat. Skvělý příklad je Swing distribuovaný pomocí Java Web Startu. Mít na každém počíatči javu, tak neváhám. Pokud se vám nechce tvořit swingové uživatelské rozhraní v Javě (za pomoci Matisse to není zas tak obtížné, jak škarohlídi tvrdí), je tu Java FX nebo třebas groovyovský Swing Builder.
  • Adobe Apollo se změnilo v Adobe Integrated Runtime alias AIR. Runtime, který umožnuje stáhnout aplikace postavené na webových technologiích (AJAX, Flash…) na desktop. Tam se tváří jako hybridy – trocha webovosti a trocha desktopovosti (třebas spouštění ikonkou na ploše nebo část look and feel). A co je snad ještě důležitější – umožňuje aplikacím ukládat data i na straně klienta.
  • Když ukládat dat na klientovi, tak pořádně. A když pořádně, tak podle normy (nebo alespoň “normy”). V draftu specifikace HTML 5 se objevil návrh na lokání uložiště. Ta jsou dvou druhů – globální a jedno pro každou session. Ukládají se klíč-hodnota. Prosté, ale intelektuála neuspokojí. Výhodou je, že je možné začít testovat implementaci ve Firefoxu.
  • Podstatně těžkotonážnější řešení nabízí další zvažovaná novinka v HTML 5 – Client-side database storage. SQL databáze v browseru vypadá jako nonsens, ale výhody by byly očividné – v prostředí porhlížeče by muhly začít vznikat plnokrevné aplikace, které ke svému běhu síť používají ale nevyžadují. Zůstaly by limity v tvorbě rozhraní (HTML je fain, ale…), JavaScript rozhodně není jazyk vhodný na nějaké větší programováné, ale i zmizel by alespoň jeden problém. Netroufnu si říct, co taková změna udělá s bezpečností a s metodikou návrhu.

Vize je to příjemná – už se těším, jak budu někde uprostřed parku připravovat posty na blog nebo upravovat wiki. Ale provedení docela pokulhává – některá řešení jsou příliš omezená svým původem. V intranetu bude možné zajistit JVM nebo AIR runtime na každém stroji. Ale že by se objevili v každé internetové kavárně nebo na každém chytrém mobilu – o tom pochybuji.

SQL je dost silný nýstroj. Ale… Málo kdo ho umí doopravdy dobře používat a tak se jistě dočkáme “mistrů”, kteří budou používat lepení query místo prepared statements a budou páchat schemata, která normální formy neviděla ani z rychlíku. Budiž nám již dopředu útěchou, že různé “SQL injections” ztrácejí na desktopu tak trochu smysl – uživatel by si zbůhdarma útočil na aplikaci, kterou má stejně pod kontrolou. Ale přibudou nová nebezpečí – tvůrce aplikace už si nebude moci být jistý tím, že má v databázi to, co si tam skutečně uložil.

A pak se samozřejmě přidává i obvyklá kritika SQL. Je to užitečný jazyk, ale ve většině případů by udělal lepší službu nějaký ORM nebo objektová databáze. Ale to by asi byl příliš velký krok vpřed.

A protože se za tu dobu mnoho nezměnilo, tak ho dokončím v podobném duchu ale v trochu jiném směru:

Od prvního draftu tohoto článku se na světě objevilo několik nadějných javascriptových frameworků, které se snaží přiblížit programování v browseru programování pro desktop. Sprout core se stal základem pro MobileMe od Apple. Finální verse MobileMe zatím nespatřila světlo světa, ale screencasty naznačují, že by Google Mail mohl najít přemožitele v soutěži “kdo bude ethalonem pro RIA”.

O kousek dál má najspíše v plánu zajít Objective J. Zatímco Sprout Core je “jen” MVC framework pro javascript, Objective J javascript rozšiřuje podobně jako Objective C rozšiřuje C. Knihovny pro Objective J pravděpodobně budou také postavené na návrhovém vzoru MVC. Podle zatím dostupných informací by neměly skrývat inspiraci kakau, aplikačním rámci, který Apple používá (jako jeden ze dvou) na desktopech. Zatímco Sprout Core na svou velkou aplikaci zatím čeká (a za pár dnů se ji dočká), Objective J ji už má: 280 slidů je velmi zdařilá nápodoba Keynote běžící v prohlížeči. Stačí vychytat pár dětských chyb a tvůrci mohou hrdě prohlásit, že opět posounuli možnosti webu o kousek dál.

Místo závěru

Netroufnu si soudit, jaké technologie nás čekají za měsíc, dva, tři. Ale jsem ochotný vsadit se o panáka, že ty, které se budou držet prohlížeče, prokáží o něco větší životaschopnost než ty, které budou nutit uživatele instalovat další software (Silverlight, Air…). Výjimkou samozřejmě bude kontrolovatelnější prostředí intranetu.

Daší velkou změnu přinesou chytré mobily s velkými obrazovkami vedené iPhonem. Ty mají šanci změnit poměr sil. Ale zatím je většina zajímavých technologií (Java FX Mobile, Firefox Mobile…) pro ně jen v podobě prototypu, takže nám nezbývá, než počkat, kdo chytí příležitost za pačesy.