はじめに
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が必要なのはなぜですか? 例:
- Javaよりも単純な言語でビジネスロジックを説明する(基本的なプログラミングスキルを持つドメインスペシャリストを含む)
- モジュール式のプラグイン拡張可能なアプリケーションアーキテクチャと、既存のスクリプトのアプリケーションへの統合を提供する
- Java FXで使用する
- Webアプリケーションでさまざまな方法で使用 する
使用例
準備段階
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プロジェクトに自動化を導入する必要があるときに興味を持ちました(同時に、アプリケーションコンポーネントの再コンパイルは必要ありません)。
使用した材料:
- http://download.java.net/jdk8/docs/technotes/guides/scripting/nashorn/
- http://ru.wikipedia.org/wiki/Nashorn_(JavaScriptエンジン)
- https://blogs.oracle.com/nashorn/
* Nashornは、ロシア語で「サイ」、英語で「サイ」として翻訳されるドイツ語です。これは、Javaで実装され、Mozilla FoundationがサポートするJavaScriptエンジンの名前であるRhinoを反映しています。 Rhinoは、O'Reilly MediaからリリースされたJavaScriptに関する本の表紙に描かれた動物にちなんで命名されました。