přejít na obsah přejít na navigaci

Linux E X P R E S, Rozhraní pro tvorbu doplňků v moderních prohlížečích

Rozhraní pro tvorbu doplňků v moderních prohlížečích

puzzle.png

Okolo doplňků pro webové prohlížeče to v poslední době vře. Ruší se podpora pro starší technologie, současně ale vznikají nové. Martin Straka ukázal na konferenci IT 15.2, jaké jsou dnes možnosti vývoje doplňků.


Doplňky ve webových prohlížečích

V poslední době jsme svědky událostí okolo doplňků ve webových prohlížečích. Postupně přestává být možné používat doplňky pracující se starými rozhraními, naopak přibývají rozhraní nová. Jak se orientovat v aktuální situaci, na konferenci Internet a Technologie 15.2 ukázal Martin Straka.

Martin Straka hovoří o vývoji doplňků pro webové prohlížeče Martin Straka hovoří o vývoji doplňků pro webové prohlížeče

Zásuvný modul je v podstatě binární modul nebo nativní kód s definovaným rozhraním, se kterým může komunikovat prohlížeč, popřípadě JavaScript. Typicky je to rozhraní označované jako NPAPI nebo ActiveX. V podstatě si to můžeme představit jako dynamicky linkovanou knihovnu napsanou v jazyce C++,“ říká Martin Straka.

„Rozšíření, na rozdíl od zásuvných modulů, je aplikace s uživatelským rozhraním. Typicky jsou to panely nástrojů, tlačítka, menu atd. Implementují se s využitím JavaScriptu, HTML jazyka, kaskádních stylů, XML, případně je lze napojit na zásuvné moduly.“ Obecnějším pojmem je pak doplněk: „Pod doplňkem chápeme cokoli, co může být do prohlížeče nainstalováno – rozšíření, zásuvný modul, motivy, slovníky, jazykové sady atd.“

NPAPI a ActiveX

Historie NPAPI sahá až do roku 1995, poprvé se objevilo v prohlížeči Netscape Navigator 2.0. Prohlížeč volá viditelné funkce zásuvného modulu, lze komunikovat mezi modulem a JavaScriptem, je podporována inicializace a ukončení modulu. „V tabulce můžete vidět všechny typy prohlížečů, které toto rozhraní podporovaly nebo podporují.“

Podpora NPAPI v různých prohlížečích (prezentace Martina Straky) Podpora NPAPI v různých prohlížečích (prezentace Martina Straky)

Dalším rozhraním je ActiveX od firmy Microsoft. Je pouze v Internet Exploreru, a to od verze 3.0. Spouští se bez vědomí uživatele, má přístup k souborům i k registru Windows. Technologie je považována za zastaralou a nebezpečnou, nový prohlížeč Microsoft Edge ji už neobsahuje.

FireBreath: modul snadno a rychle

FireBreath je silný nástroj umožňující tvorbu zásuvných modulů v C++ napříč prohlížeči i platformami. „Disponuje různými skripty, například pro vygenerování základní kostru modulu nebo vygenerování NPAPI rozhraní. FireBreath můžeme použít jako jako NPAPI wrapper pro existující knihovny.“

Framework FireBreath je nyní přepracováván v souvislosti s končící podporou NPAPI v prohlížečích. „Do budoucna bude podpora pro alternativní techniky, které se označují jako Native Messaging, js-ctypes nebo Native Client.“

Techniky pro vývoj doplňků k prohlížeči Mozilla Firefox

Prohlížeč Mozilla Firefox je založen na jádře Gecko. Podporuje v doplňcích používání JavaScriptu, HTML, CSS a XUL, případně XPCOMJSM. Zásuvné moduly se napojují přes zastaralé NPAPI, nověji pak přes js-ctypes.

Uvedené platí pro všechen software, kde se používá Gecko – tedy i Iceweasel, SeaMonkey, Thunderbird a další programy.

Pro vývoj lze používat čtyři různé techniky. Nejstarší z nich je založena na XUL (overlay) a brzy bude ve Firefoxu minulostí. Pracuje se deklarativně, lze přistupovat k čemukoli, je k dispozici podpora pro zásuvné moduly; po instalaci a odebrání je třeba restart prohlížeče. „Je to relativně silný nástroj. Vždy obsahuje minimálně jednu globální stránku XUL a JavaScript, který se zavádí při inicializaci doplňku.“ Tuto metodu nelze použít ve Firefoxu pro Android.

Vylepšenou technikou jsou Restartless extensions, které lze – jak název napovídá – instalovat a odebírat bez restartu. „Využívá XUL soubory, nicméně ty už jsou generovány programově v době inicializace doplňku. Musí tam existovat zaváděcí javascriptový soubor, který umí jednak zavést doplněk do prohlížeče a zároveň musí umět inicializovat grafické rozhraní.“

Add-on SDK je modulární řešení a nabízí vysokoúrovňová API v JavaScriptu. API jsou k dispozici pro uživatelské rozhraní, interakci s prohlížečem, modifikaci obsahu a komunikaci s okolím. Poskytuje nástroje pro testování a balíčkování doplňků, mezi verzemi Firefoxu je snadná přenositelnost.

Mozilla Add-on SDK (prezentace Martina Straky) Mozilla Add-on SDK (prezentace Martina Straky)

Nejnovější řešení WebExtensions je sice podporováno jen v nejnovějších verzích prohlížečů – zato ale nabízí kompatibilitu s jádrem Blink (Chrome/Chromium, Opera…), takže lze snadno tvořit doplňky pro více prohlížečů. „Důležité je říct, že tady javascripty běží mimo hlavní proces okna, takže ho nijak neblokují, neovlivňují,“ upozorňuje na jednu z výhod Martin Straka.

Nové techniky pro zásuvné moduly

Co místo zastaralého NPAPI? Moderní prohlížeče přinesly hned několik různých technik pro tvorbu zásuvných modulů. Ve Firefoxu je to javascriptové rozhraní js-ctypes. Využívá datové typy z jazyka C a umožňuje z JavaScriptu volat funkce sdílených knihoven.

„Co se týče vývoje doplňků pro Chrome, zde se používají opět techniky spojené s JavaScriptem, HTML a kaskádními styly. Chrome už nepodporuje NPAPI rozhraní pro komunikaci s binárními programy, zde se používají jiné techniky.“ Jsou to Native Client (NaCl) a PPAPI.

Programy využívající NaCl běží v sandboxu, nejsou závislé na operačním systému, nemají k němu ani přímý přístup. Tento přístup pak zajišťuje rozhraní Pepper. PPAPI, které je součástí NaCl, vychází z NPAPI, ale je přenositelné a bezpečnější (běží v samostatném procesu). Google poskytuje SDK a překladače pro architektury x86 (32 i 64 bitů) a ARM.

Další metodou je Native Messaging. Doplňky komunikují s nativní aplikací pomocí asynchronních zpráv. Aplikace běží v samostatném procesu a registruje se v prohlížeči pomocí JSON manifest souboru.

V Internet Exploreru mají doplňky podobu tlačítka, panelu nástrojů apod. Pro vývoj lze použít jazyk C++, C# a Visual Basic, k dispozici jsou knihovny ATL a MFC. Doplněk je nutné registrovat do Windows pomocí CLSID. Pro snadnou tvorbu lze využít framework Add-in Express.

Pro prohlížeč Safari je potřeba Extension Builder a certifikát vývojáře (k podpisu doplňku). Vyvíjí se pomocí webových technologií (HTML, JS, CSS), doplněk má zaváděcí stránku a tzv. plist (nastavení a uspořádání prvků v jazyce XML). Pro binární moduly lze stále využívat NPAPI.

DNSSEC/TLSA Validator

DNSSEC/TLSA Validator je doplněk do různých webových prohlížečů vyvíjený v Laboratořích CZ.NIC. Poskytuje informace o zabezpečení DNS technologií DNSSEC a o validaci certifikátů technologií DANE. Používá zásuvné moduly napsané v jazyce C (nad Unboundem a OpenSSL).

Pro fungování validátoru je potřeba provádět různé operace – a ne vždy (v určité kombinaci prohlížeče a rozhraní) jsou všechny k dispozici. Mezi takové operace patří například UDP komunikace, zjištění IP adresy prohlížeče nebo blokování spojení HTTPS.

Podpora různých operací v kombinacích prohlížečů a rozhraní (prezentace Martina Straky) Podpora různých operací v kombinacích prohlížečů a rozhraní (prezentace Martina Straky)

Červeně označené řádky odpovídají aktuální implementaci. „Je ale nutno říct, že komunikace probíhá asynchronně, to znamená, že nejsme schopni blokovat HTTP spojení; i když se to dá přepnout do synchronního módu – je čistě na uživateli, jestli si to přepne,“ upřesňuje Martin Straka situaci okolo podpory jedné z operací.

Nahoru

Příspěvky

Rozhraní pro tvorbu doplňků v moderních prohlížečích
ludvik 1. 12. 2015, 00:17:17
Odpovědět  Odkaz 
Nemáš zprávy, jestli se pracuje na Javě? Existuje ještě dost zařízení, co to mají jako administraci, nebo jako její doplněk. Hrozím se doby, až to zas budu někdy potřebovat.
Lukáš Jelínek Re: Rozhraní pro tvorbu doplňků v moderních prohlížečích
Lukáš Jelínek 1. 12. 2015, 01:23:27
Odpovědět  Odkaz 
Moc optimisticky to bohužel nevidím. Našel jsem k tomu jen tohle (vybírám to důležité):

Websites and publishers which currently use plugins such as Silverlight or Java should accelerate their transition to Web technologies. The Web platform is powerful and can usually do everything that a plugin can do. In the rare cases where a site needs to extend Web technologies, the recommended solution is to develop the additional features as a Firefox add-on. Site maintainers should prepare for plugins to stop working in all versions of Firefox by the end of 2016.

Tedy jinými slovy, vyřešte si to, my na vás kašleme. A konkrétně k Javě:

Mozilla continues to work with the Oracle Java Platform Group to ensure a smooth transition for those web sites that use Java. More information from Oracle about Java transition plans can be found in a post from the Oracle team. Oracle recommends that sites currently using Java applets consider switching to plugin-free solutions such as Java Web Start.

Takže s applety na něčem jako je ILO to asi bude smůla. Jedinou možností asi bude si pro tyhle účely ponechat někde stranou portable verzi staršího Firefoxu.

Odpovědět

Nejsou podporovány žádné značky, komentáře jsou jen čistě textové. Více o diskuzích a pravidlech najdete v nápovědě.
Diskuzi můžete sledovat pomocí RSS kanálu rss



 
 

Top články z OpenOffice.cz

Lukáš Jelínek

Lukáš Jelínek

Dlouholetý člen autorského týmu LinuxEXPRESu a OpenOffice.cz. Vystudoval FEL ČVUT v oboru Výpočetní technika. Žije v Kutné Hoře, podniká v oblasti IT a zároveň pracuje v týmu projektu Turris. Ve volném čase rád fotografuje, natáčí a stříhá video, občas se věnuje powerkitingu a na prahu čtyřicítky začal hrát tenis.


  • Distribuce: Debian, Kubuntu, Linux Mint
  • Grafické prostředí: KDE

| proč linux | blog