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.
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] .
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] .
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] .
Mozilla | Projekty|
---|---|
Prohlížeče |
|
Jiné projekty | |
Nevyvíjí se | |
Infrastruktura | |
Komponenty |
|
ECMAScript | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Dialekty |
| ||||||||||||
Motory ( srovnání ) |
| ||||||||||||
Rámce , knihovny |
| ||||||||||||
Lidé | |||||||||||||
jiný |
|