Nový život pro weby

Před rokem toho Thomas Lackner po JavaScriptu opravdu mnoho nepožadoval. Když si v hrubých obrysech vytvořil architekturu...


Před rokem toho Thomas Lackner po JavaScriptu opravdu mnoho nepožadoval. Když
si v hrubých obrysech vytvořil architekturu webové aplikace, věděl, že se může,
pokud se jedná o práci s cookies a o natažení obrázků, plně spolehnout na jazyk
prohlížeče. Pokud však půjde o něco složitějšího, nezbude mu nic jiného, než se
obrátit na server. Když Google spustil své vysoce interaktivní webové stránky,
jako například Gmail nebo Google Suggest, Lackner uviděl svou příležitost.

"Nápad jsem dostal asi v polovině roku 2004," říká Lackner. "Začal jsem tehdy
přidávat Ajax komponenty do každé webové aplikace, na které jsem právě
pracoval."
Ajax je nově vytvořený pojem, představující vizi vylepšených prohlížečů
zahrnuje podporu pro asynchronní JavaScript a XML. Před nasazením Ajaxu webové
stránky pracovaly zejména s hypertextovými odkazy, formuláři či tlačítky. Když
na ně uživatel kliknul, prohlížeč musel na vzdálený server zaslat zprávu s
dotazem, co má vlastně zobrazit. JavaScript se obvykle používal pouze ke
kontrole vstupních dat formulářů. Webové stránky tedy byly stejně statické,
jako jsou strany v obyčejné knize.
Browsery se zabudovaným Ajaxem už ale mohou přemýšlet samy, aniž by se musely
ptát vzdáleného serveru: "Mámo, mohu?" Procesy běžící na pozadí předběžně
natáhnou obsah stránky. Pokud uživatel klikne na link nebo na tlačítko,
prohlížeč aktualizuje obsah stránky prostřednictvím JavaScriptu. Například
Gmail od Googlu skrývá či zobrazuje části threadu e-mailu, aniž by na odpověď
od příslušného serveru čekal tím eliminuje zpoždění způsobené sítí. Pokud se
informace musí dostat k serveru, její přenos proběhne na pozadí.
Brendan Eich, tvůrce JavaScriptu u Netscapu, říká, že svět právě odkrývá jeho
ideu z roku 1995. Říká: "My (myšleno Marc Andreessen a já) jsme vždy chtěli
zajistit, aby JavaScript podporoval aplikace klientsky zaměřené ty by pak
nemusely opakovaně natahovat stránky ze serveru."

Nový druh aplikací
Jesse James Garrett z firmy AdaptivePath, který jako první použil termín Ajax v
článku zveřejněném v únoru letošního roku, říká, že ohlas byl překvapující.
Vzrušení, které článek přinesl, je pochopitelné, když uvážíte všechny výhody,
které Ajax přináší. Především významně zjednodušuje distribuci softwaru
prohlížeč zprovozňuje ajaxové aplikace automaticky. Zákazníci nejsou často
ochotni si instalovat různé separátní aplikace, ale většinu lidí můžete
přesvědčit, aby navštívili vybranou webovou stránku.
Ajax má ovšem i řadu dalších výhod. JavaScript běžící na straně klienta
redukuje potřebnou šířku přenosového pásma a také požadavky na výpočetní výkon
serveru. Dobře navržený kód, který je opravdu asynchronní, dává serveru více
času na zodpovězení požadavků klientské aplikace anebo snižuje serverové
zatížení, které lze rovnoměrněji rozložit ve špičkách. Zakódováním dat na
straně klienta ještě před odesláním do sítě se dokonce zvyšuje bezpečnost.
Projekt Basecamp od společnosti 37signals je vhodným příkladem webové aplikace
vyvinuté na základě tohoto nového paradigmatu. Pokud chcete přidat novou
položku do seznamu úkolů, zapíšete ji do nového okna, a ta je přijata, aniž by
předtím musela projít strastiplnou cestou až na server. Po jejím uložení však
prohlížeč musí čekat, aby se ujistil, že proces proběhl úspěšně. Kód
JavaScriptu zde aktualizuje server na pozadí, přičemž zobrazí hlášku:
"Moving... Just a moment." V současnosti je stále potřeba pro komunikaci se
serverem využívat řadu interaktivních operací, JavaScript však celý proces
urychluje tím, že vyřídí většinu požadavků uživatele sám. David Heinemeier
Hansson, programátor ze společnosti 37signal se v současnosti soustředí na
odstranění zpoždění v situaci, kdy uživatel vyplňuje formulář. "Pokud máte
např. Weblog a přidáváte komentář, bude tento váš příspěvek na straně serveru
aktualizován na pozadí. Kdykoliv budete potřebovat přidat či změnit jeho obsah,
můžete to udělat, aniž byste museli stránku znovu zavádět."
Určitý rozruch kolem Ajaxu rozpoutali weboví návrháři a pozadu nezůstali ani
programátoři. Flexibilita Ajaxu je povzbuzením pro designery webových stránek,
protože JavaScript může vzhled kteréhokoliv obrázku či textu na stránce značně
ovlivňovat fonty lze zvětšit či zmenšit podle libosti, tabulkám můžete přidat i
ubrat řádky, můžete změnit i barvy. Žádná z těchto schopností není pro
programátory (zvyklé na klientské aplikace nebo na Java aplety) ničím novým,
pro webové návrháře, kteří byli zatím odkázáni na Macromedia Flash, se jedná o
zajímavou alternativu.
Obecné nadšení pro Ajax tak může signalizovat nově nalezenou součinnost mezi
návrháři a programátory, kteří nyní mohou mluvit o stránce prostřednictvím
stejného jazyka. Zápisy z CSS, tedy jazyka, kterým vládnou weboví návrháři,
jsou využitelné i pro programátory, co pracují s JavaScriptem. Výsledkem je
webová stránka, jež funguje způsobem typickým pro klientské aplikace bez
jakýchkoliv problémů při distribuci a instalaci softwaru na počítači klienta.

Problémy prohlížečů
Entuziasmus pro tyto nové techniky je však obvykle mírněn realitou. Přestože
existuje mnoho dobrých nástrojů pro vývoj Ajaxu, platforma může být nestabilní
a dodržování standardů je nedůsledné. Dokonce i největší zastánci si stěžují na
rozdíly mezi webovými prohlížeči a připouštějí, že sami zatím neznají nejlepší
způsob, jak řadu interaktivních vlastností bezproblémově implementovat. A co
více, tyto nové schopnosti mohou zmást ty uživatele, kteří zmíněné vlastnosti
neočekávají, a v některých případech lze dokonce odkrýt i nové bezpečnostní
díry.
Mnoho ajaxových aplikací požaduje po browserech vlastnosti, které jsou obsaženy
ve verzi JavaScriptu, jež je součástí novějších browserů, jako např. Firefoxu
nebo MS IE 5.5. Jiné užitečné funkce správně pracují jen v jedné verzi
prohlížeče, ale nikoliv již v některé z dalších verzí. Například objekt
XMLHttpRequest analyzuje XML přímo z webových služeb jde o vlastnost, která
programátorům výrazně usnadňuje interakci s jakýmkoliv zdrojem XML. Předtím,
než byla tato vlastnost zavedena spolu s prohlížečem IE 5.0, mohli vývojáři
informace ze vzdálených webových stránek stahovat, ale bylo zapotřebí k tomu
použít jiné okno.
Některé nejnovější prohlížeče nabízejí stabilní platformu pro použití nástrojů
XSLT (XSL Transformation), ale podrobnosti se zdají být zatím nevyřešené. Také
existují velké rozdíly ve způsobu, jak IE 5.0, 5.5 a 6.0 zacházejí se jmennými
prostory XML (XML namespaces). Mozilla verze 1.8 má řadu podobných schopností,
dřívější varianty je ale postrádají.
Programátoři jsou tyto nejasnosti nuceni opravovat pomocí jednoúčelových
řešení, která uzpůsobí kód konkrétní verzi prohlížeče. Rob Brown, vývojář Ajaxu
a tvůrce plug-inu Aardvark pro Firefox, je ale optimista. "Naštěstí většina
rozdílů mezi prohlížeči může být docela snadno zahrnuta do několika utilit a
jádro vaší Ajax aplikace tak nemusí obsahovat část kódu, jejíž zprovoznění
záleží na typu browseru," říká Brown.
Stejné výzvě čelí také mnoho návrhářů firemních aplikací. Pokud bude webová
aplikace použita pouze interně, podnikový architekt může celkem snadno
předpokládat, že každý prohlížeč ve společnosti odpovídá určité specifikaci.
Taková jednotná infrastruktura je velice schůdná pro programátory. Ale
společnost, která distribuuje webové aplikace smluvním zákazníkům, nemůže této
domněnce podlehnout. Někteří zákazníci budou totiž starší verze prohlížečů vždy
používat.

Když z kódů bolí hlava
Zabývat se nejasnostmi kolem prohlížečů je pouze první výzvou. Vývojářských
nástrojů pro vytváření JavaScriptu zatím existuje několik a často z nich máme
nepříjemný pocit. Vlastnosti, které programátoři jiných jazyků považují za
samozřejmé, se ve světě JavaScriptu objevují teprve nyní. Ladicí programy, jako
je Venkman pro Mozillu, nejsou u programátorů JavaScriptu, kteří jsou zvyklí
opětovně stahovat stránky za účelem vyhledávání chyb, nijak zvlášť rozšířeny.
Ed Felten z Princetonské univerzity upozorňuje na to, že programátoři mohou
také do kódu bezděčně vložit bezpečnostní díry právě během překladu serverové
části kódu do kódu JavaScriptu. Ačkoliv JavaScript zpracovává přicházející kód
bez API rozhraní pro přístup k lokálním souborům, příležitosti pro zmatečnou
interpretaci zůstávají kód může dovolit přistupovat na externí webové stránky.
Příkladem takového ohrožení pak mohou být útoky typu DDoS.
Kód JavaScriptu navíc není kompilován stejným způsobem, jako je tomu například
u jazyků C či Java. Koncový uživatel může vidět, nebo dokonce ještě před
spuštěním upravovat kód JavaScriptu. Útočník může například hledat v textu
řetězce obsahující SQL instrukce a tyto kódy nahradit jinými variantami,
prostřednictvím kterých si ze serveru vyžádá úplně jiné informace. Uživatelé
prohlížečů už porozuměli tomu, jakým způsobem tradiční webové aplikace pracují.
Byli například mnohokrát upozorněni, že při dvojím kliknutí na příslušné
tlačítko může z jejich kreditní karty odejít částka dvakrát. Ajaxová aplikace
však mnohá z těchto zažitých pravidel boří.
Jazyk JavaScript se sám o sobě stále rozvíjí. Zatímco jazyky, jako je Java a
C++, jsou standardizované na poměrně vysoké úrovni, JavaScript je zatím spíše
považován za experiment. Existují ohromné rozdíly ve způsobu, jakým prohlížeče
IE, Mozilla či Safari JavaScript kód interpretují, a existují podstatné rozdíly
i mezi různými variantami jednoho vyhledávače. Jádro jazyka je standardem
oficiálně označovaným jako ECMAScript, avšak každý browser zachází s dalšími
vlastnostmi různě.

Zvítězí nakonec Ajax?
Navzdory výzvám pro víceplatformová řešení a někteří vývojáři poukázali na to,
že pro Microsoft existuje jen málo důvodů k tomu, aby svůj prohlížeč učinil
plně kompatibilním s Firefoxem nebo Operou je tento nový model zcela určitě
příslibem. Ajax aplikace totiž může převzít podstatnou část, či dokonce
kompletní funkčnost dnešních klientských aplikací. Mnozí programátoři jsou
překvapeni, když nyní vidí takové editory, jako jsou Bitflux, FckEditor nebo
Kupu, vytvořených výhradně v JavaScriptu. Aplikace takového typu se však
pravděpodobně zanedlouho stanou samozřejmostí. Některé společnosti proto zde
vidí svou příležitost. Skupina vývojářů Thomase Lacknera z firmy ModernMethod
své úsilí soustředí na vybudování open source knihovny, kterou Lackner nazval
Sajax (Simple Ajax). Firma JackBe zase prodává sadu malých knihoven, které
odstraňují řadu nekompatibilit prohlížečů. Programátor může například na
webovou stránku přidat formuláře nebo spreadsheet podobný souboru Excelu a
knihovny JackBe zprostředkují většinu interakce s klientem.
To nás přivádí zpět do budoucnosti, kdy by měl web konečně přinést to, co si
Eich a původní tým Netscapu před mnoha lety představovali. Na dotaz, proč své
myšlenky tenkrát neprosadil, Eich reaguje: "Hlavními příčinami byly
nekompletnost, spěch v procesu standardizace, válka prohlížečů, jež skončila
porážkou Netscapu, a také určitá závislost na Javě při snaze vytvořit
realistickou grafiku." Nyní, kdy JavaScript zdolal tyto problémy, je Eich
zvědavý na to, co se v brzké budoucnosti stane.


Co nového přichází s Ajaxem
Rohit Khare

Rychlé rozšíření termínu Ajax (Asynchronous JavaScript and XML) z weblogu až do
Wall Street Journalu během několika týdnů může vést vývojáře k domněnce, že
dochází k průlomu vedoucímu ke smrti desktopových aplikací. Pravda je však asi
taková: Současná záplava nových webových aplikací postavených na Ajaxu
pozměnila u koncových uživatelů očekávání toho, co webový prohlížeč díky svým
schopnostem dokáže: plynulý
scrolling či aktualizace, lépe propracované vstupní formuláře apod.
Nicméně takzvaný tlustý klient zatím má nad tím webovým jednu základní výhodu:
oznamování událostí v reálném čase. Ajax navíc sám není schopen adresovat
systémy instant messagingu, neumí sledovat pohyb akcií na burze a také
nepodporuje jiné partnerské aplikace, které vyžadují datové toky typu push.
Nejdůležitějším cílem Ajax aplikací je proto rozdělit datový tok, během kterého
probíhá postupné stahování celé nové webové stránky, na sérii menších částí.
Vývojáři považují Ajax za "asynchronní", protože data mohou být aktualizována
bez přerušení činnosti uživatele. Například aplikace Google Maps dramaticky
snižuje pocit viditelného rolování mapy, a to díky stahování pouze nově
viděného výřezu zbytek mapy je pouze graficky posunut.
V komunitě zabývající se middlewarem však formální definice asynchronního
přenosu odpovídá schopnosti poslat zprávu kdykoliv v obou směrech. Ajax
zajišťuje přenos ve směru upstreamu," ale protokol HTTP přenosy iniciované
serverem znemožní.
Naštěstí někteří vývojáři využívají mezeru v HTML k tomu, aby zajistili přenos
dat i od serveru směrem k prohlížečům ty jsou totiž navrženy tak, že stránky
přicházející z pomalých webových serverů jsou zobrazovány postupně. Při použití
skrytých rámců a tagů JavaScriptu může být protokol HTTP využit (ale i zneužit)
k udržení otevřeného spojení s dlouhou dobou odezvy, což aplikaci dovoluje data
do prohlížeče nakonec kompletně přenést.
Nejjednodušším způsobem, jak tuto vlastnost využít, je přenést browser do
neinteligentních terminálů 21. století. Open source produkt ARSC (A Really
Simple Chat), který vytvořil Manuel Kiessling, využívá Ajax k odesílání
vstupních dat ve směru upstreamu, přičemž modifikovaný HTTP server, který
udržuje tisíce současně otevřených spojení, přeposílá datový tok chatu směrem k
ostatním uživatelům. Promyšlená metoda kombinující techniku Ajax s asynchronním
oznamováním událostí by mohla některé typy aplikací rozšířit po celém
internetu. Řada open source platforem také slibuje vytvořit výkonná řešení, jež
dovolí propojit plně interaktivní webové aplikace s podnikovým softwarem a
webovými službami. Výhody migrace desktopových aplikací do webové podoby
(snadná údržba, bezpečnost a škálovatelnost) jsou ale na druhé straně
znehodnoceny horšími časy odezvy, omezenou interaktivitou a také horším
grafickým rozhraním. S Ajaxem, push technologií a plug-iny pro PDF a Flash je
ale web nyní schopen více než jindy stát se základní životaschopnou platformou
pro vývoj aplikací.









Komentáře
K tomuto článku není připojena žádná diskuze, nebo byla zakázána.