Java - Nashorn JavaScript Engine (русский)
Здравствуйте, молодые программисты! Я рад стать вашим проводником в этом захватывающем путешествии по миру Java и Nashorn JavaScript Engine. Как человек, который учит компьютерные науки уже более десяти лет, я могу вам заверить, что это будет весело и поучительно. Так что начнем!
Что такое Nashorn JavaScript Engine?
Nashorn (произносится как "насс-хорн") — это легковесный, высокопроизводительный движок JavaScript, который был представлен в Java 8. Он является своего рода мостом между Java и JavaScript, позволяя вам выполнять код JavaScript внутри Java-приложения. Круто, правда?
Немного истории
В мои ранние дни преподавания нам приходилось использовать отдельные среды для Java и JavaScript. Это было как пытаться сделать бутерброд с персиковым маслом и вареньем на двух разных тарелках! Nashorn изменил все это, объединив два мощных языка в одно вкусное сочетание.
Выполнение JavaScript через инструменты командной строки
Начнем с чего-то простого. Nashorn поставляется с инструментом командной строки под названием jjs
, который позволяет вам выполнять JavaScript прямо из вашего терминала.
Пример 1: Привет, Nashorn!
Откройте вашу командную строку и введите:
jjs
print("Привет, Nashorn!");
Вы должны увидеть "Привет, Nashorn!" на вашем экране. Поздравляю! Вы только что выполнили свой первый код JavaScript с помощью Nashorn.
Выполнение JavaScript прямо в командной строке
Вы также можете запускать файлы JavaScript прямо из командной строки.
Пример 2: Запуск файла JavaScript
- Создайте файл с именем
greet.js
и следующим содержимым:
var name = "Алиса";
print("Привет, " + name + "!");
- Запустите его с помощью jjs:
jjs greet.js
Вы должны увидеть "Привет, Алиса!" на вашем экране.
Передача аргументов в jjs
Nashorn позволяет вам передавать аргументы в ваш код JavaScript, точно так же, как вы это делали бы с Java.
Пример 3: Передача аргументов
Создайте файл с именем greet_with_args.js
:
var name = $ARG[0];
print("Привет, " + name + "!");
Запустите его с аргументом:
jjs greet_with_args.js -- Боб
Вы должны увидеть "Привет, Боб!".
Вызов JavaScript из Java
Теперь давайте перейдем к действительно интересной части — вызову JavaScript из вашего кода на Java!
Пример 4: Выполнение JavaScript в Java
import javax.script.*;
public class JavaScriptInJava {
public static void main(String[] args) throws ScriptException {
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("nashorn");
engine.eval("print('Привет из JavaScript!');");
}
}
Когда вы выполните эту Java-программу, она выведет "Привет из JavaScript!" с помощью движка Nashorn.
Вызов Java из JavaScript
Настоящая сила Nashorn заключается в его способности использовать классы и методы Java в коде JavaScript.
Пример 5: Использование классов Java в JavaScript
import javax.script.*;
public class JavaInJavaScript {
public static void main(String[] args) throws ScriptException {
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("nashorn");
engine.eval("var ArrayList = Java.type('java.util.ArrayList');" +
"var list = new ArrayList();" +
"list.add('Привет');" +
"list.add('Мир');" +
"print(list);");
}
}
Этот код создает Java ArrayList, добавляет в него элементы и выводит его — все это из кода JavaScript!
Дополнительные функции
Nashorn предлагает множество дополнительных функций, которые делают его мощным инструментом для разработчиков Java.
Пример 6: Использование лямбда-выражений Java 8
import javax.script.*;
public class LambdaInNashorn {
public static void main(String[] args) throws ScriptException {
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("nashorn");
engine.eval("var list = [1, 2, 3, 4, 5];" +
"list.forEach(function(num) { print(num * 2); });");
}
}
Этот пример демонстрирует, как вы можете использовать лямбда-выражения Java 8 в коде JavaScript, выполняемом на Nashorn.
Таблица методов
Вот таблица некоторых важных методов, которые вы можете использовать с Nashorn:
Метод | Описание |
---|---|
ScriptEngineManager.getEngineByName("nashorn") |
Получение движка Nashorn |
ScriptEngine.eval(String script) |
Выполнение JavaScript скрипта |
ScriptEngine.put(String key, Object value) |
Установка переменной в движке |
ScriptEngine.get(String key) |
Получение переменной из движка |
Invocable.invokeFunction(String name, Object... args) |
Вызов JavaScript функции |
Заключение
Итак, что же мы выяснили, друзья? Мы только что почти коснулись поверхности того, что может Nashorn, но я надеюсь, что это введение пробудило ваше любопытство. Помните, ключ к мастерству в программировании — это практика, так что не стесняйтесь экспериментировать с этими примерами и создавать свои собственные.
Как я всегда говорю своим студентам, программирование — это как езда на велосипеде: может показаться страшно с начала, но с практикой вы быстро наберете скорость. И кто знает? Может быть, однажды вы будете учить других о чудесах Nashorn!
Продолжайте программировать, учиться и, что самое важное, наслаждаться процессом! До свидания, ваш добрый сосед-преподаватель компьютерных наук подписывается. Счастливого кодирования!
Credits: Image by storyset