JAVA中的Groovy

一:什么是Groovy

  简单地说, Groovy 是下一代的 java 语言,跟 java 一样 , 它也运行在 JVM 中。作为跑在 JVM 中的另一种语言, groovy 语法与 Java 语言的语法很相似。同时, Groovy 抛弃了 java 烦琐的文法。同样的语句,使用 groovy 能在最大限度上减少你的击键次数——这确实是“懒惰程序员们”的福音。

二:Groovy安装

 1.windows安装Groovy

  下载地址:https://groovy.apache.org/download.html

  使用windows按照装包安装(只有部分版本提供):

  下载二进制文件安装:

    • 下载一个Groovy二进制版本并且解压缩到本地盘上(你想要安装的位置)
    • 设置GROOVY_HOME环境变量到刚刚解压缩安装目录
    • 在PATH环境变量后面加入GROOVY_HOME/bin环境变量
    • 设置好JAVA_HOME环境变量,如果你使用过Ant或Maven这样的构建工具这一步应该已经设置好了
    • 以上已安装好groovy,使用如下:
    • Groovysh-----打开groovy shell命令交互窗口
    • groovyConsole-----打开图形化交互页面
    • groovy someScirpt-----groovy执行执行groovy脚本

 2.linux安装Groovy

 

 3.IDE集成Groovy

  使用mavne集成:

只是没有模块*的Groovy的核心。还包括jarjar'ed版本的Antlr,ASM以及所需CLI实现类的内部副本
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy</artifactId>
<version>x.y.z</version>

"$module"代表不同的可选groovy模块*。示例:<artifactId>groovy-sql</artifactId>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-$module</artifactId>
<version>x.y.z</version>

核心加上所有模块(不包括可选模块),根据版本打包方案**。
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-all</artifactId>
<version>x.y.z</version>
<type>pom</type> <!-- required JUST since Groovy 2.5.0 -->

 4.Groovy版本管理器

   linux选择SDKMAN或者GVM(Groovy enVironment Manager)

 

二:JAVA和Groovy混合使用

 1.JAVA类中调用Groovy类

以下是Java调用Groovy测试类:
import com.zcx.springstudy.groovy.groovyUtils.DynamicGroovyClass;
import groovy.lang.GroovyObject;

public class GroovyTest {
    public static void main(String[] args) {
        GroovyObject instance = new DynamicGroovyClass();
        Object result1 = instance.invokeMethod("querk","18");
        System.out.println("received:"+result1);
        Object result2 = instance.invokeMethod("like",new Object[]{"1","22","33"});
        System.out.println("received:"+result2);
    }
}

以下是Groovy类:
package com.zcx.springstudy.groovy.groovyUtils

class DynamicGroovyClass {
    //当调用此groovy类的方法不存在时执行此方法
    def methodMissing(String name,args) {
        println("you called $name with ${args.join(', ')}")
        args.size()
    }
    //地定义的groovy方法
    def querk(String age) {
        println("已经调用到querk方法....")
        println("age==="+age)
    }
}

 2.Java类中调用Grovvy脚本

以下是再java类中调用groovy脚本:
package com.zcx.springstudy.groovy;

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

public class CallGroovy {

    public static void main(String[] args) {
        qianruCall();//调用嵌入式groovy脚本
    }

    //嵌入式调用groovy脚本
    public static void qianruCall() {
        ScriptEngineManager manager = new ScriptEngineManager();
        ScriptEngine engine = manager.getEngineByName("groovy");
        try {
            engine.put("name","Tom1");
            Object result = engine.eval("println(\"hello $name\");name = \"Tom2\"");
            System.out.println("receive return:" + result);
        } catch (ScriptException e) {
            e.printStackTrace();
        }
    }

}

 3.Groovy类中调用JAVA类

以下是在groovy类中调用java类中的方法测试:
package com.zcx.springstudy.groovy.groovyUtils

import com.zcx.springstudy.groovy.Demo1JavaClass

//groovy方法中调用java方法
def demo1() {
    //调用java类中的方法
    Demo1JavaClass.method1()
}
//调用groovy方法
demo1()

以下是java类:
package com.zcx.springstudy.groovy;

public class Demo1JavaClass {
    public static void method1() {
        System.out.println("已经调用到java代码了!!!");
        System.out.println("hello java!!!");
    }
}

 4.Groovy类中调用Groovy脚本

以下为groovy类调用groovy脚本测试:
package com.zcx.springstudy.groovy.groovyUtils

//groovy方法中调用groovy脚本
def demo1() {
    name = "Tom1"
    shell = new GroovyShell(binding)
    //调用脚本
    evaluate(new File("./ScriptGroovy1.groovy"))
}

//调用
demo1()

以下是groovy脚本:
package com.zcx.springstudy.groovy.groovyUtils

println("name $name")
name = "Tom2"

 5.Groovy脚本中调用JAVA类

以下是groovy类中调用java类:
package com.zcx.springstudy.groovy.groovyUtils

import com.zcx.springstudy.groovy.Demo1JavaClass
//调用java类中的方法
Demo1JavaClass.method1()

以下 是java类:
package com.zcx.springstudy.groovy;

public class Demo1JavaClass {
    public static void method1() {
        System.out.println("已经调用到java代码了!!!");
        System.out.println("hello java!!!");
    }
}

 6.Groovy脚本中执行Groovy类

以下是在groovy脚本中调用groovy类测试:
package com.zcx.springstudy.groovy.groovyUtils

dynamic = new DynamicGroovyClass()
dynamic.querk("20")

以下是groovy类:
package com.zcx.springstudy.groovy.groovyUtils

class DynamicGroovyClass {
    def querk(String age) {
        println("已经调用到querk方法....")
        println("age==="+age)
    }
}

 7.Groovy脚本中执行Groovy脚本:

以下是groovy脚本中调用groovy脚本:
package com.zcx.springstudy.groovy.groovyUtils

println("now in script2")
//使用指定的binding1用于传参,默认为binding
binding1 = new Binding()
binding1.setProperty("name","Tom1")
shell = new GroovyShell(binding1)
//调用脚本
result = shell.evaluate(new File("./ScriptGroovy1.groovy"))
//接收返回值
println("receive1 return: $result")
println("hello "+binding1.getProperty("name"))

以下是被调用的groovy脚本:
package com.zcx.springstudy.groovy.groovyUtils

println("name $name")
name = "Tom2"

 

转载于:https://www.cnblogs.com/chunxiaozhang/p/11190569.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值