Java v kapse II.

Pokračujeme v seriálu o Javě a jiných technologiích v mobilních zařízeních.
Po velmi letmém představení J2ME a KVM v minulém článku si dnes ukážeme jejich konkrétní využití. Před pár dny představila firma Sun Microsystems velmi zajímavý balík XSLTC. Tento balík, obsahující XSLT kompiler, umožňuje urychlit transformace XML (eXtensible Markup Language) dokumentů.

Většina z vás již asi tuto kombinaci písmen slyšela. XML (pro prvotní představu ho můžeme přirovnat k HTML) je jazyk vhodný pro reprezentaci a práci s daty. Tento jazyk (narozdíl třeba právě od HTML) neobsahuje formátovací značky. Pro jeho transformace (např. právě do lidmi čitelné podoby s využitím již zmíněného HTML nebo WML) slouží XSLT (eXtensible Stylesheet language transformation) technologie.

Konkrétní scénář využití, který by vás mohl zajímat, je následující. Firma se zabývá prodejem např. knih. Její artikl je uložen v obyčejné relační databázi a obsah je obhospodařován firemním informačním systémem. Firma, jelikož je moderní, prodává své zboží i přes Inernet. Data z databáze jsou získána jako XML data (viz ukázka č.1). Firma je s pomocí jednoduchého XSLT stylesheetu (respektive jejich záměnou) schopna obsloužit zákazníky jak sedící doma (s HTML browserem na desktopu), tak mobilní (s mobilním telefonem či PDA s WML browserem).

<?xml version="1.0"?>
<books>
<book category="reference">
<author>Nigel Rees</author>
<title>Sayings of the Century</title>
<price>8.95</price>
</book>

<book category="fiction">
<author>Evelyn Waugh</author>
<title>Sword of Honour</title>
<price>12.99</price>
</book>

</books>

Ukázka c.1 - XML dokumentu

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<!-- From Michael Kay's, XSLT Programmer's Reference -->
<xsl:template match="books">
<html><body>
<h1>A list of books</h1>
<table width="640">
<xsl:apply-templates/>
</table>
</body></html>
</xsl:template>
<xsl:template match="book">
<tr>
<xsl:apply-templates/>
</tr>
</xsl:template>
<xsl:template match="author | title | price">
<td><xsl:value-of select="."/></td>
</xsl:template>
</xsl:stylesheet>

Ukázka c.2 - XSL stylesheetu

Pravdou ovšem je, že tyto transformace jsou poměrně náročné na zdroje (CPU, RAM). Před vlastní transformací je třeba nejprve XML dokument převést z textové podoby do nějaké počítačem zpracovatelné pamětové reprezentace.

Dnešní moderní browsery se již vesměs (IE ve verzi 5 - podporuje, panují však otázky ohledně dodržení specifikací, u Nescape se na tom pracuje, tuto poznámku pokládejte jen jako můj argument do diskuze ohledně MS a jeho přínosu lidstvu, neb je na tom s podporou těchto v blízkém budoucnu klíčových technologií lépe než často zmiňovaná "lepší" konkurence) podporou XML a XSL mohou chlubit. Proto je možné přenést vlastní transformaci ze serveru na klienta a serveru tak ulehčit.

Nyní zpět od vysvětlujícího úvodu k XSLTC. Tato technologie umožnuje převod XSLT stylesheetu do podoby tzv transletu neboli předkompilované java třídy, což se výrazně podepisuje na rychlosti celé operace.

Abych Vám pomohl, udělat si představu o urychlení a pamětových nárocích, ukáži Vám použití této technologie na zdroji - velmi limitovaném zařízení Palm s nainstalovanou Javou. Můj Palm (PalmIIIx) zvládl transformaci již naparsovaného dokumentu s pomocí XSLT stylesheetu z ukázky za přibližně 5 sekund. Vlastní transformaci dokumentu (taktéž přiložen ke článku jako ukázka č.1) trvala 23 sekund a zde tedy jasně vidíme slabinu.

Palm XML
Ukázka č.3 - aplikace na Palm OS

Co říci závěrem? S tím jak se PDA a podobná zařízení pomalu začleňují do podnikových inventářů, stoupají i nároky na ně. Pracovník v terénu dnes potřebuje mít s sebou stále více dat a s pronikáním XML do podnikových data-flow se přesunuje tento jazyk i do takovýchto dříve nemyslitelných oblastí. Sun dokázal obdivuhodně skloubit Javu s XML a Javu s PDA. Na tento trh se tlačí (a poslední dobou notně zabral) i Microsoft. Určitě očekávejme podobná oznámení o proniknutí těchto technologií i na takováto zařízení stále častěji.