Závěr

by 2 contributors:

Embedding Gecka je už několik let docela rozšířený – existuje spousta projektů pod MS-Windows, Linuxem, MacOS i Javou – viz Mozilla external projects.

Klady

  • oddělení struktury GUI (content), vzhledu GUI (skin) a použitých textů (locale) – to má za důsledek vysokou skinovatelnost (použití souborů skinů, tzv. theme) a jednoduché spravování textů v různých jazycích
  • celé GUI je zapsáno v XML, CSS a DTD skriptech, lze ho tedy snadno a rychle upravovat – stačí plain-text editor, nemusíme mít žádný vývojový program, nic kompilovat
  • struktura GUI se popisuje XML-like jazykem (XUL), který je přehledný a logicky strukturovaný, takže pro práci s ním stačí znát principy XML a mít po ruce referenčí příručku XUL elementů
  • aplikace může být integrována do webového prohlížeče, nebo naopak můžeme importovat jeho části (typicky bookmarky, seznam aplikací), přitom webový prohlížeč (Mozilla, Firebird, ...), stejně jako různé pluginy, je ke stažení a používání zdarma
  • použitím skinů pro mozillu (resp. theme) dosáhneme jednotné vizáže s ostatními mozillími aplikacemi
  • platformní nezávislost – jediné, co může být závislé na platformě, je implementace XPCOM komponent, ale i tam se tomu (možná ne vždy úplně) můžeme vyhnout používáním pouze XPCOM objektů a platformově nazávislých knihoven
  • možnost downloadu a instalace aplikace přes web – aplikace by pak také mohla měnit svůj vzhled podle serveru, ke kterému je připojena (pouze by byl nutný "refresh" GUI a registrace nových komponent (a přihlášení k <tt>nsIObserveru</tt> atd.) bez restartu aplikace resp. Mozilly)

Zápory

  • ačkoliv samotné XUL je poměrně jednoduché, v praxi jeho znalost nestačí. Je nutné mít obecný přehled o tom, co je to chrome, umět používat chrome url, znát strukturu RDF a případně znát XBL. Na druhou stranu tyto požadavky přinášejí spoustu výhod – standardizovanou správu GUI a adresaci GUI elementů, širokou škálu funkčností GUI.
  • Mozilla je stále ve vývoji (potíže se zpětnou kompatibilitou však mají všichni), a proto nejsou některá rozhraní ještě prohlášena za uzavřená (FROZEN). Možnost XPCOM nefunkčnosti komponenty v dalších verzích (resp. Mozilly) lze minimalizovat důsledným používáním maker.
  • stále se vyskytují bugy a různé nedokonalosti (I když, který software je bezchybný?) – v mé verzi Mozilly (1.4 - win32) se občas nepřegenerovaly soubory spravující seznam XPCOM komponent (<tt>xpti.dat</tt>) a GUI komponent (<tt>chrome.rdf</tt> a adresář <tt>overlayinfo</tt>).

To byly výhody a nevýhody Gecko embedded aplikací obecně, spíše ve srovnání s aplikacemi, které mají GUI napsané v nějakém vývojovém prostředí a přeložené do binárky.

Následuje zhodnocení Mozilla GUI vs. HTML GUI:

  • XUL je jazyk navržený pro návrh GUI, zatímco HTML jen pro formátování dokumentů. HTML elementy typu formuláře a tlačítka byly dodělány až s rozvojem internetu a používáním HTML, ale stále zůstává struktura dokumentu.
    např. pokud chceme rozložit různé HTML elementy po stránce, jedinou možností je tabulka (tj. prvek dokumentu). XUL nabízí přirozenější elementy jako <tt>hbox</tt>, <tt>vbox</tt>, skupinu atd.
  • Naučit se používat XUL je zhruba stejně obtížné jako naučit se HTML. Obdobně je to s CSS. JavaScript se v XUL používá jako observer událostí, ne k tvorbě GUI.
  • V XUL lze používat HTML (stačí deklarovat HTML namespace jako atribut XUL elementu nadřazeného skupině HTML elementů – např. takto: <tt>xmlns:html = "http://www.w3.org/1999/xhtml"</tt> a HTML elementy se pak tagují <tt><html:tag></tt>)
  • nevýhodou je, že musíme distribuovat s aplikací i Gecko a naše aplikace funguje jen na Gecko-based prohlížečích. Uživatelé s jiným prohlížečem mají smůlu (ale zase si můžou Gecko resp. Mozillu zadarmo stáhnout).
    Na druhou stranu, díky tomu naše aplikace vypadá všude stejně, což se o GUI v HTML říct rozhodně nedá.

Download

emb.xpi – download balíčku (použijte kontextové menu nad odkazem – "Save Link As ...")
emb-src.zip – balíček se zdrojovými kódy komponenty (<tt>.idl</tt>, <tt>.h</tt>, <tt>.cpp</tt>)

Informace o původním dokumentu

  • Autor: Jan Ditrich

Document Tags and Contributors

Contributors to this page: Pawell, Majda
Last updated by: Pawell,