Rhino — рушій JavaScript з відкритим сирцевим кодом. Він написаний повністю на Java та підтримується Mozilla Foundation. Mozilla Foundation також підтримує іншу реалізацію рушія JavaScript, написану на C — SpiderMonkey.
Тип | рушій JavaScript |
---|---|
Розробник | Mozilla Foundation, Mozilla Corporation |
Стабільний випуск | 1.7R4 (18 червня 2012 ) |
Платформа | Java Virtual Machine |
Операційна система | крос-платформовий |
Мова програмування | Java |
Стан розробки | активний |
Ліцензія | MPL |
Репозиторій | github.com/mozilla/rhino |
Вебсайт | www.mozilla.org/rhino |
Rhino перетворює JavaScript скрипти в Java класи. Rhino працює і у компільованому, і інтерпретованих режимах. Він призначений для використання у застосунках на серверному боці, тому в ньому немає вбудованої підтримки для об'єктів браузера, які зазвичай асоціюються з JavaScript.
Rhino може використовуватися як зневаджувач при використанні Rhino Shell. Він також може використовуватися в застосунках при вбудовуванні Rhino.
Незначно модифікована версія Rhino 1.6r2 поставляється разом з Sun Microsystems Java SE 6, яка була випущена в грудні 2006. Це спрощує інтеграцію JavaScript в Java-програми і доступ до Java-ресурсів з JavaScript. Інші реалізації Java 6 можуть мати відмінності.
Історія
Проєкт Rhino був початий в Netscape у 1997. У той час Netscape планувала розробити версію Navigator, написану повністю на Java і тому їй була потрібна реалізація JavaScript, написана на Java. Коли Netscape зупинила роботу над «Javagator», як він був названий, проєкт Rhino був закінчений як JavaScript-рушій. З того часу кілька великих компаній (включаючи Sun Microsystems) ліцензували Rhino для використання у своїх проєктах і платили для цього Netscape, дозволяючи продовжувати роботу над ним.
Спочатку, Rhino компілював весь JavaScript код в байткод Java в згенерованих файлах класів. Це давало кращу продуктивність (при запуску на JIT часто перевищувала продуктивність C-реалізації JavaScript), але мала два недоліки. По-перше, час компіляції був великим, оскільки генерація байткоду Java та завантаження згенерованих класів були важким процесом. По-друге, реалізація допускала великі витоки пам'яті, оскільки більшість JVM не збирали невикористовувані класи або рядки, які інтернували як результат завантаження клас-файлу.
Тому восени 1998 в Rhino був доданий інтерпретований режим. Генерація кодів клас-файлів була переміщена в опціональну, динамічно-завантажувану бібліотеку. Компіляція прискорилася і коли скрипти більше не використовувалися вони могли бути зібрані як і будь-які інші Java-об'єкти.
Rhino був переданий Mozilla Foundation в квітні 1998. В результаті переходу Rhino в open source він знайшов різні застосування і більша кількість людей стали вкладати внесок у код.
Проєкт отримав свою назву від тварини на обкладинці книги про JavaScript, виданої O'Reilly Media.
Починаючи з версії 1.7R1, Rhino ґрунтується на платформі Java 5 і підтримує JavaScript версії 1.7.
У 2014 році платформа Java 8 одержала більш продуктивнішу бібліотеку Nashorn, яка замінила Rhino.
Застосування
Rhino і Java Scripting API використовуються для скриптингу Java застосунків. Це дозволяє описувати бізнес-логіку простішою, ніж Java, мовою (залучаючи до цього фахівців у предметній області з базовими навичками програмування), забезпечити модульну, розширювану за рахунок плагінів архітектуру програми та інтеграцію у застосунок раніше існуючих скриптів.
Це також гарне рішення для JavaScript на стороні сервера при використанні Java-хостингу, кілька таких рішень було створено в рамках проєкту CommonJS. Також Rhino можна використовувати спільно з Google App Engine.
Для роботи під управлінням ОС Android, поверх віртуальної машини Dalvik Rhino підходить слабо.
Приклад
Ось приклад Java-коду, що запускає JavaScript print('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 engine = mgr.getEngineByName("JavaScript"); // Тепер у нас є екземпляр рушія і ми можемо виконати JavaScript try { engine.put("name", args[0]); engine.eval("print('Hello ' + name + '!')"); } catch (ScriptException ex) { ex.printStackTrace(); } } }
ScriptEngineManager — це основний клас, використовуваний при роботі з пакетом скриптинга (більшість інших — [[інтерфейс ООП|інтерфейси]]), шляхом створення його примірників. У разі використання JavaScript-рушія Rhino треба задати його ім'я "JavaScript" [9].
Виноски
- Rhino - JavaScript for Java (англ.). Архів оригіналу за 18 квітня 2012. Процитовано 20 лютого 2010.
- SpiderMonkey (JavaScript-C) Engine (англ.). Архів оригіналу за 18 квітня 2012. Процитовано 20 лютого 2010.
- John O'Conner (July 2006). Scripting for the Java Platform. Sun Developer Network. Архів оригіналу за 30 червня 2012. Процитовано 14 травня 2012.
- Rhino History (англ.). Mozilla Foundation. Архів оригіналу за 18 квітня 2012. Процитовано 21 лютого 2010.
- JavaScript: The Definitive Guide, Fifth Edition - O'Reilly Media (англ.). Архів оригіналу за 18 квітня 2012. Процитовано 20 лютого 2010. — обкладинка книги
- (англ.). Mozilla Foundation. Архів оригіналу за 5 квітня 2008. Процитовано 21 лютого 2010.
- Paul Krill (05 жовтня 2011). Oracle prepping its Nashorn JavaScript engine. InfoWorld. Архів оригіналу за 30 червня 2012. Процитовано 15 травня 2012.
- Том МакКвини (29.05.2008). Используйте динамические языки динамично: Часть 1. Введение в Java scripting API. IBM developerWorks. Архів оригіналу за 30.06.2012. Процитовано 15 травня 2012.
- . Архів оригіналу за 30 вересня 2013. Процитовано 8 жовтня 2013.
- Avi Deitcher. Simplicity and Performance: JavaScript on the Server // . — April 2011. — № 204.
- Rhino For Webapps [ 19 липня 2013 у Wayback Machine.], Javascript on AppEngine
- Tony Mobily (15 березня 2012). Writing native Android applications with Javascript? Not yet. [en]. Архів оригіналу за 30 червня 2012. Процитовано 15 травня 2012.
Література
- Том МакКвини (вересень 2008). Используйте динамические языки динамично (в 2-х частях). IBM developerWorks. Архів оригіналу за 27 травня 2012. Процитовано 14 травня 2012.
- Андрей Чиорояну (червень 2010). JavaScript EE (в 2-х частях). IBM developerWorks. Архів оригіналу за 27 травня 2012. Процитовано 14 травня 2012.
- Ted Neward (27 липня 2010). 5 things you didn’t know about … the Java Scripting API (An easier way to do scripting on the Java platform). IBM developerWorks. Архів оригіналу за 30 червня 2012. Процитовано 14 травня 2012.
Посилання
- Сторінка проєкту на сайті Mozilla [Архівовано 18 квітня 2012 у WebCite](англ.)
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Rhino rushij JavaScript z vidkritim sircevim kodom Vin napisanij povnistyu na Java ta pidtrimuyetsya Mozilla Foundation Mozilla Foundation takozh pidtrimuye inshu realizaciyu rushiya JavaScript napisanu na C SpiderMonkey RhinoTip rushij JavaScriptRozrobnik Mozilla Foundation Mozilla CorporationStabilnij vipusk 1 7R4 18 chervnya 2012 11 rokiv tomu 2012 06 18 Platforma Java Virtual MachineOperacijna sistema kros platformovijMova programuvannya JavaStan rozrobki aktivnijLicenziya MPLRepozitorij github com mozilla rhinoVebsajt www mozilla org rhino Rhino peretvoryuye JavaScript skripti v Java klasi Rhino pracyuye i u kompilovanomu i interpretovanih rezhimah Vin priznachenij dlya vikoristannya u zastosunkah na servernomu boci tomu v nomu nemaye vbudovanoyi pidtrimki dlya ob yektiv brauzera yaki zazvichaj asociyuyutsya z JavaScript Rhino mozhe vikoristovuvatisya yak znevadzhuvach pri vikoristanni Rhino Shell Vin takozh mozhe vikoristovuvatisya v zastosunkah pri vbudovuvanni Rhino Neznachno modifikovana versiya Rhino 1 6r2 postavlyayetsya razom z Sun Microsystems Java SE 6 yaka bula vipushena v grudni 2006 Ce sproshuye integraciyu JavaScript v Java programi i dostup do Java resursiv z JavaScript Inshi realizaciyi Java 6 mozhut mati vidminnosti IstoriyaProyekt Rhino buv pochatij v Netscape u 1997 U toj chas Netscape planuvala rozrobiti versiyu Navigator napisanu povnistyu na Java i tomu yij bula potribna realizaciya JavaScript napisana na Java Koli Netscape zupinila robotu nad Javagator yak vin buv nazvanij proyekt Rhino buv zakinchenij yak JavaScript rushij Z togo chasu kilka velikih kompanij vklyuchayuchi Sun Microsystems licenzuvali Rhino dlya vikoristannya u svoyih proyektah i platili dlya cogo Netscape dozvolyayuchi prodovzhuvati robotu nad nim Spochatku Rhino kompilyuvav ves JavaScript kod v bajtkod Java v zgenerovanih fajlah klasiv Ce davalo krashu produktivnist pri zapusku na JIT chasto perevishuvala produktivnist C realizaciyi JavaScript ale mala dva nedoliki Po pershe chas kompilyaciyi buv velikim oskilki generaciya bajtkodu Java ta zavantazhennya zgenerovanih klasiv buli vazhkim procesom Po druge realizaciya dopuskala veliki vitoki pam yati oskilki bilshist JVM ne zbirali nevikoristovuvani klasi abo ryadki yaki internuvali yak rezultat zavantazhennya klas fajlu Tomu voseni 1998 v Rhino buv dodanij interpretovanij rezhim Generaciya kodiv klas fajliv bula peremishena v opcionalnu dinamichno zavantazhuvanu biblioteku Kompilyaciya priskorilasya i koli skripti bilshe ne vikoristovuvalisya voni mogli buti zibrani yak i bud yaki inshi Java ob yekti Rhino buv peredanij Mozilla Foundation v kvitni 1998 V rezultati perehodu Rhino v open source vin znajshov rizni zastosuvannya i bilsha kilkist lyudej stali vkladati vnesok u kod Proyekt otrimav svoyu nazvu vid tvarini na obkladinci knigi pro JavaScript vidanoyi O Reilly Media Pochinayuchi z versiyi 1 7R1 Rhino gruntuyetsya na platformi Java 5 i pidtrimuye JavaScript versiyi 1 7 U 2014 roci platforma Java 8 oderzhala bilsh produktivnishu biblioteku Nashorn yaka zaminila Rhino ZastosuvannyaRhino i Java Scripting API vikoristovuyutsya dlya skriptingu Java zastosunkiv Ce dozvolyaye opisuvati biznes logiku prostishoyu nizh Java movoyu zaluchayuchi do cogo fahivciv u predmetnij oblasti z bazovimi navichkami programuvannya zabezpechiti modulnu rozshiryuvanu za rahunok plaginiv arhitekturu programi ta integraciyu u zastosunok ranishe isnuyuchih skriptiv Ce takozh garne rishennya dlya JavaScript na storoni servera pri vikoristanni Java hostingu kilka takih rishen bulo stvoreno v ramkah proyektu CommonJS Takozh Rhino mozhna vikoristovuvati spilno z Google App Engine Dlya roboti pid upravlinnyam OS Android poverh virtualnoyi mashini Dalvik Rhino pidhodit slabo PrikladOs priklad Java kodu sho zapuskaye JavaScript print 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 engine mgr getEngineByName JavaScript Teper u nas ye ekzemplyar rushiya i mi mozhemo vikonati JavaScript try engine put name args 0 engine eval print Hello name catch ScriptException ex ex printStackTrace ScriptEngineManager ce osnovnij klas vikoristovuvanij pri roboti z paketom skriptinga bilshist inshih interfejs OOP interfejsi shlyahom stvorennya jogo primirnikiv U razi vikoristannya JavaScript rushiya Rhino treba zadati jogo im ya JavaScript 9 VinoskiRhino JavaScript for Java angl Arhiv originalu za 18 kvitnya 2012 Procitovano 20 lyutogo 2010 SpiderMonkey JavaScript C Engine angl Arhiv originalu za 18 kvitnya 2012 Procitovano 20 lyutogo 2010 John O Conner July 2006 Scripting for the Java Platform Sun Developer Network Arhiv originalu za 30 chervnya 2012 Procitovano 14 travnya 2012 Rhino History angl Mozilla Foundation Arhiv originalu za 18 kvitnya 2012 Procitovano 21 lyutogo 2010 JavaScript The Definitive Guide Fifth Edition O Reilly Media angl Arhiv originalu za 18 kvitnya 2012 Procitovano 20 lyutogo 2010 obkladinka knigi angl Mozilla Foundation Arhiv originalu za 5 kvitnya 2008 Procitovano 21 lyutogo 2010 Paul Krill 05 zhovtnya 2011 Oracle prepping its Nashorn JavaScript engine InfoWorld Arhiv originalu za 30 chervnya 2012 Procitovano 15 travnya 2012 Tom MakKvini 29 05 2008 Ispolzujte dinamicheskie yazyki dinamichno Chast 1 Vvedenie v Java scripting API IBM developerWorks Arhiv originalu za 30 06 2012 Procitovano 15 travnya 2012 Arhiv originalu za 30 veresnya 2013 Procitovano 8 zhovtnya 2013 Avi Deitcher Simplicity and Performance JavaScript on the Server April 2011 204 Rhino For Webapps 19 lipnya 2013 u Wayback Machine Javascript on AppEngine Tony Mobily 15 bereznya 2012 Writing native Android applications with Javascript Not yet en Arhiv originalu za 30 chervnya 2012 Procitovano 15 travnya 2012 LiteraturaTom MakKvini veresen 2008 Ispolzujte dinamicheskie yazyki dinamichno v 2 h chastyah IBM developerWorks Arhiv originalu za 27 travnya 2012 Procitovano 14 travnya 2012 Andrej Chioroyanu cherven 2010 JavaScript EE v 2 h chastyah IBM developerWorks Arhiv originalu za 27 travnya 2012 Procitovano 14 travnya 2012 Ted Neward 27 lipnya 2010 5 things you didn t know about the Java Scripting API An easier way to do scripting on the Java platform IBM developerWorks Arhiv originalu za 30 chervnya 2012 Procitovano 14 travnya 2012 PosilannyaStorinka proyektu na sajti Mozilla Arhivovano 18 kvitnya 2012 u WebCite angl