Groovy语言

一、Groovy语言

Groovy 是基于JVM的一种敏捷的动态语言,它是一种成熟的面向对象编程语言,既可以用于面向对象编程,又可以用作纯粹的脚本语言。使用该种语言不必编写过多的代码,同时又具有闭包和动态语言中的其他特性。

二、特性

1.兼容Java类库

由于Groovy是基于JVM的面向对象的编程语言,很容易让人想到另外一种运行在JVM上的面向对象的编程语言JAVA。因此,groovy使用方式基本与使用 Java代码的方式相同,该语言特别适合与Spring的动态语言支持一起使用,设计时充分考虑了Java集成,这使 Groovy 与 Java 代码的互操作很容易。

2.动态语言

groovy另外一个特性是动态语言,结合Python、Ruby和Smalltalk的闭包等许多强大的特性,使它可以作为一种脚本语言,能够快速构建高性能的JVM应用,将开发效率提高几个数量级。

三、区别

1.Groovy是一种动态语言,而java是一种强类型的静态语言。

在groovy中,方法的调用是在运行时被选择。这被称为运行时调度和多方法。根据运行时参数类型选择方法。在java中,这个是相反的,在编译时,根据定义的类型, 选择方法。举个栗子:

class TestGroovy {

    static int method(String arg) {
        return 1
    }
    static int method(Object arg) {
        return 2
    }

    public static void main(String[] args) {
        Object o = "Object"
        int result = method(o)
        println "groovy:" +result
    }
}
public class TestJava {

    public static int method(String arg) {
        return 1;
    }
    public static int method(Object arg) {
        return 2;
    }

    public static void main(String[] args) {
        Object o = "Object";
        int result = method(o);
        System.out.println("java:" +result);
    }
}

大家觉得上面两个程序运行结果会是怎样的呢?
输出结果:

groovy:1
java:2

   java使用的是静态信息类型,o被声明为Object;然而groovy是在运行时选择,这个方法真正被调用的时候。因为o是一个String所以调运String的版本。这里跟大家解释一下什么是动态语言、静态语言:

动态类型语言:是在运行时确定数据类型的语言。变量使用之前不需要类型声明,通常变量的类型是被赋值的那个值的类型。
静态类型语言:是指在编译时变量的数据类型即可确定的语言,多数静态类型语言要求在使用变量之前必须声明数据类型,某些具有类型推导能力的现代语言可能能够部分减轻这个要求 。

2.Groovy语言简洁,较少的代码获得更多结果

3.return语句可选,分号结尾可选

4.方法和类默认public

5.groovy所有的包和classes是默认被导入

四、语法

由于groovy兼容大部分的java类库,所以语法基本上跟java类似,这里就不做介绍了。

五、性能对比

java:

long t1 = System.currentTimeMillis();
int sum = 0;
for (int i = 0; i < 1000000; i++) {
    sum+=i;
}
System.out.println("java:" + (System.currentTimeMillis() - t1));

groovy:

long t1 = System.currentTimeMillis();
int sum = 0;
1000000.times {val-> sum+=val}
println "groovy:" +System.currentTimeMillis()-t1;

运行结果如下:

java:4
groovy:451

      相同逻辑的实现groovy执行的耗费的时间差不多是java的100倍。groovy耗时的操作基本都在编译上,编译耗时400多毫秒。实际执行效率上查不多。也许你会问groovy执行速度这么慢,为啥还要用它呢?
      实际工作中,在计算较负责的业务逻辑时都会选择用java,但是java不够灵活,groovy作为一种动态语言,可以动态编译执行。如果把java和groovy结合起来,通过java调用groovy脚本,可以实现复杂业务流程的动态编排和计算,提交开发效率。

猜你喜欢

转载自blog.csdn.net/chengbinbbs/article/details/86742503