Hlavní navigace

SQL si razí cestu do HTML5

 Autor: 29
Martin Hassman 12. 6. 2007

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.

CIF16

Žá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.

Anketa

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

Našli jste v článku chybu?
Vitalia.cz: Tohle jsou nejlepší česká piva podle odborníků

Tohle jsou nejlepší česká piva podle odborníků

120na80.cz: Co je padesátkrát sladší než cukr?

Co je padesátkrát sladší než cukr?

DigiZone.cz: WorldDAB: jak si stojí klíčové trhy?

WorldDAB: jak si stojí klíčové trhy?

DigiZone.cz: Parlamentní listy: kde končí PR...

Parlamentní listy: kde končí PR...

Měšec.cz: TEST: Vyzkoušeli jsme pražské taxikáře

TEST: Vyzkoušeli jsme pražské taxikáře

DigiZone.cz: UPC má v nabídce Discovery v HD

UPC má v nabídce Discovery v HD

Podnikatel.cz: Babišovy firmy a registr smluv. Co odhalil?

Babišovy firmy a registr smluv. Co odhalil?

Vitalia.cz: dTest odhalil ten nejlepší kečup

dTest odhalil ten nejlepší kečup

DigiZone.cz: Test: brýle pro virtuální realitu Exos Urban

Test: brýle pro virtuální realitu Exos Urban

120na80.cz: Hrbatá prsa aneb mýty o implantátech

Hrbatá prsa aneb mýty o implantátech

DigiZone.cz: Mordparta: trochu podchlazený 87. revír

Mordparta: trochu podchlazený 87. revír

Vitalia.cz: Když všichni seli řepku, on vsadil na dýně

Když všichni seli řepku, on vsadil na dýně

Podnikatel.cz: Znáte už 5 novinek k #EET

Znáte už 5 novinek k #EET

Vitalia.cz: Když bílkoviny, tak jíme ty nekvalitní

Když bílkoviny, tak jíme ty nekvalitní

Lupa.cz: Další Češi si nechali vložit do těla čip

Další Češi si nechali vložit do těla čip

120na80.cz: Zázrak ze smetiště: co léčí lopuch?

Zázrak ze smetiště: co léčí lopuch?

DigiZone.cz: DVB-T2 ověřeno: seznam TV zveřejněn

DVB-T2 ověřeno: seznam TV zveřejněn

DigiZone.cz: Nejnovější špičkové TV ve videu

Nejnovější špičkové TV ve videu

DigiZone.cz: Digi2GO: výborný základ, ale...

Digi2GO: výborný základ, ale...

DigiZone.cz: Pure má tři nové přijímače DAB

Pure má tři nové přijímače DAB