Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> java

Java 8 Nashorn: Движок JavaScript с повышенной производительностью и инструмент jjs

В Java 8 был представлен Nashorn — значительно улучшенный движок JavaScript, заменивший Rhino. Nashorn обеспечивает производительность в 2–10 раз выше, так как компилирует код напрямую в байт-код в памяти и передает его JVM. Для повышения производительности используется механизм invokedynamic, введенный в Java 7.

Инструмент командной строки jjs

Для движка Nashorn в Java 8 появился новый инструмент командной строки — jjs, позволяющий выполнять JavaScript-код в консоли.

Интерпретация JS-файла

Создайте и сохраните файл sample.js в папке C:\JAVA.

sample.js

print('Hello World!');

Откройте консоль и выполните команду:

C:\JAVA>jjs sample.js

Результат:

Hello World!

Интерактивный режим jjs

Запустите интерактивную сессию:

C:\JAVA>jjs
jjs> print("Hello, World!")
Hello, World!
jjs> quit()
>>

Передача аргументов

Аргументы передаются через разделитель --:

C:\JAVA>jjs -- a b c
jjs> print('letters: ' + arguments.join(", "))
letters: a, b, c
jjs>

Вызов JavaScript из Java

С помощью ScriptEngineManager можно выполнять JavaScript-код из Java.

Пример

Создайте Java-программу в папке C:\JAVA.

Java8Tester.java

import javax.script.ScriptEngineManager;
import javax.script.ScriptEngine;
import javax.script.ScriptException;

public class Java8Tester {
    public static void main(String args[]) {
        ScriptEngineManager scriptEngineManager = new ScriptEngineManager();
        ScriptEngine nashorn = scriptEngineManager.getEngineByName("nashorn");
        String name = "Mahesh";
        Integer result = null;
        try {
            nashorn.eval("print('" + name + "')");
            result = (Integer) nashorn.eval("10 + 2");
        } catch (ScriptException e) {
            System.out.println("Ошибка выполнения скрипта: " + e.getMessage());
        }
        System.out.println(result.toString());
    }
}

Проверка результата

C:\JAVA>javac Java8Tester.java
C:\JAVA>java Java8Tester

Вывод:

Mahesh
12

Вызов Java из JavaScript

Пример импорта и использования Java-классов в JavaScript.

Создайте и сохраните sample.js в C:\JAVA.

sample.js

var BigDecimal = Java.type('java.math.BigDecimal');
function calculate(amount, percentage) {
    var result = new BigDecimal(amount).multiply(new BigDecimal(percentage)).divide(
        new BigDecimal("100"), 2, BigDecimal.ROUND_HALF_EVEN);
    return result.toPlainString();
}
var result = calculate(568000000000000000023, 13.9);
print(result);

Выполните:

C:\JAVA>jjs sample.js

Результат:

78952000000000000003.20

java

  1. Освоение операторов Java: типы, синтаксис и практические примеры
  2. Комментарии в Java: типы, использование и лучшие практики
  3. Освоение улучшенного цикла for в Java: синтаксис, примеры и лучшие практики
  4. Освоение строк в Java: создание, методы и лучшие практики
  5. Интерфейсы в Java: концепции, реализация и лучшие практики
  6. Анонимные внутренние классы в Java: определение, синтаксис и практические примеры
  7. Try-with-resources в Java: автоматическое управление ресурсами
  8. Аннотации в Java: типы, размещение и практические примеры
  9. Assertions в Java: практическое руководство по обнаружению багов и обеспечению надежности кода
  10. Понимание Java Vector: использование, особенности и сравнение с ArrayList