Главная
Блог разработчиков phpBB
 
+ 17 предустановленных модов
+ SEO-оптимизация форума
+ авторизация через соц. сети
+ защита от спама

Вступление в Nashorn

Anna | 4.06.2014 | нет комментариев
Nashorn* — движок JavaScript, разрабатываемый всецело на языке программирования Java компанией Oracle. Основан на Da Vinci Machine (JSR 292) и будет доступен в составе Java 8 (релиз которой ожидается в марте 2014 года). Стоит подметить что выполнение JavaScript (и помощь скриптов в целом) была теснее в Java 6, но в ней применялся движок Rhino, также написанный на Java, но поддерживаемый Mozilla Foundation.

О списке новшеств в Java 8 теснее писали ранее. В данной статье будет приведена пара примитивных примеров, которая даст вам представление об применении Nashorn.

Использование

Для чего необходим JavaScript в Java? Скажем:

Примеры применения

Подготовительный этап

Устанавливаем JDK 8 Early Access. Дальше по тексту подразумевается что команды javac и java выполняются для Java 8.

Hello, World!
import javax.script.*;

public class EvalScript {
    public static void main(String[] args) throws Exception {
        // create a script engine manager
        ScriptEngineManager factory = new ScriptEngineManager();
        // create a Nashorn script engine
        ScriptEngine engine = factory.getEngineByName("nashorn");
        // evaluate JavaScript statement
        try {
            engine.eval("print('Hello, World!');");
        } catch (final ScriptException se) { se.printStackTrace(); }
    }
}

Компилируем класс:

./javac EvalScript.java 

И исполняем его:

./java EvalScript

Видим итог:

Hello, World!
JavaScript Java

Nashorn разрешает применять классы Java для создания программ. Разглядим дальнейший пример:

MyScript.js
var MyClass = Java.type("EvalScript.MyClass");
var my = new MyClass();
my.printMsg("Hello!");
EvalScript.java
import javax.script.*;
import java.io.*;

public class EvalScript {

    public static void main(String[] args) throws Exception {
        // create a script engine manager
        ScriptEngineManager factory = new ScriptEngineManager();
        // create a Nashorn script engine
        ScriptEngine engine = factory.getEngineByName("nashorn");
        // evaluate JavaScript statement
        try {
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            engine.eval(br);
        } catch (final ScriptException se) { se.printStackTrace(); }
    }

    public static class MyClass {
        public void printMsg(String msg) {
            System.out.println("printMsg : " msg);
        }
    }
}

Для примера я сотворил свой внутренний класс (что не является лимитацией, я мог бы сделать и обособленный класс), и вызвал его из JavaScript кода. Осталось скомпилировать класс и запустить его передав на вход наш js-код:

./java EvalScript < MyScript.js

Видим итог:

printMsg : Hello!

Итог

Решайте сами как применять такую вероятность. Я заинтересовался, когда у меня возникла надобность внедрить в присутствующий Java-план автоматизацию, которую мог бы настраивать не программист, а менеджер приложения, прямо через интерфейс приложения (и при этом не требовалась бы перекомпиляция компонент приложения).

Используемые материалы:

* Nashorn — немецкое слово, которое переводится на русский как «носорог», а на английский как «rhinoceros», что перекликается с Rhino, наименованием движка JavaScript, реализованного в Java и поддерживаемого компанией Mozilla Foundation. Rhino, в свою очередь, получил наименование в честь звериного изображённого на обложке книги о JavaScript, выпущенной издательством O’Reilly Media.

Источник: programmingmaster.ru

Оставить комментарий
Форум phpBB, русская поддержка форума phpBB
Рейтинг@Mail.ru 2008 - 2017 © BB3x.ru - русская поддержка форума phpBB