V poslední době se hodně mluví o technologii AJAX (Asynchronous JavaScript and XML). Nejde o název produktu, ale o časem ustálené označení architektury webových aplikací, která využívá JavaScript a XML pro načtení dat ze serveru bez nutnosti klasického reloadu HTML stránky.

Interakce webové stránky s uživatelem probíhá v podstatě v reálném čase, což přibližuje webové rozhraní tomu desktopovému.

Princip komunikace webové stránky se serverem je následující. Při spuštění události JavaScriptu (např. onkeyup) na webové stránce dojde ke spuštění nějaké návrhářem vytvořené funkce. Ta obsahuje vytvoření objektu XMLHttpRequest, který vyšle požadavek serveru, ze kterého byla daná stránka načtena. V případě použití J2EE na straně serveru je zavolán nějaký servlet, který požadavek zpracuje a do stránky vrátí HttpServletResponse ve formátu XML s potřebnými daty. Javascript tuto XML zprávu rozparsuje a na jejím základě může provést úpravu modelu DOM webové stránky.

Tento přístup k tvorbě interaktivnějších webových aplikací je znám již poměrně dlouho, ale k jeho výraznějšímu prosazení dochází až dnes. Příčinou tohoto rozšíření je zejména fakt, že vlastnosti JavaScriptu, klíčové pro použití AJAXu, jsou dnes podporovány všemi hlavními webovými prohlížeči. Týká se to zejména objektu XMLHttpRequest, který mimochodem ani není součástí specifikace JavaScriptu.

AJAX lze použít například k dosažení následujících efektů:

  • automatické doplňování textu během psaní – viz Google Suggest,
  • real-time validace formulářů s využitím dat z databáze,
  • refresh pouze těch dat na stránce, které je nutno udržovat aktuální,
  • líná inicializace dat ze serveru v momentě, kdy jsou potřeba – viz popis implementace AJAXu na JavaRSS.

Příkladem scénáře posledního bodu je například úvodní stránka nějakého elektronického obchodu, kde by se nacházel rozsáhlý seznam výrobků v akci. Při najetí myší nad obrázek každého produktu by se mohl nějakým způsobem objevit jeho podrobný popis. Při použití klasického řešení by se stránka musela načítat již se všemi popisy výrobků. V případě nasazení AJAXu by bylo lze dosáhnout načítání popisu ze serveru až při najetí myší nad obrázek, čímž by se mohlo načítání úvodní stránky e-shopu výrazně zrychlit.

Výsledkem použití AJAXu mohou být skutečně zajímavé vlastnosti webového rozhraní, které jsou zatím jiným způsobem nedosažitelné, přesto však AJAX přináši vývojáři i řadu problémů. Můžeme zmínit například možnost zobrazení kódu JavaScriptu v prohlížeči, což představuje zvýšení nebezpečí napadení aplikace. Také je nutno vzít v úvahu snížení čitelnosti kódu či znesnadnění debugovatelnosti a testovatelnosti aplikace.

AJAX v akci můžete vidět například na projektech Google Suggest a Google Maps.

Související odkazy

  • Java BluePrints – AJAX with J2EE
  • Luboš Kmeťko o AJAXu na weblogu Handmade Websites
  • J. J. Garrett – Ajax: A New Approach to Web Applications