Hlavní navigace

SQL si razí cestu do HTML5

12. 6. 2007
Doba čtení: 6 minut

Sdílet

 Autor: 29
Před pár dny vyšel Google Gears, rozšíření webových prohlížečů umožňující webovým aplikacím fungovat v offline režimu. Zajímavostí jistě je, že část Gears je již v této chvíli součástí specifikace HTML5. Webové aplikace budoucnosti budou ukládat svá data do klientské databáze pomocí dotazovacího jazyka SQL.

Začátkem května WHATWG a W3C spojily síly pro další vývoj specifikace HTML5. Ačkoliv členové pracovní skupiny pro HTML se s adoptovanou specifikací ještě plně neseznámili, práce na HTML5 se nezastavila a specifikace se nadále rozšiřuje. Nejvýznamnější novinka se týká offline webových aplikací.

Offline webové aplikace

Smývání rozdílu mezi webovými a desktopovými aplikacemi se stává oblíbeným tématem, a není proto divu, že specifikace HTML5 již od začátku pamatovala na podporu offline webových aplikací, což jsou v zásadě klasické webové aplikace schopné pracovat i bez dostupnosti stálého připojení k webovému serveru. Webové aplikace jsou tak sice stále odkázány na okno prohlížeče, ale svou nezávislostí na internetovém připojení padá jeden z propastných rozdílů mezi webem a desktopem.

Specifikace HTML5 deklaruje novou vlastnost navigator.onLine signalizující stav připojení, prostřednictvím které se webová aplikace rozhodne, zda potřebná data načte AJAXem z Internetu, nebo místo toho použije data z lokálního úložiště.

Lokální úložiště slouží k uchovávání dat na straně klienta a rozšiřuje možnosti stávajících cookies, které jsou pro tyto účely na dnešním webu již nedostačující. Úložiště je dvojího druhu: session storage obsahuje data platná pouze pro danou relaci (pokud k webové aplikaci přistoupíte nezávisle z několika oken prohlížeče, nebude session storage mezi těmito relacemi sdílena, což bylo jedno z nepříjemných omezení cookies) a mizí s jejím ukončením, naopak global storage je mezi relacemi sdílena a uchovává data i po zavření prohlížeče. K datům se v obou případech přistupuje pomocí klíčů, např.  sessionStorage['login'] = 'pepazdepa'.

Ještě před několika týdny vše nasvědčovalo tomu, že se bude jednat o jediný mechanismus pro lokální úložiště (v této chvíli implementovaný pouze Firefoxem).

Databázové úložiště a SQL5

Koncem května však ve specifikaci HTML5 tiše přibyla sekce client-side database storage popisující nové lokální úložiště postavené na databázi a používající pro přístup k datům jazyk SQL. Píšu „tiše“, neboť vše proběhlo bez ohlášení a většina členů pracovních skupin si toho ani nevšimla. Oněch pár pozornějších členů se stejně nic nedozvědělo. Ian Hickson, který SQL sekci s nejasným komentářem „by popular request, a SQL database for your enjoyment“ vložil, se tvářil tajemně a odmítal cokoliv prozradit.

Vše se objasnilo až nedávnou prezentací Google Gears. Gears je rozšíření určené pro tvorbu offline webových aplikací (v tuto chvíli dostupné pro prohlížeče Internet Explorer a Firefox). V češtině o něm již psali např. David Antoš a Roman Pichlík. Gears používá k ukládání dat na straně klienta lokální SQLite databázi s API shodou okolností ne nepodobným tomu, které Ian Hickson pár dní před tím vložil do HTML5. Pokud připomeneme, že Hickson je zaměstnán u Googlu, je zřejmé, odkud se k informacím dostal. Jasné však není, proč to tak udělal. Mohl stejně dobře počkat na veřejné oznámení Gears a teprve poté HTML5 o databázové úložiště rozšířit. Že by rozmar mladého editora?

Databázové úložiště s jazykem SQL (vtipně nazývaným SQL5) posouvá offline webové aplikace na zcela jinou úroveň. V případě session a global storage bychom si snadno dokázali představit jednoduché případy použití, například lokální uložení rozepsaného článku v redakčním systému pro případ výpadku spojení. S databázovým úložištěm již není problém představit si e-mailového klienta typu Gmail, u kterého můžete mít celou svou gigabytovou schránku k dispozici offline a ani budoucnost aplikací typu webový operační systém, kterých se poslední dobou objevilo hned několik (např. eyeOS), se již nemusí jevit zcela nereálně.

Klasický třívrstvý model webových aplikací (webový prohlížeč, serverová aplikace a databázová část na serveru) získává svou dvouvrstvou offline alternativu v podobě webového prohlížeče a lokální databáze.

SQL5 může přinést i řadu nových problémů, se kterými se budou muset tvůrci aplikací vyrovnat. Jedním z nich je simultánní přístup k úložišti z více oken prohlížeče. Pokud první přistupující uzamkne tabulku, ostatní okna k ní nedostanou přístup. Otázkou je i bezpečnost uživatele, historie jazyka SQL moc dobře zná problém SQL injection. SQL5 se snaží na bezpečnost pamatovat a nabízí možnost parametrických dotazů, bude však záviset na programátorech, jestli je budou používat a zda se uživatelé nestanou terčem nových útoků.

Okolo SQL5 panuje v tuto chvíli řada otázek. Bude HTML5 obsahovat i specifikaci jazyka SQL, nebo se jen odkáže na některou existující? Bude jako databáze doporučena SQLite, na které staví Gears, nebo budou jednotlivé prohlížeče implementovat odlišné databáze? Na odpovědi si pravděpodobně ještě pár měsíců počkáme.

Jedno je však jisté: SQL5 po řadě let rozšíří nároky na tvůrce webů. Do současného portfolia webových technologií HTML, CSS a JavaScript přibude SQL. SQL již nebude doménou programátorů serverových částí, ale i jazykem používaným při tvorbě webových aplikací. Ačkoliv specifikace HTML5, která SQL5 přinese, bude hotova až za několik let, pomocí Gears lze webové offline aplikace vytvářet již dnes.

Nástroj pro kontrolu syntaxe HTML5

Databázové úložiště není zdaleka to jediné, co se za minulý měsíc v oblasti HTML5 událo. Henri Sivonen (Mozilla, WHATWG) dokončil svou diplomovou práci na téma HTML5 Conformance Checker. Jejím výstupem je nástroj napsaný v Javě umožňující kontrolu syntaxe HTML5 dokumentů. Ke kontrole používá RELAX NG a oproti klasickému HTML validátoru, kterému řada chyb uniká, kontroluje syntaxi co nejpřesněji (typickou ukázkou je kontrola správných hodnot atributů).

Henri svůj nástroj prezentoval na konferenci XTech 2007. V tuho chvíli se jedná o jediný takový nástroj podporující HTML5. Pokud chcete s HTML5 experimentovat již dnes, můžete použít jeho webovou verzi.

XML5 aneb XML, které nemusí být well-formed

Jedním z cílů HTML5 je jednou provždy se zbavit problému tag soup (též HTML as she spoke). Velká část dokumentace se věnuje právě detailnímu popisu syntaxe a parsování HTML, aby webové prohlížeče zacházely se všemi HTML dokumenty, a to i s těmi syntakticky nesprávnými, stejně.

Za zmínku stojí, že Anne van Kesteren (Opera, WHATWG) nedávno založil vlastní projekt nazvaný XML5 (všimněte si, jak se názvy s pětkou na konci množí – HTML5, pak SQL5 a nyní XML5). Projekt XML5 se snaží pravidla nedrakonického přístupu použitá v HTML5 aplikovat na XML a vytvořit specifikaci, která bude zpětně kompatibilní s XML 1.0 a XML 1.1, ale vyrovná se i s dokumenty, které nejsou správně strukturované (well-formed).

Je otázkou, zda se tato myšlenka ujme ve světě XML, kde podmínka well-formed je od začátku svatým dogmatem. Anne se snaží nejen napsat specifikaci XML5, ale zároveň vytvořit její funkční implementaci v Pythonu. Pokud se jeho projekt dočká větší odezvy, mohl by způsobit ve světě XML nečekaný obrat.

Revize která nepřišla

Kromě dalšího vývoje HTML5 všichni očekávali jeho revizi, která byla v pracovní skupině pro HTML přislíbena. Po adopci měla být celá specifikace bod po bodu podrobena kritice, při čemž by se jednak ujasnily názory jednotlivých členů, a pak by to mnohé přimělo si třísetstránkovou specifikaci vůbec přečíst a detailně se s ní seznámit.

BRAND24

Žádná revize zatím nezačala. V tuto chvíli probíhá anketa mj. na téma, kterým dokumentem se má HTML WG zabývat dřív, zda seznamem základních principů, jimiž se má HTML5 řídit, nebo přímo specifikací HTML5.

Vůbec to vypadá, že se dění v HTML WG jen pomalu vleče (podotýkám, že všechny novinky zmíněné v tomto článku proběhly zcela mimo dění HTML WG!). Podle zakládací listiny by měla být první verze specifikace (first working draft) dostupná během měsíce června. Pokud se však HTML WG nerozhodne prohlásit za první verzi specifikace adoptované HTML5, které si většina členů ani pořádně nepřečetla, bude muset její vyhlášení o řadu měsíců odložit.

Bude první verze specifikace hotová ve stanoveném termínu?

  • Ano.
    2 %
  • Nevím.
    23 %
  • Ne.
    75 %

Byl pro vás článek přínosný?

Autor článku

Autor se zabývá webovými technologiemi a programováním. Několik let působil v projektu CZilla. Vystudoval biochemii a mezi jeho koníčky patří psaní a podpora open source.
Upozorníme vás na články, které by vám neměly uniknout (maximálně 2x týdně).