Næsehorn

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 19. april 2019; checks kræver 14 redigeringer .
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.

Historie

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] .

Ansøgning

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] .

Eksempel

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] .

Noter

  1. Rhino licens - MDC  (eng.)  (utilgængeligt link) . Hentet 20. februar 2010. Arkiveret fra originalen 5. december 2008.
  2. Rhino - JavaScript til Java  (engelsk)  (downlink) . Dato for adgang: 20. februar 2010. Arkiveret fra originalen 18. april 2012.
  3. SpiderMonkey (JavaScript-C) Engine  (engelsk)  (downlink) . Dato for adgang: 20. februar 2010. Arkiveret fra originalen 18. april 2012.
  4. 1 2 John O'Conner Scripting til Java-platformen (downlink) . Sun Developer Network (juli 2006). Hentet 14. maj 2012. Arkiveret fra originalen 30. juni 2012. 
  5. 1 2 Rhino History  (eng.)  (utilgængeligt link) . Mozilla Foundation . Hentet 21. februar 2010. Arkiveret fra originalen 18. april 2012.
  6. JavaScript: The Definitive Guide, Fifth Edition - O'Reilly Media  (engelsk)  (link ikke tilgængeligt) . Dato for adgang: 20. februar 2010. Arkiveret fra originalen 18. april 2012.  - bogomslag
  7. Ny i Rhino 1.7R1  (eng.)  (ikke tilgængeligt link) . Mozilla Foundation . Hentet 21. februar 2010. Arkiveret fra originalen 5. april 2008.
  8. Java-scriptforbedringer . Hentet 3. maj 2014. Arkiveret fra originalen 3. maj 2014.
  9. Paul Crill. Oracle forbereder sin Nashorn JavaScript-motor (downlink) . InfoWorld (5. oktober 2011). Hentet 15. maj 2012. Arkiveret fra originalen 30. juni 2012. 
  10. 1 2 Tom McQueeny. Brug dynamiske sprog dynamisk: Del 1. En introduktion til Java scripting API (dødt link) . IBM developerWorks (29. maj 2008). Hentet 15. maj 2012. Arkiveret fra originalen 30. juni 2012. 
  11. CommonJS . Hentet 15. maj 2012. Arkiveret fra originalen 30. september 2013.
  12. Avi Deitcher. Enkelhed og ydeevne: JavaScript på serveren  // Linux Journal . - April 2011. - Nr. 204 .
  13. Rhino For Webapps Arkiveret 10. juni 2015 på Wayback Machine , Javascript på AppEngine
  14. Tony Mobile. Skriver du native Android-applikationer med Javascript? Ikke endnu. (utilgængeligt link) . Free Software Magazine (15. marts 2012). Hentet 15. maj 2012. Arkiveret fra originalen 30. juni 2012. 

Litteratur

Links