+ All Categories
Home > Documents > Mozilla z pohledu vývojáře

Mozilla z pohledu vývojáře

Date post: 12-Jan-2016
Category:
Upload: gordy
View: 35 times
Download: 1 times
Share this document with a friend
Description:
Mozilla z pohledu vývojáře. David Majda , CZilla [email protected] 25. 4. 2006 — prezentace na předmět Linux (SWI043) na MFF UK. Co se dovíte, aneb osnova. historie Mozilly architektura Mozilly tvorba GUI, jazyk XUL jak si napsat rozšíření XULRunner, aneb světlé zítřky - PowerPoint PPT Presentation
18
Mozilla z pohledu vývojáře David Majda, CZilla [email protected] 25. 4. 2006 — prezentace na předmět Linux (SWI043) na MFF UK
Transcript
Page 1: Mozilla z pohledu vývojáře

Mozilla z pohledu vývojáře

David Majda, [email protected]

25. 4. 2006 — prezentace na předmět Linux (SWI043) na MFF UK

Page 2: Mozilla z pohledu vývojáře

Co se dovíte, aneb osnova

• historie Mozilly• architektura Mozilly• tvorba GUI, jazyk XUL• jak si napsat rozšíření• XULRunner, aneb světlé zítřky• několik malých „lákadel“

vývoje po Mozillou• (tvorba pluginů)

dnes

příště

Page 3: Mozilla z pohledu vývojáře

Historie (1/2)

• kdysi v pravěku – Netscape Navigator 1.0–4.x http://www.jwz.org/gruntle/nscpdorm.html

• nástup IE problémy uvolnění Netscape jako open source (Mozilla.org)

• použitá licence MPL – lze začlenit i do komerčních aplikací

• přepsání téměř celého kódu– renderovací jádro Gecko– aplikační platforma– prohlížeč Mozilla Suite

• 5.6.2002: Mozilla Suite 1.0

Page 4: Mozilla z pohledu vývojáře

Historie (2/2)

• 2003: vznik Mozilla Foundation• rozhodnutí rozčlenit monolitickou

aplikaci na části – Firefox, Thunderbird

• podzim 2004: FF/TB 1.0• 2005: vznik Mozilla Corporation• dnes:

– aplikace ve verzi 1.5.0.2, pracuje se na 2.0 a 3.0

– Firefox v ČR a Evropě podíl ~20 %, v USA ~10 %

Page 5: Mozilla z pohledu vývojáře

Architektura aplikací Mozilly (1/2)

• Cíle– multiplatformnost (backend, GUI)– výkon– rychlý a snadný vývoj GUI

• Řešení = rozvrstvení– nejnižší vrstva zajišťující cross-

platformnost– komponenty v C/C++ (hlavní

funkcionalita)– GUI deklarativně v XML

Page 6: Mozilla z pohledu vývojáře

Architektura aplikací Mozilly (2/2)

NSPR JavaScript engine

XPCOMXPConnect

zpracování HTML, CSS,XML, XUL, XBL, RDF

C

C++

XMLJS aplikace – GUI aplikace – komponenty

pomocné knihovny

(images, DB,…)

C++

Page 7: Mozilla z pohledu vývojáře

NSPR – představení

• Netscape Portable Runtime• low-level knihovna napsaná v C• abstrakce nad jednotlivými OS

(běží ve Win32, Mac OS, 20+ Unixů)

• převzata ze starého Netscape Navigatoru

• zkompilovatelná samostatně, lze použít mimo Mozillu

Page 8: Mozilla z pohledu vývojáře

NSPR – co umí?

• portabilní datové typy a makra (např. 64bitovost)

• vlákna, synchronizace• I/O nad soubory• základní síťové funkce• datum a čas• správa paměti• načítání dynamicky

linkovaných knihoven (DLL/.so)

Page 9: Mozilla z pohledu vývojáře

JavaScript Engine

• interpreter JavaScriptu 1.6 (nadmnožina standardu ECMA 262 Edition 3 - ECMAScript)

• autor jazyka i interpreteru = Brendan Eich

• napsaný v C, vysoce optimalizovaný

• nezávislý na ostatním kódu, lze zkompilovat samostatně

• stále se vyvíjí – viz příště

Page 10: Mozilla z pohledu vývojáře

XPCOM – představení

• Cross Platform Component Object Model

• obdoba Microsoft COM/DCOM nebo CORBA, ale in-process

• tvorba komponent, modularizace• popis rozhraní komponenty v XPIDL

(dialekt IDL)• implementace typicky v C++

(generované hlavičky a šablony kódu), možno i v JavaScriptu (XPConnect)

Page 11: Mozilla z pohledu vývojáře

XPCOM – vznik komponenty

MyComponent.idl

xpidl

MyComponent.h(+ impl. stub)

MyComponent.xpt

MyComponent.cpp

MyComponent.soMyComponent.dll

cc

součást výsledné aplikace

Page 12: Mozilla z pohledu vývojáře

XPConnect

• umožňuje nezávislost XPCOM na jazyku

• typicky: objekt implementován v C++, volán z JavaScriptu (takto vystavěn celý DOM)

• ošetřuje volací konvence, typy parametrů,…

• řeší object lifecycle (XPCOM – reference counting, JS – garbage collector)

Page 13: Mozilla z pohledu vývojáře

Gecko

• nejvyspělejší renderovací engine na světě: – HTML 4.01, XHTML 1.0/1.1, XML 1.0,

MathML, SVG 1.0 (1.1), XUL– CSS 1 (2, 3)– DOM 1, 2 (3)– JavaScript 1.6– PNG, GIF a JPEG– Unicode, podpora L10N/I18N– RDF– Necko (HTTP 1.1, FTP, POP3, IMAP,…)– a další…

Page 14: Mozilla z pohledu vývojáře

Další renderovací enginy

• Presto (Opera)– šlape Gecku na paty, velmi rychlý

• KHTML (Konqueror)– podpora menšího množství vlastností

• WebCore (Safari)– fork KHTML, vyvíjeno Applem

• Tasman (IE Mac)– dříve velmi dobrý, dnes zastaralý

• Trident (IE Windows)– starý, „nic“ neumí a ještě s chybami

• http://en.wikipedia.org/wiki/Comparison_of_layout_engines

Page 15: Mozilla z pohledu vývojáře

XUL (čti zůl)

• XML User Interface Language• GUI zapsáno deklarativně v XML

– jen jednou pro všechny platformy• vzhled v CSS• „oživeno“ JavaScriptem• jako webové stránky

kdo umí tvořit webové stránky, umí i psát aplikace pod Mozillou

Page 16: Mozilla z pohledu vývojáře

Příklad XUL

• demo.xul

• demo.js

<?xml version="1.0"?><?xml-stylesheet href="chrome://global/skin/" type="text/css"?><window id="demo-window" title="XUL Demo" xmlns="http://www.mozilla.org/keymaster/ gatekeeper/there.is.only.xul"> <script type="application/x-javascript" src="demo.js" /> <vbox> <textbox id="text" value="zadejte text" /> <button label="Vymazat" oncommand="deleteText();" /> </vbox></window>

function deleteText() { document.getElementById("text").value = "";}

Page 17: Mozilla z pohledu vývojáře

Rozšiřitelnost

• architektura snadno rozšiřitelná– nové XUL, CSS a JS soubory (bez

rekompilace)– nové XPCOM komponenty

(typicky nutná kompilace)– pro pohodlí sbalené do XPI

balíčku, doplněné metadaty rozšířeníZde začneme příště

Page 18: Mozilla z pohledu vývojáře

Dotazy?


Recommended