- 浏览: 1324989 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (896)
- spring4 (14)
- hibernate3 (26)
- spring2 (35)
- struts2 (55)
- struts1 (15)
- 设计模式 (15)
- java (172)
- mybatis3 (11)
- sql (17)
- mysql (13)
- jbpm (10)
- J2EE (45)
- tools (29)
- js (83)
- 数据结构 (13)
- Html (26)
- web (22)
- flex (33)
- Oracle (57)
- linux (49)
- 算法 (6)
- 其它 (12)
- easyui (1)
- bootstrap (13)
- xml (2)
- tomcat (1)
- redis (10)
- activemq (2)
- webservice (11)
- maven (2)
- springboot (1)
- ubuntu (1)
- python (14)
- rocketmq (1)
- springcloud (10)
- opencv (1)
最新评论
-
mike_eclipse:
Hashtable是线程不安全的吗?好像是线程安全的吧?
多线程之集合类 -
July01:
推荐用StratoIO打印控件,浏览器和系统的兼容性都很好,而 ...
lodop打印控件 -
xingcxb:
经过测试,假的,依旧会出现中文乱码!!!!store方法里面采 ...
java 读写Properties文件,不会出现中文乱码 -
tiger20111989:
...
Spring注解方式管理事务 -
zw7534313:
...
js 文字上下滚动 无间断循环显示
//Groovy超强的Java动态计算能力 groovy-2.5.12.jar apache 表达式语言
public class GroovyTest {
public static void main(String[] args) {
GroovyShell shell = new GroovyShell();
Object result = shell.evaluate("(1+5)/2");
System.out.println(result);
Binding binding = new Binding();
binding.setVariable("p",3.1415926f);
binding.setVariable("r",5);
GroovyShell shell2 = new GroovyShell(binding);
result = shell2.evaluate("p*r*r");
System.out.println(result);
result = shell2.evaluate("Math.round(p*r*r)");
System.out.println(result);
String s = "2>3||3>4&&5<4";
result = shell.evaluate(s);
System.out.println(result);
// String javacode="SimpleDateFormat.getDateInstance().format(new Date())";
// result = shell.evaluate(javacode);
// System.out.println(result);
//shell.parse(new File(//))
Script script = shell2.parse("def join(String[] list) {return list.join('--');}");
String joinString = (String)script.invokeMethod("join", new String[]{"A1","B2","C3"});
System.out.println(joinString);
//反射动态调用groovy类
GroovyTest g=new GroovyTest();
// g.java2groovy();
g.grooyScript();
//自定义函数
}
private void java2groovy() {
//获取 groovy 类的反射对象
ClassLoader parent = getClass().getClassLoader();
GroovyClassLoader loader = new GroovyClassLoader(parent);
Class groovyClass=null;
try {
groovyClass = loader.parseClass(new File("G:\\neweclipse\\workspace\\bsh\\src\\bsh\\GroovyDemo.groovy"));
//实例化 GroovyDemo 类
GroovyObject groovyObj = (GroovyObject) groovyClass.newInstance();
//调用 groovyDemo 成员方法
System.out.println( groovyObj.invokeMethod("sayHello",null));
} catch (CompilationFailedException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
//自定义函数
void grooyScript() {
String path = "G:\\neweclipse\\workspace\\bsh\\src\\bsh\\";
GroovyScriptEngine gse;
try {
gse = new GroovyScriptEngine(path);
Binding binding = new Binding();
binding.setVariable("input", "Groovy");
gse.run("GroovyDemo.groovy", binding);
System.out.println(binding.getVariable("output"));
} catch (Exception e) {
e.printStackTrace();
}
}
//自定义函数
void cusFunction() {
Binding binding = new Binding();
// if(vars!=null) {
// vars.keySet().forEach(name ->
// binding.setVariable(name, vars.get(name))
// );
// }
CompilerConfiguration cfg = new CompilerConfiguration();
cfg.setScriptBaseClass(DateUtils.class.getName());
GroovyShell shell = new GroovyShell(binding,cfg);
try {
Script script = shell.parse(buildScript());
return script.run();
} catch (Exception ex) {
logger.error("catch script execution error, script:"+buildScript(), ex);
return 0;
}
}
}
public class GroovyTest {
public static void main(String[] args) {
GroovyShell shell = new GroovyShell();
Object result = shell.evaluate("(1+5)/2");
System.out.println(result);
Binding binding = new Binding();
binding.setVariable("p",3.1415926f);
binding.setVariable("r",5);
GroovyShell shell2 = new GroovyShell(binding);
result = shell2.evaluate("p*r*r");
System.out.println(result);
result = shell2.evaluate("Math.round(p*r*r)");
System.out.println(result);
String s = "2>3||3>4&&5<4";
result = shell.evaluate(s);
System.out.println(result);
// String javacode="SimpleDateFormat.getDateInstance().format(new Date())";
// result = shell.evaluate(javacode);
// System.out.println(result);
//shell.parse(new File(//))
Script script = shell2.parse("def join(String[] list) {return list.join('--');}");
String joinString = (String)script.invokeMethod("join", new String[]{"A1","B2","C3"});
System.out.println(joinString);
//反射动态调用groovy类
GroovyTest g=new GroovyTest();
// g.java2groovy();
g.grooyScript();
//自定义函数
}
private void java2groovy() {
//获取 groovy 类的反射对象
ClassLoader parent = getClass().getClassLoader();
GroovyClassLoader loader = new GroovyClassLoader(parent);
Class groovyClass=null;
try {
groovyClass = loader.parseClass(new File("G:\\neweclipse\\workspace\\bsh\\src\\bsh\\GroovyDemo.groovy"));
//实例化 GroovyDemo 类
GroovyObject groovyObj = (GroovyObject) groovyClass.newInstance();
//调用 groovyDemo 成员方法
System.out.println( groovyObj.invokeMethod("sayHello",null));
} catch (CompilationFailedException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
//自定义函数
void grooyScript() {
String path = "G:\\neweclipse\\workspace\\bsh\\src\\bsh\\";
GroovyScriptEngine gse;
try {
gse = new GroovyScriptEngine(path);
Binding binding = new Binding();
binding.setVariable("input", "Groovy");
gse.run("GroovyDemo.groovy", binding);
System.out.println(binding.getVariable("output"));
} catch (Exception e) {
e.printStackTrace();
}
}
//自定义函数
void cusFunction() {
Binding binding = new Binding();
// if(vars!=null) {
// vars.keySet().forEach(name ->
// binding.setVariable(name, vars.get(name))
// );
// }
CompilerConfiguration cfg = new CompilerConfiguration();
cfg.setScriptBaseClass(DateUtils.class.getName());
GroovyShell shell = new GroovyShell(binding,cfg);
try {
Script script = shell.parse(buildScript());
return script.run();
} catch (Exception ex) {
logger.error("catch script execution error, script:"+buildScript(), ex);
return 0;
}
}
}
发表评论
-
服务端推送multipart/x-mixed-replace
2023-12-07 15:26 414往网页分批推送数据:boundary=END,总头--> ... -
使用httpclient提交post请求
2020-08-22 08:35 481import org.apache.http.HttpEnt ... -
bsh(BeanShell)动态执行java代码
2020-06-25 07:59 994import java.util.Date; /** * B ... -
延时任务处理订单超时方案
2020-05-23 16:05 1011JDK的延迟队列 方案是利用JDK自带的DelayQueue ... -
HttpsURLConnection
2020-04-29 10:51 861import java.net.URL; import jav ... -
Log4j的ConversionPattern参数的格式含义
2020-04-22 14:23 512Log4j的ConversionPattern参数的格式含义 ... -
thread 的join
2020-04-16 18:02 423java里面也有这个方法,Java Thread中, join ... -
GZIPOutputStream压缩文件
2020-04-16 17:52 794import java.io.BufferedReader; ... -
软引用SoftReference的使用
2020-04-16 15:48 586软引用SoftReference的使用 SoftRefere ... -
Fastjson
2020-04-15 14:53 407import java.util.ArrayList; imp ... -
6位随机数
2020-04-14 09:47 811import org.apache.commons.lang. ... -
Java加密和数字签名
2020-04-14 09:38 423Java加密和数字签名 消息摘要 这是一种与消息认证码结合使 ... -
DES加密、解密
2020-04-02 16:42 437import java.security.SecureRand ... -
Java利用 AES/ECB/PKCS5Padding 算法加解密
2020-04-02 11:19 1068对称加密、解密 import javax.crypto.Ci ... -
springboot中使用springmvc的拦截器-HandlerInterceptorAdapter
2018-12-13 16:04 1392springboot中使用springmvc的拦截器-Hand ... -
aspectj连接点
2018-12-13 15:55 604切点指示符 切点指示符 ... -
spring之AspectJ面向切面编程
2018-12-13 14:15 911spring之AspectJ面向切面编程 面向切面编程,实现 ... -
设计模式之策略模式
2018-05-30 21:17 562public class Person { priva ... -
使用反射将对象转Map
2018-05-27 17:33 732//使用反射将对象转Map<String, St ... -
设计模式之原型模式
2018-05-20 18:42 554/** * 原型设计模式:原型模式主要用于对象的复制 ...
相关推荐
这种Java与Groovy的交互能力使得开发者可以灵活地利用两种语言的优势,比如Groovy的简洁语法和Java的广泛库支持。这种混合编程方式在构建复杂的系统,特别是那些需要快速原型设计和迭代的系统时,可以提供更大的灵活...
Groovy代码可以被Java编译器理解,并且在运行时,GroovyShell或GroovyClassLoader等工具能够即时编译和执行Groovy脚本,这为动态加载和执行提供了便利。 当我们需要在Java程序中调用Groovy脚本时,可以使用以下步骤...
Groovy是一种基于Java平台的动态脚本语言,它在Java开发者中越来越受欢迎,因为它提供了简洁、灵活的语法,以及强大的动态编程能力。Groovy与Java兼容性极佳,可以直接调用Java类库,使得它在Java生态系统中具有广泛...
Groovy环境搭建教程中的例子工程,纯Java、纯Groovy以及Java+Groovy混合 教程参考:http://blog.csdn.net/rcom10002/archive/2011/06/26/6568557.aspx
在Java开发中,Groovy是一种强大的、动态类型的脚本语言,它可以无缝地与Java代码集成,为开发者提供了更简洁、灵活的语法。本文将深入探讨在Java项目中使用Groovy的三种主要方式,并阐述它们各自的优势和应用场景。...
Java动态代码执行是一种在运行时编译和执行代码的技术,它可以极大地提高程序的灵活性和可扩展性。在Java中,Groovy是一个强大的脚本语言,它与Java语法兼容,并且可以无缝集成到Java应用程序中,使得动态代码执行变...
本文将深入探讨如何基于Groovy实现Java脚本的动态编译、部署和发布,并且介绍如何通过Groovy脚本直接调用Dubbo接口,从而提高开发效率和灵活性。 Groovy是一种基于Java平台的强大的动态编程语言,它具有简洁的语法...
此外,Groovy还提供了许多Java没有的特性,如闭包(Closure)、元编程(Metaprogramming)和DSL(领域特定语言)构造,这些都极大地扩展了Groovy的能力。在与Java SE类库交互时,你可能会发现这些特性使代码更具表达...
Making Java Groovy is a practical handbook for developers who want to blend Groovy into their day to day work with Java It starts by introducing the key differences between Java and Groovy and how you...
Groovy是一种运行在Java平台上的动态脚本语言,它与Java紧密集成,提供了一种简洁、灵活的方式来编写Java代码。Groovy不仅支持静态类型检查,还可以在运行时动态地编译和执行代码,这使得它在Java平台中的应用场景...
这暗示了该项目不仅涉及基本的Groovy语法,还可能涵盖如何在Java环境中集成Groovy,以及如何利用Groovy的灵活性来执行动态任务。 Groovy是一种基于Java平台的动态编程语言,它与Java语法相似,但提供了更简洁、灵活...
此外,Groovy的元编程能力允许程序在运行时动态地添加或修改类、方法和字段,这种能力在Java中是很难实现的。 数据结构方面,Groovy的列表默认为ArrayList,映射为LinkedHashMap,范围继承自列表。这些默认设置考虑...
### Java与Groovy:融合的力量 #### 知识点一:Java与Groovy的关系 - **定义**:Groovy是一种面向对象的编程语言,它直接运行在Java平台上,并且能够与现有的Java代码无缝集成。 - **特点**: - **语法简洁**:...
5. **Groovy**: Groovy是基于JVM的动态语言,语法简洁,与Java高度兼容,可以直接调用Java库。Groovy可以用于编写Gradle构建脚本,使得构建过程更加简洁和灵活。此外,Groovy也常用于服务器端开发,如Grails框架,...
Groovy是一种基于Java平台的动态编程语言,设计用于提高开发者的生产力和代码的简洁性。在Java生态系统中,Groovy以其灵活性和与Java的良好互操作性而受到广泛关注。本篇文章将深入探讨Groovy的最新学习动态,特别是...
JUN SpringBoot API Service 是一个基于SpringBoot+Groovy+SQL动态生成API并动态发布,且发布后可动态执行groovy脚本及SQL脚本的API服务项目。提供在线执行动态程序脚热加载本及动态生成API并执行的功能。支持动态...
下载的资源文件中,封装了并发计算以及内存溢出解决方案的工具类GroovyEngine.java,调用示例: GroovyEngine engine = GroovyEngine.getInstance(); engine.put("a",1); engine.put("b",2); Object v1 = engine....
Groovy结合了脚本语言的简洁性和动态性,同时提供了静态类型的编译选项,使得它在Java开发环境中尤其受欢迎。在这个"groovy-src-1.8.5.zip"压缩包中,我们能找到Groovy 1.8.5版本的源代码,这对于学习、调试或扩展...
Java调用Groovy是一种常见的技术,特别是在开发过程中需要动态脚本支持时。Groovy是一种基于JVM(Java Virtual Machine)的、动态类型的编程语言,它与Java有着良好的互操作性,能够无缝集成到Java项目中。这篇博客...
本文将详细讲解如何使用JVM动态执行Groovy脚本的方法,主要包括利用JShell执行代码、调试模式下动态执行代码以及利用javax.script包执行Groovy脚本。以下是对各知识点的详细说明。 1. 利用JShell执行代码 Java 9 ...