Rhino

Rhino
Rhino
Inicio de ldp para 260px50px moziyarinocrnt.jpg
Тип

движок JavaScript

Разработчик

Mozilla Foundation / Mozilla Corporation

Написана на

Java

Операционная система

Кроссплатформенное программное обеспечение

Аппаратная платформа

Java Virtual Machine

Последняя версия

1.7R4 (18 июня 2012 года)

Лицензия

MPL 1.1/GPL 2.0[1]

Сайт

http://www.mozilla.org/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].

Примечания

  1. ↑ Rhino license - MDC  (англ.). Проверено 20 февраля 2010.
  2. ↑ Rhino - JavaScript for Java  (англ.). Архивировано из первоисточника 18 апреля 2012. Проверено 20 февраля 2010.
  3. ↑ SpiderMonkey (JavaScript-C) Engine  (англ.). Архивировано из первоисточника 18 апреля 2012. Проверено 20 февраля 2010.
  4. ↑ 1 2 John O'Conner Scripting for the Java Platform. Sun Developer Network (July 2006). Архивировано из первоисточника 30 июня 2012. Проверено 14 мая 2012.
  5. ↑ 1 2 Rhino History  (англ.). Mozilla Foundation. Архивировано из первоисточника 18 апреля 2012. Проверено 21 февраля 2010.
  6. ↑ JavaScript: The Definitive Guide, Fifth Edition - O'Reilly Media  (англ.). Архивировано из первоисточника 18 апреля 2012. Проверено 20 февраля 2010. — обложка книги
  7. ↑ New in Rhino 1.7R1  (англ.). Mozilla Foundation. Проверено 21 февраля 2010.
  8. ↑ Paul Krill Oracle prepping its Nashorn JavaScript engine. InfoWorld (October 05, 2011). Архивировано из первоисточника 30 июня 2012. Проверено 15 мая 2012.
  9. ↑ 1 2 Том МакКвини Используйте динамические языки динамично: Часть 1. Введение в Java scripting API. IBM developerWorks (29.05.2008). Архивировано из первоисточника 30 июня 2012. Проверено 15 мая 2012.
  10. ↑ CommonJS
  11. ↑ Avi Deitcher Simplicity and Performance: JavaScript on the Server // Linux Journal. — April 2011. — № 204.
  12. ↑ Rhino For Webapps, Javascript on AppEngine
  13. ↑ Tony Mobily Writing native Android applications with Javascript? Not yet.. Free Software Magazine[en] (15 марта 2012). Архивировано из первоисточника 30 июня 2012. Проверено 15 мая 2012.

Литература

Ссылки



Wikimedia Foundation. 2010.

Игры ⚽ Нужна курсовая?

Полезное


Смотреть что такое "Rhino" в других словарях:

  • Rhino — is a colloquial abbreviation of Rhinoceros.Rhino may also refer to:In people: * Rhino, the ring name of professional wrestler Terry Gerin * Rhino, the stage name of ex Gladiator Mark Smith * John Edwards (musician), bass player for the rock band… …   Wikipedia

  • Rhino's — rhino´s energy GmbH Unternehmensform GmbH Unternehmenssitz München Airport Branche …   Deutsch Wikipedia

  • Rhino’s — rhino´s energy GmbH Rechtsform GmbH Sitz Widenmayerstr. 27 80538 München Branche Getränke …   Deutsch Wikipedia

  • Rhino — Saltar a navegación, búsqueda Para el villano de Márvel, véase Rhino (cómics). Rhino Desarrollador Fundación Mozilla mozilla.org/rhino …   Wikipedia Español

  • RHINO — Cette page d’homonymie répertorie les différents sujets et articles partageant un même nom. Le mot rhino peut renvoyer à : « Rhino », une abréviation de rhinocéros ; Rhino, un moteur Javascript de Mozilla ; RHINO, le plus …   Wikipédia en Français

  • Rhino — bezeichnet: Rhino (Programmierung), eine quelloffene Implementierung der Skriptsprache JavaScript die Kurzform von Rhinozeros, siehe Nashörner Parti Rhinocéros (frz. für Rhinozerospartei; engl. Rhinoceros Party; kurz Rhino) war von 1963 bis 1993… …   Deutsch Wikipedia

  • Rhino — Rhi*no, n. [Etymol. uncertain.] Gold and silver, or money. [Cant] W. Wagstaffe. [1913 Webster] As long as the rhino lasted. Marryat. [1913 Webster] …   The Collaborative International Dictionary of English

  • rhino — has the plural form rhino (collective) or rhinos (individual) …   Modern English usage

  • rhino — rhino1 [rī′nō] n. pl. rhinos or rhino short for RHINOCEROS rhino2 [rī′nō] n. [< ?] [Brit. Slang] money; cash …   English World dictionary

  • Rhino- — Rhi no A combining form from Greek ??, ???, the nose, as in rhinolith, rhinology. [1913 Webster] …   The Collaborative International Dictionary of English


Поделиться ссылкой на выделенное

Прямая ссылка:
… Нажмите правой клавишей мыши и выберите «Копировать ссылку»