Java8-nashorn-java-script
提供:Dev Guides
Java 8-Nashorn JavaScript
Java 8では、既存のRhinoを置き換えるために、はるかに改善されたjavascriptエンジンであるNashornが導入されました。 Nashornは、メモリ内のコードを直接コンパイルし、バイトコードをJVMに渡すため、2〜10倍のパフォーマンスを提供します。 Nashornは、パフォーマンスを改善するためにJava 7で導入された呼び出しダイナミクス機能を使用しています。
jjs
Nashornエンジンの場合、JAVA 8では、コンソールでjavascriptコードを実行するための新しいコマンドラインツール jjs が導入されています。
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>
JavaからJavaScriptを呼び出す
ScriptEngineManagerを使用すると、JavaでJavaScriptコードを呼び出して解釈できます。
例
C:\> JAVAなどで選択した任意のエディターを使用して、次の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("Error executing script: "+ e.getMessage());
}
System.out.println(result.toString());
}
}
結果を確認する
次のように javac コンパイラを使用してクラスをコンパイルします-
C:\JAVA>javac Java8Tester.java
次のようにJava8Testerを実行します-
C:\JAVA>java Java8Tester
それは次の結果を生成する必要があります-
Mahesh
12
JavaScriptからJavaを呼び出す
次の例は、JavaスクリプトでJavaクラスをインポートして使用する方法を説明しています。
c:\> JAVAフォルダーに sample.js を作成して保存します。
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