Java - Nashorn JavaScript Engine (русский)

Здравствуйте, молодые программисты! Я рад стать вашим проводником в этом захватывающем путешествии по миру Java и Nashorn JavaScript Engine. Как человек, который учит компьютерные науки уже более десяти лет, я могу вам заверить, что это будет весело и поучительно. Так что начнем!

Java - Nashorn JavaScript

Что такое 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

  1. Создайте файл с именем greet.js и следующим содержимым:
var name = "Алиса";
print("Привет, " + name + "!");
  1. Запустите его с помощью 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