Nosorožec

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 19. dubna 2019; kontroly vyžadují 14 úprav .
nosorožec
Typ JavaScript engine
Vývojář Mozilla Foundation / Mozilla Corporation
Zapsáno v Jáva
Operační systém Multiplatformní software
První vydání 1997
Hardwarová platforma Java virtuální stroj
Nejnovější verze 1.7.14 ( 7. ledna 2022 )
Licence MPL 2.0/ GPL 2.0 [1]
webová stránka mozilla.github.io/rhino/

Rhino  je open source JavaScript engine . Je napsán výhradně v Javě a spravuje jej Mozilla Foundation [2] . Mozilla Foundation také udržuje další implementaci JavaScript motoru napsaného v C  , SpiderMonkey [3] .

Rhino převádí skripty JavaScript na třídy Java. Rhino funguje v kompilovaném i interpretovaném režimu. Je určen k použití v aplikacích na straně serveru, takže nemá vestavěnou podporu pro objekty prohlížeče, které jsou běžně spojovány s JavaScriptem.

Rhino lze použít jako debugger při použití prostředí Rhina . Může být také použit v aplikacích při zabudování Rhina.

Mírně upravená verze Rhina 1.6r2 je dodávána se Sun Microsystems Java SE 6, která byla vydána v prosinci 2006 [4] . To usnadňuje integraci JavaScriptu do programů Java a přístup k prostředkům Java z JavaScriptu. Jiné implementace Java 6 se mohou lišit.

Historie

Projekt Rhino byl zahájen v Netscape v roce 1997 . V té době Netscape plánoval vyvinout verzi Navigatoru napsanou výhradně v Javě, a proto potřeboval implementaci JavaScriptu napsanou v Javě. Když Netscape přestal pracovat na „Javagatoru“, jak se mu říkalo, projekt Rhino byl dokončen jako JavaScript engine. Od té doby několik velkých společností (včetně Sun Microsystems ) licencovalo Rhino pro použití ve svých projektech a zaplatilo za to Netscape, což jim umožnilo pokračovat v práci na něm.

Rhino původně zkompiloval veškerý JavaScript kód do bajtkódu Java ve vygenerovaných souborech tříd. To poskytlo lepší výkon ( často předčí implementaci JavaScriptu C při spuštění na JIT ), ale trpělo dvěma nevýhodami. Za prvé, doba kompilace byla dlouhá, protože generování bajtkódu Java a načítání generovaných tříd byl náročný proces. Za druhé, implementace umožňovala velké úniky paměti, protože většina JVM neshromažďovala nepoužívané třídy nebo řetězce, které byly internovány v důsledku načítání souboru třídy.

Proto byl na podzim 1998 do Rhina přidán interpretovaný režim. Generování kódu Classfile bylo přesunuto do volitelné knihovny dynamického načítání. Kompilace se zrychlila, a když se skripty přestaly používat, mohly být sestaveny jako jakýkoli jiný objekt Java.

Rhino byl darován Mozilla Foundation v dubnu 1998 . V důsledku přechodu Rhina na open source našel různá využití a do kódu přispělo více lidí [5] .

Projekt je pojmenován podle zvířete ( nosorožce ) na obálce JavaScriptové knihy vydané nakladatelstvím O'Reilly Media [5] [6] .

Od verze 1.7R1 je Rhino založeno na platformě Java 5 a podporuje JavaScript verze 1.7 [7] .

Oracle oznámil, že vyvíjí výkonnější implementaci JavaScriptu než Rhino s názvem Nashorn , který byl součástí Java 8 v roce 2014 [8] [9] .

Aplikace

Rhino a Java Scripting API se používají ke skriptování Java aplikací [4] . To vám umožní popsat obchodní logiku v jazyce jednodušším než Java (zahrnující odborníky v dané oblasti se základními programovacími dovednostmi), poskytnout modulární aplikační architekturu, kterou lze rozšířit pomocí zásuvných modulů , a integrovat dříve existující skripty do aplikace [10] .

Je to také dobré řešení pro JavaScript na straně serveru při použití Java hostingu, několik takových řešení bylo vytvořeno projektem CommonJS [11] [12] . Včetně Rhina lze použít ve spojení s Google App Engine [13] .

Pro práci pod operačním systémem Android na virtuálním stroji Dalvik Rhino není vhodný [14] .

Příklad

Zde je příklad kódu Java, který spouští JavaScriptprint('Hello, world!')

import javax.script.ScriptEngine ; import javax.script.ScriptEngineManager ; import javax.script.ScriptException ; public class RhinoEngine { public static void main ( String [] args ) { ScriptEngineManager mgr = new ScriptEngineManager (); Engine ScriptEngine = mgr . getEngineByName ( "JavaScript" ); // Nyní máme instanci enginu a můžeme spustit JavaScript try { engine . put ( "jméno" , argumenty [ 0 ] ); motor . eval ( "print('Ahoj ' + jméno + '!')" ); } catch ( ScriptException ex ) { ex . printStackTrace (); } } }

ScriptEngineManager  je hlavní třída , která se používá při práci se skriptovacím balíčkem (většina ostatních jsou rozhraní ) tím, že se vytvoří jeho instance. Pokud používáte Rhino JavaScript engine, musíte zadat jeho název "JavaScript"[10] .

Poznámky

  1. Licence Rhino - MDC  (anglicky)  (nepřístupný odkaz) . Získáno 20. února 2010. Archivováno z originálu 5. prosince 2008.
  2. Rhino - JavaScript for Java  (anglicky)  (downlink) . Datum přístupu: 20. února 2010. Archivováno z originálu 18. dubna 2012.
  3. SpiderMonkey (JavaScript-C) Engine  (anglicky)  (downlink) . Datum přístupu: 20. února 2010. Archivováno z originálu 18. dubna 2012.
  4. 1 2 John O'Conner Skriptování pro platformu Java (stahování) . Sun Developer Network (červenec 2006). Získáno 14. května 2012. Archivováno z originálu 30. června 2012. 
  5. 1 2 Historie Rhina  (anglicky)  (nedostupný odkaz) . Mozilla Foundation . Získáno 21. února 2010. Archivováno z originálu 18. dubna 2012.
  6. JavaScript: The Definitive Guide, Fifth Edition - O'Reilly Media  (anglicky)  (odkaz není dostupný) . Datum přístupu: 20. února 2010. Archivováno z originálu 18. dubna 2012.  - obal knihy
  7. Novinka v Rhinu 1.7R1  (eng.)  (nedostupný odkaz) . Mozilla Foundation . Získáno 21. února 2010. Archivováno z originálu 5. dubna 2008.
  8. Vylepšení skriptování Java . Získáno 3. května 2014. Archivováno z originálu 3. května 2014.
  9. Paul Crill. Oracle připravuje svůj Nashorn JavaScript engine (downlink) . InfoWorld (5. října 2011). Získáno 15. 5. 2012. Archivováno z originálu 30. 6. 2012. 
  10. 1 2 Tom McQueeny. Dynamické používání dynamických jazyků: Část 1. Úvod do skriptovacího API Java (mrtvý odkaz) . IBM developerWorks (29. května 2008). Získáno 15. 5. 2012. Archivováno z originálu 30. 6. 2012. 
  11. CommonJS . Získáno 15. 5. 2012. Archivováno z originálu 30. 9. 2013.
  12. Avi Deitcher. Jednoduchost a výkon: JavaScript na serveru  // Linux Journal . - duben 2011. - č. 204 .
  13. Rhino For Webapps Archivováno 10. června 2015 na Wayback Machine , Javascript na AppEngine
  14. Tony Mobile. Psaní nativních aplikací pro Android pomocí Javascriptu? Ještě ne. (nedostupný odkaz) . Free Software Magazine (15. března 2012). Získáno 15. 5. 2012. Archivováno z originálu 30. 6. 2012. 

Literatura

Odkazy