1 / 18

Mozilla z pohledu vývojáře

Mozilla z pohledu vývojáře. David Majda , CZilla majda@czilla.cz 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

gordy
Download Presentation

Mozilla z pohledu vývojáře

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Mozilla z pohledu vývojáře David Majda, CZilla majda@czilla.cz 25. 4. 2006 — prezentace na předmět Linux (SWI043) na MFF UK

  2. 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ě

  3. 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

  4. 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 %

  5. 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

  6. C++ XML JS aplikace – GUI aplikace – komponenty zpracování HTML, CSS, XML, XUL, XBL, RDF pomocné knihovny (images, DB,…) C++ XPCOM XPConnect NSPR JavaScript engine C Architektura aplikací Mozilly (2/2)

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

  8. 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)

  9. 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ě

  10. 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)

  11. XPCOM – vznik komponenty MyComponent.idl xpidl MyComponent.h (+ impl. stub) MyComponent.xpt cc MyComponent.so MyComponent.dll součást výsledné aplikace MyComponent.cpp

  12. 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)

  13. 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ší…

  14. 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 

  15. 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

  16. 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 = ""; }

  17. 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ě

  18. Dotazy?

More Related