Rhino
![]() |
|
| Тип | |
|---|---|
| Разработчик | |
| Написана на | |
| Операционная система | |
| Аппаратная платформа | |
| Последняя версия | |
| Лицензия | |
| Сайт | |
Rhino — движок JavaScript с открытым исходным кодом. Он написан полностью на Java и поддерживается Mozilla Foundation[2]. Mozilla Foundation также поддерживает другую реализацию движка JavaScript, написанную на C — SpiderMonkey[3].
Rhino преобразует JavaScript скрипты в Java классы. Rhino работает и в компилируемом и интерпретируемом режимах. Он предназначен для использования в server-side приложениях, поэтому в нём нет встроенной поддержки для объектов браузера, которые обычно ассоциируются с JavaScript.
Rhino может использоваться как отладчик при использовании Rhino shell. Он также может использоваться в приложениях при встраивании Rhino.
Незначительно модифицированная версия Rhino 1.6r2 поставляется вместе с Sun Microsystems Java SE 6, которая была выпущена в декабре 2006[4]. Это упрощает интеграцию 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, он нашёл различные применения и большее количество людей стали вносить вклад в код[5].
Проект получил своё название от животного на обложке книги о JavaScript, изданной O'Reilly Media[5][6].
Начиная с версии 1.7R1, Rhino основывается на платформе Java 5 и поддерживает JavaScript версии 1.7[7].
Фирма Oracle объявила, что ведётся разработка более производительной, чем Rhino, JavaScript реализации, которая названа Nashorn[en] и будет включена в состав Java 8 в 2013 году[8].
Применение [править]
Rhino и Java Scripting API используются для скриптинга Java приложений[4]. Это позволяет описывать бизнес-логику на более простом чем Java языке (привлекая к этому специалистов в предметной области с базовым навыком программирования), обеспечить модульную, расширяемую за счёт плагинов архитектуру приложения и интеграцию в приложение ранее существующих скриптов[9].
Это также хорошее решение для JavaScript на стороне сервера при использовании Java-хостинга, несколько таких решений было создано в рамках проекта CommonJS[10].[11] В том числе Rhino можно использовать совместно с Google App Engine[12].
Для работы под управлением ОС Android, поверх виртуальной машины Dalvik Rhino подходит слабо[13].
Пример [править]
Вот пример 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 license - MDC (англ.). Проверено 20 февраля 2010.
- ↑ Rhino - JavaScript for Java (англ.). Архивировано из первоисточника 18 апреля 2012. Проверено 20 февраля 2010.
- ↑ SpiderMonkey (JavaScript-C) Engine (англ.). Архивировано из первоисточника 18 апреля 2012. Проверено 20 февраля 2010.
- ↑ 1 2 John O'Conner Scripting for the Java Platform. Sun Developer Network (July 2006). Архивировано из первоисточника 30 июня 2012. Проверено 14 мая 2012.
- ↑ 1 2 Rhino History (англ.). Mozilla Foundation. Архивировано из первоисточника 18 апреля 2012. Проверено 21 февраля 2010.
- ↑ JavaScript: The Definitive Guide, Fifth Edition - O'Reilly Media (англ.). Архивировано из первоисточника 18 апреля 2012. Проверено 20 февраля 2010. — обложка книги
- ↑ New in Rhino 1.7R1 (англ.). Mozilla Foundation. Проверено 21 февраля 2010.
- ↑ Paul Krill Oracle prepping its Nashorn JavaScript engine. InfoWorld (October 05, 2011). Архивировано из первоисточника 30 июня 2012. Проверено 15 мая 2012.
- ↑ 1 2 Том МакКвини Используйте динамические языки динамично: Часть 1. Введение в Java scripting API. IBM developerWorks (29.05.2008). Архивировано из первоисточника 30 июня 2012. Проверено 15 мая 2012.
- ↑ CommonJS
- ↑ Avi Deitcher Simplicity and Performance: JavaScript on the Server // Linux Journal. — April 2011. — № 204.
- ↑ Rhino For Webapps, Javascript on AppEngine
- ↑ Tony Mobily Writing native Android applications with Javascript? Not yet.. Free Software Magazine[en] (15 марта 2012). Архивировано из первоисточника 30 июня 2012. Проверено 15 мая 2012.
Литература [править]
- Том МакКвини Используйте динамические языки динамично (в 2-х частях). IBM developerWorks (сентябрь 2008). Архивировано из первоисточника 27 мая 2012. Проверено 14 мая 2012.
- Андрей Чиорояну JavaScript EE (в 2-х частях). IBM developerWorks (июнь 2010). Архивировано из первоисточника 27 мая 2012. Проверено 14 мая 2012.
- Ted Neward 5 things you didn’t know about … the Java Scripting API (An easier way to do scripting on the Java platform). IBM developerWorks (27 Jul 2010). Архивировано из первоисточника 30 июня 2012. Проверено 14 мая 2012.
Ссылки [править]
| Это заготовка статьи о программном обеспечении. Вы можете помочь проекту, исправив и дополнив её. |
| Проекты Mozilla Foundation | |
|---|---|
| Браузеры | |
| Другие проекты |
Firefox OS • Bugzilla • ChatZilla • Lightning • Penelope • Sunbird • Sync • Thunderbird • Persona |
| Не развиваются |
Calendar Project • Minimo • Mozilla Suite • Nvu • Prism |
| Инфраструктура | |
| Компоненты |
Composer • NSPR • Rhino • SpiderMonkey • Tamarin • Venkman |
| ECMAScript | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Диалекты | ActionScript · Caja · JavaScript (движки) · JScript · JScript .NET · Objective-J · QtScript · WMLScript | ||||||||||||
| Движки (сравнение) |
Carakan · Futhark · InScript · JavaScriptCore (SquirrelFish) · JScript · KJS · Linear B · Narcissus · QtScript · Rhino · YAJI · SpiderMonkey (TraceMonkey, JägerMonkey) · Tamarin · V8 · Chakra | ||||||||||||
| Фреймворки, библиотеки |
|
||||||||||||
| Люди | Брендан Айк · Дуглас Крокфорд · Джон Резиг | ||||||||||||
| Другое | DHTML · Ecma International · JSAN · JSDoc · JSLint · JSON · JSSS · Sputnik · SunSpider · CommonJS | ||||||||||||
