让我们来回顾一下主流语言的发展历程
机器语言(由
组成)
> 汇编语言
>
> C语言
> C++
> Java
> ?
不知道大家有没有发现在语言发展过程中存在这么一个规律能成为未来主流语言的必与当前主流语言属同一语系换句话说由王子继承王位
在C语言之前似乎还处于春秋战国各种编程语言混战于世纪年代C语言成为秦始皇各种软件甚至操作系统也改用C语言编写但可惜C语言是面向过程的程序代码一多逻辑流程就容易混乱再加上全局变量和可运算指针的添乱使程序员调试程序万般辛苦
世纪年代C++应运而生它继承了C语言(包括C语言的语法)并添加了类等特性使C++成为一种面向对象的语言但C++的多继承人工内存管理从C语言那里继承的可运算指针等问题同样使程序员万般痛苦
世纪年代正当人们饱受煎熬的时候Java诞生了她去除了C++中的糟粕保留了C++中的精华(包括语法)并添加了一些自己的特性比如垃圾回收器接口等我听很多由C++转Java的朋友说过这么一句话用Java写程序简直是一种享受可惜Java的那优美的语法使之失去了轻盈的身躯程序员需要写相对比较多的代码来完成同样的功能此外Java代码即使编译为class文件也能被高质量反编译为Java文件获得源码
世纪初Groovy( 背后有ThoughtWorks Big Sky等公司的支持)横空出世她几乎兼容Java的所有语法并能无需转换直接利用Java所写的类及接口在Spring中可以透明地注入 Groovy对象(与注入Java对象没有任何区别)且拥有自己的一些敏捷特性如动态类型ClosureMixins等以及对应JEE中如JSP Servlet的Groovy敏捷版GSP以及Groovlet等不但如此她还拥有Ruby最引以为傲的Ruby on Rails的对应实现版本但非克隆Grails( 背后有Oracle的支持)此外Groovy代码编译为class文件后即使不混淆反编译后获得的Java源代码也极难读懂(换句话说如果您能读懂这些反编译得来的源码那您早就用不着hack人家的class文件了)原因是Groovy自身就是用Java编写的class文件烙有 Groovy的印迹?指代谁至今还不太明了但Groovy至少已经具备了继承王位的必要条件语言本身是利用当前主流语言所编写并与当前主流语言的语法相似且能够结束当前主流语言的弊病
综上所述选择Java世界中动态语言Groovy(Groovy = Java + Python + Ruby + Smalltalk)至少是明智的不仅因为她是JVM上JCP全票通过的官方标准语言更因为她身上具有王储的特质Groovy之于Java犹如 Java之于C++另外由于Groovy本身就是用Java写的所以对Groovy的投资能够得到保值因为Groovy的程序能运行于 JDK+之上所以Groovy的新特性(比如Groovy中新添加的Annotations以及static import)不会像Java中的新特性(比如Java中的Generics以及Annotations等)那样无法在旧版JDK上使用这就起到了保值作用如果说Java实现了跨平台那么Groovy不仅实现了跨平台而且实现了跨Java平台
附关于Groovy的JCP投票结果
再来看一个Groovy官方网站( )上的例子在官方网站上还有许多教程和应用实例大家不妨去看看
利用已存在的Java类库
import monslangWordUtilsclass Greet {def nameGreet(who) {
name = who[]toUpperCase() + who[]
}def salute() { println Hello $name! }}class Greeter extends Greet {Greeter(who) { name = WordUtilscapitalize(who) }}new Greeter(world)salute()
最后看看Groovy与其他Java世界的动态语言的受关注程度的比较吧从图中可以看出Groovy有压倒性趋势