• Nebyly nalezeny žádné výsledky

VYSOK ´E U ˇCEN´I TECHNICK ´E V BRN ˇE BRNO UNIVERSITY OF TECHNOLOGY

N/A
N/A
Protected

Academic year: 2022

Podíl "VYSOK ´E U ˇCEN´I TECHNICK ´E V BRN ˇE BRNO UNIVERSITY OF TECHNOLOGY"

Copied!
62
0
0

Načítání.... (zobrazit plný text nyní)

Fulltext

(1)

VYSOK ´ E U ˇ CEN´I TECHNICK ´ E V BRN ˇ E

BRNO UNIVERSITY OF TECHNOLOGY

FAKULTA INFORMA ˇ CN´ICH TECHNOLOGI´I USTAV INTELIGENTN´ICH SYST ´ ´ EM ˚ U

FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF INTELLIGENT SYSTEMS

MOZILLA JAKO V ´ YVOJOV ´ A PLATFORMA

DIPLOMOV ´ A PR ´ ACE

MASTER’S THESIS

AUTOR PR ´ ACE Bc. MARTIN V´IDE ˇ NSK ´ Y

AUTHOR

BRNO 2008

(2)

VYSOK ´ E U ˇ CEN´I TECHNICK ´ E V BRN ˇ E

BRNO UNIVERSITY OF TECHNOLOGY

FAKULTA INFORMA ˇ CN´ICH TECHNOLOGI´I USTAV INTELIGENTN´ICH SYST ´ ´ EM ˚ U

FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF INTELLIGENT SYSTEMS

MOZILLA JAKO V ´ YVOJOV ´ A PLATFORMA

MOZILLA AS A DEVELOPMENT PLATFORM

DIPLOMOV ´ A PR ´ ACE

MASTER’S THESIS

AUTOR PR ´ ACE Bc. MARTIN V´IDE ˇ NSK ´ Y

AUTHOR

VEDOUC´I PR ´ ACE Ing. JAN SAMEK

SUPERVISOR

BRNO 2008

(3)

Abstrakt

Tato pr´ace se zab´yv´a pˇredstaven´ım projektu Mozilla z pohledu jeho pouˇzit´ı jako platformy pro v´yvoj aplikac´ı. Je pomyslnˇe rozdˇelena do ˇctyˇr ˇc´ast´ı. Prvn´ı tvoˇr´ı teoretick´y ´uvod, kter´y se zab´yv´a architekturou, nejd˚uleˇzitˇejˇs´ımi technologiemi, nebo motivac´ı proˇc pouˇz´ıt plat- formu. Druh´a ˇc´ast je koncipovan´a jako prvn´ı kr˚uˇcky pˇri tvorbˇe vlastn´ıho projektu. Tˇret´ı ˇ

c´ast je vˇenov´ana uk´azkov´e aplikaci Tester. Jedn´a se o projekt z e-learningov´eho prostˇred´ı urˇcen´y pro zjednoduˇsen´ı uˇcen´ı se zamˇeˇren´ım na slovn´ı z´asobu. Z´avˇer pr´ace se nese v duchu hodnocen´ı platformy na z´akladˇe praktick´ych zkuˇsenost´ı.

Kl´ıˇ cov´ a slova

ECMAScript, Firefox, Gecko, Mozilla, Platforma, RDF, XBL, XML, XPCOM, XPCO- NECT, XUL, XULRunner

Abstract

This thesis deals with introduction of Mozilla as a development platform. Thesis is divi- ded into four parts. The first one consists of a theoretical introduction, which describes architecture, the most important technologies and motivation for usage of Mozilla as a de- velopment platform. The second part leads step by step threw making own project. The third part is dedicated to description of the example application Tester. Tester is an e- learning project designed for easier learning process with scope on vocabulary practise.

In the conclusion of thesis, there is the evaluation of Mozilla platform based on practical experience.

Keywords

ECMAScript, Firefox, Gecko, Mozilla, Platform, RDF, XBL, XML, XPCOM, XPCONECT, XUL, XULRunner

Citace

Martin V´ıdeˇnsk´y: Mozilla jako v´yvojov´a platforma, diplomov´a pr´ace, Brno, FIT VUT v Brnˇe, 2008

(4)

Mozilla jako v´ yvojov´ a platforma Prohl´ aˇ sen´ı

Prohlaˇsuji, ˇze jsem tuto bakal´aˇrskou pr´aci vypracoval samostatnˇe pod veden´ım pana Ing.

Jana Samka.

. . . . Martin V´ıdeˇnsk´y

13. kvˇetna 2008

c

Martin V´ıdeˇnsk´y, 2008.

Tato pr´ace vznikla jako ˇskoln´ı d´ılo na Vysok´em uˇcen´ı technick´em v Brnˇe, Fakultˇe in- formaˇcn´ıch technologi´ı. Pr´ace je chr´anˇena autorsk´ym z´akonem a jej´ı uˇzit´ı bez udˇelen´ı opr´avnˇen´ı autorem je nez´akonn´e, s v´yjimkou z´akonem definovan´ych pˇr´ıpad˚u.

(5)

Obsah

1 Uvod´ . . . 3

2 Z´akladn´ı pojmy . . . 4

2.1 Platforma . . . 4

2.1.1 Klasick´e platformy . . . 4

2.1.2 Rich client platform . . . 5

2.1.3 Rich Internet application . . . 5

2.2 R´amce . . . 6

3 Historie Mozilly . . . 7

4 Mozilla se pˇredstavuje . . . 9

4.1 Architektura . . . 9

4.2 Zaˇrazen´ı platformy . . . 10

4.3 Uk´azka aplikac´ı . . . 10

4.4 Vlastnosti platformy . . . 14

4.4.1 Klady . . . 14

4.4.2 Z´apory . . . 14

4.4.3 Test . . . 15

4.4.4 Pˇr´ıklady pouˇzit´ı . . . 16

5 Kl´ıˇcov´e technologie platformy . . . 17

5.1 NSPR . . . 17

5.2 GECKO . . . 17

5.3 JavaScript (ECMAScript) . . . 18

5.4 XPCOM . . . 18

5.4.1 XPConnect . . . 19

5.5 RDF . . . 20

5.6 XUL . . . 20

5.7 XBL . . . 21

5.8 HTML, XHTML a XML technologie . . . 24

5.9 Rozˇs´ıˇren´ı (moduly) . . . 24

6 Mozilla prakticky . . . 25

6.1 N´astroje pro podporu programov´an´ı . . . 25

6.1.1 Komodo IDE . . . 25

6.1.2 Eclipse. . . 25

6.1.3 XUL Explorer . . . 26

(6)

6.2 Zaloˇzen´ı projektu . . . 26

6.3 Chrome . . . 27

6.4 Chrome registry . . . 27

6.5 Protokol chrome . . . 28

6.5.1 Pˇr´ıklad . . . 28

6.6 XPCOM . . . 28

6.7 Moduly . . . 28

6.8 Prostˇred´ı pro bˇeh aplikac´ı . . . 29

6.8.1 Instalace XULRunneru . . . 29

6.8.2 Odinstalov´an´ı prostˇred´ı . . . 30

6.9 Spuˇstˇen´ı aplikace . . . 30

6.9.1 Distribuce aplikace . . . 30

6.10 N´apovˇeda v aplikaci . . . 31

6.11 Tipy & triky pro v´yvoj. . . 31

6.11.1 Chybov´a konzola . . . 31

6.11.2 Venkman (Javascript debugger) . . . 32

6.11.3 Modul Base . . . 33

6.12 Uk´azkov´a demo aplikace . . . 33

6.12.1 Technick´y popis . . . 33

7 Demonstraˇcn´ı aplikace – Tester . . . 36

7.1 Anal´yza . . . 36

7.1.1 Hra pro procviˇcen´ı slovn´ı z´asoby . . . 37

7.1.2 Jednoduch´y slovn´ık . . . 37

7.2 N´avrh a implementace . . . 38

7.2.1 Hra ˇSibenice . . . 39

7.2.2 Slovn´ık . . . 40

7.3 Ovl´ad´an´ı aplikace . . . 41

7.4 Moˇznosti rozˇs´ıˇren´ı do budoucna . . . 42

8 Z´avˇer . . . 44

Seznam pˇr´ıloh . . . 49

A Diagram v´yvoje jednotliv´ych verz´ı prohl´ıˇzeˇc˚u . . . 50

B Pˇrehled nov´ych vlastnost´ı JavaScriptu podle verz´ı . . . 51

C Uk´azka soubor˚u potˇrebn´ych pro vytvoˇren´ı n´apovˇedy . . . 53

D DTD sch´ema struktury bal´ıˇcku . . . 55

E Pˇr´ıklad XML struktury bal´ıˇcku . . . 57

F Obsah CD . . . 58

(7)

Kapitola 1

Uvod ´

Informaˇcn´ı technologie se st´ale v´ıce uplatˇnuj´ı v ˇsirˇs´ım spektru lidsk´e ˇcinnosti. Softwarov´e projekty jsou ˇc´ım d´al t´ım rozs´ahlejˇs´ı, je vyˇzadov´ana st´ale vyˇsˇs´ı kvalita a bezpeˇcnost. To se nutnˇe projevuje na potˇrebˇe kvalifikovan´ych lidsk´ych zdroj˚u, kter´ych je omezen´e mnoˇzstv´ı.

Proto se zav´ad´ı do v´yvojov´eho cyklu softwaru st´ale vyˇsˇs´ı abstrakce. Ta dovoluje odpout´an´ı od technick´ych probl´em˚u smˇerem k vlastn´ı logice projekt˚u. Softwarov´y inˇzen´yˇri dostali CASE1 n´astroje pro zjednoduˇsen´ı n´avrhu, program´atoˇri pak aplikaˇcn´ı r´amce nebo sofisti- kovanˇejˇs´ı v´yvojov´e platformy.

V´yvojov´e platformy nebo aplikaˇcn´ı r´amce jsou souborem knihoven a n´astroj˚u, kter´e usnadˇnuj´ı program´ator˚um pr´aci a odv´ad´ı je od probl´em˚u, jako je multiplatformnost, hard- ware, grafick´e uˇzivatelsk´e prostˇred´ı a podobnˇe. Lze tvrdit, ˇze je to pomysln´a vrstva mezi vlastn´ı aplikac´ı a operaˇcn´ım syst´emem. Mezi zn´am´e platformy patˇr´ı napˇr´ıklad Java, Eclipse, .NET nebo Mozilla.

Posledn´ı zmiˇnovanou platformou – Mozillou – se zab´yv´a tato pr´ace. Vˇetˇsina lid´ı si pod t´ımto oznaˇcen´ım pˇredstav´ı pokroˇcil´y internetov´y prohl´ıˇzeˇc nebo emailov´eho klienta. Pˇresto to jsou pouze projekty postaven´e nad touto platformou.

C´ılem t´eto pr´ace je ji prozkoumat: jak´e poskytuje moˇznosti a na jak´ych technologi´ıch je zaloˇzena. A tyto poznatky z´uroˇcit v praktick´em vyuˇzit´ı platformy.

Vlastn´ı pr´ace je pomyslnˇe rozdˇelena do ˇctyˇr ˇc´ast´ı. Prvn´ı je ryze teoreticky orientovan´a.

Cten´ˇ aˇri poskytne, kromˇe dlouh´e a zaj´ımav´e historie, rozbor architektury platformy, vˇcetnˇe pˇredstaven´ı nejd˚uleˇzitˇejˇs´ıch technologii. Souˇcasnˇe jsou na re´aln´ych aplikac´ıch uk´azan´e moˇz- nosti, kter´e platforma poskytuje. Pro dokreslen´ı slouˇz´ı ´uvaha, jeˇz rozv´ıj´ı toto t´ema pomoc´ı pˇr´ıklad˚u moˇzn´ych aplikac´ı. Pro uˇzivatele, kteˇr´ı se rozhoduj´ı, zda by jim platforma nepo- slouˇzila pro jejich projekty, je pˇrichystan´y test, na jehoˇz z´akladˇe m˚uˇze padnout rozhodnut´ı.

Druh´a ˇc´ast je koncipovan´a jako prvn´ı kr˚uˇcky pˇri tvorbˇe aplikace. Jsou v n´ı probr´ana t´emata, jak nainstalovat a pouˇz´ıvat platformu, vytvoˇren´ı kostry projektu nebo distribuci v´ysledn´eho produktu. Vynech´any nejsou ani kapitoly, zab´yvaj´ıc´ı se napˇr´ıklad n´astroji na podporu v´yvoje nebo radami pro v´yvoj´aˇre.

V pˇredposledn´ıˇc´asti jsou probran´e vˇedomosti zuˇzitkovan´e ve formˇe aplikace z e-learningo- v´eho prostˇred´ı. Jedn´a se o program pro zjednoduˇsen´ı uˇcen´ı se zamˇeˇren´ım na slovn´ı z´asobu.

Avˇsak n´avrh je pomˇernˇe flexibiln´ı a aplikace m˚uˇze slouˇzit napˇr´ıklad pro vyplˇnov´an´ı obl´ıbe- n´ych kv´ız˚u.

Z´avˇereˇcn´a ˇc´ast se vˇenuje hodnocen´ı platformy na z´akladˇe autorovy zkuˇsenosti.

1Computer-Aided Software Engineering – poˇc´ıtaˇcem podporovan´e softwarov´e inˇzen´yrstv´ı

(8)

Kapitola 2

Z´ akladn´ı pojmy

2.1 Platforma

Neˇz se pust´ıme do vlastn´ıho v´ykladu o Mozille, tak si prvnˇe definujeme vlastn´ı pojem plat- forma. Slovn´ık ciz´ıch slov definuje toto slovo jako z´akladna, a to pˇresnˇe vystihuje jeho pod- statu, protoˇze pˇredstavuje pevn´e z´aklady pro budov´an´ı vˇetˇs´ıho celku. Ve svˇetˇe informaˇcn´ıch technologi´ı se v´yraz platforma pouˇz´ıv´a ve v´ıce aspektech:

• Hardwarov´a platforma – pod t´ımto pojmem se mysl´ı soustava komponent, kter´a do- hromady tvoˇr´ı poˇc´ıtaˇc. Je to napˇr´ıklad i86 od firmy Intel, nebo Sparc firmy SUN Microsystem.

• Software – kter´y se d´ale dˇel´ı:

– Operaˇcn´ı syst´emy, pˇredstavuj´ıc´ı z´aklad pro spuˇstˇen´ı program˚u. Pokud aplikace podporuje v´ıce OS, ˇr´ık´a se j´ı multiplatformn´ı.

– Kolekce softwaru a n´astroj˚u, s kter´ymi m˚uˇze b´yt aplikace vyv´ıjena a provo- zov´ana [1].

Posledn´ı definice pˇredstavuje to, v jak´em kontextu bude v t´eto pr´aci platforma ch´apan´a, pokud nebude uvedeno jinak.

Softwarov´a platforma poskytuje pro v´yvoj´aˇre ulehˇcen´ı pr´ace pˇri v´yvoji softwaru. Je toho doc´ıleno pomoc´ı vyˇsˇs´ı abstrakce, d´ıky kter´e se v´yvoj´aˇr nemus´ı zab´yvat probl´emy, kter´e se ho net´ykaj´ı, ale m˚uˇze se v´ıce zamˇeˇrit na vlastn´ı logiku aplikace. Pro tyto ´uˇcely poskytuje platforma velk´e mnoˇzstv´ı knihoven (t´eˇz naz´yvan´e r´amce – viz dalˇs´ı kapitola).

Dalˇs´ım charakteristick´ym rysem platformy je jej´ı schopnost provozovat (spouˇstˇet) aplikace v n´ı napsan´e. Tato vlastnost pˇrin´aˇs´ı uˇzivateli jistotu, ˇze spust´ı sv˚uj produkt na libovoln´em zaˇr´ızen´ı (kombinaci hardwaru a softwaru), kter´e je podporov´ano. Vˇetˇsina platforem pouˇz´ıv´a pro vytv´aˇren´ı aplikac´ı jeden z´akladn´ı programovac´ı jazyk. Avˇsak trendem v posledn´ı dobˇe je nab´ıdnout ˇsirˇs´ı spektrum programovac´ıch jazyk˚u, kter´e lze vyuˇz´ıt. Je to zejm´ena zp˚usobeno neochotou v´yvoj´aˇr˚u uˇcit se nov´e jazyky

Softwarov´ych platforem existuje nˇekolik druh˚u, podle jejich komplexnosti a zamˇeˇren´ı.

N´asleduj´ıc´ı podkapitoly se zab´yvaj´ı nejd˚uleˇzitˇejˇs´ımi z nich.

2.1.1 Klasick´e platformy

Pˇredstavuj´ı z´akladn´ı – nejobecnˇejˇs´ı skupinu platforem, tak jak byla definovan´a. N´asleduj´ıc´ı v´yˇcet pˇredstavuje dva z´astupce z t´eto skupiny:

(9)

JAVA – jedna z nejstarˇs´ıch platforem vyvinut´ych firmou Sun Microsystems. Poskytuje prostˇredky pro v´yvoj aplikac´ı od vestavˇen´ych zaˇr´ızen´ı, pˇres klasick´e aplikace, aˇz po aplikace webov´e. Javu tak m˚uˇzeme naj´ıt napˇr´ıklad v mobiln´ıch telefonech, au- tech nebo bankovn´ıch informaˇcn´ıch syst´emech. Sv´ym rozsahem tak pokr´yv´a skoro veˇsker´a z´akout´ı informaˇcn´ıch technologi´ı. Platforma poskytuje pro v´yvoj aplikac´ı stej- nojmenn´y objektovˇe orientovan´y jazyk. Kromˇe nˇej lze pouˇz´ıt i dalˇs´ı jazyky, jako je napˇr´ıklad Groovy [2] nebo JPython [3], kter´e vˇsak nejsou ofici´alnˇe podporov´any.

.NET – je to odpovˇed’ na ´uspˇech Javy od spoleˇcnosti Microsoft. Neposkytuje takov´y roz- sah podporovan´ych zaˇr´ızen´ı jako jej´ı vzor. Firma Microsoft podporuje pouze sv˚uj operaˇcn´ı syst´em a t´ım je omezen i hardware. Tento nedostatek ˇreˇs´ı projekt Mono [4], jeˇz pˇredstavuje svobodnou implementaci t´eto platformy. Hlavn´ım zamˇeˇren´ım plat- formy jsou klasick´e a webov´e aplikace. Nejv´yznamnˇejˇs´ım programovac´ım jazykem platformy je C# (C-Sharp), kter´y ale nen´ı jedin´ym ofici´aln´ım jazykem. Dalˇs´ımi jsou napˇr´ıklad C++, Visual Basic nebo Java#. Kromˇe nich existuje tak´e velk´e mnoˇzstv´ı neofici´aln´ıch jazyk˚u.

2.1.2 Rich client platform

Pro tuto kategorii zat´ım neexistuje ust´alen´y ˇcesk´y v´yraz, ale nˇekdy se uv´ad´ı pˇreklad

”plat- forma chytr´eho klienta“. Oproti klasick´ym platform´am je ´uzce zamˇeˇren´a na vytv´aˇren´ı kla- sick´ych desktopov´ych aplikac´ı. Pˇrevl´adaj´ıc´ı zamˇeˇren´ı spoˇc´ıv´a v budov´an´ı tenk´ych klient˚u, pro kter´e nen´ı vhodn´e pouˇz´ıt standardn´ı z´azem´ı poskytovan´e internetov´ym prohl´ıˇzeˇcem.

Nejv´yznamnˇejˇs´ı pˇredstavitel´e jsou:

Eclipse RCP – Za vznikem tohoto produktu stoj´ı firma IBM. Dnes jej spravuje sdruˇzen´ı ˇc´ıtaj´ıc´ı pˇres 130 ˇclen˚u a je vyv´ıjen pod otevˇrenou licenc´ı. Ke sv´emu bˇehu pouˇz´ıv´a obecnˇejˇs´ı platformu Java. Platforma vznikla ze stejnojmenn´eho v´yvojov´eho prostˇred´ı, kter´e jiˇz od zaˇc´atku bylo vyv´ıjeno znaˇcnˇe modul´arnˇe. V tomto prostˇred´ı se tak´e prov´ad´ı vlastn´ı v´yvoj aplikac´ı [5,6].

NetBeans RCP – o nˇeco mladˇs´ı, stejnˇe zamˇeˇren´y produkt jako Eclipse RCP. Vznikl po- dobnou cestou, jen s t´ım rozd´ılem, ˇze je zaloˇzen na konkurenˇcn´ım v´yvojov´em prostˇred´ı NetBeans [7].

Spring RCP – podprojekt zn´am´eho webov´eho J2EE r´amce Spring. Ze zde pˇrestavovan´ych platforem je nejmladˇs´ı. Jeho hlavn´ı pˇrednost´ı by mˇela b´yt vysok´a konfigurovatelnost a standardn´ı, jednoduˇse pouˇziteln´e GUI [8].

2.1.3 Rich Internet application

Obdobnˇe jako v pˇredchoz´ı kapitole i pro RIA neexistuje ust´alen´y ˇcesk´y pˇreklad. Tuto sku- pinu nelze zcela jednoznaˇcnˇe oznaˇcit jako platformu, pˇresto splˇnuje vˇetˇsinu jej´ıch rys˚u a proto je zde uvedena. Funkˇcnˇe je velmi podobn´a RCP s t´ım rozd´ılem, ˇze pˇren´aˇs´ı aplikace do prostˇred´ı internetu. Aplikace jsou rozdˇeleny na dvˇe ˇc´asti – klientskou a serverovou. Klientsk´a ˇ

c´ast zpravidla bˇeˇz´ı na hostitelovˇe poˇc´ıtaˇci v r´amci internetov´eho prohl´ıˇzeˇce. Na serverov´e ˇ

c´asti se pak ukl´adaj´ı data a stav. Cel´y koncept je pomˇernˇe nov´y a na svoje objeven´ı zat´ım ˇ

cek´a. Hlavn´ı reprezentanti jsou:

(10)

Adobe AIR – nejd˚uleˇzitˇejˇs´ı pˇredstavitel, kter´y st´al na poˇc´atku formov´an´ı t´eto katego- rie. Z´aklad na technologii Flash a Flex. Pro program´atory je zaj´ımav´e, ˇze pouˇz´ıv´a pˇrev´aˇznˇe standardizovan´e webov´e technologie (XML, CSS, ECMAScript) [9].

Microsoft Silverlight – zaloˇzen na platformˇe .NET, ˇc´ımˇz je omezena jeho rozˇsiˇritelnost.

Sv´ymi vlastnostmi je velmi podobny Adobe AIR. Oproti nˇemu vˇsak Microsoft pouˇz´ıv´a svoje propriet´arn´ı technologie. V´yhodou naopak je, ˇze lze pouˇz´ıt rozmanitˇejˇs´ı v´ybˇer programovac´ıch jazyk˚u [10].

JavaFX – opˇet podobn´a technologie zaloˇzena na platformˇe Java. V dobˇe psan´ı pr´ace se jednalo sp´ıˇse o technologick´e pˇredstaven´ı, neˇz o pouˇziteln´y produkt. Pˇresto m´a Sun Microsystems s t´ımto produktem velk´e pl´any. Poˇc´ıt´a se napˇr´ıklad s nasazen´ım ve vestavˇen´ych zaˇr´ızen´ıch (mobiln´ı telefony, PDA, . . . ) [11].

Do RIA se d´ale ˇrad´ı i aplikace postaven´e na webov´e technologii AJAX, ty jiˇz jsou od myˇslenky platformy, tak jak je v t´eto pr´aci ch´apan´a, velmi vzd´alen´e, a tak zde nebudou rozeb´ır´any.

2.2 R´ amce

R´amec (anglicky Framework) je softwarov´a struktura, kter´a slouˇz´ı jako podpora pˇri pro- gramov´an´ı, v´yvoji a organizaci jin´ych softwarov´ych projekt˚u. M˚uˇze obsahovat podp˚urn´e programy, knihovnu API1, n´avrhov´e vzory nebo doporuˇcen´e postupy pˇri v´yvoji.

C´ılem r´amce je pˇrevzet´ı typick´ych probl´em˚u dan´e oblasti, ˇc´ımˇz se usnadn´ı v´yvoj tak, aby se n´avrh´aˇri a v´yvoj´aˇri mohli soustˇredit pouze na sv´e zad´an´ı. Je tak velmi podobn´y vlast- nostem platformy a ˇcasto se taky tyto dva pojmy nespr´avnˇe zamˇeˇnuj´ı. R´amec se oproti platformˇe zamˇeˇruje na konkr´etn´ı oblasti. Dalˇs´ı z vlastnost´ı, kter´a mu chyb´ı, je bˇehov´e prostˇred´ı pro spuˇstˇen´ı aplikace. R´amce lze tedy sp´ıˇse ch´apat jako doplnˇek platformy, tj.

jej´ı podmnoˇzinu. Java napˇr´ıklad obsahuje r´amce pro pr´aci ze zvukem, grafikou nebo mul- tim´edii [12].

1Application Programming Interface – rozhran´ı pro programov´an´ı aplikac´ı

(11)

Kapitola 3

Historie Mozilly

Putov´an´ı do historie mus´ıme zaˇc´ıt u sam´ych koˇren˚u

”World Wide Webu“, a to u prohl´ıˇzeˇce Mosaic. Ten naprogramovali v roce 1992 Marc Andreessen a Eric Bin ve firmˇe NCSA. Tento prohl´ıˇzeˇc je ˇcasto nepr´avem povaˇzov´an za prvn´ı webov´y prohl´ıˇzeˇc. Prvn´ım byl Nexus. Napsal ho samotn´y zakladatel hypertextu sir Tim Berners-Lee. Nexus vˇsak byl omezen pouze na platformu NEXTStep [13].

V roce 1994 Marc Andreessen a Eric Bin zaloˇzili firmu Mosaic Communications Cor- poration s c´ılem vytvoˇrit nov´y prohl´ıˇzeˇc. Uˇz v ˇr´ıjnu vyˇsla prvn´ı verze pod n´azvem Mosaic Netscape. K´od tohoto prohl´ıˇzeˇce byl postaven´y na p˚uvodn´ım Mosaicu, pˇridal vˇsak podporu pro nov´e prvky jazyka HTML. Ponˇevadˇz n´azev kolidoval s ochranou znaˇckou NCSA, doˇslo k pˇrejmenov´an´ı produktu na Netscape Navigator a firmy na Netscape Communications Company [14].

Hvˇezda Netscape velmi strmˇe stoupala i pˇres to, ˇze se jednalo o placen´y produkt. V roce 1995 vstoupila firma ´uspˇeˇsnˇe na burzu a nic nenasvˇedˇcovalo rychl´emu p´adu, kter´y mˇel zane- dlouho nastat. O ten se postarala firma Microsoft se sv´ym produktem Internet Explorer [15], kter´a zaˇcala ch´apat, ˇze budoucnost je v internetu. Jiˇz ve stejn´em roce vyˇsla verze 1.0, kterou vz´apˇet´ı vystˇr´ıdala verze 2.0.

N´asleduj´ıc´ı rok vyˇsly

”trojkov´e“ verze obou prohl´ıˇzeˇc˚u, kter´e jiˇz mˇely srovnateln´e vlast- nosti, a tak zaˇcala bitva o z´akazn´ıky (pro toto obdob´ı se ujal n´azev

”V´alka prohl´ıˇzeˇc˚u“).

Pouh´y prohl´ıˇzeˇc internetov´ych str´anek uˇz nebyl dostaˇcuj´ıc´ı a tak obˇe spoleˇcnosti pˇridaly dalˇs´ı aplikace, jako napˇr´ıklad emailov´eho klienta. V roce 1997 vyˇsla ˇctvrt´a generace obou prohl´ıˇzeˇc˚u. Netscape zmˇenil n´azev na Netscape Communicator, aby zv´yraznil rozˇs´ıˇren´ı bal´ıku o dalˇs´ı aplikace. Technologicky vyspˇelejˇs´ı Internet Explorer se stal souˇc´ast´ı operaˇcn´ıho syst´emu Windows 98 [16], d´ıky ˇcemuˇz se zaˇcal rozˇsiˇrovat. T´ımto krokem pomyslnˇe l´ame Net- scape krk. Proto se Netscape Communications Company odhodlalo k historick´emu kroku a poˇc´atkem roku 1998 vydali veˇsker´e k´ody jako opensource, ˇc´ımˇz vznikl projekt Mozilla1. Pro spr´avu k´od˚u a pokraˇcov´an´ı v´yvoje byla zaloˇzena skupina Mozilla Organization. Kon- cem roku 1998 koupil firmu Netscape komunikaˇcn´ı gigant AOL. T´ımto krokem prakticky skonˇcila historie tohoto prohl´ıˇzeˇce jako samostatn´eho celku, dalˇs´ı verze jsou jiˇz zaloˇzeny na k´odech Mozilly. Pˇripravovan´a verze 5.0 nikdy nevyˇsla.

Po zaloˇzen´ı projektu Mozilla se zaˇcalo postupnˇe pracovat na prvn´ı verzi prohl´ıˇzeˇce.

V´yvoj´aˇri se rozhodli pro pˇrepis drtiv´e vˇetˇsiny k´odu. Dostali tak ˇsanci vytvoˇrit ˇcistˇs´ı n´avrh,

1Jm´eno Mozilla vzniklo spojen´ım slov

Mozaic Killer“. Objevuje se jiˇz v projektu Netscape jako jeho intern´ı k´odov´e pojmenov´an´ı. N´azev Mozilla se tak´e objevuje v ˇretˇezci

USER AGENT“, kter´ym se prohl´ıˇzeˇce identifikuji v protokolu http, a to nejen u Netscape ale i v Exploreru. Tato identifikace z˚ustala v prohl´ıˇzeˇc´ıch dodnes [17].

(12)

kde hlavn´ım poˇzadavkem byla multiplatformnost. D´ıky tomu pˇrestala b´yt Mozilla pouze aplikac´ı a stala se v´yvojovou platformou. Prvn´ı stabiln´ı verze nov´e Mozilly vyˇsla koncem roku 2000 pod verz´ı 0.6. Na t´eto verzi byl tak´e zaloˇzen Netscape 6.0. Tato verze vˇsak byla velmi chybov´a a u veˇrejnosti nevzbudila velkou odezvu. Po opravˇe velk´e ˇrady chyb vyˇsla v ˇcervnu, roku 2002 Mozilla verze 1.0 a na n´ı zaloˇzen Netscape 7.0. U uˇzivatel˚u mˇel ale podobnou odezvu jako pˇredeˇsl´a verze. Pouˇz´ıvala se pˇrev´aˇznˇe jen u operaˇcn´ıch syst´emu UNIXov´eho typu, na majoritn´ım OS MS Windows vl´adl neohroˇzenˇe Internet Explorer 6.0.

V ˇcervnu roku 2003 pˇriˇsel dalˇs´ı d˚uleˇzit´y zvrat: spoleˇcnost AOL zaloˇzila neziskovou organizaci Mozilla Foundation. T´e svˇeˇrila znaˇcku Mozilla a v´yvoj dalˇs´ıch verz´ı, ponechala si vˇsak znaˇcku Netscape. Do zaˇc´atku, pro rozbˇehnut´ı, jeˇstˇe vˇenovala hardware, tˇri placen´e zamˇestnance po dobu tˇr´ı mˇes´ıc˚u a 2 miliony dolar˚u na dva roky ˇcinnosti.

Nyn´ı se vrat’me trochu v ˇcase, do z´aˇr´ı roku 2002, kdy vznikl projekt Pheonix. Jak bylo dˇr´ıve naznaˇceno, Mozilla neobsahovala pouze prohl´ıˇzeˇc, ale tak´e emailov´eho klienta a dalˇs´ı aplikace, jako napˇr´ıklad editor str´anek a IRC chat, coˇz tvoˇrilo pomˇernˇe velk´y bal´ık softwaru.

Projekt Pheonix mˇel za ´ukol vytvoˇrit jednoduch´y prohl´ıˇzeˇc str´anek, bez zbyteˇcn´ych vlast- nost´ı nav´ıc. Dalˇs´ı vlastnosti se mohly pˇrid´avat pomoc´ı rozˇsiˇruj´ıc´ıch modul˚u, coˇz pˇretrv´av´a dodnes. Kaˇzd´y uˇzivatel si tak m˚uˇze vytvoˇrit prohl´ıˇzeˇc podle sv´ych poˇzadavk˚u. Postupem ˇ

casu vych´azely dalˇs´ı verze Mozilly a na jej´ım k´odu odvozen´y Netscape a Pheonix, avˇsak st´ale bez v´yraznˇejˇs´ıho z´ajmu u ˇsirok´e veˇrejnosti. V prvn´ı polovinˇe roku 2003 doˇslo k pˇrejmenov´an´ı Pheonixu na Firebird, protoˇze n´azev kolidoval s ochrannou zn´amkou zn´am´eho v´yrobce BI- OSu. Tento n´azev vˇsak nebyl zvolen nejˇst’astnˇeji, jmenovala se tak jiˇz opensource datab´aze.

Z tohoto d˚uvodu doˇslo jeˇstˇe k jednomu pˇrejmenov´an´ı, a to na Mozilla Firefox – starˇs´ı pojmenov´an´ı pro pandu ˇcervenou.

Mozilla Firefox verze 1.0 vyˇsla 9. listopadu roku 2004. Pˇred vlastn´ım vyd´an´ım se uspoˇr´adala nev´ıdan´a akce – sb´ırka na podporu propagace. T´eto akce se z´uˇcastnilo pˇres 10 000 lid´ı, kteˇr´ı podpoˇrili akci 250 tis´ıci dolary. Z tˇechto penˇez se zaplatila celostr´ankov´a re- klama v den´ıku New York Times. Reklama mˇela podobu loga Firefoxu, kter´e bylo vytvoˇreno ze jmen lid´ı, kteˇr´ı pˇrispˇeli libovolnou ˇc´astkou [18,19]. Je ˇskoda, ˇze Firefoxu nez˚ustalo jm´eno Pheonix, protoˇze jak tento b´ajn´y tvor, tak i Firefox zaˇzil znovuzrozen´ı. Je tˇeˇzk´e posoudit, co zapˇr´ıˇcinilo vysokou oblibu tohoto prohl´ıˇzeˇce u uˇzivatel˚u, jestli to byly z´aloˇzky, blokov´an´ı vyskakuj´ıc´ıch oken nebo z´asuvn´e moduly. Dalˇs´ım faktem mohl b´yt nez´ajem firmy Micro- soft o rozˇsiˇrov´an´ı nov´ych funkc´ı ve znaˇcnˇe zastaral´em Internet Exploreru (posledn´ı verze vyˇsla v roce 2001). V kaˇzd´em pˇr´ıpadˇe pod´ıl Firefoxu na trhu s prohl´ıˇzeˇci neust´ale stoup´a jiˇz nˇekolik let. V dobˇe psan´ı t´eto pr´ace byl pod´ıl na trhu kolem 30% [20] (v naˇs´ı republice dokonce 36%).

Tento ´uspˇech zapˇriˇcinil ukonˇcen´ı v´yvoje bal´ıku Mozilla. Mozilla Foundation ze zaˇcala plnˇe vˇenovat Firefoxu a Thunderbirdu (emailov´y klient zaloˇzen´y na stejn´ych principech jako Firefox). Mozilla dostala nov´y n´azev SeeMonkey, o kter´y se star´a komunita uˇzivatel˚u.

Na k´odu Firefoxu je zaloˇzen´a i osm´a verze Netscape [21].

Na sklonku roku 2007 byla vydan´a dev´at´a verze Netscape, zaloˇzen´a na Firefoxu 2.0.

Funkcion´alnˇe se vˇsak pˇr´ıliˇs neliˇs´ı, hlavn´ı rozd´ıl spoˇc´ıv´a ve vzhledu. Ani tato verze nevzbudila u uˇzivatel˚u z´ajem a v lednu n´asleduj´ıc´ıho roku firma AOL rozhodla o ´upln´em ukonˇcen´ı projektu Netscape2. Stejnojmennou ochranou zn´amku si vˇsak nad´ale ponech´av´a.

Odkaz Mozilly tak dnes spoˇc´ıv´a pouze na bedrech prohl´ıˇzeˇce Firefox.

2Na str´ank´ach archive.netscape.com lze st´ahnout vˇsechny verze Netscape, na kter´ych se pod´ılela spoleˇcnost AOL.

(13)

Kapitola 4

Mozilla se pˇ redstavuje

Tato kapitola slouˇz´ı k prvotn´ımu sezn´amen´ı s platformou. Je zde pˇredstavena architektura platformy. V´yklad pokraˇcuje podkapitolou o aplikac´ıch, kter´e jsou na n´ı postaven´e. Zb´yvaj´ıc´ı ˇ

c´ast je vˇenov´ana v´yˇctem kladn´ych a z´aporn´ych vlastnost´ı se zamyˇslen´ım nad nejlepˇs´ım vyuˇzit´ım platformy.

4.1 Architektura

U Mozilly myˇslenka platformy nevznikla na sam´em poˇc´atku, ale postupnˇe v pr˚ubˇehu ˇcasu.

Program´atoˇri se totiˇz pˇri v´yvoji prohl´ıˇzeˇce neust´ale pot´ykali s probl´emy spojen´ymi s pˇrenosi- telnost´ı pˇres r˚uzn´e hardwarov´ymi a softwarov´ymi platformami. Proto vznikla myˇslenka rozdˇelit aplikaci na nˇekolik ´urovn´ı podle z´avislosti na hostitelsk´em syst´emu.

Rozdˇelen´ı bylo provedeno do tˇr´ı ´urovn´ı, kter´e jsou zn´azornˇeny na sch´ematu4.1. Nejniˇzˇs´ı vrstva se zamˇeˇruje na vytvoˇren´ı mostu mezi vyˇsˇs´ımi ´urovnˇemi a hostitelsk´ym prostˇred´ım. Je psan´a v jazyce C kv˚uli jeho dobr´e pˇrenositelnosti. Druhou ´uroveˇn tvoˇr´ı j´adro platformy. Jeho pˇrev´aˇzn´a ˇc´ast je implementov´ana v jazyce C++ (detailnˇejˇs´ı popis jednotliv´ych technologii je obsahem n´asleduj´ıc´ı kapitoly). Posledn´ı, nejvyˇsˇs´ı stupeˇn tvoˇr´ı samotn´a aplikace a jej´ı podp˚urn´e knihovny. Zde je nejˇcastˇejˇs´ım jazykem Javascript [22].

Obr´azek 4.1: Architektura platformy [22].

O t´eto architektuˇre se d´a ˇr´ıci, ˇze je jiˇz platformou, i kdyˇz ne zcela ide´aln´ı. Vlastn´ı v´yvoj byl podˇr´ızen potˇreb´am prohl´ıˇzeˇce. Dalˇs´ı nev´yhodou je nemoˇznost spoleˇcnˇe sd´ılet instanci

(14)

platformy mezi aplikacemi.

Prvn´ı projekt, kter´y tuto situaci ˇreˇsil, byl Gecko Runtime Environment (ˇcesky bˇehov´e prostˇred´ı Gecka), zkr´acenˇe GRE. Pokouˇsel se ˇreˇsit i probl´em se sd´ılen´ım instance. Ale kv˚uli nevhodn´emu n´avrhu byla tato vlastnost prakticky funkˇcn´ı pouze na syst´emu Windows.

I zde se ale potykal s celou ˇradou probl´em˚u.

V bˇreznu roku 2005 pˇriˇsel Benjamin Smedberg s dalˇs´ı myˇslenkou ˇreˇsen´ı [23]. A dal tak podklad pro vznik XULRunneru. Z pohledu zde prezentovan´e architektury je tvoˇren spodn´ı a stˇredn´ı vrstvou. Cel´y projekt je koncipov´an pro v´yvoj r˚uznorod´ych aplikac´ı, uˇz se tedy jedn´a o plnohodnotnou platformu. Bohuˇzel je XULRunner st´ale ve v´yvoji a term´ın vyd´an´ı stabiln´ı verze se neust´ale oddaluje. I pˇres tento fakt uˇz existuje pomˇernˇe velk´y z´astup aplikac´ı, kter´y tuto platformu vyuˇz´ıvaj´ı.

Prvn´ı vlaˇstovkou ze st´aje Mozilla Foundation, kter´a bude nad XULRunnerem posta- vena, bude prohl´ıˇzeˇc Firefox 3. Spolu s n´ım by mˇela vyj´ıt i stabiln´ı verze platformy, ale v dobˇe psan´ı pr´ace uˇz bylo jist´e, ˇze se to nestihne. Firefox tak bude postaven na priv´atn´ı verzi a ofici´aln´ı vyjde aˇz o nˇeco pozdˇeji. V t´eto pr´aci se budu nad´ale pˇrev´aˇznˇe zab´yvat XULRunnerem [24,25].

4.2 Zaˇ razen´ı platformy

Prvn´ı kapitola t´eto pr´ace se zab´yvala klasifikac´ı platforem a jejich ˇclenˇen´ım. XULRunner lze zaˇradit do kategorie RCP. U nˇekter´ych zdroj˚u se lze setkat se zaˇrazen´ım i do kategorii RIA.

S ˇc´ımˇz se d´a souhlasit jen ˇc´asteˇcnˇe, protoˇze jak je v n´asleduj´ıc´ı podkapitole uk´az´ano, nad platformou lze vybudovat podstatnˇe sloˇzitˇejˇs´ı aplikace. Pˇriˇcemˇz jejich hlavn´ı funkcionalita nen´ı nutnˇe spojen´a s prostˇred´ım internetu.

4.3 Uk´ azka aplikac´ı

Neˇz pˇrejdeme k vlastnostem platformy, tak pro motivaci, proˇc si zvolit tuto platformu, je zde pˇrehled nˇekolika aplikac´ı. Bezesporu nejzn´amˇejˇs´ı jsou internetov´y prohl´ıˇzeˇc Fire- fox a poˇstovn´ı program Thunderbird. Proto by byl jejich bliˇzˇs´ı popis ne´uˇceln´y. Pˇrehled je zamˇeˇren´y na m´enˇe zn´am´e projekty, kter´e i sv´ym zamˇeˇren´ım vyboˇcuj´ı z bˇeˇzn´eho pˇredpokladu, ˇ

ze se platforma hod´ı pouze na internetov´e aplikace.

SongBird

Adresa: http://www.songbirdnest.com.

SongBird je multimedi´aln´ı pˇrehr´avaˇc podobn´y iTunes. Dok´aˇze, podobnˇe jako jeho kolega, elegantnˇe spravovat multimedi´aln´ı data v poˇc´ıtaˇci pomoc´ı knihovny. Jeho hlavn´ımi rysy jsou:

• Multiplatformnost.

• ˇSirok´a podpora form´at˚u – z´aleˇz´ı na hostitelsk´em OS, napˇr´ıklad na Linuxu nejsou podporov´any skladby chr´anˇen´e pomoc´ı DRM1.

• Pokroˇcil´e operace s knihovnou.

• Opensource.

1DRM – Digital Rights Management, lze pˇreloˇzit jako Spr´ava digit´aln´ıch pr´av, obecnˇe jsou touto zkratkou oznaˇcov´ana multimedi´aln´ı d´ıla kter´a jsou chr´anˇen´a proti zneuˇzit´ı [26].

(15)

• Zmˇena vzhledu.

• Rozˇsiˇritelnost pomoc´ı modul˚u.

• Plnohodnotn´y internetov´y prohl´ıˇzeˇc.

Obr´azek 4.2: Obrazovka z aplikace SongBird.

Miro

Adresa: http://www.getmiro.com.

Multimedi´aln´ı pˇrehr´avaˇc, kter´y je oproti SongBirdu zamˇeˇren´y na video. Vlastnosti:

• Pˇrehr´av´an´ı ˇsirok´e palety videoform´at˚u.

• Sledov´an´ı internetov´e televize – standardnˇe obsahuje tis´ıce kan´al˚u.

• Stahov´an´ı poˇradu z komunitn´ıch server˚u, jako jsou napˇr´ıklad YouTube nebo Google Video.

• Stahov´an´ı pˇres v´ymˇennou s´ıt’ Bittorrent.

• Podpora HD videa.

• Nepodporuje rozˇsiˇrov´an´ı pomoc´ı modul˚u.

• Multiplatformnost.

• Opensource.

JOOST

Adresa: http://www.joost.com.

Joost je dalˇs´ı internetov´a televize. Oproti projektu Miro se jedn´a opravdu o internetovou televizi. Nes´az´ı tak na videoklipy z komunitn´ıch server˚u, ale na vlastn´ı s´ıt’, kter´a je postavena na myˇslence p2p2. V´yhodou tohoto pˇr´ıstupu je podstatnˇe lepˇs´ı kvalita obrazu a poˇradu.

Nev´yhodou je mal´y poˇcet kan´al˚u, kter´e jsou zat´ım pouze v anglick´em jazyce.

Zakladatel´e projektu jsou Niklas Zennstr¨om a Janus Friis – autoˇri v´ymˇenn´e s´ıtˇe Kazaa a internetov´eho telefonov´an´ı Skype. Oba projekty ve sv´e dobˇe zp˚usobily revoluci a Joost m´a tento potenci´al tak´e. Jestli se tak stane, uk´aˇze aˇz ˇcas.

2peer to peer oznaˇcuje se tak architektura poˇc´ıtaˇcov´e s´ıtˇe, kde komunikuj´ı klienti mezi sebou bez centr´aln´ıho serveru [27].

(16)

Obr´azek 4.3: Obrazovka z aplikace Miro.

Obr´azek 4.4: Obrazovka z aplikace Joost.

Komodo IDE

Adresa: http://www.activestate.com.

Komodo je integrovan´e v´yvojov´e prostˇred´ı urˇcen´e pro v´yvoj aplikac´ı v dynamick´ych ja- zyc´ıch, jako je napˇr´ıklad PHP nebo Python. P˚uvodnˇe bylo vyv´ıjeno jako komerˇcn´ı pro- dukt, ale pozdˇeji byla uvolnˇena komunitn´ı verze, kter´a vˇsak neobsahuje vˇsechny n´astroje z placen´ych verz´ı. Kvalita IDE je na velmi vysok´e ´urovni a niˇc´ım nezaost´av´a za dneˇsn´ım standardem. D´ıky podpoˇre z´asuvn´ych modul˚u a otevˇren´eho API lze moˇznosti editor˚u lehce rozˇsiˇrovat. Z´akladn´ı vlastnosti editoru:

• Zv´yraznˇen´ı syntaxe.

• Automatick´e doplˇnov´an´ı k´odu.

• Kontrola syntaxe.

• Spr´ava projekt˚u.

• Podpora r˚uzn´ych jazykov´ych k´odov´an´ı.

(17)

• Podpora kl´avesov´ych zkratek – podporuje zkratky z Emacs a Vi.

• Velk´e mnoˇzstv´ı podporovan´ych jazyk˚u.

• Dalˇs´ı vlastnosti lze naj´ıt na adrese str´anek.

Obr´azek 4.5: Obrazovka z aplikace Komodo IDE.

Celtx

Adresa: http://www.celtx.com.

Celtx je opensource aplikace pro podporu psan´ı sc´en´aˇr˚u a pre-produkce filmu, divadla a dalˇs´ıch medi´ı [28]. Z´akladn´ı vlastnosti:

• Textov´y editor s kontrolou pravopisu.

• Editor postav, herc˚u.

• Editor sc´en.

• Podpora pro psan´ı sc´en´aˇre s podporou vkl´ad´an´ı multimedi´aln´ıho obsahu.

• Pl´anov´an´ı – ˇcasov´y harmonogram.

Obr´azek 4.6: Obrazovka z aplikace Celtx.

Celtixem pˇrehled aplikac´ı konˇc´ı. Dalˇs´ı v´yznamn´e aplikace lze naj´ıt v pˇrehledu na adrese:

http://developer.mozilla.org/en/docs/XULRunner_Hall_of_Fame. Za povˇsimnut´ı stoj´ı, ˇ

ze na seznamu lze naj´ıt i projekty zn´am´ych firem jako je Google, Yahoo! nebo IBM.

(18)

4.4 Vlastnosti platformy

Pˇredchoz´ı kapitola o aplikac´ıch mˇela ˇcten´aˇri poskytnout z´akladn´ı pˇredstavu, co vˇse lze s pouˇzit´ım platformy vytvoˇrit. Tato kapitola se podrobnˇeji zab´yv´a jej´ımi vlastnostmi, tj.

jej´ımi klady a z´apory tak, aby se ˇcten´aˇr mohl l´epe rozhodnout, zda je tato platforma pro jeho ´uˇcely vhodn´a. Pro jednoduˇsˇs´ı rozhodnut´ı je na konci kapitoly test. Po jeho vyplnˇen´ı, podle zam´yˇslen´eho projektu, dostane ˇcten´aˇr hodnocen´ı vhodnosti pouˇzit´ı.

4.4.1 Klady

V´yhody jsou shrnuty v n´asleduj´ıc´ıch bodech:

Pouˇzit´ı zn´am´ych technologii – jedna z nejvˇetˇs´ıch v´yhod po v´yvoj´aˇre je paralela s webo- v´ymi technologiemi. Lze tvrdit, ˇze v´yvoj´aˇri, kter´emu nejsou ciz´ı pojmi XML, HTML, CSS nebo Javascript a orientuje se v problematice Webu 2.0, nebude ˇcinit v´yvoj probl´emy. S t´ım je spojeno i pomˇernˇe jednoduch´e vytv´aˇren´ı aplikac´ı a rychl´a reakce na zmˇenu zad´an´ı.

Multiplatformnost – pro vˇetˇsinu aplikac´ı je poˇzadov´ano, aby bylo moˇzn´e jejich fungov´an´ı na v´ıce syst´emech, nebo aby toho bylo moˇzn´e v budoucnu jednoduˇse dos´ahnout. Mo- zilla tuto podm´ınku bezprobl´emovˇe splˇnuje. Projekty v n´ı napsan´e lze provozovat na vˇsech syst´emech, pro kter´e existuje bˇehov´e prostˇred´ı. Podpora tˇrech nejv´yznamnˇejˇs´ıch z´astupc˚u – MS Windows, Apple MacOS X a Linux – je samozˇrejmost´ı.

Lokalizovatelnost – programy je velmi jednoduch´e lokalizovat do libovoln´eho jazyka. Pod- porovan´e jsou i jazykov´e zvyklosti jednotliv´ych zem´ı.

Pr´ace se s´ıt´ı – podpora soket˚u, kan´al˚u, stahov´an´ı soubor˚u. Nechyb´ı ani webov´e sluˇzby, kter´e jsou z pohledu modern´ıch aplikac´ı nejd˚uleˇzitˇejˇs´ı, protoˇze umoˇzˇnuj´ı propojen´ı s mnoha nab´ızen´ymi sluˇzbami na internetu. Implementovan´e protokoly jsou SOAP a XML-RFC.

Pr´ace s XML – obsahuje funkce pro pr´aci s t´ımto form´atem: DOM, SAX nebo dotazovac´ı jazyk XPath.

Korektor pravopisu – do aplikac´ı se d´a jednoduˇse pˇridat kontrola pˇreklep˚u v textu.

Algoritmus pouˇz´ıv´a ke kontrole slovn´ıky. Pro pouˇzit´ı je pˇripraveno pˇres 50 jazyk˚u a jejich dialekt˚u.

Doplˇnky – do aplikace lze zabudovat mechanizmy pro spr´avu doplˇnk˚u. Ty dok´aˇz´ı libovolnˇe rozˇsiˇrovat moˇznosti aplikace.

Zmˇena vzhledu – pro aplikace je jednoduch´e vytvoˇrit nˇekolik vzhled˚u a nechat v´ybˇer na uˇzivateli. Ten m´a tak´e moˇznost upravit nebo vytvoˇrit vlastn´ı styl.

Otevˇrenost v´yvoje – vˇsechny zdrojov´e k´ody jsou vyv´ıjeny otevˇrenˇe, kdokoliv tak m˚uˇze opravit chyby, rozˇs´ıˇrit vlastnosti pro svoje potˇreby a podobnˇe.

4.4.2 Z´apory

Rozs´ahl´e aplikace – platforma je nevhodn´a pro velk´e aplikace. U tˇech zaˇcne vadit pouˇz´ıv´a- n´ı Javascriptu – probl´em s v´ykonem. Ten lze ˇc´asteˇcnˇe ˇreˇsit pˇreps´an´ım kl´ıˇcov´ych ˇc´ast´ı pomoc´ı jazyka C++ do komponent XPCOM.

(19)

V´yvoj´aˇrsk´e n´astroje – pro v´yvoj neexistuj´ı sofistikovan´e v´yvojov´e n´astroje. Zejm´ena chyb´ı vizu´aln´ı n´avrh´aˇr uˇzivatelsk´eho rozhran´ı.

Dokumentace – Nejvˇetˇs´ım zdrojem informac´ı je port´al organizace Mozilly. Nˇekter´e m´enˇe pouˇz´ıvan´e oblasti nejsou v˚ubec popsan´e a jedin´a moˇznost, jak se s nimi sezn´amit, je studium zdrojov´ych k´od˚u. Pomˇernˇe dobrou vstupn´ı branou jsou dvˇe kn´ıˇzky, kter´e byly o v´yvoji na platformˇe napsan´e. Jsou vˇsak pomˇernˇe starˇs´ıho data.

Absence siln´e organizace – za v´yvojem Mozilly nestoj´ıˇz´adn´a velk´a organizace. To u vˇet- ˇs´ıch projekt˚u v´yznamnˇe ovlivˇnuje v´ybˇer c´ılov´e platformy, protoˇze veden´ı potˇrebuje jistotu, ˇze v´yvoj platformy nebude nenad´ale ukonˇcen.

Otevˇrenost v´yvoje – veˇsker´e zdrojov´e k´ody napsan´e v Javascriptu m˚uˇze kdokoliv vidˇet a nelze tomu ´uspˇeˇsnˇe zabr´anit. Nen´ı moˇzn´e tak ochr´anit svoje duˇsevn´ı vlastnictv´ı.

4.4.3 Test

Pro zjednoduˇsen´ı rozhodnut´ı, zda pouˇzit Mozillu pro v´yvoj sv´e aplikace, je zde test. Je pˇrevzat´y z prezentace Davida Majli a upraven´y [22]. V testu projdˇete vˇsechny ot´azky a v pˇr´ıpadˇe kladn´e odpovˇedi si pˇripoˇctˇete body v z´avorce.

• Potˇrebujete multiplatformnost? (+1 bod)

• Potˇrebujete pracovat s HTML ˇci XML? (+1 bod)

• Potˇrebujete pracovat se s´ıt´ı? (+1 bod)

• Potˇrebujete lokalizovatelnost? (+1 bod)

• Chcete umoˇznit rozˇsiˇrov´an´ı aplikace pomoc´ı doplˇnk˚u? (+1 bod)

• Chcete rychle vytv´aˇret a oˇcek´av´ate ˇcast´e zmˇeny v zad´an´ı? (+1 bod)

• M´ate zkuˇsenosti ve v´yvoji webov´ych aplikac´ı? (+ 0.5 bodu)

• V´ysledn´a aplikace bude opensource? (+ 0.5 bod˚u)

• Aplikace je velmi rozs´ahl´a? (-1 bod)

• Potˇrebujete n´aroˇcnou grafiku? (-1 bod)

• Potˇrebujete hrub´y v´ykon? (-1 bod)

• K v´yvoji upˇrednostˇnujete sofistikovan´e v´yvojov´e n´astroje? (-1 bod)

• Potˇrebujete za v´yvojem platformy silnou organizaci? (-1 bod)

• Potˇrebujete nativn´ı vzhled (GUI)? (- 0.5 bodu)

(20)

Vyhodnocen´ı testu

V´ıce neˇz 5 bod˚u – o pouˇzit´ı platformy byste mˇeli v´aˇznˇe uvaˇzovat. Zcela jistˇe se na vaˇse poˇzadavky hod´ı.

3 – 5 bod˚u – zamyslete se, jestli nepˇrevaˇzuj´ı v´yhody platformy nad jej´ımi negativy. Ana- lyzujte kl´ıˇcov´e vlastnosti vaˇseho projektu a znovu promyslete, jestli by v´am platforma s jejich implementac´ı nepomohla.

M´enˇe neˇz 3 – platforma pro v´as nen´ı vhodn´a. Poohl´ednˇete se po jin´em ˇreˇsen´ı.

4.4.4 Pˇr´ıklady pouˇzit´ı

Z pˇredchoz´ıch informac´ı vypl´yv´a, ˇze Mozilla se nejl´epe hod´ı na menˇs´ı aˇz stˇredn´ı projekty, kter´e maj´ı n´avaznost na sluˇzby spojen´e se s´ıt´ı internet. V t´eto podkapitole bych chtˇel popsat pomoc´ı p´ar modelov´ych pˇr´ıklad˚u ide´aln´ı pouˇzit´ı platformy.

V roce 2007 nastal obrovsk´y boom ve stˇehov´an´ı aplikac´ı do prostˇred´ı webov´eho prostˇred´ı, zapˇriˇcinˇen´y technologii AJAX. Pˇr´ıkladem m˚uˇze b´yt jedna z prvn´ıch sluˇzeb – Google Gmail.

Tato aplikace se snaˇz´ı sv´ym komfortem plnˇe nahradit klasick´eho desktopov´eho emailov´eho klienta. V´yhodou tohoto ˇreˇsen´ı je dostupnost z jak´ehokoliv poˇc´ıtaˇce pˇripojen´eho k ce- losvˇetov´e s´ıti. Nev´yhodou pak, ˇze pˇres pomˇernˇe propracovan´e uˇzivatelsk´e prostˇred´ı ne- dosahuje komfort sv´ych vzor˚u. Tento koncept tak´e nevyhovuje nˇekter´ym uˇzivatel˚um, kteˇr´ı preferuj´ı

”tlust´e klienty“. Tento probl´em by ˇsel pomˇernˇe elegantnˇe vyˇreˇsit aplikaci, kter´a by tvoˇrila most mezi pojet´ım klasick´e klientsk´e a internetov´e aplikace. Tento hybrid by obsahoval klasick´e menu, stavov´y ˇr´adek a jin´e podobn´e uˇzivatelsk´e prvky, kter´e by byly na- pojen´e na jiˇz zm´ınˇenou internetovou aplikaci. Jednalo by se tedy o specializovan´y prohl´ıˇzeˇc urˇcen´y na jednu urˇcitou sluˇzbu s pˇridanou hodnotou v podobˇe vylepˇsen´eho uˇzivatelsk´eho komfortu.

Dalˇs´ı moˇznou aplikaci, je vytvoˇren´ı takzvan´eho

”off-line klienta“. Tento typ aplikace fun- guje tak, ˇze si uˇzivatel na sv´em desktopu pˇriprav´ı data, kter´a se n´aslednˇe odeˇslou do nˇejak´e specifick´e aplikace na internetu. Jako pˇrenosov´y protokol se ve vˇetˇsinˇe pˇr´ıpad˚u pouˇz´ıv´a nˇejak´a forma webov´ych sluˇzeb. Praktick´ym pˇr´ıkladem m˚uˇze b´yt klient pro fotosbˇernu.

Uˇzivatel si na dom´ac´ım poˇc´ıtaˇci pˇriprav´ı fotografie, kter´e chce d´at vytisknout. U kaˇzd´e si vybere form´at, velikost, druh pap´ıru, popˇr´ıpadˇe provede posledn´ı grafick´e ´upravy fotky.

Takto vybran´e fotografie se pak odeˇslou najednou do fotosbˇerny. V´yhoda ˇreˇsen´ı oproti in- ternetov´e aplikaci je napˇr´ıklad v technick´em omezen´ı pˇrenosu souboru, kter´e neumoˇzˇnuje hromadn´e nahr´an´ı fotografii.

Podobn´ych aplikac´ı lze vymyslet celou ˇradu, z´aleˇz´ı jen na pˇredstavivosti. Z moˇzn´ych aplikac´ı jeˇstˇe zm´ın´ım napˇr´ıklad editor pro psan´ı ˇcl´anku pro blogovac´ı syst´em nebo klienta na pos´ılan´ı SMS.

Nˇekter´e zde pˇredstavovan´e n´apady uˇz maj´ı sv´e prvn´ı vlaˇstovky v podobˇe existuj´ıc´ıch projekt˚u. V pˇr´ıpadˇe prvn´ıho n´apadu – specializovan´eho prohl´ıˇzeˇce – se jedn´a o projekt Flock [29], kter´y se specializuje na soci´aln´ı s´ıtˇe (napˇr. Facebook nebo YouTube). O druh´y n´apad se postarala firma Yahoo!, kter´a vytvoˇrila aplikaci pro nahr´av´an´ı fotek do sv´e inter- netov´e galerie Flicker.

(21)

Kapitola 5

Kl´ıˇ cov´ e technologie platformy

V t´eto ryze teoretick´e kapitole jsou postupnˇe pˇredstaven´e nejd˚uleˇzitˇejˇs´ı technologie spjat´e s platformou.

5.1 NSPR

Netscape Portable Runtime je nejniˇzˇs´ı vrstva platformy, napsan´a v jazyce C. Jej´ım hlavn´ım smyslem je vytvoˇrit API, kter´e je nez´avisl´e na hostitelsk´em syst´emu. Pouˇzit´ım knihovny lze pak aplikaci pˇreloˇzit na vˇsech OS a hardwarov´ych platform´ach, kter´e NSPR podporuje. Knihovna je vyv´ıjena nez´avisle na projektu Mozilla a lze ji zaˇclenit do libo- voln´eho projektu. Tomu nebr´an´ı ani licence – k´od je ˇs´ıˇren pod: MPL, GPL, LGPL [30].

Hlavn´ı souˇc´asti knihovny:

• definice datov´ych typ˚u – nez´avisl´e na pouˇzit´em HW a SW,

• vl´akna,

• synchronizace,

• vstupnˇe/v´ystupn´ı operace,

• z´akladn´ı s´ıt’ov´e funkce,

• funkce pro pr´aci s ˇcasem,

• spr´ava pamˇeti,

• dynamick´a spr´ava knihoven – naˇc´ıt´an´ı/uvolˇnov´an´ı.

5.2 GECKO

Srdce platformy Mozilla. Jeho hlavn´ı n´apln´ı je rendrov´ani str´anek. Kromˇe toho se star´a o dalˇs´ı funkce – napˇr´ıklad s´ıt’ov´e. J´adro je naps´ano jako komponenta XPCOM v jazyce C++. D´a se tak pouˇz´ıt jako samostatn´a ˇc´ast. Nˇekter´e projekty toho vyuˇz´ıvaj´ı – napˇr´ıklad JREX [31], coˇz je UI (SWING) komponenta pro platformu Java. Gecko um´ı rendrovat a pracovat s n´asleduj´ıc´ımi technologiemi:

• HTML 4.01, XHTML 1.1,

(22)

• CSS 1, 2.1, (ˇc´asteˇcnˇe 3) a propriet´arn´ı rozˇs´ıˇren´ı,

• MathML,

• SVG 1.1, png, jpeg, gif,

• XSLT, XPath, jednoduch´y XLinks, XPointer,

• XUL,

• Webov´e sluˇzby (XML-RPC, SOAP),

• DOM 1 a 2,

• ECMAScript/JavaScript,

• RDF,

• HTTP a SSL.

P˚uvodnˇe bylo j´adro navrhov´ano jako jednoduch´a a kompaktn´ı ˇc´ast. Postupem ˇcasu ale nar˚ustalo a stal se z nˇeho moloch, kter´y je velmi ˇcasto odbornou veˇrejnost´ı kritizov´an.

Pˇresto patˇr´ı k nejlepˇs´ım j´adr˚um s nejˇsirˇs´ı podporou standard˚u [32].

5.3 JavaScript (ECMAScript)

JavaScript (d´ale pod zkratkou JS) je objektovˇe orientovan´y, beztˇr´ıdn´ı, skriptovac´ı jazyk.

Byl vymyˇslen Brendnem Erichem ve spoleˇcnosti Netscape. Slovo Java je ve jm´enu produktu pouze z marketingov´ych d˚uvod˚u, protoˇze v dobˇe, kdy byl JS vymyˇslen, byla Java velmi popul´arn´ı a pˇredpov´ıdala se j´ı skvˇel´a budoucnost. Syntakticky je JS tvoˇren mixem nˇekolika jazyk˚u.

Jazyk byl vytvoˇren za ´uˇcelem pˇrid´an´ı dynamick´ych efekt˚u do webov´ych str´anek, pˇriˇcemˇz k interpretaci k´odu doch´az´ı aˇz u klienta. V pr˚ubˇehu let se v´yznam JS mˇenil, prvn´ı vlnu rozˇs´ıˇren´ı zaˇzil ve

”v´alce prohl´ıˇzeˇc˚u“, bohuˇzel se v n´ı jednotliv´e firmy rozeˇsly v implementaci.

Kl´ıˇcov´e vlastnosti jazyka, jako jsou napˇr´ıklad ud´alosti, definuje kaˇzd´y prohl´ıˇzeˇc jinak. Tento rozkol zat´ım st´ale pˇretrv´av´a. Kv˚uli tomu tak´e nebyl JS u program´ator˚u moc obl´ıben´y, aˇz do chv´ıle, kdy se zaˇcal pouˇz´ıvat na manipulaci s DOM a na asynchronn´ı naˇc´ıt´ani dat – z´aklady technologie AJAX a nov´eho pojet´ı internetov´ych str´anek, kter´e dostalo jm´eno Web 2.0.

Pro odstranˇen´ı r˚uznorod´e implementace JS vznikl standart pod hlaviˇckou mezin´arodn´ıho standardizaˇcn´ıho sdruˇzen´ı ECMA. Standard dostal n´azev ECMAScript a Mozilla ho splˇnuje.

V pˇr´ılozeB je seznam nejd˚uleˇzitˇejˇs´ıch nov´ych podporovan´ych vlastnost´ı.

5.4 XPCOM

The Cross Platform Component Object Module (multiplatformn´ı komponentov´y model) je aplikaˇcn´ı r´amec, kter´y dovoluje program´ator˚um rozdˇelit projekt do mal´ych kousk˚u – komponent [33].

Uˇ´cel modul˚u je doplnit chybˇej´ıc´ı funkcionalitu nebo vytvoˇren´ı funkc´ı pro zjednoduˇsen´ı pr´ace. Pˇr´ıkladem pro prvn´ı pˇr´ıpad m˚uˇze b´yt ovladaˇc mˇeˇr´ıc´ı sondy na poˇcas´ı, kter´y bude

(23)

dod´avat mˇeˇren´e ´udaje. Rozhran´ı takov´ehoto modulu pak bude m´ıt jednoduch´e metody typu zjisti teplotu, s´ılu vˇetru a podobnˇe.

Koncept XPCOM je zaloˇzen na podobn´e technologii jako je COM od firmy Microsoft.

Obdobnˇe jako COM definuje rozhran´ı komponenty v jazyce XPIDL (obdoba jazyka IDL).

Komponenty pak toto rozhran´ı implementuj´ı.

Nejˇcastˇejˇs´ı implementace rozhran´ı je v jazyce C++. Souˇc´ast´ı jazyka XPIDL jsou n´astro- je, kter´e dok´aˇz´ı z definovan´eho rozhran´ı vytvoˇrit hlaviˇckov´y soubor a kostru zdrojov´eho k´odu. Jinou moˇznost´ı je implementovat rozhran´ı v jazyce JavaScript, pomoc´ı technolo- gie XPConnect (viz d´ale). Tvorba komponent se ale neomezuje pouze na tyto jazyky, ale lze teoreticky pouˇz´ıt libovoln´y jazyk, ve kter´em bude vytvoˇrena vazba na XPCOM roz- hran´ı. V souˇcasn´e dobˇe existuj´ı napˇr´ıklad projekty JavaXPCOM [34] nebo plXPCOM [35].

Nejzaj´ımavˇejˇs´ım konektorem je vˇsak PyXPCOM [36], kter´y se m´a st´at ofici´aln´ı souˇc´ast´ı XULRunneru verze 1.9.

Volba jazyka pro tvorbu komponenty m´a dopad na v´yslednou multiplatformnost a rych- lost. Plat´ı zde pˇr´ım´a ´umˇera – u vysoko´urovˇnov´ych jazyk˚u je jednoduˇsˇs´ı dodrˇzet multiplat- formnost a naopak. Pˇri pouˇzit´ı n´ızko´urovˇnov´eho jazyka se na opl´atku dos´ahne vyˇsˇs´ı rychlost.

Pˇreps´an´ım kl´ıˇcov´ych komponent do jazyka C++ lze ˇsk´alovat v´ykon aplikace.

XPCOM, podobnˇe jako jeho vzor, definuje pˇredka vˇsech rozhran´ınsISupports (v COM se naz´yv´a IUnknown). Toto rozhran´ı tak mus´ı vˇsechna rozhran´ı implementovat. Definice rozhran´ı je n´asleduj´ıc´ı:

n s I S u p p o r t s {

n s r e f c n t A d d R e f () ;

v o i d Q u e r y I n t e r f a c e ( in n s I I D R e f aIID , out n s Q I R e s u l t a R e s u l t ) ; n s r e f c n t R e l e a s e () ;

}

Metody AddRef a Relase slouˇz´ı ke zvyˇsov´an´ı a sniˇzov´an´ı poˇc´ıtadla referenc´ı (XPCOM komponenty jsou zaloˇzeny na t´eto jednoduch´e spr´avˇe pamˇeti [37]). Metoda QueryInterface slouˇz´ı ke zjiˇstˇen´ı, zda komponenta poskytuje poˇzadovan´e rozhran´ı. Pokud ano, tak na nˇej vr´at´ı ukazatel. Komponentov´y model neposkytuje pouze podporu pro v´yvoj komponent, ale tak´e potˇrebnou funkcionalitu, jako je napˇr´ıklad:

• spr´ava komponent,

• abstrakce souboru,

• pˇrepos´ıl´an´ı zpr´av mezi objekty,

• spr´avu pamˇeti.

5.4.1 XPConnect

Cross-platform Connectznamen´a ˇcesky multiplatformn´ı propojen´ı. Tvoˇr´ı transparentn´ı most mezi n´ızko´urovˇnov´ymi XPCOM objekty a vysoko´urovˇnov´ym JS. Dovoluje pouˇz´ıt XP- COM komponentu z JS k´odu a ovlivnit JS objekt z vnitˇrku XPCOM komponenty [38,32].

Zejm´ena m´a tyto ´ukoly:

• Zpˇr´ıstupnˇen´ı hierarchie objektu Mozilly v JS.

• Oˇsetˇren´ı vol´an´ı metod implementovan´ych v r˚uzn´ych jazyc´ıch s ohledem na volac´ı konvence a typy parametru.

(24)

• Umoˇznˇen´ı tvorby nov´ych komponent v JS, vˇcetnˇe odvozen´ı z jiˇz existuj´ıc´ıch.

Nejˇcastˇejˇs´ım pouˇzit´ım je vol´an´ı XPCOM objekt˚u z JS k´odu.

5.5 RDF

Je r´amec na popis zdroj˚u (ResourceDescription Framework). Poskytuje obecn´y mechani- zmus pro z´apis metadat. Je souˇc´ast´ı standard˚u vydan´ych konsorciem W3C [39,40].

R´amec RDF poskytuje jednoduch´y model pro popis zdroj˚u, kter´y nen´ı z´avisl´y na kon- kr´etn´ı implementaci. Datov´y model RDF, zjednoduˇsenˇe ˇreˇceno, umoˇzn´ı specifikovat trojici:

zdroj, vlastnost a hodnota vlastnosti s v´yznamem:

”dan´y zdroj m´a danou hodnotu dan´e vlastnosti“ [41].

RDF poskytuje n´asleduj´ıc´ı:windows manager interface

• Moˇznost zpracov´an´ı a v´ymˇeny metadat mezi r˚uzn´ymi aplikacemi (interoperabilitu).

• Stroj˚um srozumitelnou s´emantiku metadat.

• Vˇetˇs´ı pˇresnost ve vyhled´av´an´ı zdroj˚u neˇz full-textov´e vyhled´av´an´ı.

Pro reprezentace RDF se vˇetˇsinou pouˇz´ıv´a XML ze syntaxi RDF, oznaˇcuje se pak XML/RDF. Vyuˇzit´ı XML/RDF lze nejl´epe uk´azat na jednoduch´em pˇr´ıkladˇe:

< r d f : R D F x m l n s : r d f = " h t t p : // www . w3 . org / 1 9 9 9 / 0 2 / 2 2 - rdf - syntax - ns \# "

x m l n s : v c a r d = " h t t p : // www . imc . org / v c a r d / 3 . 0 / "

x m l n s : d c = " h t t p : // p u r l . org / dc / e l e m e n t s / 1 . 1 / " >

< r d f : D e s c r i p t i o n

a b o u t = " h t t p : // www . s p o r t . cz / f o t b a l / 2 0 0 3 / 1 2 / 0 4 / s p a r t a c h e l s e a . h t m l " >

< d c : T i t l e > S p a r t a C h e l s e a 0 :1 < / d c : T i t l e >

< d c : c r e a t o r r d f : r e s o u r c e = " h t t p : // www . s p o r t . cz / a u t h o r s / P e t r M a t u l i k " / >

< d c : d a t e > 2003 -12 -04 < / d c : d a t e >

< / r d f : D e s c r i p t i o n >

< r d f : D e s c r i p t i o n a b o u t = " h t t p : // www . s p o r t . cz / a u t h o r s / P e t r M a t u l i k " >

< v c a r d : f n > P e t r M a t u l ´ı k < / v c a r d : f n >

< v c a r d : e m a i l > p e t r a m a t u l i k @ e m a i l . cz < / v c a r d : e m a i l >

< / r d f : D e s c r i p t i o n >

< / r d f : R D F >

Pˇr´ıklad popisuje ˇcl´anek publikovan´y na internetu a jeho autora. K popisu jsou pouˇzity dva jmenn´e prostory:

• vcard – slouˇz´ı pro popis osob,

• dc – standard pro popis digit´aln´ıch objekt˚u (vˇcetnˇe WWW str´anek).

Z popisu je zcela jasn´e, kde se ˇcl´anek nach´az´ı, kdo ho vytvoˇril a kdy.

5.6 XUL

Je znaˇckovac´ı jazyk pro popis uˇzivatelsk´eho rozhran´ı, zaloˇzen na jazyku XML. Zkratka poch´az´ı z anglick´eho XUL1 (XML User Interface Language) a vyslovuje se

”z˚ul“. Byl navrˇzen pro zjednoduˇsen´ı portace mezi podporovan´ymi operaˇcn´ımi syst´emy a hardwa- rov´ymi platformami. Pro program´atory je pouˇz´ıvan´ı XULu velmi pˇr´ıjemn´e, protoˇze se velmi

1Popravdˇe je jm´eno XUL odkazem na film Krotitel´e duch˚u, v kter´em se tak jmenoval duch Sumersk´eho boha. Odkaz˚u na tento film se v Mozille najde cel´a ˇrada.

(25)

podob´a tvorbˇe webov´ych str´anek. Hlavn´ı rozd´ıl spoˇc´ıv´a v rozd´ıln´ych jm´enech znaˇcek. Pro vzhled a definici chov´an´ı se shodnˇe u obou pouˇz´ıvaj´ı kask´adov´e styly a JS [42].

Pouˇzit´ım kask´adov´ych styl˚u se oddˇelil vzhled od vlastn´ıch uˇzivatelsk´ych prvk˚u. Apli- kac´ım se tak d´a velice snadno mˇenit vzhled. Dˇr´ıve mˇela Mozilla v sobˇe definovan´y standardn´ı vzhled, kter´y vypadal na vˇsech syst´emech stejnˇe, coˇz se uk´azalo jako nevhodn´e, protoˇze vˇetˇsina uˇzivatel˚u je zvykl´a na prostˇred´ı sv´eho operaˇcn´ıho syst´emu a aplikace tak vypadala jako ciz´ı. Proto byla do j´adra Gecka zapracov´ana podpora pro nativn´ı vzhled z operaˇcn´ıho syst´emu. Dnes jsou podporov´any OS Windows XP/Vista, Mac OS X a syst´emy podporuj´ıc´ı knihovnu GTK. V´ybˇer stylu je tak plnˇe na vkusu uˇzivatele, pokud shled´a, ˇze mu nevyhovuje ani jeden, tak si m˚uˇze vyrobit styl vlastn´ı.

Mnoˇzina uˇzivatelsk´ych prvk˚u, kterou XUL nab´ız´ı, niˇc´ım nezaost´av´a za bˇeˇzn´ym standar- dem, kter´y poskytuj´ı sofistikovan´e knihovny pro tvorbu rozhran´ı. Pˇrehled nejd˚uleˇzitˇejˇs´ıch2 komponent je v tabulce 5.1.

Vstupn´ı pol´ıˇcko Zaˇskrt´avac´ı pol´ıˇcko Pˇrep´ınaˇc

Rolovac´ı nab´ıdka Tlaˇc´ıtko

Ukazatel ˇcinnosti

Tabulka

Z´aloˇzky

Stromov´y v´ybˇer

Tabulka 5.1: Seznam prvk˚u

Jazyk XUL nen´ı omezen pouze na platformu Mozilla, ale existuj´ı portace do dalˇs´ıch jazyk˚u a r´amc˚u. Pˇr´ıkladem m˚uˇze b´yt napˇr´ıklad jazyk Java (projekt Luxor) [43].

5.7 XBL

XMLBindingLanguage (nˇekdy tak´e naz´yvan´y Extensible Bindings Language) je jazyk pro popis vazeb, kter´ymi mohou b´yt pˇripojeny elementy v jin´ych dokumentech. Element, kter´y je takto pˇripojen, se naz´yv´a v´azan´y element a z´ısk´av´a nov´e chov´an´ı specifikovan´e vazbou.

2Seznam vˇsech prvk˚u lze nal´ezt na adrese:http://developer.mozilla.org/en/docs/XUL_Reference.

(26)

Specifikaci XBL 1.0 vytvoˇrila Mozilla a nen´ı nijak standardizovan´a, coˇz se snaˇz´ı napravit verze druh´a. Ta uˇz je pod standardizaˇcn´ım procesem organizace W3C. V souˇcasnosti je ve stavu pracovn´ıho n´avrhu.

XBL je vlastnˇe syst´em pro tvorbu nov´ych prvk˚u GUI. Vˇetˇsina vestavˇen´ych ovl´adac´ıch prvk˚u je tak implementov´ana. XUL sice dovoluje vytvoˇren´ı nov´eho elementu, ale ten nem´a s´am o sobˇe pˇr´ıliˇsnou hodnotu, protoˇze lze pouze nastavit vzhled, ale je to st´ale boxov´y prvek bez chov´an´ı. XBL proti tomu nab´ız´ı vytvoˇren´ı komplexn´ıho ovl´adac´ıho prvku spolu s chov´an´ım. XBL nevytv´aˇr´ı nov´y element, vytv´aˇr´ı pouze vazbu. Pro nav´az´an´ı komponenty na konkr´etn´ı element se pouˇz´ıv´a propriet´arn´ı CSS vlastnost -moz-binding. Na vytvoˇren´ı nov´e komponenty lze s v´yhodou vyuˇz´ıt dˇediˇcnosti a zaloˇzit ji tak na jiˇz existuj´ıc´ı [44].

Na vytvoˇren´ı nov´e komponenty lze s v´yhodou vyuˇz´ıt dˇediˇcnosti a zaloˇzit ji tak na jiˇz existuj´ıc´ı. Pro lepˇs´ı pˇredstavu je vztah mezi jednotliv´ymi technologiemi zobrazen na diagramu5.1

Obr´azek 5.1: Diagram zn´azorˇnuj´ıc´ı vytvoˇren´ı nov´eho prvku uˇzivatelsk´eho rozhran´ı.

N´asleduj´ıc´ı pˇr´ıklad demonstruje vytvoˇren´ı jednoduch´e komponenty. Ta obsahuje panel s dvˇema tlaˇc´ıtky – ano a ne. Po kliknut´ı se zobraz´ı dialog informuj´ıc´ı o vybran´e moˇznosti.

Souˇc´ast´ı pˇr´ıkladu je pouˇzit´ı vytvoˇren´e komponenty v XUL. V´ysledek zobrazuje ilustrace5.2 Soubormain.xul – obsahuje XUL dokument, kter´y zobraz´ı komponentu.

< ? xml v e r s i o n = " 1.0 " ? >

< ? xml - s t y l e s h e e t h r e f = " c h r o m e : // g l o b a l / s k i n / " t y p e = " t e x t / css " ? >

< ? xml - s t y l e s h e e t h r e f = " s t y l e . css " t y p e = " t e x t / css " ? >

< w i n d o w id = " m a i n " t i t l e = " My App "

w i d t h = " 300 " h e i g h t = " 300 "

x m l n s =

" h t t p : // www . m o z i l l a . org / k e y m a s t e r / g a t e k e e p e r / t h e r e . is . o n l y . xul " >

< l a b e l v a l u e = " XBL E x a m p l e " / >

< box c l a s s = " k o m p o n e n t a " / >

< / w i n d o w >

Souborstyle.css – stylopis pro main.xul, obsahuje n´avazn´ı komponenty panel na box.

l a b e l {

font - w e i g h t : b o l d ; }

box . k o m p o n e n t a {

- moz - b i n d i n g : url ( ’ k o m p o n e n t a . xml # p a n e l ’ );

}

(27)

Obr´azek 5.2: Diagram zn´azorˇnuj´ıc´ı vytvoˇren´ı nov´eho prvku uˇzivatelsk´eho rozhran´ı.

Souborkomponenta.xml – obsahuje vlastn´ı komponentu.

< ? xml v e r s i o n = " 1.0 " ? >

< b i n d i n g s x m l n s = " h t t p : // www . m o z i l l a . org / xbl "

x m l n s : x u l =

" h t t p : // www . m o z i l l a . org / k e y m a s t e r / g a t e k e e p e r / t h e r e . is . o n l y . xul " >

< b i n d i n g id = " p a n e l " >

< c o n t e n t >

< x u l : b u t t o n l a b e l = " OK " o n c o m m a n d = " a l e r t ( ’ V o l b a Ok ’); " / >

< x u l : b u t t o n l a b e l = " C a n c e l " o n c o m m a n d = " a l e r t ( ’ v o l b a Cancel ’); " / >

< / c o n t e n t >

< / b i n d i n g >

< / b i n d i n g s >

Koˇrenov´y element <bindings> znaˇc´ı prostor pro vkl´ad´an´ı nov´ych komponent. Vlastn´ı komponenta se uvozuje elementem<binding>. Jm´eno se definuje atributem id. V tabulce5.2 jsou vyjmenov´any nejd˚uleˇzitˇejˇs´ı vlastnosti, kter´e lze v komponentˇe definovat.

resource Slouˇz´ı pro definov´an´ı vzhledu komponenty.

content Vlastn´ı tˇelo komponenty.

field Definuje datov´e atributy komponenty.

property Vlastnost, bezpeˇcn´y pˇr´ıstup k atribut˚um, kter´y podporuje myˇslenku zapouzdˇren´ı.

Pouˇz´ıv´a se podobnˇe jako v jazyku C#.

method Definov´an´ı metody tak jak zn´am´e s OOP jazyk˚u.

constructor Vol´a se v okamˇziku, kdy je komponenta pˇripojovan´a k elementu.

destructor Vol´a se v pˇr´ıpadˇe odpojen´ı komponenty od elementu.

handlers Slouˇz´ı k pˇripojen´ı ud´alost´ı, na kter´e bude komponenta reagovat.

Tabulka 5.2: Pˇrehled nejd˚uleˇzitˇejˇs´ıch vlastnost´ı komponent.

(28)

5.8 HTML, XHTML a XML technologie

D´ıky p˚uvodu platformy v prohl´ıˇzeˇci internetov´ych str´anek, se pro vytv´aˇren´ı uˇzivatelsk´eho rozhran´ı daj´ı pouˇz´ıt technologie z t´eto oblasti. Zejm´ena se to t´yk´a nov´ych znaˇcek z jazyka HTML 5. Pˇrestoˇze je tato verze ve f´azi n´avrhu, bylo jiˇz do j´adra Gecka implementov´ano nˇekolik vlastnost´ı.

Nejzaj´ımavˇejˇs´ı nov´y element je <canvas/>. Ten umoˇzˇnuje vytvoˇrit kresl´ıc´ı plochu a pomoc´ı JS do n´ı kreslit. Dalˇs´ımi nov´ymi elementy jsou <video/> a <audio/>. Ty pˇrin´aˇsej´ı podporu tˇechto multim´edii pˇr´ımo do j´adra prohl´ıˇzeˇce. V´yhoda oproti st´avaj´ıc´ımu stavu je vtom, ˇze se nemus´ı spol´ehat na sluˇzby tˇret´ıch stran. Stav implementace tˇechto dvou znaˇcek je v dobˇe psan´ı pr´ace v ran´em stadiu a nen´ı jist´e, kdy se budou moci plnohodnotnˇe pouˇz´ıt [45].

Na jazyku XML jsou zaloˇzeny dva form´aty SVG a MathML, kter´e Gecko podporuje.

Prvn´ı zmiˇnovan´y slouˇz´ı k popisu vektorov´e grafiky. Druh´y pak k popisu matematick´ych vzorc˚u [46].

5.9 Rozˇ s´ıˇ ren´ı (moduly)

Jednou z hlavn´ıch diviz´ı prohl´ıˇzeˇce Firefox jsou doplˇnky. Ty uˇzivatel˚um umoˇzˇnuj´ı pˇrid´avat novou funkcionalitu. Jejich moˇznosti jsou prakticky neomezen´e. Umoˇzˇnuj´ı napˇr´ıklad mˇe- nit/pˇredefinovat uˇzivatelsk´e rozhran´ı nebo mˇenit, popˇr´ıpadˇe vytv´aˇret, nov´e chov´an´ı. To je umoˇznˇeno architekturou platformy.

Bohuˇzel tato volnost pˇrin´aˇs´ı i komplikace. Jednou je negativn´ı dopad na rychlost apli- kace, pokud je modul chybnˇe napsan´y. Jeˇstˇe vaˇznˇejˇs´ı je rozbroj mezi v´ıce moduly, kter´y m˚uˇze nastat, pokud se snaˇz´ı modifikovat to sam´e. Dalˇs´ım neduhem je bezpeˇcnost, protoˇze rozˇs´ıˇren´ı m˚uˇze obsahovat ˇskodliv´y k´od.

Ide´aln´ı zp˚usob, jak zabr´ani uˇzivateli, aby si takov´yto neˇz´adouc´ı modul instaloval, nee- xistuje. ˇC´asteˇcn´e ˇreˇsen´ı spoˇc´ıv´a v osvˇetˇe a umoˇznˇen´ı instalovat pouze digit´alnˇe podepsan´e rozˇs´ıˇren´ı s platn´ym certifik´atem.

Pro v´yvoj aplikac´ı je pˇr´ıjemn´e, ˇze do nich lze jednoduˇse vloˇzit mechanizmus pro obsluhu modul˚u. A umoˇznit tak z´akazn´ık˚um tvorbu rozˇs´ıˇren´ı pro vaˇsi aplikaci.

(29)

Kapitola 6

Mozilla prakticky

Po teoretick´ych kapitol´ach pˇrich´az´ı na ˇradu ryze praktick´a, kter´a poskytuje lehk´y ´uvod do problematiky vytvoˇren´ı aplikace. Smyslem kapitoly je poskytnout ˇcten´aˇri odrazov´y m˚ustek pro vlastn´ı v´yvoj aplikac´ı. Postupnˇe se prob´ıraj´ı t´emata: jak nainstalovat bˇehov´e prostˇred´ı, vytvoˇren´ı nov´eho projektu, jeho vlastn´ı programov´an´ı a typy pro v´yvoj. Kapitolu uzav´ır´a jednoduch´y demonstraˇcn´ı pˇr´ıklad – hra ˇSibenice.

6.1 N´ astroje pro podporu programov´ an´ı

Asi jednou z nejm´enˇe pˇr´ıjemn´ych skuteˇcnost´ı pˇri v´yvoji aplikace je absence sofistikovan´eho v´yvojov´eho prostˇred´ı. Zajist´e lze pouˇz´ıt klasick´e program´atorsk´e editory typu Vim, Emacs nebo PSPad, ale vˇetˇsina v´yvoj´aˇr˚u je zvykl´a na komfort, kter´y poskytuj´ı v´yvojov´e prostˇred´ı.

Naˇstˇest´ı existuje alespoˇn nˇekolik n´astroj˚u s ˇc´asteˇcnou podporou.

6.1.1 Komodo IDE

Toto v´yvojov´e prostˇred´ı se v t´eto pr´aci jiˇz jednou vyskytlo – v pˇrehledu aplikac´ı posta- ven´ych nad platformou. Editor nepodporuje pˇr´ımo vytv´aˇren´ı XULRunner projekt˚u, ale pouze rozˇsiˇruj´ıc´ıch modul˚u pro prohl´ıˇzeˇc Firefox. Lze ho tak alespoˇn vyuˇz´ıt ke spr´avˇe zdrojov´ych k´od˚u, zv´yrazˇnov´an´ı syntaxe (XUL, JS, . . . ) a ˇc´asteˇcnˇe podporuje inteligentn´ı doplˇnov´an´ı k´odu.

6.1.2 Eclipse

Pro toto obl´ıben´e v´yvojov´e prostˇred´ı existuje z´asuvn´y modul XulBooster, kter´y pˇrid´av´a doplˇnovan´ı k´odu (XUL, XBL, SVG), pr˚uvodce pro vytvoˇren´ı rozˇs´ıˇren´ı a p´ar dalˇs´ıch maliˇckost´ı.

Bohuˇzel je zat´ım ve velmi ran´e verzi a ne vˇse funguje k pln´e spokojenosti. Pro editov´an´ı JavaScriptov´eho k´odu je vhodn´e doinstalovat z´asuvn´y modul Aptana, kter´y oproti stan- dardn´ımu editoru obsahuje inteligentnˇejˇs´ı doplˇnov´an´ı k´odu a podporuje programovou do- kumentaci podobnou JavaDoc.

Prostˇred´ı Eclipse je moment´alnˇe asi nejlepˇs´ı volbou pro v´yvoj aplikac´ı a d´a se pˇredpokl´a- dat, ˇze jeho vlastnosti se nad´ale budou zlepˇsovat.

Odkazy:

• Eclipse –http://www.eclipse.org.

• XulBooster – http://cms.xulbooster.org.

(30)

• Aptana –http://www.aptana.com.

6.1.3 XUL Explorer

Jednoduch´y editor z d´ılen Mozilla.org, kter´y slouˇz´ı k rychl´emu navrˇzen´ı uˇzivatelsk´eho roz- hran´ı. Pro z´akladn´ı design jsou dostupn´e jednoduch´e ˇsablony. Vytvoˇren´e rozhran´ı se zob- razuje v n´ahledu. Bohuˇzel editor obsahuje pouze z´akladn´ı editaˇcn´ı funkce. Neobsahuje ani zv´yrazˇnov´an´ı syntaxe. Proto ho nelze doporuˇcit pro n´avrh sloˇzitˇejˇs´ıch formul´aˇr˚u. Nejl´epe se hod´ı k nauˇcen´ı jazyka XUL nebo k rychl´emu vyzkouˇsen´ı myˇslenky.

Odkazy:

• Xul Explorer –http://developer.mozilla.org/en/docs/XUL_Explorer.

6.2 Zaloˇ zen´ı projektu

Kaˇzd´y projekt je tvoˇren speci´aln´ı strukturou adres´aˇr˚u a soubor˚u, kter´a je zn´azornˇena na obr´azku6.1. V´yznam jednotliv´ych adres´aˇr˚u je n´asleduj´ıc´ı:

• modules – pro JS knihovny (novinka XULRunneru 1.9),

• components – adres´aˇr pro komponenty XPCOM,

• defaults – v podadres´aˇri preferences jsou v souborech s pˇr´ıponou

”js“ definovan´a glob´aln´ı nastaven´ı,

• extensions – adres´aˇr pro nainstalovan´e rozˇs´ıˇren´ı,

• chrome – obsahuje veˇsker´a data adresovan´a pomoc´ı protokolu chrome (viz kapitola Chrome).

Obr´azek 6.1: Z´akladn´ı adres´aˇrov´a struktura aplikace.

Kaˇzd´a aplikace mus´ı m´ıt v koˇrenu struktury souborapplication.ini, kter´y popisuje apli- kaci. Jsou zde obsaˇzeny ´udaje jako napˇr. jm´eno, verze, jednoznaˇcn´y identifik´ator, autor a nutn´a min/max verze bˇehov´eho prostˇred´ı potˇrebn´eho ke spuˇstˇen´ı.

V glob´aln´ım nastaven´ı je nutn´e definovat um´ıstˇen´ı okna, kter´e se m´a spustit pˇri startu aplikace. D´ale je zde moˇzno zmˇenit implicitn´ı nastaven´ı platformy nebo vytvoˇrit svoje vlastn´ı.

Posledn´ım zaj´ımav´ym adres´aˇrem je chrome, ten ve sv´em koˇrenu obsahuje soubory s pˇr´ıponou

”manifest“. Vlastn´ı jm´ena soubor˚u nejsou v´yznamn´a – vˇsechny budou zpra- cov´any. Manifesty v sobˇe obsahuj´ı mapov´an´ı adres protokolu chrome na adres´aˇre (vysvˇetleno d´ale).

(31)

Uk´azka t´eto jednoduch´e struktury se nach´az´ı na doprovodn´em CD. Uk´azka obsahuje jeden okenn´ı dialog, kter´e po spuˇstˇen´ı (viz kapitola Spuˇstˇen´ı aplikace) obsahuje zn´am´y text

”Hello word!“ [42].

6.3 Chrome

Je ˇc´ast aplikace, kde se nach´az´ı obsah spojen´y s uˇzivatelsk´ym rozhran´ım. Jde napˇr. o dialogy, okna, CSS styly nebo lokalizaˇcn´ıˇretˇezce [47]. Chrome je rozdˇeleno do tˇr´ıˇc´ast´ı, pˇriˇcemˇz kaˇzd´a m´a sv´eho spr´avce (anglicky provider):

• skin– spravuje soubory urˇcuj´ıc´ı vzhled chrome – typicky CSS, obr´azky,

• content– spravuje struktury GUI komponent chrome (typicky XUL, JS, XBL),

• localization – spravuje vˇsechny textov´e ˇretˇezce, kter´e se v chrome vyskytuj´ı (napˇr.

texty menu, popisky ikon, . . . ).

6.4 Chrome registry

Je sluˇzba, kter´a slouˇz´ı k namapov´an´ı jm´ena bal´ıˇcku na fyzick´e um´ıstˇen´ı na disku. Pod pojmem bal´ıˇcek se mysl´ı kolekce z´ajmovˇe stejn´eho obsahu pod jedn´ım spr´avcem. Registry se konfiguruj´ı pomoc´ı textov´ych soubor˚u s pˇr´ıponou

”manifest“, kter´e jsou um´ıstˇeny ve sloˇzce chrome. Manifesty maj´ı textov´y form´at zaloˇzen´y na ˇr´adc´ıch. Pokud je obsah na ˇr´adku ve spr´avn´em tvaru, tak se provede pˇr´ısluˇsn´a akce, v opaˇcn´em pˇr´ıpadˇe se ignoruje.

content

c o n t e n t j m ´e n o _ b a l ´ı ˇc k u uri / k / s o u b o r ˚u m /

Cesta k soubor˚um mus´ı konˇcit znakem

”/“.

locale

l o c a l e j m ´e n o _ b a l ´ı ˇc k u j m e n o _ l o k a l i z a c e uri / k / s o u b o r ˚u m /

Za jm´eno lokalizace se dosazuje jazyk lokalizace, jako je napˇr´ıklad

”cs“ pro ˇceˇstinu nebo uven-US pro americkou angliˇctinu. Pro stejn´y bal´ıˇcek lze vytvoˇrit v´ıce pravidel, pokaˇzd´e s jin´ym jm´enem lokalizace. Dos´ahne se tak efektu, ˇze aplikace obsahuje v´ıce jazyk˚u.

skin

s k i n j m ´e n o _ b a l ´ı ˇc k u j m ´e n o _ v z h l e d u uri / k / s o u b o r ˚u m /

Jm´eno vzhledu m´a obdobn´e pouˇzit´ı jako pˇr´ıkaz locale. Aplikace d´ıky tomu m˚uˇze obsahovat v´ıce vzhled˚u.

Odkazy

Související dokumenty

Ted’, kdyˇ z uˇ z v´ıme, jak pracuje aplikaˇ cn´ı model MSRS a co vˇ sechno umoˇ zˇ nuje, si uvedeme pˇ r´ıklad robotick´ e aplikace, kter´ a bude spojena ze tˇ rech

Vzhledem k faktu, ˇ ze se v testovac´ı sadˇ e nach´ az´ı pomˇ ernˇ e m´ alo obliˇ cej˚ u, byly nˇ ekter´ e obliˇ ceje pˇ resunuty z tr´ enovac´ı do testovac´ı sady za

Protoˇ ze souˇ casn´ e urˇ cov´ an´ı zoubkov´ an´ı poˇ stovn´ıch zn´ amek pomoc´ı zoubkomˇ eru je docela pomal´ e, rozhodl jsem se pokusit se vytvoˇ rit program, kter´ y

Prvn´ı probl´ em se nemus´ı projevit, kdyˇ z jezd´ıme se sv´ ym autem kaˇ zd´ y den, kdy vyb´ıjen´ı baterie st´ al´ ym pˇ r´ıkonem elektronick´ eho syst´ emu stihneme

V r´ amci t´ eto pr´ ace jsme detailnˇ e prostudovali smˇ erovac´ı protokoly RIP a OSPF, nale- zli n´ avrhov´ e vzory firmy Cisco, kter´ e pracuj´ı s tˇ emito protokoly,

Pokud jeˇ stˇ e ne- byl uˇ zivatel identifikov´ an (zjiˇ stˇ eno vlastnictv´ım WAS cookie uˇ zivatelem), je poˇ zadavek pˇ resmˇ erov´ an WebAuth centru pro distribuci

Protoˇze jiˇz jsem testoval hru, kter´a obsahovala ochranu SafeDisk ve verzi 2.90 a tato ochrana nebyla pˇr´ıliˇs pro- blematick´a, budu pˇredpokl´adat, ˇze by s touto

N´ asleduj´ıc´ı ˇ c´ ast se proto bude vˇ enovat pouze konfiguraci smˇ erovac´ıho protokolu RIP a nˇ ekolika moˇ znostem, kter´ e jsou pouˇ ziteln´ e vˇ semi