Java での Groovy の使用に関して 3 つの質問があります。それらはすべて関連しているため、ここでは 1 つの質問のみを作成します。
1) GroovyClassLoader、GroovyShell、GroovyScriptEngine があります。しかし、それらを使用することの違いは何ですか?
たとえば、このコードの場合:
static void runWithGroovyShell() throws Exception {
new GroovyShell().parse(new File("test.groovy")).invokeMethod("hello_world", null);
}
static void runWithGroovyClassLoader() throws Exception {
Class scriptClass = new GroovyClassLoader().parseClass(new File("test.groovy"));
Object scriptInstance = scriptClass.newInstance();
scriptClass.getDeclaredMethod("hello_world", new Class[]{}).invoke(scriptInstance, new Object[]{});
}
static void runWithGroovyScriptEngine() throws Exception {
Class scriptClass = new GroovyScriptEngine(".").loadScriptByName("test.groovy");
Object scriptInstance = scriptClass.newInstance();
scriptClass.getDeclaredMethod("hello_world", new Class[]{}).invoke(scriptInstance, new Object[]{});
}
2) Groovy スクリプトをロードして、コンパイルされた形式でメモリに保持し、必要なときにそのスクリプトで関数を呼び出すことができる最良の方法は何ですか。
3) Java メソッド/クラスを Groovy スクリプトに公開して、必要なときに呼び出せるようにするにはどうすればよいですか?