最近の更新

2015年8月14日金曜日

JSR223でJavaの自作クラスを渡す

【目的】
JavaでJSR223を利用し、JavaScriptの処理にJavaで自作したクラスを渡します。。
※JDK6以上が必要。



【手順】
1.「Javaプロジェクトの作成方法」の手順で、「JSR223Sample010-ClassVariable」といプロジェクトを作成。
2.「Javaクラスファイルの作成方法」の手順で、「Main.java」というクラスファイルを作成。
3.「Main.java」を以下の様に入力。
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;

public class Main {
    public static void main(String[] args) throws ScriptException, NoSuchMethodException {
        ScriptEngineManager scriptEngineManager = new ScriptEngineManager();
        ScriptEngine scriptEngine = scriptEngineManager.getEngineByName("JavaScript");

        if (scriptEngine == null) {
            System.err.println("ScriptEngineの作成に失敗しました。");
            System.exit(1);
        }

        scriptEngine.put("person", new Person("亜居鵜 絵御", 23));
        scriptEngine.eval("println('名前=' + person.getName())");
        scriptEngine.eval("println('年齢=' + person.getAge())");
    }
}

class Person {
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

4.「Ctrl+Shift+F」を押し、コードをフォーマッティング。
5.「Ctrl+S」を押し、ファイルを保存。
6.「Javaプロジェクトの実行方法」の手順で、「Main.java」を実行。
7.以下の様にコンソールに出力されていれば成功です。
(※コンソールが表示されていない場合は、「コンソール・ビューの表示方法」を確認)
名前=亜居鵜 絵御
年齢=23



以上です。

JSR233で四則演算時に丸め誤差を無くす

【目的】
JavaでJSR223を利用し、JavaScriptで四則演算時の丸め誤差を無くします。
※JDK6以上が必要。



【手順】
1.「Javaプロジェクトの作成方法」の手順で、「JSR223Sample009-BigDecimalCalc」といプロジェクトを作成。
2.「Javaクラスファイルの作成方法」の手順で、「Main.java」というクラスファイルを作成。
3.「Main.java」を以下の様に入力。
import java.math.BigDecimal;

import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;

public class Main {
    public static void main(String[] args) throws ScriptException, NoSuchMethodException {
        ScriptEngineManager scriptEngineManager = new ScriptEngineManager();
        ScriptEngine scriptEngine = scriptEngineManager.getEngineByName("JavaScript");

        if (scriptEngine == null) {
            System.err.println("ScriptEngineの作成に失敗しました。");
            System.exit(1);
        }

        scriptEngine.put("calc", new Calc());
        scriptEngine.put("param1", 0.1);
        scriptEngine.put("param2", 0.2);
        String addResult = scriptEngine.eval("calc.add(param1, param2)").toString();
        System.out.println("addResult=" + addResult);
    }

}

class Calc {
    public String add(String param1, String param2) {
        return new BigDecimal(param1).add(new BigDecimal(param2)).toString();
    }
}

4.「Ctrl+Shift+F」を押し、コードをフォーマッティング。
5.「Ctrl+S」を押し、ファイルを保存。
6.「Javaプロジェクトの実行方法」の手順で、「Main.java」を実行。
7.以下の様にコンソールに出力されていれば成功です。
(※コンソールが表示されていない場合は、「コンソール・ビューの表示方法」を確認)
addResult=0.3



以上です。

JSR233で四則演算時に丸め誤差

【目的】
JavaでJSR223を利用し、JavaScriptで四則演算時に丸め誤差が発生するのを確認します。
※JDK6以上が必要。



【手順】
1.「Javaプロジェクトの作成方法」の手順で、「JSR223Sample008-MarumeGosa」といプロジェクトを作成。
2.「Javaクラスファイルの作成方法」の手順で、「Main.java」というクラスファイルを作成。
3.「Main.java」を以下の様に入力。
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;

public class Main {
    public static void main(String[] args) throws ScriptException, NoSuchMethodException {
        ScriptEngineManager scriptEngineManager = new ScriptEngineManager();
        ScriptEngine scriptEngine = scriptEngineManager.getEngineByName("JavaScript");

        if (scriptEngine == null) {
            System.err.println("ScriptEngineの作成に失敗しました。");
            System.exit(1);
        }

        scriptEngine.put("param1", 0.1);
        scriptEngine.put("param2", 0.2);
        String addResult = scriptEngine.eval("param1 + param2").toString();
        System.out.println("addResult=" + addResult);
    }
}

4.「Ctrl+Shift+F」を押し、コードをフォーマッティング。
5.「Ctrl+S」を押し、ファイルを保存。
6.「Javaプロジェクトの実行方法」の手順で、「Main.java」を実行。
7.以下の様にコンソールに出力されていれば成功です。
(※コンソールが表示されていない場合は、「コンソール・ビューの表示方法」を確認)
addResult=0.30000000000000004



以上です。

JSR233で動的に四則演算

【目的】
JavaでJSR223を利用し、JavaScriptで動的に四則演算を実施します。
※JDK6以上が必要。



【手順】
1.「Javaプロジェクトの作成方法」の手順で、「JSR223Sample007-ArithmeticOperation」といプロジェクトを作成。
2.「Javaクラスファイルの作成方法」の手順で、「Main.java」というクラスファイルを作成。
3.「Main.java」を以下の様に入力。
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;

public class Main {
    public static void main(String[] args) throws ScriptException, NoSuchMethodException {
        ScriptEngineManager scriptEngineManager = new ScriptEngineManager();
        ScriptEngine scriptEngine = scriptEngineManager.getEngineByName("JavaScript");

        if (scriptEngine == null) {
            System.err.println("ScriptEngineの作成に失敗しました。");
            System.exit(1);
        }

        scriptEngine.put("param1", 8);
        scriptEngine.put("param2", 4);
        String addResult = scriptEngine.eval("param1 + param2").toString();
        System.out.println("addResult=" + addResult);

        String subResult = scriptEngine.eval("param1 - param2").toString();
        System.out.println("subResult=" + subResult);

        String mulResult = scriptEngine.eval("param1 * param2").toString();
        System.out.println("mulResult=" + mulResult);

        String divResult = scriptEngine.eval("param1 / param2").toString();
        System.out.println("divResult=" + divResult);
    }
}

4.「Ctrl+Shift+F」を押し、コードをフォーマッティング。
5.「Ctrl+S」を押し、ファイルを保存。
6.「Javaプロジェクトの実行方法」の手順で、「Main.java」を実行。
7.以下の様にコンソールに出力されていれば成功です。
(※コンソールが表示されていない場合は、「コンソール・ビューの表示方法」を確認)
addResult=12.0
subResult=4.0
mulResult=32.0
divResult=2.0



以上です。

JSR233で戻り値を取得する

【目的】
JavaでJSR223を利用し、JavaScriptからの戻り値をJavaで取得します。。
※JDK6以上が必要。



【手順】
1.「Javaプロジェクトの作成方法」の手順で、「JSR223Sample006-FunctionReturn」といプロジェクトを作成。
2.「Javaクラスファイルの作成方法」の手順で、「Main.java」というクラスファイルを作成。
3.「Main.java」を以下の様に入力。
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;

public class Main {
    public static void main(String[] args) throws ScriptException, NoSuchMethodException {
        ScriptEngineManager scriptEngineManager = new ScriptEngineManager();
        ScriptEngine scriptEngine = scriptEngineManager.getEngineByName("JavaScript");

        if (scriptEngine == null) {
            System.err.println("ScriptEngineの作成に失敗しました。");
            System.exit(1);
        }

        String returnValue = scriptEngine.eval("8 + 4").toString();
        System.out.println("returnValue=" + returnValue);
    }
}

4.「Ctrl+Shift+F」を押し、コードをフォーマッティング。
5.「Ctrl+S」を押し、ファイルを保存。
6.「Javaプロジェクトの実行方法」の手順で、「Main.java」を実行。
7.以下の様にコンソールに出力されていれば成功です。
(※コンソールが表示されていない場合は、「コンソール・ビューの表示方法」を確認)
returnValue=12.0



以上です。

JSR223でJavaから変数を渡す

【目的】
JavaでJSR223を利用し、JavaScriptの処理でJavaから変数を渡します。
※JDK6以上が必要。



【手順】
1.「Javaプロジェクトの作成方法」の手順で、「JSR223Sample005-Variable」といプロジェクトを作成。
2.「Javaクラスファイルの作成方法」の手順で、「Main.java」というクラスファイルを作成。
3.「Main.java」を以下の様に入力。
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;

public class Main {
    public static void main(String[] args) throws ScriptException, NoSuchMethodException {
        ScriptEngineManager scriptEngineManager = new ScriptEngineManager();
        ScriptEngine scriptEngine = scriptEngineManager.getEngineByName("JavaScript");

        if (scriptEngine == null) {
            System.err.println("ScriptEngineの作成に失敗しました。");
            System.exit(1);
        }

        scriptEngine.put("param1", 8);
        scriptEngine.eval("println('param1=' + param1)");

        scriptEngine.put("param2", 28.312);
        scriptEngine.eval("println('param2=' + param2)");

        scriptEngine.put("param3", "Hello");
        scriptEngine.eval("println('param3=' + param3)");
    }
}

4.「Ctrl+Shift+F」を押し、コードをフォーマッティング。
5.「Ctrl+S」を押し、ファイルを保存。
6.「Javaプロジェクトの実行方法」の手順で、「Main.java」を実行。
7.以下の様にコンソールに出力されていれば成功です。
(※コンソールが表示されていない場合は、「コンソール・ビューの表示方法」を確認)
param1=8
param2=28.312
param3=Hello



以上です。

JSR223でJavaの関数を呼び出し

【目的】
JavaでJSR223を利用し、JavaScriptの処理からJavaで定義した関数を呼び出します。
※JDK6以上が必要。



【手順】
1.「Javaプロジェクトの作成方法」の手順で、「JSR223Sample004-CallJavaFunction」といプロジェクトを作成。
2.「Javaクラスファイルの作成方法」の手順で、「Main.java」というクラスファイルを作成。
3.「Main.java」を以下の様に入力。
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;

public class Main {
    public static void main(String[] args) throws ScriptException, NoSuchMethodException {
        ScriptEngineManager scriptEngineManager = new ScriptEngineManager();
        ScriptEngine scriptEngine = scriptEngineManager.getEngineByName("JavaScript");

        if (scriptEngine == null) {
            System.err.println("ScriptEngineの作成に失敗しました。");
            System.exit(1);
        }

        scriptEngine.put("main", new Main());
        scriptEngine.eval("main.sayHello();");
    }

    public void sayHello() {
        System.out.println("Hello World!");
    }
}

4.「Ctrl+Shift+F」を押し、コードをフォーマッティング。
5.「Ctrl+S」を押し、ファイルを保存。
6.「Javaプロジェクトの実行方法」の手順で、「Main.java」を実行。
7.以下の様にコンソールに出力されていれば成功です。
(※コンソールが表示されていない場合は、「コンソール・ビューの表示方法」を確認)
Hello World!



以上です。

JSR223で動的定義関数をJavaから呼び出し

【目的】
JavaでJSR223を利用し、JavaScriptの処理で動的に定義した関数をJavaから呼び出します。
※JDK6以上が必要。



【手順】
1.「Javaプロジェクトの作成方法」の手順で、「JSR223Sample003-CallDefineFunction」といプロジェクトを作成。
2.「Javaクラスファイルの作成方法」の手順で、「Main.java」というクラスファイルを作成。
3.「Main.java」を以下の様に入力。
import javax.script.Invocable;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;

public class Main {
    public static void main(String[] args) throws ScriptException, NoSuchMethodException {
        ScriptEngineManager scriptEngineManager = new ScriptEngineManager();
        ScriptEngine scriptEngine = scriptEngineManager.getEngineByName("JavaScript");

        if (scriptEngine == null) {
            System.err.println("ScriptEngineの作成に失敗しました。");
            System.exit(1);
        }

        scriptEngine.eval("function printMessage(message1, message2) {" +
                          "    println('メッセージ1 = ' + message1);" +
                          "    println('メッセージ2 = ' + message2);" +
                          "}"
                    );
        ((Invocable) scriptEngine).invokeFunction("printMessage", "Hello World!", "ハロー ワールド");
    }
}

4.「Ctrl+Shift+F」を押し、コードをフォーマッティング。
5.「Ctrl+S」を押し、ファイルを保存。
6.「Javaプロジェクトの実行方法」の手順で、「Main.java」を実行。
7.以下の様にコンソールに出力されていれば成功です。
(※コンソールが表示されていない場合は、「コンソール・ビューの表示方法」を確認)
メッセージ1 = Hello World!
メッセージ2 = ハロー ワールド



以上です。

JSR223で関数を動的定義

【目的】
JavaでJSR223を利用し、JavaScriptの処理で関数を動的に定義します。
※JDK6以上が必要。



【手順】
1.「Javaプロジェクトの作成方法」の手順で、「JSR223Sample002-DefineFunction」といプロジェクトを作成。
2.「Javaクラスファイルの作成方法」の手順で、「Main.java」というクラスファイルを作成。
3.「Main.java」を以下の様に入力。
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;

public class Main {
    public static void main(String[] args) throws ScriptException {
        ScriptEngineManager scriptEngineManager = new ScriptEngineManager();
        ScriptEngine scriptEngine = scriptEngineManager.getEngineByName("JavaScript");

        if (scriptEngine == null) {
            System.err.println("ScriptEngineの作成に失敗しました。");
            System.exit(1);
        }

        scriptEngine.eval("function sayHello() {" +
                          "    println('Hello World!')" +
                          "}"
                    );
        scriptEngine.eval("sayHello()");
    }
}

4.「Ctrl+Shift+F」を押し、コードをフォーマッティング。
5.「Ctrl+S」を押し、ファイルを保存。
6.「Javaプロジェクトの実行方法」の手順で、「Main.java」を実行。
7.以下の様にコンソールに出力されていれば成功です。
(※コンソールが表示されていない場合は、「コンソール・ビューの表示方法」を確認)
Hello World!



以上です。

JSR223で文字列出力

【目的】
JavaでJSR223を利用し、JavaScriptの処理で文字列を出力します。
※JDK6以上が必要。



【手順】
1.「Javaプロジェクトの作成方法」の手順で、「JSR223Sample001-HelloWorld」といプロジェクトを作成。
2.「Javaクラスファイルの作成方法」の手順で、「Main.java」というクラスファイルを作成。
3.「Main.java」を以下の様に入力。
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;

public class Main {
    public static void main(String[] args) throws ScriptException {
        ScriptEngineManager scriptEngineManager = new ScriptEngineManager();
        ScriptEngine scriptEngine = scriptEngineManager.getEngineByName("JavaScript");

        if (scriptEngine == null) {
            System.err.println("ScriptEngineの作成に失敗しました。");
            System.exit(1);
        }

        scriptEngine.eval("println('Hello World!')");
    }
}

4.「Ctrl+Shift+F」を押し、コードをフォーマッティング。
5.「Ctrl+S」を押し、ファイルを保存。
6.「Javaプロジェクトの実行方法」の手順で、「Main.java」を実行。
7.以下の様にコンソールに出力されていれば成功です。
(※コンソールが表示されていない場合は、「コンソール・ビューの表示方法」を確認)
Hello World!



以上です。

関連記事