Grovvy:一种基于 JVM 的敏捷开发语言

2016-01-04 veryyoung 更多博文 » 博客 » GitHub »

原文链接 http://veryyoung.me/blog/2016/01/04/groovy-introduction.html
注:以下为加速网络访问所做的原文缓存,经过重新格式化,可能存在格式方面的问题,或偶有遗漏信息,请以原文为准。


前文说到了 Gradle 依靠 Groovy 语言发挥出了强大的性能。

Groovy是一种基于JVM(Java虚拟机)的敏捷开发语言,它结合了Python、Ruby和Smalltalk的许多强大的特性,Groovy 代码能够与 Java 代码很好地结合,也能用于扩展现有代码。由于其运行在 JVM 上的特性,Groovy 可以使用其他 Java 语言编写的库。

<!-- more -->


Groovy 是 Java 平台上设计的面向对象编程语言。这门动态语言拥有类似 Python、Ruby 和 Smalltalk 中的一些特性,可以作为 Java 平台的脚本语言使用。

Groovy 的语法与 Java 非常相似,以至于多数的 Java 代码也是正确的 Groovy 代码。Groovy 代码动态的被编译器转换成 Java 字节码。

由于其运行在 JVM 上的特性,Groovy 可以使用其他Java语言编写的库。

Java 语法真的超级啰嗦,写过 Ruby、Python、PHP 这种动态脚本语言的人应该深有体会。

来个小例子对比下吧。

for (int i = 0; i < 3; i++) {
    System.out.println("Hello world");
}

Groovy 可以这样写

for (i in 0..2) {
    println 'Hello world'
}

或者

3.times {
    println 'Hello world'
}

可以不定义类型,Groovy 会智能的去判断类型。

def coll = ["Groovy", "Java", "Ruby"]
assert  coll instanceof Collection
assert coll instanceof ArrayList

Java 代码得啰嗦的写

Collection<String> coll = new ArrayList<String>();
coll.add("Groovy");
coll.add("Java");
coll.add("Ruby");

还有这种高端玩法:

def numbers = [1,2,3,4]
assert numbers + 5 == [1,2,3,4,5]
assert numbers - [2,3] == [1,4]

def map=['name':'john','age':14,'sex':'boy']
map.each({ 
    println it.getKey() + "-->" + it.getValue()
})

还有一些非常省代码的特性,比如

不需要 public 修饰符,不需要类型说明,不需要 getter/setter 方法,不需要 return....

Groovy 入门门槛非常低,能写 Java 的人随便看几分钟语法就可以动手写了,如果实在搞不定,直接上 Java 代码!

Groovy 的优点很明显,开发效率高;因为是动态语言,缺点也很明显,性能会差不少,大概会慢五倍左右。

但五倍的性能差距,在脚本语言越来越流行的今天,完全不是问题了,至少做 Web 开发没问题。