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


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

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