Hlavní navigace

Akta X 0507

Petr Cimprich 8. 8. 2005

Slovník webového vývojáře letos obohatil nový pojem: AJAX. Podíváme se mu trochu na zoubek. Dalším tématem budou jako obvykle novinky od W3C: aktualizované specifikace XLink 1.1, xml:id 1:0, SPARQL a XLS/FO 1.1.

AJAX

Dnešním hlavním tématem je AJAX (Asynchronous JavaScript and XML), údajně nový a převratný přístup k tvorbě webových aplikací. O AJAXu se hodně mluví už někdy od února, takže většina webových vývojářů asi neměla šanci novému buzzwordu uniknout, ale pro pořádek stručně připomenu, o co se jedná.

AJAX překonává (chcete-li, porušuje) základní princip fungování současného webu, který by se dal jednou větou zformulovat třeba takto: Akce uživatele v prohlížeči vyvolá požadavek na server, který vrátí odpověď v podobě dokumentu (X)HTML, jenž je vzápětí prohlížečem zobrazen namísto dokumentu původního. V ajaxové aplikaci akce uživatele také vyvolá požadavek na server, ale požadujícím (to jest HTTP klientem) není prohlížeč jako takový, nýbrž javascriptový kód spuštěný v prohlížeči s využitím objektu XMLHttpRequest. Od serveru se pak očekává vrácení dokumentu XML, který je uložen v datových strukturách zmíněného objektu. Po dokončení požadavku je spuštěna určená funkce, jež typicky modifikuje objektový model dokumentu (X)HTML (aka DOM), tedy provede změnu zobrazené stránky bez nutnosti opakovaného načtení.

Tento princip samozřejmě není nijak nový. Stejného efektu weboví vývojáři dosahují už roky pomocí skrytých rámečků. Novinkou AJAXu je jen to, že místo triku se skrytým rámečkem používá speciální objekt a že si tato kombinace technologií našla nové, zvučné jméno. Ve prospěch AJAXu zapracoval i čas – prohlížeče vyspěly a lépe a jednotněji implementují DOM zobrazeného dokumentu, což zvýšilo přenositelnost ajaxového kódu na přijatelnou úroveň. K popularitě AJAXu nepochybně také přispěly některé nedávné excelentní weby, k nimž se tato technologie hlásí (např. Google Suggest nebo Google Maps).

Objekt XMLHttpRequest není součástí žádné standardní specifikace, ale je to typický příklad úspěšného de facto standardu. Přišel s ním Internet Explorer už ve verzi 5. Mozilla jej implementuje od verze 1.0; Firefox ho tedy měl už někdy ve phoenixových časech. Safari podporuje XMLHttpRequest od verze 1.2, Opera od verze 7.60. To je podpora více než dostatečná.

AJAX dovoluje provádět věci v klasických webových aplikacích nevídané. Může komunikovat se serverem při událostech, u kterých by to uživatel nečekal (např. stisk klávesy nebo pohyb myši). Díky tomu, že dokáže využívat čas, kdy uživatel zdánlivě nic nedělá, a že nemusí vždy stahovat a překreslovat celou stránku, může AJAX přinést dramatické zvýšení efektivity. Z hlediska architektury přibývá na klientské straně nová vrstva; po načtení ajaxové stánky prohlížeč přestává být uživatelským agentem a mění se v běhové prostředí pro kód řídící jiné agenty.

Jako vše má i AJAX svou odvrácenou stranu. První nevýhodou je zvýšená složitost. Použití objektu XMLHttpRequest je sice méně kryptické než skryté rámečky, ale i tak je psaní a hlavně debugování ajaxového kódu zcela jinde, než na co jsou weboví vývojáři zvyklí. Dalším problémem může být přenositelnost. Čím víc toho od prohlížeče požaduji, tím větší je nebezpečí, že si některé prohlížeče s aplikací neporadí. AJAX se pohybuje na hraně; vyžaduje kvalitní implementaci ECMAScriptu včetně rozšíření XMLHttpRequest, DOM, CSS2. Nejde bohužel vždy jen o specifikace a dohodnutá rozhraní. Změním-li v DOMu atribut definující vlastnost CSS, musím ještě vědět, zda prohlížeč tuto změnu hned překreslí. Některé aspekty AJAXu míří nepříjemně hluboko do zákulisí implementace prohlížečů. Část uživatelů by mohla, aspoň ze začátku, negativně vnímat i skutečnost, že se ajaxová aplikace nechová podle zažitých webových očekávání a ne vždy je jasné, co se právě děje.

AJAX se určitě nestane novou dominantní podobou webu, ale budeme se s ním, podle mého názoru, setkávat čím dál častěji. Ve vysoce konkurenčním prostředí komerčních aktivit na webu jsou náročné a nápadité ajaxové aplikace vítaným prostředkem k zaujetí uživatelů.

Specifikace W3C

Následuje obvyklý stručný přehled červencových novinek z W3C. Pracovní skupina XML Core zveřejnila pravděpodobně poslední pracovní verzi specifikace XLink 1.1. Aktuální doporučení XLink 1.0 pro tvorbu komplikovaných odkazů pomocí elementů XML se nikdy příliš neprosadilo a není důvod to očekávat ani u verze 1.1.

Rozhodně větší šance na úspěch má jiná specifikace od téže pracovní skupiny, xml:id 1.0, ze které se již stalo navržené doporučení (Proposed Recommendation). xml:id je jednoduchý a potřebný prostředek pro jednoznačnou identifikaci uzlů bez dalších závislostí. Řada parserů ho implementuje už dnes.

Pracovní skupina RDF Data Access pokročila s pracovní verzí dokumentu SPARQL Query Language for RDF do stavu poslední výzvy ke komentářům (Last Call Working Draft). Standardní dotazovací jazyk pro RDF už tady dlouho chyběl, takže ani SPARQL se o svou budoucnost nemusí obávat.

Last Call je také XSL/FO 1.1 od pracovní skupiny XSL. XSL/FO má své uplatnění a verze 1.1 rozumným způsobem přidává nové v praxi potřebné funkce. Určitě se brzy objeví kvalitní komerční implementace; pro Open Source je zatím už XSL/FO 1.0 příliš velkým soustem, viz stagnující Apache FOP.

Našli jste v článku chybu?

8. 8. 2005 12:17

Určitě je v pořádku, když IE něco implementuje, následně to po něm zavedou Mozilla, Opera a Safari, v důsledku čehož se to stává de facto standardem, a nakonec se s tím nakládá, jako by to byl opravdu standard?

Nebudu se ptát na textové prohlížeče, pro něž zřejmě tato technologie není určena, i když proč ne. Taky je mi dost nepříjemná představa, že stránka bude čekat na akce, které já nebudu čekat, že něco udělají, např. stisk nějaké klávesy nebo nějaký pohyb myší. Já někdy tyto věci dělám jen …

8. 8. 2005 22:38

ferda (neregistrovaný)
jo tohle jsem mel na mysli.
Vitalia.cz: „Připluly“ z Německa a možná obsahují jed

„Připluly“ z Německa a možná obsahují jed

Podnikatel.cz: Vládu obejde, kvůli EET rovnou do sněmovny

Vládu obejde, kvůli EET rovnou do sněmovny

Vitalia.cz: Říká amoleta - a myslí palačinka

Říká amoleta - a myslí palačinka

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

DigiZone.cz: Česká televize mění schéma ČT :D

Česká televize mění schéma ČT :D

Lupa.cz: Avast po spojení s AVG propustí 700 lidí

Avast po spojení s AVG propustí 700 lidí

DigiZone.cz: NG natáčí v Praze seriál o Einsteinovi

NG natáčí v Praze seriál o Einsteinovi

Měšec.cz: Zdravotní a sociální pojištění 2017: Připlatíte

Zdravotní a sociální pojištění 2017: Připlatíte

Vitalia.cz: Baletky propagují zdravotní superpostel

Baletky propagují zdravotní superpostel

Vitalia.cz: Paštiky plné masa ho zatím neuživí

Paštiky plné masa ho zatím neuživí

Měšec.cz: U levneELEKTRO.cz už reklamaci nevyřídíte

U levneELEKTRO.cz už reklamaci nevyřídíte

Měšec.cz: Kdy vám stát dá na stěhování 50 000 Kč?

Kdy vám stát dá na stěhování 50 000 Kč?

Měšec.cz: Jak vymáhat výživné zadarmo?

Jak vymáhat výživné zadarmo?

120na80.cz: Jak oddálit Alzheimera?

Jak oddálit Alzheimera?

Lupa.cz: Babiš: E-shopů se EET možná nebude týkat

Babiš: E-shopů se EET možná nebude týkat

120na80.cz: Pánové, pečujte o svoje přirození a prostatu

Pánové, pečujte o svoje přirození a prostatu

Podnikatel.cz: K EET. Štamgast už peníze na stole nenechá

K EET. Štamgast už peníze na stole nenechá

Lupa.cz: UX přestává pro firmy být magie

UX přestává pro firmy být magie

120na80.cz: Rakovina oka. Jak ji poznáte?

Rakovina oka. Jak ji poznáte?

Vitalia.cz: Chtějí si léčit kvasinky. Lék je jen v Německu

Chtějí si léčit kvasinky. Lék je jen v Německu