加藤 (2010年10月22日 12:30) 企画開発部 / JAVA
// java.util.HashMapクラスを生成 map = new java.util.HashMap();
// java.utilパッケージをインポート importPackage(java.util); // クラス名だけでHashMapクラスを生成 map = new HashMap();
importPackage(java.util); map = new HashMap(); map.put("hoge1", "1"); map.put("hoge2", "2"); print("hoge1=" + map.get("hoge1")); print("hoge2=" + map.get("hoge2"));
public static void main(String[] args) { ScriptEngineManager mgr = new ScriptEngineManager(); ScriptEngine engine = mgr.getEngineByName("javascript"); // 外部スクリプトファイルを読み込んで実行する。 try { // 外部スクリプトファイルのパスを指定して実行する。 engine.eval(new FileReader("C://../sample.js")); } catch(ScriptException ex) { ex.printStackTrace(); } catch (FileNotFoundException ex) { ex.printStackTrace(); } }
Java SE6のスクリプティング機能(スクリプト内で、Javaのクラスを利用する)
加藤 (2010年10月22日 12:30)
企画開発部 / JAVA
企画開発部の加藤です。
Java SE6(Mustang)の「スクリプティング機能」では、
スクリプト言語内で、Javaのクラスを利用することが可能です。
今回は、標準で準備されているオープンソースのJavaScripの実装である
「Mozilla Rhino」でJavaのクラスを利用する方法を紹介します。
スクリプト上でJavaのオブジェクトを生成する場合も、
他のJavaScriptのクラスを生成する場合と同じく「new」キーワードを使います。
但し、Javaのように変数の型宣言を行いません。
また、基本的に「完全修飾名=パッケージ名も含んだ形式」でクラスを宣言します。
但し、importPackage宣言を利用してJavaのように事前にパッケージを
インポートすることも可能です。
そうすれば、クラス名を指定するだけでクラスをインスタンス化することが出来ます。
今回は、外部のスクリプトファイルで、
「java.util.Mapクラス」を利用するコードを実装し、
それをJava側から呼び出す簡単なサンプルを紹介して終わりとさせていただきます。
スクリプトファイル側の実装(ファイル名:sample.js)
importPackage(java.util); map = new HashMap(); map.put("hoge1", "1"); map.put("hoge2", "2"); print("hoge1=" + map.get("hoge1")); print("hoge2=" + map.get("hoge2"));Java側の実装
public static void main(String[] args) { ScriptEngineManager mgr = new ScriptEngineManager(); ScriptEngine engine = mgr.getEngineByName("javascript"); // 外部スクリプトファイルを読み込んで実行する。 try { // 外部スクリプトファイルのパスを指定して実行する。 engine.eval(new FileReader("C://../sample.js")); } catch(ScriptException ex) { ex.printStackTrace(); } catch (FileNotFoundException ex) { ex.printStackTrace(); } }