1.使用Shell调试脚本或表达式
在Groovy中你可以使用GroovyShell对Groovy脚本和表达式进行调试.GroovyShell允许你通过Binding对象传入或传出变量.
Binding binding = new Binding();
binding.setVariable("foo", new Integer(2));
GroovyShell shell = new GroovyShell(binding);
Object value = shell.evaluate("println 'Hello World!'; x = 123; return foo * 10");
assert value.equals(new Integer(20));
assert binding.getVariable("x").equals(new Integer(123));
2.在Java中动态调用运行Groovy代码
你可以使用GroovyClassLoader将Groovy的类动态地载入到Java程序中并直接使用或运行它.
下面是一个例子:
GroovyClassLoader loader = new GroovyClassLoader(parent);
Class groovyClass = loader.parseClass(new File("src/test/groovy/script/HelloWorld.groovy"));
// 调用实例中的某个方法
GroovyObject groovyObject = (GroovyObject) groovyClass.newInstance();
Object[] args = {};
groovyObject.invokeMethod("run", args);
下面是一个直接通过脚本串执行的例子
/** * 通过脚本串调用脚本 */ public static void runScriptFromStr(String str) { try { ClassLoader parent = Jutil.class.getClassLoader(); GroovyClassLoader loader = new GroovyClassLoader(parent); Class groovyClass = loader.parseClass(str); // 调用实例中的某个方法 GroovyObject groovyObject = (GroovyObject) groovyClass.newInstance(); //设置方法参数 Object[] args = { "name1" }; Object result = groovyObject.invokeMethod("getUms", args); System.out.println(result); } catch (Exception e) { e.printStackTrace(); } }
如果你想使用一个用Groovy脚本实现的接口,你可以这么使用它:
Class clazz = gcl.parseClass(myStringwithGroovyClassSource "SomeName.groovy");
Object aScript = clazz.newInstance();
MyInterface myObject = (MyInterface) aScript;
myObject.interfaceMethod();
如果某个Groovy类实现口MyInterface接口,那么上面的代码就会很好的工作.myObject的使用方法与其他实现了MyInterface接口的Java对象一样.
3.Groovy脚本引擎
对于那些想将Groovy脚本嵌入到服务器并且在每次修改后重新装入的人来说,Groovy脚本引擎提供了一个彻底的解决方案.你可以设定系列CLASSPATH作为根来初始化Groovy脚本引擎,这些GLASSPATH可以是URL也可以是目录名.接着你就可以这些根路径下的任何Groovy脚本了.GSE会跟踪脚本间的依赖关系,因此如果任何有依赖关系的脚本被修改,整颗树将会重新编译和载入.
另外,每次执行脚本时,你都可以传入一个包含脚本可接受属性的Binding.脚本执行完以后,传入脚本中的那些属性在Binding中依然有效.下面是一个例子:
/my/groovy/script/path/hello.groovy:
import groovy.util.GroovyScriptEngine;
String[] roots = new String[] { " /my/groovy/script/path " } ;
GroovyScriptEngine gse = new GroovyScriptEngine(roots);
Binding binding = new Binding();
binding.setVariable( " input " , " world " );
gse.run( " test.groovy " , binding);
System.out.println(binding.getVariable( " output " ));
将打印 "Hello, world!".
4.运行时依赖
和JDK1.4一样,Groovy Jar也依赖与ASM库上的运行时,ASM库包括4个Jar(asm-2.1.jar, asm-util-2.1.jar, asm-attrs-2.1.jar and asm-analysis-2.1). 也就是说,只要将上面的5个Jar添加到路径中,你就能将轻松地Groovy嵌入到你的应用里.
另一种方案可以不用那么多的Jar.你可以用GROOVY_HOME/embeddable目录下的groovy-all-1.0-beta-x.jar.这个Jar包将Groovy和ASM组合打包成一个方便的Jar包.注意:groovy-all-1.0-beta-x.jar中的ASM类使用了不同的命名空间,因此要避免与使用ASM的库发生冲突.
相关推荐
9. **Scripting in Java Applications**:Groovy可以嵌入到Java应用中作为脚本语言使用,例如在服务器端处理HTTP请求,或者作为配置文件来动态改变应用行为。 10. **持续集成与构建工具**:Groovy也是构建工具如...
Java 嵌入运行 Groovy 代码是一种常见的技术实践,特别是在需要动态脚本执行或灵活扩展功能的场景中。Groovy 是一种与 Java 兼容的动态编程语言,它的语法简洁,适合编写脚本和快速原型开发。在 Java 应用程序中运行...
java嵌入groovy所需jar 2.3.7最新版
5. GString:Groovy的GString允许在字符串中嵌入表达式,例如`"Name is ${name}"`,使得字符串处理更为方便。 6. 枚举和注解的简化:Groovy的枚举和注解创建也比Java更加直观和简洁。 7. 类型推断:Groovy编译器...
- **GString**:GString是Groovy中的动态字符串,支持表达式嵌入,类似于Java的`String.format()`。 - **集合操作**:Groovy提供了丰富的集合操作,如`each`、`collect`、`find`等,使得处理集合更加简便。 5. **...
4. **在项目中的应用**:Groovy可以作为中小型项目的替代语言,也可以嵌入到大型Java项目中,增加代码的灵活性。 **Groovy的特性:** 1. **可选的动态类型**:Groovy支持动态类型,这意味着变量的类型可以在运行时...
Groovy支持字符串插值功能,可以在字符串中直接嵌入变量和表达式,这使得构建动态字符串更为方便。 正则表达式: Groovy内置了对正则表达式的支持,提供了大量的方法来匹配、查找和替换字符串中的模式。 异常处理...
这意味着开发者可以在Groovy程序中使用任何Java库,也可以将Groovy嵌入到桌面Java应用程序或J2EE应用程序中。此外,Groovy程序还可以使用JUnit进行测试,使用Eclipse、JSwat或IntelliJ等IDE进行调试,并且可以使用...
Groovy还引入了GString,这是一种可变字符串,允许在字符串中嵌入表达式,如`${expression}`。此外,Groovy的运算符重载和元编程能力使代码更加简洁和动态。 在安装GroovyEclipse插件后,开发者可以通过Eclipse的...
压缩包中的`Groovy_Script`很可能包含了几个Groovy脚本文件,这些文件可能包含了示例代码,展示了如何在Java应用中嵌入Groovy脚本。文件名可能如`ScriptExample.groovy`,其中包含了具体的脚本代码,如定义函数、...
其中,GString是Groovy特有的,允许在字符串中嵌入变量和表达式,极大地简化了字符串操作。此外,Groovy还内置了强大的正则表达式引擎,支持正则表达式的创建、匹配和替换,使得文本处理任务变得简单高效。 ### ...
同时,Groovy代码可以直接嵌入Java项目,无需额外的编译步骤。 2. **性能**:虽然Jruby和Jython也有良好的性能,但由于它们是解释执行的,可能在某些情况下性能不如Groovy。Groovy的静态类型特性(通过`@Compile...
4. **可嵌入Java应用**: Groovy脚本可以直接嵌入到Java应用程序中,为Java应用增添更多的功能。 5. **Shell解析器**: Groovy还提供了Shell解析器,使得Groovy脚本可以作为Shell脚本来运行。 #### 四、Groovy的应用...
5. **GString与字符串操作**:Groovy的GString是一种可以包含表达式的字符串,它允许你在字符串中嵌入变量值。Groovy还提供了丰富的字符串操作方法,比如`tokenize`, `trim`, `split`等。 6. **集合操作**:Groovy...
4. **GString与字符串模板**:Groovy的GString能够方便地进行字符串插值,它允许在字符串中嵌入表达式,使得输出动态内容变得更简单。 5. **Groovy Shell与 Grape**:Groovy Shell提供了一个交互式的环境来执行...
2. **代码块(GString)**:Groovy的字符串插值非常直观,可以嵌入表达式,使得字符串生成更加方便。 3. **元编程**:Groovy支持元编程,允许在运行时修改和扩展类的行为。这对于创建框架和库特别有用,可以实现...
这是一个示例,探讨了将groovy与Java代码集成的方法,以期通过使用groovy功能并动态加载更改来实现快速原型制作。 这个想法是要运行该应用程序,并以Groovy的方式进行原型设计,使该应用程序运行,并可以选择将运行...
描述中提到的`groovy-1.7.2\embeddable`目录,表明这是Groovy 1.7.2版本的一个可嵌入版本。这个版本可能是专门为在其他应用中作为组件使用的,比如Web应用服务器、桌面应用或者独立的Java应用程序。`embeddable`目录...