Java Platform, Standard Edition Nashornユーザーズ・ガイド
目次      

1はじめに

この章では、Nashornエンジンの概要、およびこれを使用してJavaアプリケーション内またはコマンド行のJavaScriptコードを解釈する方法について説明します。

Nashornエンジンは、ECMAScript言語仕様第5.1版の実装です脚注1。Nashornプロジェクトの一環として、完全にJava言語で開発されました脚注2。このコードは、Da Vinci Machine脚注3の新機能に基づいています。Da Vinci Machineは、「Java Specification Request (JSR) 292: Java プラットフォームにおける動的型付け言語のサポート」脚注4のリファレンス実装です。

Nashornエンジンは、Java SE Development Kit (JDK)に含まれています。JavaスクリプトAPIを使用してJavaアプリケーションからNashornを呼び出し、埋め込まれたスクリプトを解釈できます。また、スクリプトをjjsまたはjrunscriptツールに渡すこともできます。


注:

Nashornは、JDKに含まれる唯一のJavaScriptエンジンです。ただし、「JSR 223: Java プラットフォームのためのスクリプト」脚注1に準拠するスクリプト・エンジンを使用することも、独自のエンジンを実装することもできます。詳細は、『Javaスクリプト・プログラマーズ・ガイド』(http://docs.oracle.com/javase/8/docs/technotes/guides/scripting/prog_guide/index.html)を参照してください

脚注1http://jcp.org/en/jsr/detail?id=223

JavaコードからのNashornの呼出し

Javaアプリケーション内でNashornを呼び出すには、JavaスクリプトAPIを使用してNashornエンジンのインスタンスを作成します。

Nashornエンジンのインスタンスを取得するには:

  1. javax.scriptパッケージをインポートします。

    JavaスクリプトAPIは、このパッケージ内のクラスとインタフェースで構成されます。javax.scriptパッケージの詳細は、仕様(http://docs.oracle.com/javase/jp/8/api/javax/script/package-summary.html)を参照してください。

  2. ScriptEngineManagerオブジェクトを作成します。

    ScriptEngineManagerクラスは、JavaスクリプトAPIの出発点です。ScriptEngineManagerオブジェクトを使用して、ScriptEngineオブジェクトをインスタンス化し、各オブジェクトが共有するグローバル変数を管理します。

  3. getEngineByName()メソッドを使用して、マネージャからScriptEngineオブジェクトを取得します。

    このメソッドは、スクリプト・エンジンの名前のString引数を1つ取ります。Nashornエンジンのインスタンスを取得するには、"nashorn"を渡します。または、次のいずれかを使用することもできます: "Nashorn""javascript""JavaScript""js""JS""ecmascript""ECMAScript"

Nashornエンジンのインスタンスを取得したら、それを使用して文とスクリプト・ファイルの評価や変数の設定などを行います。例1-1は、Nashornを使用してprint("Hello, World!");文を評価する簡単なJavaアプリケーション・コードを示しています。


注:

eval()メソッドは、適切な処理を必要とするScriptExceptionをスローします。

Javaコードでスクリプトを使用する方法の詳細は、『Javaスクリプト・プログラマーズ・ガイド』(http://docs.oracle.com/javase/8/docs/technotes/guides/scripting/prog_guide/index.html)を参照してください

コマンド行からのNashornの呼出し

Nashornエンジンを呼び出すために使用できるコマンド行ツールは、2つあります。


脚注の凡例

脚注1:http://www.ecma-international.org/publications/standards/Ecma-262.html
脚注2:http://openjdk.java.net/projects/nashorn/
脚注3:http://openjdk.java.net/projects/mlvm/
脚注4:http://jcp.org/en/jsr/detail?id=292
目次

Copyright © 1993, 2020, Oracle and/or its affiliates. All rights reserved.