Title: Mozilla z pohledu v
1Mozilla z pohledu vývojáre
- David Majda, CZilla
- majda_at_czilla.cz
- 2. 5. 2006 prezentace na predmet Linux (SWI043)
na MFF UK
2Co se dovíte, aneb osnova
- ? historie Mozilly
- ? architektura Mozilly
- ? tvorba GUI, jazyk XUL
- jak si napsat rozšírení
- XULRunner, aneb svetlé zítrky
- nekolik malých lákadel vývoje po Mozillou
- (tvorba pluginu)
minule
dnes
3Architektura aplikací Mozilly (2/2)
4XUL (cti zul)
- XML User Interface Language
- GUI zapsáno deklarativne v XML
- jen jednou pro všechny platformy
- vzhled v CSS
- oživeno JavaScriptem
- jako webové stránky
- ? kdo umí tvorit webové stránky, umí i psát
aplikace pod Mozillou
5Rozširitelnost
- architektura snadno rozširitelná
- nové XUL, CSS a JS soubory (bez rekompilace)
- nové XPCOM komponenty (typicky nutná kompilace)
- pro pohodlí sbalené do XPI balícku, doplnené
metadaty ? rozšírení
Zde jsme minule skoncili
6Struktura rozšírení
- install.rdf
- chrome.manifest
- plugins/
- ...
- components/
- ...
- chrome/
- content/
- skin/
- locale/
7Instalace rozšírení
- globální pro konkrétního uživatele
- mnoho metod
- zkopírování XPI do adresáre extensions
- pointer na XPI z tohoto adresáre
- záznam v registrech (Windows)
- otevrení v prohlížeci
-
- správce rozšírení
- instalace/odinstalace
- konfigurace, zakazování,
8XULRunner
- runtime prostredí pro beh XUL aplikací
- pouze infrastruktura nutná pro beh XUL a XPCOM
komponenty zajištující funkcionalitu dodává
aplikace - lze sdílet mezi aplikacemi (ale není nutné)
XULRunner
9Další lákadla vývoje pod Mozillou
- tag ltcanvasgt
- vylepšení JavaScriptu
- funkcionální programování
- E4X
- iterátory a generátory (budoucnost)
- integrace Pythonu (budoucnost)
10Tag ltcanvasgt
- vyznacuje ve stránce oblast pro kreslení
- samotné kreslení JavaScript
- bohaté 2D API podobné bežným grafickým toolkitum
- umí i pruhlednost, gradienty, vzorky, cesty,
bézierovy krivky, transformace - vymyslel Apple, nyní pod krídly WHATWG
- ?
ukázka
11JavaScript 1.6 a dál (1/3)
- Funkcionální programování
squares 1, 2, 3.map(Math.sqrt) // 1, 4,
9 filtered 12, 5, 8, 130, 44.filter(
function(element, index, array) return
element gt 10 ) // 12, 130, 44 function
printElement(element, index, array)
alert("" index " is " element) 2, 5,
9.forEach(printElement) // 0 is 2 // 1
is 5 // 2 is 9
12JavaScript 1.6 a dál (2/3)
- E4X zaclenení syntaxe pro práci v XML/DOM prímo
do JavaScriptu
function createTable() // vytvoríme E4X
objekt pro dokument var doc new
XML(document) var mytablebody
doc..body.TABLE.TBODY for (var j 0 j lt 2
j) // pridáme prázdný rádek tabulky
mytablebody.TRj "" // pridáme bunky s
obsahem for (var i 0 i lt 2 i)
mytablebody.TRj.TDi "cell is row " j
", column " i // nastavíme tabulce
hodnotu atributu border doc..body.TABLE._at_bor
der 2
13JavaScript 1.6 a dál (3/3)
- Generátory, iterátory à la Python
- JavaScript 1.7
jsgt function count(n) for (var i 0 i lt
n i) yield i jsgt g
count(10) object Generator jsgt g.next() 0 jsgt
g.next() 1 jsgt two_to_nine i for i in
g 2,3,4,5,6,7,8,9 jsgt squares_to_20 i i for
i in count(20) 0,1,4,9,16,25,36,49,64,81,100,121,
144,169,196,225,256,289,324,361
14Integrace Pythonu
- duvod prilákání vývojáru v Pythonu, využití
knihoven - pujde použít všude, kde dnes JavaScript
- XUL, XPCOM,
- v Gecko 1.9/Firefox 3.0
15Kdy vyvíjet pod Mozillou?
?
- Když potrebujete
- multiplatformnost
- práci s HTML/XML/CSS
- sítové služby, web services
- lokalizovatelnost
- rychlý vývoj, casté zmeny
- velké aplikace (XPCOM, modularizace)
16Kdy naopak Mozillu nepoužívat?
?
- Když chcete
- nárocnou grafiku (work in progress)
- hrubý výkon (cástecne lze v C a XPCOM)
- využívat všechny možnosti nativního GUI
- prístup z kteréhokoliv pocítace na svete (lepší
je webová aplikace)
17Kam pro další informace
- http//developer.mozilla.org/
- centrum pro vývojáre Mozilly
- velké množství dokumentace
- wiki rychlý vývoj, mužete se zapojit
- http//www.czilla.cz/vyvojari/
- rozcestník v ceštine
- dokumentace podstatne méne
- také se mužete zapojit -)
18Dotazy?