næsehorn | |
---|---|
Type | JavaScript-motor |
Udvikler | Mozilla Foundation / Mozilla Corporation |
Skrevet i | Java |
Operativ system | Cross-platform software |
Første udgave | 1997 |
Hardware platform | Java virtuel maskine |
nyeste version | 1.7.14 ( 7. januar 2022 ) |
Licens | MPL 2.0/ GPL 2.0 [1] |
Internet side | mozilla.github.io/rhino/ |
Rhino er en open source JavaScript-motor . Det er skrevet udelukkende på Java og vedligeholdes af Mozilla Foundation [2] . Mozilla Foundation vedligeholder også en anden implementering af JavaScript -motoren skrevet i C , SpiderMonkey [3] .
Rhino konverterer JavaScript-scripts til Java-klasser. Rhino fungerer i både kompilerede og fortolkede tilstande. Det er beregnet til at blive brugt i applikationer på serversiden, så det har ikke indbygget understøttelse af browserobjekter, der almindeligvis er forbundet med JavaScript.
Rhino kan bruges som en debugger, når du bruger Rhino- skallen . Det kan også bruges i applikationer ved indlejring af næsehorn.
En let modificeret version af Rhino 1.6r2 leveres med Sun Microsystems Java SE 6, som blev udgivet i december 2006 [4] . Dette gør det nemmere at integrere JavaScript i Java-programmer og få adgang til Java-ressourcer fra JavaScript. Andre implementeringer af Java 6 kan afvige.
Rhino-projektet blev startet hos Netscape i 1997 . På det tidspunkt planlagde Netscape at udvikle en version af Navigator skrevet udelukkende i Java, og havde derfor brug for en JavaScript-implementering skrevet i Java. Da Netscape stoppede arbejdet med "Javagator", som det hed, var Rhino-projektet færdigt som en JavaScript-motor. Siden dengang har flere store virksomheder (inklusive Sun Microsystems ) givet Rhino licens til brug i deres projekter og betalt Netscape for det, så de kan fortsætte med at arbejde på det.
Rhino kompilerede oprindeligt al JavaScript-kode til Java-bytekode i genererede klassefiler. Dette gav bedre ydeevne ( ofte bedre end JavaScripts C-implementering , når det blev kørt på JIT ), men led af to ulemper. For det første var kompileringstiden lang, da generering af Java-bytekode og indlæsning af de genererede klasser var en tung proces. For det andet tillod implementeringen store hukommelseslækager, fordi de fleste JVM'er ikke indsamlede ubrugte klasser eller strenge, der blev interneret som følge af indlæsning af en klassefil.
Derfor blev der i efteråret 1998 tilføjet en fortolket tilstand til Rhino. Klassefilkodegenerering er blevet flyttet til et valgfrit bibliotek med dynamisk indlæsning. Kompileringen tog fart, og når scripts ikke længere var i brug, kunne de bygges som ethvert andet Java-objekt.
Rhino blev doneret til Mozilla Foundation i april 1998 . Som et resultat af Rhinos skift til open source, har det fundet forskellige anvendelser, og flere mennesker har bidraget til koden [5] .
Projektet har fået sit navn fra dyret ( næsehorn ) på forsiden af en JavaScript-bog udgivet af O'Reilly Media [5] [6] .
Fra version 1.7R1 er Rhino baseret på Java 5 -platformen og understøtter JavaScript version 1.7 [7] .
Oracle har annonceret, at det er ved at udvikle en mere effektiv JavaScript-implementering end Rhino kaldet Nashorn , som blev inkluderet i Java 8 i 2014 [8] [9] .
Rhino og Java Scripting API bruges til at scripte Java-applikationer [4] . Dette giver dig mulighed for at beskrive forretningslogikken på et sprog, der er enklere end Java (der involverer eksperter inden for fagområdet med grundlæggende programmeringsfærdigheder), give en modulær applikationsarkitektur, der kan udvides gennem plugins , og integrere tidligere eksisterende scripts i applikationen [10] .
Det er også en god løsning til server-side JavaScript ved brug af Java-hosting, flere sådanne løsninger er blevet skabt af CommonJS-projektet [11] [12] . Inklusive Rhino kan bruges sammen med Google App Engine [13] .
Til at arbejde under Android OS oven på den virtuelle Dalvik Rhino -maskine er den dårligt egnet [14] .
Her er et eksempel på Java-kode, der kører 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 (); ScriptEngine -motor = mgr . getEngineByName ( "JavaScript" ); // Nu har vi en forekomst af motoren og kan udføre JavaScript try { engine . put ( "navn" , args [ 0 ] ); motor . eval ( "print('Hej ' + navn + '!')" ); } catch ( ScriptException ex ) { ex . printStackTrace (); } } }ScriptEngineManager er hovedklassen , der bruges, når man arbejder med en scripting-pakke (de fleste af de andre er grænseflader ) ved at instansiere den. Hvis du bruger Rhino JavaScript-motoren, skal du angive dens navn "JavaScript"[10] .
Mozilla projekter | |
---|---|
Browsere | |
Andre projekter | |
Udvikler sig ikke | |
Infrastruktur | |
Komponenter |
|
ECMAScript | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Dialekter |
| ||||||||||||
Motorer ( sammenligning ) | |||||||||||||
Rammer , biblioteker |
| ||||||||||||
Mennesker | |||||||||||||
Andet |
|