Nashornの概要

はじめに



画像 Nashorn *は、Oracleが完全にJavaプログラミング言語で開発したJavaScriptエンジンです。 Da Vinci Machine (JSR 292)に基づいており、Java 8(2014年3月にリリースされる予定)の一部として提供されます。 JavaScript(およびスクリプトサポート全般 )の実行はすでにJava 6で行われていましたが、 Rhinoエンジンも使用しましたが、これもJavaで記述されていますが、 Mozilla Foundationによってサポートされています。



Java 8の革新のリストは、すでに以前に作成れています。 この記事では、Nashornの使用方法を説明する簡単な例をいくつか紹介します。





申込み



JavaでJavaScriptが必要なのはなぜですか? 例:





使用例



準備段階


JDK 8 Early Accessをインストールします。 テキストの残りの部分では、Java 8に対してjavac



およびjava



コマンドが実行されることを前提としています。



Hello World!


 import javax.script.*; public class EvalScript { public static void main(String[] args) throws Exception { // create a script engine manager ScriptEngineManager factory = new ScriptEngineManager(); // create a Nashorn script engine ScriptEngine engine = factory.getEngineByName("nashorn"); // evaluate JavaScript statement try { engine.eval("print('Hello, World!');"); } catch (final ScriptException se) { se.printStackTrace(); } } }
      
      





クラスのコンパイル:

 ./javac EvalScript.java
      
      





そしてそれを実行します:

 ./java EvalScript
      
      





結論がわかります。

 Hello, World!
      
      





JavaScript + Java


Nashornでは、 Javaクラスを使用してプログラムを作成できます。 次の例を考えてみましょう。



MyScript.js


 var MyClass = Java.type("EvalScript.MyClass"); var my = new MyClass(); my.printMsg("Hello!");
      
      





EvalScript.java


 import javax.script.*; import java.io.*; public class EvalScript { public static void main(String[] args) throws Exception { // create a script engine manager ScriptEngineManager factory = new ScriptEngineManager(); // create a Nashorn script engine ScriptEngine engine = factory.getEngineByName("nashorn"); // evaluate JavaScript statement try { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); engine.eval(br); } catch (final ScriptException se) { se.printStackTrace(); } } public static class MyClass { public void printMsg(String msg) { System.out.println("printMsg : "+msg); } } }
      
      





たとえば、内部クラスを作成し(これは制限ではありません。別のクラスも作成できます)、JavaScriptコードから呼び出しました。 クラスをコンパイルし、jsコードを入力に渡すことで実行します。

 ./java EvalScript < MyScript.js
      
      





結論がわかります。

 printMsg : Hello!
      
      







おわりに



この機会をどのように使用するかを自分で決めてください。 プログラマーではなく、アプリケーション管理者がアプリケーションインターフェイスを介して直接構成できる既存のJavaプロジェクトに自動化を導入する必要があるときに興味を持ちました(同時に、アプリケーションコンポーネントの再コンパイルは必要ありません)。



使用した材料:








* Nashornは、ロシア語で「サイ」、英語で「サイ」として翻訳されるドイツ語です。これは、Javaで実装され、Mozilla FoundationがサポートするJavaScriptエンジンの名前であるRhinoを反映しています。 Rhinoは、O'Reilly MediaからリリースされたJavaScriptに関する本の表紙に描かれた動物にちなんで命名されました。



All Articles