モジュール jdk.scripting.nashorn
Nashornスクリプト・エンジンの実装と、ECMAScript 5.1で記述されたプログラムの実行時環境を提供します。
Nashornは、Javaプラットフォーム固有の機能への主要なAPIエントリ・ポイントである
Nashornは、ECMAScript 5.1で書かれたプログラムの実行環境です。
使用法
Nashornを使用するには、javax.script
パッケージの「JSR-223 "Java Platformのスクリプティング"」 APIを使用することをお勧めします。 通常、NashornのScriptEngine
インスタンスは次のものを使用して取得します:
import javax.script.*; ... ScriptEngine nashornEngine = new ScriptEngineManager().getEngineByName("nashorn");他のJSR-223スクリプト・エンジンと同じように使用してください。 詳細については、
jdk.nashorn.api.scripting
パッケージを参照してください。
互換性
NashornはECMA-262 Standard、Edition 5.1に100%適合しています。 「JSR-292 "Java Platformでの動的型付き言語のサポート"」仕様の(しばしば"invokedynamic"と呼ばれる)と既に述べたJSR-223を実装するJava仮想マシンが必要です。Javaプラットフォームとの相互運用性
Nashornは、100%ECMAScript 5.1ランタイムに加えて、ECMAScriptプログラムとJavaプラットフォームとの相互運用性機能を提供します。 一般に、スクリプト・エンジンのコンテキストに入れられたJavaオブジェクトは、スクリプトから見ることができます。 標準に関しては、このようなJavaオブジェクトは、セクション4.3.8で定義されているように、"ネイティブ・オブジェクト"ではなく"ホスト・オブジェクト"とみなされます。 この区別は、ネイティブ・オブジェクトと比較して、それらを扱う際の特定の意味上の相違を許します。 ほとんどの場合、Javaオブジェクトはネイティブ・オブジェクトと同様に動作: メソッドを呼び出してプロパティを取得して設定することができます。 ただし、ほとんどの場合、それらに任意のプロパティを追加することや、既存のプロパティを削除することはできません。Javaコレクション処理
ネイティブJava配列とList
は、プロパティ・アクセッサを通じて要素へのインデックス付きアクセスをサポートし、Map
は、ドットと大カッコの両方のプロパティ・アクセサを使用してプロパティと要素の両方のアクセスをサポートしますが、ドット演算子はオブジェクト・プロパティ(getXxx
およびsetXxx
メソッドとして定義されているフィールドとプロパティ)大カッコの演算子はマップ要素に優先順位を与えます。 ネイティブJava配列は、length
プロパティを公開します。
ECMAScriptプリミティブ型
number、string、およびbooleanのECMAScriptプリミティブ型は、Number
、CharSequence
、およびBoolean
オブジェクトで表されます。 最も頻繁に使用される数値型はDouble
ですが、最も頻繁に使用される文字列型はString
ですが、さまざまな内部最適化によってNumber
の他のサブクラスとCharSequence
の内部実装が使用されるため、依存しないでください。
型変換
Javaオブジェクトのメソッドが呼び出されると、引数はすべての許可されたECMAScript変換を使用してJavaメソッドの仮パラメータ型に変換されます。 一般的に、文字列から数字への変換は、標準セクション9.3 "ToNumber"などに従って成功するでしょう。これは驚くべきことです。文字列をブール値に、数値をブール値に、オブジェクトを数値に、オブジェクトをすべて文字列に変換します。 宣言されたJavaメソッドのパラメータ型がjava.lang.Object
である場合、Nashornオブジェクトは何も変換せずに渡されます。具体的には、渡されるJavaScriptの値がプリミティブな文字列型の場合は、java.lang.CharSequence
のみに依存することができます。値が数値の場合は、java.lang.Number
にのみ依存できます。 Javaのメソッド宣言されたパラメータの型がより具体的な(例えばjava.lang.String
またはjava.lang.Double
)である場合、Nashornはもちろん必要な型が渡されることを保証します。
SAM型
Javaメソッドを呼び出す際の特別な拡張として、Java型がいわゆる"単一抽象メソッド"または"SAM"型の引数の代わりにECMAScript関数オブジェクトを渡すことができます。 この名前は通常シングル・メソッドのインタフェースをカバーしますが、Nashornは多目的です。その抽象メソッドがすべて同じ名前のオーバーロードであり、インタフェースか抽象メソッドのいずれかである場合、型をSAM型として認識します引数なしのコンストラクタを持つクラス。 型自体はpublicでなければならず、コンストラクタとメソッドはpublicでもprotectedでもかまいません。 同じ名前の複数の抽象オーバーロードがある場合、単一の関数はすべての関数「さらに、同じ名前の非抽象メソッドをオーバーライド」の共有実装として機能します。 これは、ECMAScriptにオーバーロードされたメソッドの概念がないという事実と一致するように行われます。Java
オブジェクト
Nashornは、Javaプラットフォーム固有の機能への主要なAPIエントリ・ポイントであるJava
という名前の非標準グローバル・オブジェクトを公開しています。 これを使用して、Javaクラスのインスタンスを作成したり、Java配列からネイティブ配列に変換したり戻したりすることができます。
その他の非標準組み込みオブジェクト
Java
に加えて、Nashornは標準以外の組み込みオブジェクトも公開しています: JSAdapter
, JavaImporter
, Packages
-
-
パッケージ
エクスポート パッケージ 説明 jdk.nashorn.api.scripting このパッケージでは、Nashornを使用する推奨方法であるjavax.script
の統合を提供します。jdk.nashorn.api.tree NashornパーサーAPIは、ECMAScriptソース・コードを抽象構文ツリー(AST)およびParserとして表現するためのインタフェースを提供し、ECMAScriptソース・スクリプトを解析します。間接エクスポート From パッケージ java.scripting javax.script
-
モジュール
必要 修飾子 モジュール 説明 transitive java.scripting スクリプトAPIを定義します。
-
Services
提供パッケージ 型 説明 ScriptEngineFactory ScriptEngineFactory
は、ScriptEngines
の説明およびインスタンス化に使用されます。
-