Latest web development tutorials

Javaの8 Nashorn JavaScriptの

Javaの8の新機能 Javaの8の新機能


JavaScriptのエンジンをNashorn。

最初からJDK 1.8、NashornがRhinoの(JDK 1.6、JDK1.7)がJavaの組み込みJavaScriptエンジンになった置換しました。 Nashornは完全にはECMAScript 5.1仕様といくつかの拡張機能をサポートしています。 これは、新しい言語の使用に基づいているinvokedynamicの中で、JDK 7で導入された含まれていJSR 292、JavaScriptはJavaバイトコードにコンパイルしています。

2-10倍のパフォーマンスをもたらし、以前のRhinoの実現、と比較。


JJS

JJS Nashornエンジンは、ベースのコマンドラインツールです。 これは、パラメータのJavaScriptソースコードの一部を受け入れ、ソースコードを実行します。

たとえば、我々は次の内容のsample.jsファイルを作成します。

print('Hello World!');

コンソールを開き、次のコマンドを入力します。

$ jjs sample.js

上記のプログラムの出力は、次のとおりです。

Hello World!

JJSインタラクティブプログラミング

コンソールを開き、次のコマンドを入力します。

$ jjs
jjs> print("Hello, World!")
Hello, World!
jjs> quit()
>>

パラメータを渡します

コンソールを開き、次のコマンドを入力します。

$ jjs -- a b c
jjs> print('字母: ' +arguments.join(", "))
字母: a, b, c
jjs> 

JavaはJavaScriptを呼び出します

ScriptEngineManager、JavaScriptコードは、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 = "w3big";
      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());
   }
}

上記のスクリプトの実装、出力は次のようになります。

$ javac Java8Tester.java 
$ java Java8Tester
w3big
12


Javaを呼び出すJavaScriptの

次の例は、JavaScriptでのJavaクラスを参照する方法を示しています。

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);

私たちは、上記のJJSのコマンドスクリプトを使用し、次のように、出力結果は次のとおりです。

$ jjs sample.js
78952000000000002017.94

Javaの8の新機能 Javaの8の新機能