Mendelova zemědělská a lesnická univerzita v Brně Provozně ekonomická fakulta
Využití technologie AJAX v Univerzitním informačním systému Bakalářská práce
Vedoucí práce: Ing. Tomáš Majer
Jan Dvořák
Brno 2006
Na tomto místě bych rád poděkoval svému vedoucímu Ing. Tomáši Majerovi za jeho cenné rady, připomínky a nápady. Dále děkuji všem svým kolegům z vývojového týmu za pomoc a psychickou podporu při psaní této práce.
Prohlašuji, že jsem tuto bakalářskou práci vytvořil samostatně dle pokynů vedoucího práce a za použití zdrojů, které jsou uvedeny v závěru práce. Řešení využívá prostředků Univerzitního informačního systému, který vznikl prací desítek členů vývojového týmu.
V Brně dne 13. června 2006
....................................................
Abstract Dvořák, J. Application of the AJAX Technology in the University Information System. Bachelor thesis. Brno 2006. This thesis covers the possibilities of implementing the AJAX technology in the University Information System at MUAF Brno. First, I define the theoretical foundations of my thesis regarding the information systems, the web technology and the HTTP protocol in general. Further on, I analyse the AJAX technology, including its advantages, disadvantages and its application within the UIS. I also include a description of the implementation of searching in the UIS employing the technology.
Abstrakt Dvořák, J. Využití technologie AJAX v Univerzitním informačním systému. Bakalářská práce. Brno 2006. Práce se zabývá možnostmi implementace technologie AJAX v Univerzitním informačním systému MZLU v Brně. Nejprve jsou uvedena teoretická východiska práce tykající se obecně informačních systémů, webových technologií a protokolu HTTP. Dále je podrobně rozebrána technologie AJAX včetně jejích výhod, nevýhod a možností jejího využití v rámci UIS. Součástí práce je také popis implementace vyhledávání v UIS pomocí této technologie.
4
OBSAH
Obsah 1 Úvod a cíl práce 1.1 Úvod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Cíl práce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7 7 7
2 Definice pojmů
8
3 Architektury informačních 3.1 Globální architektura . . 3.2 Dílčí architektury . . . . 3.3 Horizontální struktura . 3.4 Vrstvená architektura . .
systémů . . . . . . . . . . . . . . . . . . . . . . . .
. . . .
. . . .
. . . .
4 Webové technologie 4.1 JavaScript . . . . . . . . . . . . . . . . . 4.1.1 Klientský JavaScript . . . . . . . 4.2 DOM . . . . . . . . . . . . . . . . . . . . 4.2.1 Struktura dokumentu a objektový 4.2.2 Úrovně a moduly . . . . . . . . . 4.3 HTML . . . . . . . . . . . . . . . . . . . 4.3.1 Vývoj jazyka . . . . . . . . . . . 4.3.2 Verze jazyka . . . . . . . . . . . . 4.3.3 Koncepce jazyka . . . . . . . . . 4.3.4 Struktura dokumentu . . . . . . . 4.3.5 Druhy značek . . . . . . . . . . . 4.3.6 Parsování v prohlížečích . . . . . 4.4 XML . . . . . . . . . . . . . . . . . . . . 4.4.1 Vlastnosti XML . . . . . . . . . . 4.5 CSS . . . . . . . . . . . . . . . . . . . . 4.6 XMLHttpRequest . . . . . . . . . . . . .
. . . .
. . . .
. . . .
. . . .
. . . . . . . . . . . . model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . .
. . . . . . . . . . . . . . . .
. . . .
. . . . . . . . . . . . . . . .
. . . .
. . . . . . . . . . . . . . . .
. . . .
. . . . . . . . . . . . . . . .
. . . .
. . . . . . . . . . . . . . . .
. . . .
. . . . . . . . . . . . . . . .
. . . .
. . . . . . . . . . . . . . . .
. . . .
. . . . . . . . . . . . . . . .
. . . .
. . . . . . . . . . . . . . . .
. . . .
. . . . . . . . . . . . . . . .
. . . .
. . . . . . . . . . . . . . . .
. . . .
10 10 12 13 13
. . . . . . . . . . . . . . . .
15 15 16 16 17 18 18 19 19 20 20 21 21 22 22 25 26
5 HTTP 27 5.1 Jak pracuje HTTP protokol . . . . . . . . . . . . . . . . . . . . . . . 27 5.2 Rozšíření verze 1. 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 6 AJAX 6.1 Výhody . . . . . . . . . . . . . . 6.2 Nevýhody . . . . . . . . . . . . . 6.3 Možná řešení některých problémů 6.4 Efektivnost z hlediska uživatelů . 6.5 Konkrétní aplikace v praxi . . . . 6.6 Využití v UIS . . . . . . . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
30 32 32 32 33 33 34
5
OBSAH
7 Implementace 36 7.1 Implementační prostředí . . . . . . . . . . . . . . . . . . . . . . . . . 36 7.2 Vlastní realizace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 8 Závěr
39
9 Literatura
40
Přílohy
42
A Vazby DOM modulů
43
B XMLHttpRequest
44
6
1
1 1.1
ÚVOD A CÍL PRÁCE
Úvod a cíl práce Úvod
S rychlým vývojem v oblasti informačních technologií velmi získaly na důležitosti informační systémy. Informační systémy se tak v posledních letech staly nedílnou součástí mnoha organizací, ať už se jedná o organizace řízené státem nebo soukromé firmy a bez ohledu na jejich velikost. K tomuto jevu došlo zejména díky rostoucí potřebě informací. Informační systémy je pomohou získat přesně a rychle. Mnoho lidí si již dnes nedokáže bez informačních systémů představit svůj život a je zřejmé, že takových lidí bude nadále přibývat. Informační systémy nám ulehčují život v mnoha oblastech mimo jiné také ve školství. Mezi školy využívající všech výhod informačních systémů se řadí také Mendelova zemědělská a lesnická univerzita v Brně (dále MZLU v Brně) a to již od roku 2002, tedy od doby, kdy byl spuštěn vlastní Univerzitní informační systém (dále jen UIS). S rostoucím počtem uživatelů informačních systémů vznikají také nové požadavky na tyto systémy a to hlavně ze strany uživatelského komfortu. Nestačí jen zajistit vynikající funkcionalitu systému, ale je třeba též vytvořit uživatelsky přívětivé prostředí. Více o uživatelské přívětivosti pojednává publikace (Netrefová, 2005). Většina vývojářů informačních systémů se tedy snaží nejenom vytvořit výkonný IS, ale také ho „odít do líbivého hávuÿ. K tomuto účelu slouží celá řada nástrojů. Pro webové IS se mezi ně řadí použití moderních webových technologií. Jednou z těchto technologií je také v poslední době mohutně nastupující technologie zvaná AJAX. Tato technologie byla delší dobu opomíjena, ale díky jejímu zpopularizování společností Google dochází nyní k jejímu častému nasazování v mnoha různých webových aplikacích. Díky snaze o stálé zlepšování kvality práce uživatelů s UIS jsem se rozhodl, že zjistím možnosti využití technologie AJAX v tomto komplikovaném prostředí.
1.2
Cíl práce
Hlavním cílem této práce je prozkoumat možnosti technologie AJAX a jejího nasazení v prostředí UIS. V první řadě bude nutné se seznámit obecně s informačními systémy, protože do tohoto prostředí bude výše zmíněná technologie implementována. Dále bude důležité se podrobně seznámit se samotnou technologií AJAX. Pro její pochopení bude nezbytné nastudovat všechny technologie, které AJAX využívá pro svou práci. Poté bude provedena analýza možností nasazení této technologie do UIS a také zhodnocení vlivu na efektivnost práce uživatelů. Závěrem na základě zjištěných informací bude provedena implementace technologie AJAX do UIS.
7
2
2
DEFINICE POJMŮ
Definice pojmů
Podstatná část této práce je věnována problematice informačních systémů a informačních a komunikačních technologií, proto je velmi vhodné hned z počátku definovat některé základní pojmy. Znalost těchto pojmů je důležitá pro plné pochopení této práce. Informace Název informace pochází z latinského informo, což znamená přenášet zprávu, oznámení, poučení a lze ji mimo jiné definovat jako míru množství neurčitosti nebo nejistoty o nějakém náhodném ději odstraněnou realizací tohoto děje. Informace je taktéž pojmem, který je velmi často charakterizován následujícími základními vlastnostmi: • informace je nehmotná, • doplňuje nám poznatky o jistých skutečnostech (snižuje entropii), • může být obsažena jak ve znacích (resp. signálech) tak i v jejich vzájemném uspořádání, • znaky a signály poskytují informaci pouze tomu, kdo jim rozumí, tedy tomu kdo je schopen rozpoznat jejich syntaxi a sémantiku. Data Data můžeme chápat jako informace, které jsou zaznamenány pomocí prostředků výpočetní techniky a dále zpracovávány ve výpočetních systémech. Data se stávají informacemi v momentě, kdy rozšiřují naše znalosti o zkoumané realitě. Můžeme tedy říci, že každá informace je součástí dat, ale každá data nemusí nutně obsahovat informaci. Systém Systém je nejčastěji definován jako komplex prvků nacházejících se ve vzájemné interakci. U systémů zkoumáme dvě základní vlastnosti: strukturu a chování. Struktura systému je množina prvků systému a jejich vzájemných vazeb. Chováním systému pak rozumíme způsob reakce systému na vstupní podněty. Další důležitou otázkou při studiu systému je jeho okolí. Okolí systému chápeme jako účelově definovanou množinu prvků, které do systému nepatří, ale vykazují k němu nějaké vazby, většinou přes hraniční prvky. A konečně hraničním prvkem nazýváme takový prvek systému, který má alespoň jednu vazbu na prvek, který do systému nepatří. Informační systém Informační systém (IS) je identifikovatelný funkční celek zabezpečující cílevědomé a systematické shromaždování, zpracovávání, uchovávání a zpřístupňování informací uložených na hmotném nosiči v údajových základnách a reprodukovatelných technickými prostředky. Informační systém zahrnuje informační základnu (data), technické a programové prostředky, technologie, finanční prostředky, procedury a pracovníky. Informační systém může ale nemusí zahrnovat počítačový systém nebo subsystém. Informační systémy tvoříme na základě současné informační a komunikační technologie. 8
2
DEFINICE POJMŮ
Informační technologie Pojem informační technologie (IT) představuje soubor nástrojů, metod a znalostí sloužících k činnostem, k nimž je informační systém určen (sběr, zpracování, uchování, přenos a prezentace informací). Informační technologie rovněž zahrnují zákonitosti vývoje a výroby informačních produktů – tedy především informačních systémů. Často tento pojem také představuje základní směr myšlení jedné epochy nebo jedné kultury (informační generace, informační kultura, informační společnost). Technologie je správný název pro to, čemu dnes někdy nesprávně říkáme technika (technika jsou pouze hmotné prostředky sloužící určité technologii k dosažení cíle). Internet Internet představuje celosvětový systém propojených počítačových sítí (tzv. síť sítí), které jsou schopny si navzájem vyměnovat informace pomocí protokolu TCP/IP a přenášet tak data mezi libovolnými místy na Zemi. Umožňuje komunikaci mezi lidmi a přístup k širokému spektru služeb a informací. Jedná se o zcela převratný prostředek komunikace na celém světě. Sítě založené na stejném principu jako Internet nazýváme internety a dělíme je na extranety (sítě mimo firmy) a intranety (sítě uvnitř firem). Nejvýznamňejší službou internetových sítí je world wide web. World wide web World wide web (WWW, web) představuje nejrozšířenější službu na internetu. Jedná se o graficky orientované prostředí hypertextových dokumentů zvaných www stránky, využívá moderní multimediální techniky (obrázky, zvuky, animace). Hypertextový dokument umožňuje pomocí odkazů propojit významově blízké dokumenty. Stránky mohou být statické (předem připravené) nebo dynamické (generované v okamžiku požadavku např. webovým informačním systémem). Pro zobrazení informací na webových stránkách se používá internetový prohlížeč. Uživatelská přívětivost Pojem uživatelské přívětivosti je velmi široký a každý si pod ním může představit něco jiného. Slovník říká, že uživatelsky přívětivá je taková ergonomicky propracovaná aplikace, která na uživatele klade minimální nároky související se svojí obsluhou a nezpůsobuje jeho dezorientaci. Uživatelsky přívětivý informační systém je pak takový systém, který poskytuje svým uživatelům maximální komfort při jeho používání. Uživatelská přívětivost má dva základní aspekty. Prvním je pohled uživatelů, kteří vyžadují komfortní uživatelské rozhraní a mají určité požadavky a představy, jak má toto rozhraní vypadat, jaké má mít funkce a chování. Druhým hlediskem je pak pohled vývojářů realizujících informační systém. Sem zahrnujeme rozsáhlou oblast metodiky tvorby aplikací týkajících se uživatelského rozhraní a jejich zakomponování do architektury celého systému.
9
3
3
ARCHITEKTURY INFORMAČNÍCH SYSTÉMŮ
Architektury informačních systémů
Architektura informačního systému zahrnuje jeho budoucí podobu, jednotlivé komponenty systému a vazby mezi nimi. Každý informační systém většího rozsahu by měl obsahovat vnitřní strukturu, která umožní efektivně plnit funkce a cíle, pro něž byl navržen. Aby informační systém splňoval potřebné vlastnosti, musí jeho architektura podporovat: • strategické cíle podniku – trendem je snižování nákladů, zvyšování kvality výrobků a služeb, zlepšení dobrého jména firmy, modernizace pracovního prostředí, • všechny uživatelské požadavky směřující k dosažení strategických cílů podniku, • hardwarovou, softwarovou a datovou integraci – data jsou uložena pouze jednou a přístupná všem aplikacím, uživatelské rozhraní se drží zažitých standardů, jednotlivé softwarové moduly spolu vzájemně komunikují a spolupracují, • systém musí být rozšiřitelný a parametrizovatelný – nebude problém rozšířit stávající systém o další hardwarové a programové komponenty, určité konstanty jsou nastavitelné přes uživatelské rozhraní, • efektivní a spolehlivé zpracování dat – zajištění dostatečně rychlé odezvy operací, zajištění konzistence dat při havárii systému, zabezpečení dat před zneužitím.
3.1
Globální architektura
Globální architektura je základní schéma znázorňující hrubou podobu budovaného informačního systému. Základem globální architektury jsou skupiny aplikací, jejich funkce a datová základna. V globální architektuře jsou vynechány veškeré detaily, aby byla co nejjednodušší a srozumitelná. Architektura vytváří poměrně stabilní rámec pro řízení tvorby informačního systému, do něhož jsou postupně začleňovány jednotlivé technologické a programové součásti v závislosti na potřebách a podmínkách podniku. Globální architektura slouží jako prostředek komunikace mezi zadavatelem a realizátorem informačního systému, pomáhá při definici priorit nasazování informačního systému do provozu. Dobře provedený návrh architektury systému pomáhá minimalizovat dodatečné náklady spojené s chybným zadáním. Jednotlivé komponenty architektury musí být v souladu s podnikovou strategií, funkčními a řídícími postupy v podniku a musí zajišťovat flexibilní přizpůsobení se měnícím se podnikovým procesům. Globální architektura zahrnuje také specifikaci potřebného stupně spolehlivosti – odolnost proti technickým závadám, negativním zásahům obsluhy apod. Postupem času došlo ke značné standardizaci základních stavebních bloků globální architektury. Tato standardní architektura je zobrazována jako pyramida rozdělená podle tří úrovní řízení podniku. Viz obr. 1.
10
3.1
Globální architektura
Obrázek 1: Základní bloky globální architektury
Konkrétní podoba architektury systému je ovlivněna řadou faktorů. Předmět činnosti podniku ovlivňuje vrstvu operativního řízení podniku, organizační struktura (hierarchická nebo plochá, centrálně nebo decentralizovaně řízená) spoluvytváří způsob komunikace mezi řídícími pracovníky. Je nutné brát v úvahu rozmístění jednotlivých pracovišť podniku (jedna lokalita nebo dislokace na více místech), umístění některých pracovišť na území jiných států (jiná legislativa a další odlišnosti zahraničního prostředí). Nezanedbatelným hlediskem je možnost využití stávajícího technologického a technického vybavení a personálních zdrojů v novém systému. Operativní řízení podniku TPS (Transaction Processing System) reprezentuje bloky činností podniku na úrovni operativního řízení. Jejich funkce jsou prováděny rutinně, je požadována vysoká rychlost odezev a spolehlivost. Skladba aplikací je velmi silně závislá na charakteru podniku (výrobní podnik, malosériová nebo kusová výroba, hromadná výroba, podnik poskytující služby, obchodní společnosti). Blok TPS může obsahovat i další podpůrné komponenty jako např. CAD systémy. Taktické řízení podniku MIS (Management Information System) podporuje taktické řízení podniku (střednědobý horizont) a navazuje na vrstvu operativního řízení. Na základě ucelených a sumarizovaných dat z TPS umožňuje kontrolovat a řídit základní podnikové aktivity. Aplikace řeší oblasti: • ekonomiky (účetnictví, evidence majetku, závazků a pohledávek, finanční řízení), • organizace podniku (personalistika a mzdy), • obchodu. Tyto aplikace se podobají ve většině podniků bez ohledu na jejich zaměření.
11
3.2
Dílčí architektury
Strategické řízení podniku EIS (Executive Information System) obsahuje aplikace určené ke strategickému řízení podniku. Aplikace využívají data poskytovaná nižšími vrstvami (tj. TPS a MIS) i data z externích zdrojů k analýze a poskytování informací pro strategická rozhodnutí vrcholového vedení podniku. Data jsou sledována i dlouho do minulosti. Součástí jsou systémy pro podporu rozhodování (DSS – Decision Support System). Kancelářské systémy OIS (Office Information System) zastupuje sadu aplikací zaměřených na podporu kancelářských prací. Obsahuje nejčastěji: • textový procesor, • tabulkový procesor, • software pro tvorbu prezentací, • plánovací kalendář, • aplikace podpory týmové práce, • klienta elektronické pošty, • prohlížeč webových stránek. Komunikace s okolím EDI (Electronic Data Interchange) představuje aplikace zajišťující elektronickou komunikaci s okolím podniku – dodavatelé a odběratelé, zákazníci, banky, státní instituce. V této oblasti se již v širokém měřítku prosadilo využití možností poskytovaných sítí Internet.
3.2
Dílčí architektury
Na globální architekturu navazují dílčí architektury prohlubující návrh do větších detailů – funkční, procesní, datová, technologická, softwarová a hardwarová. • Funkční architektura obsahuje rozklad základních funkčních bloků do menších funkčních celků. Nejvyšším stupněm dekompozice je rozklad funkcí na elementární (atomické) operace (transakce). • Procesní architektura popisuje probíhající činnosti v podniku. Na nejvyšším stupni abstrakce je při modelování využit kontextový diagram, na nižších stupních pak DFD diagramy (Data Flow Diagram). Procesy reprezentují místa transformace dat, jejich činnost je aktivována datovými toky nebo událostmi. Datové toky reprezentují vazby mezi prvky systému, zásobníky dat slouží k uchování potřebných dat a terminátory jsou prvky, které patří do okolí informačního systému. • Datová architektura definuje použitou datovou základnu pomocí entit, jejich atributů a vazeb mezi entitami. Při modelování je použit entitně–relační diagram (ERD). Entity lze chápat jako abstrakce množin objektů se stejnou logickou strukturou (stejnými atributy), vazby definují souvislost mezi objekty jedné, dvou nebo několika entit. Důležitou vlastností vazeb je jejich mohutnost (kardinalita). 12
3.3
Horizontální struktura
• Technologická architektura definuje způsob zpracování dat (interaktivní, dávkové, řízené událostmi, centralizované, distribuované), způsob práce aplikací (klient/server, peer-to-peer) a standardy uživatelského rozhraní. • Softwarová architektura specifikuje, z jakých programových komponent se bude celý systém skládat, určuje funkce jednotlivých komponent, jejich vstupní a výstupní data, algoritmy transformace dat, vývojové prostředí. Softwarová architektura také definuje vzájemnou spolupráci jednotlivých programových modulů. Základními typy softwarové architektury jsou lineární, hierarchická, vrstvená a síťová architektura. • Hardwarovou architekturou je určeno technické vybavení informačního systému. Jedná se nejen o servery, pracovní stanice, tiskárny, ale i jejich vzájemné propojení, použití záložních zdrojů napájení a zálohovacích zařízení.
3.3
Horizontální struktura
Jiným pohledem na strukturu informačního systému je pohled z hlediska jednotlivých složek podniku využívající tento systém. Při členění podniku na několik středisek jsou vytvářeny pro jednotlivá střediska jejich subsystémy. Při dalším členění středisek na oddělení a útvary vzniká stromová struktura. Příkladem můžou být subsystémy Výroba, Marketing, Management, Účetnictví a další členění subsystému Výroba na Nákup surovin, Kontrolu zásob apod.
3.4
Vrstvená architektura
V současnosti do pojmu architektura patří vnitřní systémová architektura a struktura implementačních vrstev umožňující přenášet systém mezi různými prostředími (jiný operační systém, změna databáze). Tato struktura se nazývá vrstvená architektura.
Obrázek 2: Vrstvená architektura
13
3.4
Vrstvená architektura
Nejjednodušším (a nejstarším) případem vrstvené architektury je jednovrstvá architektura, kdy všechny operace řešil jediný subsystém (tedy celý systém). Později vznikaly dvouvrstvé systémy pracující v režimu klient/server. Na straně serveru byla databázová vrstva, na straně klienta fungovala aplikační logika i prezentace dat uživateli. S růstem počtu databázových systémů, operačních systémů, požadavků na tvorbu integrovaných systémů a různých zařízení, pomocí kterých je možno budovat informační systémy, došlo ke vzniku třívrstvé architektury s těmito vrstvami: • prezentační vrstva, • aplikační vrstva, • datová vrstva. Třívrstvá architektura Na nejnižší úrovni je datová vrstva reprezentovaná databázovým systémem poskytujícím společnou datovou základnu různým dílčím systémům integrovaného informačního systému. Datová vrstva zajišťuje funkce pro vkládání, získávání a modifikaci dat, kontroluje integritu ukládaných dat, provádí jejich předzpracování a agregaci. Prostřední vrstvou je vrstva aplikační, která realizuje veškeré transformace (operace a výpočty) vstupních a výstupních dat. Protože leží mezi datovou a prezentační vrstvou, bývá označována pojmem middleware. Middleware je v komerčním světě též používán pro aplikační servery. Nejvyšší vrstvou (tedy nejblíže k uživateli systému) zajišťující prezentaci výsledků a vstup požadavků a povelů od uživatele je prezentační vrstva. Podle rozsahu zajišťovaných funkcí rozlišujeme klientské programy na tlusté a tenké klienty. Činnost tlustého klienta pokrývá prezentační vrstvu a zasahuje také částečně do vrstvy aplikační. Funkcionalita tenkého klienta je omezena na co nejjednodušší zprostředkování vstupů a výstupů mezi informačním systémem a uživatelem. Většinou je možné provozovat tenké klienty na různých zařízeních a operačních systémech. V případě realizace informačního systému v prostředí webu je klientem libovolný internetový prohlížeč (Procházka, 2006).
Obrázek 3: Třívrstvá architektura
14
4
4
WEBOVÉ TECHNOLOGIE
Webové technologie
Webových technologií existuje celá řada, některé se neustále vyvíjejí, jiné zůstávají v nezměněné podobě a samozřejmě vznikají technologie nové. Na tomto místě bych rád zmínil některých z nich. Jejich pochopení je základním teoretickým východiskem k technologii nové, které se týká tato práce, tedy technologie AJAX.
4.1
JavaScript
Jazyk JavaScript vymyslel v roce 1995 Brendan Eich ve firmě Netscape. Byl určen především pro použití v prohlížeči Netscape Navigator 2. 0, ale využíván byl i v serverových produktech firmy. Původně byl vyvíjen pod názvem LiveScript. Ohlášen byl společně se společností Sun 4. prosince 1995 jako doplněk k jazykům HTML (viz kap. 4.3) a Java. JavaScript byl v červenci 1997 standardizován asociací ECMA (Europen Computer Manufacturers Association) jako ECMAScript a v srpnu 1998 ISO (International Standards Organization) jako ISO 16262. Standard, který specifikuje ECMAScript, je standard ECMA-262 a byl vydán ve třech verzích. S první verzí je plně kompatibilní až JavaScript verze 1. 3. S poslední tedy třetí verzí je kompatibilní JavaScript verze 1. 5. Tato třetí verze byla přijata v prosinci 1999. V návrzích již také existuje čtvrtá verze ECMA-262, které by měl odpovídat JavaScript verze 2. 0. Mozilla ve svých produktech Firefox a Thunderbird řady 1. 0. x (vykreslovací jádro Gecko verze 1. 7 a nižší) implementovala JavaScript verze 1. 5. Ve Firefoxu a Thunderbirdu 1. 5 a SeaMonkey 1. 0 (Gecku verze 1. 8) je implementován JavaScript verze 1. 6. Společnost Microsoft uvolnila podobnou verzi JavaScript pod názvem JScript. Ten ve své verzi 5. 5 přibližně odpovídá JavaScriptu ve verzi 1. 5 a plně odpovídá standardu ECMA-262 verze 3. V Internet Exploreru verze 5. 5 je implementován JScript verze 5. 5 a ve verzi 6 JScript verze 5. 6, který se však od předchozí příliš neliší. JavaScript je interpretovaný programovací jazyk se základními objektově orientovanými schopnostmi. Univerzální jádro jazyka bylo vloženo do Mozilly (Netscape Navigatoru), Internet Exploreru a dalších webových prohlížečů. Pro webové programování bylo také rozšířeno přidáním objektů reprezentujících okno webového prohlížeče a jeho obsah. Tato klientská verze JavaScriptu umožňuje vložit do webových stránek proveditelný obsah – to znamená, že stránka na webu již nemusí být jen statickým dokumentem HTML, ale může obsahovat dynamické programy, které komunikují s uživatelem, řídí prohlížeč a dynamicky vytvářejí obsah HTML. Jádro jazyka JavaScript svými programovými konstrukcemi, jako je příkaz if, cyklus while a operátor &&, syntakticky připomíná programovací jazyky C, C++ a Javu. Avšak syntaxí podobnost končí. JavaScript je programovací jazyk bez typové kontroly, což znamená, že proměnné nemusí mít specifikovaný typ. Objekty v JavaScriptu se podobají spíše asociativním polím jazyka Perl, než strukturám v C nebo objektům v C++ a v Javě. Mechanismus dědičnosti objektové orientace Ja15
4.2
DOM
vaScriptu odpovídá prvkům málo rozšířených jazyků Self a NewtonScript a výrazně se liší od dědičnosti v C++ a Javě. Podobně jako Perl je JavaScript interpretovaný jazyk a mnohé myšlenky přebírá z jazyka Perl. Příkladem jsou jeho regulární výrazy a nástroje pro práci s poli. Ačkoli nemají JavaScript a Java mnoho společného, často se na webu využívá „spolupráceÿ těchto jazyků. Tyto dva jazyky mají odlišné sady schopností. JavaScript může řídit chování a obsah prohlížeče, ale nemůže kreslit grafiku nebo pracovat se sítí. Naopak Java má vlastnosti opačné. Java nemá žádnou kontrolu nad prohlížečem jako celkem, ale může vytvářet grafiku a pracovat se sítí. Klientský JavaScript může pracovat s applety Javy vloženými do webové stránky a řídit je. Touto kombinací lze získat mocný nástroj pro webové programování. 4.1.1
Klientský JavaScript
Když je překladač JavaScriptu vložen do webového prohlížeče, výsledkem je klientský JavaScript. Toto je zdaleka nejběžnější forma JavaScriptu. Vetšina lidí, pokud se zmiňuje o JavaScriptu, má obvykle na mysli klientský JavaScript. Klientský JavaScript kombinuje možnost zpracování skriptu interpretem JavaScriptu s objektovým modelem dokumentu (DOM – viz kap. 4.2) definovaným webovým prohlížečem. Tyto dvě odlišné technologie se synergicky doplňují. JavaScript umožňuje distribuci spustitelného obsahu přes web a je srdcem dokumentu dynamického HTML (DHTML). Podobně jako specifikace ECMA-262 definuje standardní verzi jádra jazyka JavaScript, tak organizace World Wide Web Consortium (W3C) publikovala specifikaci (nebo doporučení) DOM určující prvky, které musejí prohlížeče ve svém DOM podporovat (Flanagan, 2002).
4.2
DOM
DOM (Document Object Model) je ve své podstatě pouze sada rozhraní tj. API (Aplication Programming Interface) určených pro prácí s validními HTML a XML dokumenty (viz kap. 4.4). Definuje logickou strukturu dokumentu a prostředky zprostředkující práci s dokumentem. DOM standardizuje přístup a manipulaci s dokumentem a umožňuje programátorovi transparentním způsobem pracovat při tvorbě, procházení a modifikaci dokumentu. Specifikace DOM je popsána sadou programových rozhraní, kterou jsou z hlediska programovacího jazyku nezávislé. Za specifikací DOM stojí konsorcium W3C a myšlenka jednotného a jazykově či platformově nezávislého rozhraní pro práci s dokumentem byla hlavním důvodem vzniku specifikace. K popisu jednotlivých rozhraní specifikace byl použit jazyk IDL (Interface Definition Language). Transparentnost na straně jedné a ochota sjednotit přístup pro práci s dokumentem na straně druhé umožnily brzkou implementaci DOMu v Javě a především v internetových prohlížečích, kde s jazyky ECMAScriptu vytvořil standard pro práci s HTML dokumenty. Omezení proprietárních DHTML
16
4.2
DOM
rozšíření určených pro práci s dokumentem u jednotlivých prohlížečů bylo rovněž jedním z faktorů, které přispěly k specifikaci DOM. 4.2.1
Struktura dokumentu a objektový model
Vyjádření dokumentu pomocí objektů se nazývá objektový model a z pohledu DOM je specifikován následovně: • množinou rozhraní a objektů použitých k reprezentaci a manipulaci s dokumentem, • sémantikou těchto rozhraní a objektů s jejich chováním a vlastnostmi, • vztahy a spoluprácí mezi těmito rozhraními a objekty. Z pohledu DOMu si můžeme dokument představit jako logickou strukturu uzlů, která se podobá rozvětvenému stromu. Na vrcholu struktury je objekt window, reprezentující aktuální okno prohlížeče. Tento objekt obsahuje mnoho vlastností a metod – mezi jinými je zde vlastnost document, odpovídající HTML dokumentu, který je v tomto okně právě načten. Objekt document pak v sobě obsahuje všechny další prvky, které jsou na stránce. Například formuláře jsou uloženy v poli document.forms, hypertextové odkazy v poli document.links atd. Výše popsané můžeme vidět na následujícím obrázku.
Obrázek 4: Objektový model dokumentu
17
4.3
4.2.2
HTML
Úrovně a moduly
Specifikace W3C DOM jsou rozděleny do několika úrovní (DOM level), z nichž každá obsahuje povinné a volitelné moduly. K tomu, aby nějaká aplikace mohla prohlásit, že podporuje určitý DOM level, musí implementovat všechny požadavky dané úrovně a všech nižších. Aplikace mohou též podporovat specifická rozšíření (vendor–specific extensions) za podmínky, že nejsou v konfliktu s W3C standardy. V současnosti existují tři úrovně: Level 1, Level 2 a Level 3. Level 0 Level 0 není formální specifikací publikovanou W3C, ale používá se jako srozumitelná zkratka odkazující na věci existující před standardizačním procesem. Například DHTML Object Model vyvinutý firmou Microsoft, nebo nepojmenovaný Intermediate DOM od Netscape. Level 1 První specifikace DOM přinesla Core (sada základních rozhraní), které bylo rozšířeno moduly XML a HTML, které umožňují navigaci v DOM (HTML a XML) dokumentu (resp. jeho stromové struktuře) a manipulaci s obsahem. Také jsou obsaženy specifické elementy HTML. Level 2 Tato specifikace přinesla kromě drobného rozšíření Core zároveň jeho ustanovení jako modulu a moduly úplně nové – Veiws, StyleSheets, CSS, CSS2, Events, UIEvents, MouseEvents, MutationEvents, HTMLEvents, Range a Traversal. Level 3 Prozatím poslední specifikace DOM přinesla moduly TextEvents, KeybordEvents, MutationNameEvents, LS, LS-Async, DocumentLS, ElementLS, Validation a XPath. Vazby jednotlivých modulů jsou přehledně znázorněny na obrázku viz příloha A.
4.3
HTML
HTML je zkratka z anglického HyperText Markup Language, což v překladu znamená značkovací jazyk pro hypertext. Tento jazyk je jedním z jazyků pro vytváření stránek v systému Worl Wide Web, který umožňuje publikaci stránek na Internetu. Jazyk je podmnožinou dříve vyvinutého rozsáhlého univerzálního značkovacího jazyka SGML (Standard Generalized Markup Language). Vývoj HTML byl ovlivněn vývojem webových prohlížečů, které zpětně ovlivňovaly definici jazyka (Wikipedia, 2006).
18
4.3
4.3.1
HTML
Vývoj jazyka
Hypertext Vývoj hypertextu začal už ve 40. letech 20. stol., kdy Vannevar Bush teoreticky navrhl systém MemEx. Bushův teoretický koncept uskutečnil v praxi Douglas Engelbart, když počátkem šedesátých let vytvořil první hypertextový systém fungující v síťovém prostředí – On-Line Systém (NLS). Termín hypertext zavedl v šedesátých letech Theodor H. Nelson, který chápal hypertext především jako nové médium, jež rozšiřuje možnosti kreativní práce s textem. Popsal hypertext jako nesekvenční, nelineární text s rozvětvenou strukturou, která se skládá z textových bloků propojených různými spojeními a nabízí čtenáři různé čtecí trasy. Své vize se snažil realizovat v celoživotním projektu XANADU, jehož cílem bylo vytvořit totální hypertext – docuversum, který by shromažďoval a propojoval všechny existující texty (Kobíková, 2003). HTML V roce 1989 spolupracovali Tim Berners-Lee a Robert Caillau na propojeném informačním systému pro CERN (Central Européene de Rechere Nucléaire – výzkumné centrum fyziky poblíž Ženevy ve Švýcarsku). V této době se pro tvorbu dokumentů obvykle používal TeX, Postscript a také SGML. Z potřeby nějakého nástroje, který by byl jednodušší, vzešel jazyk HTML. Tento jazyk byl navržen v 1990 a současně s ním také protokol pro jeho přenos v síti – HTTP (HyperText Transfer Protocol – přenosový protokol hypertextu – viz kap. 5). V roce 1991 CERN zprovoznil svůj systém www, jehož hypertextové dokumenty jsou psány právě v jazyce HTML. Současně NCSA (National Center for Supercomputer Applications) vybídlo Marca Andreessena a Erica Binu k vyvinutí prohlížeče Mosaic. Byl vyvinut v roce 1993 pro počítače PC a Macintosh a měl obrovský úspěch. Byl to první prohlížeč s grafickým uživatelským rozhraním. Došlo k velkému rozvoji webu a bylo nutné pro HTML definovat standardy. 4.3.2
Verze jazyka
První verze jazyka HTML byla definována pouze doprovodnou dokumentací k původní distribuci systému WWW z laboratoří CERN. Snaha o standardizaci této verze byla rychle předstižena dalším vývojem a ztratila brzy smysl. Následkem nečekaně rychlého celosvětového rozšíření systému WWW a nekoordinovaného vývoje různých verzí prohlížečů bylo neustálé oddalování přijetí jednotné verze definice jazyka HTML, takže první standardizovanou verzí jazyka HTML je verze 2. 0. • Verze 2. 0 – Zachycuje stav jazyka v polovině roku 1994. Standard vydala komunita IETF (Internet Engineering Task Force). Je to první verze, která plně odpovídá syntaxi SGML. Přidává k původní nespecifikované verzi interaktivní formuláře. • Verze 3. 2 – Byla vydána v květnu 1996 a zachycuje stav jazyka v tomto roce. Připravovaná verze HTML 3. 0 nebyla nikdy přijata jako standard, protože byla 19
4.3
HTML
příliš složitá a žádná firma nebyla schopna naprogramovat její podporu ve svém prohlížeči. Standard už vydalo konsorcium W3C, stejně jako následující verze. Přidává k jazyku tabulky, zarovnávání textu a stylové elementy pro ovlivňování vzhledu. • Verze 4. 0 – Byla vydána 18. prosince 1997. Do specifikace jazyka přidala nové prvky pro tvorbu tabulek, formulářů a nově byly definovány rámy. Tato verze se snaží dosáhnout původního účelu – prvky by měly vyznačovat význam (sémantiku) jednotlivých částí dokumentu, vzhled má být ovlivňován připojovanými styly. Některé prezentační elementy byly zavrženy. • Verze 4. 01 – Tato verze opravuje některé chyby verze předchozí a přidává některé nové tagy. Je to poslední verze HTML, které se již dále nevyvíjí a je nahrazena novějším XHTML, jehož základem je právě tato poslední verze HTML. 4.3.3
Koncepce jazyka
Jazyk HTML je od verze 2. 0 aplikací SGML. Je charakterizován množinou značek a jejich atributů pro danou verzi definovaných. Mezi značky se uzavírají části textu dokumentu a tím se určuje význam (sémantika) obsaženého textu. Názvy jednotlivých značek se uzavírají mezi úhlové závorky (< a >). Část dokumentu uzavřená mezi značkami tvoří tzv. element (prvek) dokumentu. Součástí obsahu elementu mohou být další vnořené elementy. Atributy jsou doplňující informace, které upřesňují vlastnosti elementu. Značky (také nazývané tagy) jsou obvykle párové. Rozlišujeme počáteční a koncové značky. Koncová značka má před názvem značky znak lomítko. Některé značky jsou nepárové – neobsahují žádný text. Pro každou verzi existuje definice pravidel DTD (Document Type Definition). DTD definuje pro určitou verzi, které elementy je možné používat a s jakými atributy. Dokument může mimo značkování obsahovat další prvky: • direktivy – začínají znaky
Struktura dokumentu
Dokument v jazyku HTML má předepsanou strukturu: • Deklarace DTD – je povinná až ve verzi 4. 01, je uvedena direktivou a