パッケージ javax.script
スクリプトAPIは、Javaスクリプト・エンジンを定義するインタフェースとクラスで構成され、Javaアプリケーションで使用するためのフレームワークを提供します。 このAPIは、スクリプト言語で記述されたプログラムをJavaアプリケーション内で実行するアプリケーション・プログラマを対象としています。 通常、スクリプト言語のプログラムは、アプリケーションのエンド・ユーザーによって提供されます。
javax.script
パッケージの主な機能は次のとおりです。
スクリプトの実行: スクリプトとは、スクリプト・エンジンによって実行されるプログラムのソースとして使用される文字のストリームです。 スクリプトの実行では、
ScriptEngine
のeval
メソッドとInvocable
インタフェースのメソッドを使用します。バインディング: この機能によって、Javaオブジェクトを名前付き変数としてスクリプト・プログラムに公開できます。
Bindings
とScriptContext
クラスがこの目的に使用されます。コンパイル: この機能によって、スクリプト・エンジンのフロント・エンドによって生成された中間コードを格納し、繰返し実行することができます。 これは、同じスクリプトを複数回実行するアプリケーションの場合に便利です。 エンジンのフロント・エンドはスクリプト実行のたびにではなく、スクリプトごとに1回だけ実行すればよいので、これらのアプリケーションの効率を向上させることができます。 この機能はオプションであり、スクリプト・エンジンが実装しない可能性があることに注意してください。 呼出し側で、instanceofチェックを使用して、
Compilable
インタフェースが利用可能かどうかをチェックする必要があります。呼び出し: この機能によって、スクリプト・エンジンのフロント・エンドによって生成された中間コードを再利用することができます。 コンパイルでは中間コードによって表されるスクリプト全体の再実行が可能になるのに対して、呼出しの機能ではスクリプト内の個々の手続き/メソッドが再実行可能になります。 コンパイルの場合にはあることですが、すべてのスクリプト・エンジンでこの機能が提供される必要はありません。 呼出し側で、
Invocable
が利用可能かどうかをチェックする必要があります。スクリプト・エンジンの検出: Scripting APIに書き込まれたアプリケーションには、スクリプト・エンジンに関する特定の要件があります。 固有のスクリプト言語またはバージョン、あるいはその両方を必要とするものがある一方で、固有の実装エンジンまたはバージョン、あるいはその両方を必要とするものもあります。 スクリプト・エンジンは、実行時の検出と属性の照会が可能となるように、指定された方法でパッケージ化されます。 エンジン発見メカニズムは、
ServiceLoader
クラスで説明されているサービス・プロバイダのロード機能に基づいています。ScriptEngineManager
には、このメカニズムを使用して検出されたすべてのScriptEngineFactory
インスタンスを取得するgetEngineFactories
メソッドが含まれています。ScriptEngineFactory
には、スクリプト・エンジンに関する属性を照会するためのメソッドが含まれます。
- 導入されたバージョン:
- 1.6
-
インタフェース説明キーがすべて
Strings
であるキーと値のペアのマッピングです。再コンパイルを行わずに繰返し実行可能なフォームにスクリプトをコンパイルするメソッドを持つScriptEnginesによって実装されるオプションのインタフェースです。以前に実行されたスクリプト内の手続きの呼出しを許可するメソッドを持つScriptEnginesによって実装されるオプションのインタフェースです。このインタフェースを実装するクラスは、アプリケーションでスクリプト・エンジンと、スコープ設定されたBindingsなどのオブジェクトとを接続するために使用されます。ScriptEngine
は、この仕様のすべての実装で完全に機能することが必要なメソッドを持つ基本インタフェースです。ScriptEngineFactory
は、ScriptEngines
の説明およびインスタンス化に使用されます。 -
クラス説明
eval
メソッドの複数のバリアントに対する標準の実装を提供します。コンパイルの結果を格納するクラスによって拡張されます。ScriptEngineManager
は、ScriptEngine
クラスの検出およびインスタンス化メカニズムを実装します。また、Managerが作成したすべてのエンジンで共有される状態を格納するキーと値のペアのコレクションを維持します。HashMap
または指定されたほかのMap
によって補助されるBindingsの単純な実装です。ScriptContextの単純な実装です。