java程序员为什么使用Groovy

     一直听说java世界里有个Groovy,但是一直没时间去了解它究竟是一个怎么样子的。我们现在的项目里放了很多开源包,而且项目中做流程的时候,规则就是用Groovy实现的。近来闲来无事,于是开始认真的看看Groory究竟有什么好的。其实最初我接触它是因为Grails这一个框架,这两个都是为了实现一个目的,java的敏捷开发,与java的无缝对接。在某些情况下,java需要半天处理的事情,Groovy只需要几分钟,是的,几分钟…剩下来的时间,程序员终于有时间泡妹子了,^_^…….技术宅的兄弟,赶紧来看看吧。

     脚本语言,动态语言?难道是javascript一类的?好吧,它的确和javascript有一点像,但是它太强大了,远远超出了javascript能处理的事情。这里不和javascript做比较了,直接来和Java比较吧,看看Groovy能做什么。

Groovy 的网站( http://groovy.codehaus.org ) 给出了 groovy 的最好定义: groovy 是在 java平台上的、 具有象 Python , Ruby 和 Smalltalk 语言特性的灵活动态语言, groovy 保证了这些特性象 java 语法一样被 java 开发者使用。 而且学习Groovy对javaer来说,是很容易的一件事情。如果你还没有开始学Ruby,来吧,和我一起来Groovying一下…………而且附带一个Grails来媲美Ruby on rails。

 

   1.Groovy可以兼容java。

   是的,你可以用java语法来编写groovy,最后还可以生成class文件,直接用java调用。你会说,这有什么好的,不就是改了个后缀名么?呕,也许吧…但是它的亮点当然不是这个,它的亮点是你可以在Groovy里面直接用java语法混搭写,当然不是很推荐这样做的。

2.Groovy是动态的。

不需要java的反射,不需要冗长的代码,不需要各种try catch 异常,你就可以实现各种神奇的事情。Groovy的class可以这样新增一个方法,或者调用它。

01 //用闭包定义一个方法 var1为参数 ,->后面是执行语句(当然参数不是必须的)
02 defmethodA={var1-> print "this is methodA"}
03  
04 //用闭包定义一个方法 var1为参数 ,->后面是执行语句(当然参数不是必须的)
05 def methodB={var1-> print "this is  methodB"}
06  
07 String.metaClass.addMethodA=methodA;   //将methodA绑定为成员方法。
08 String.metaClass.'static'.addMethodB=methodB;   //将methodB绑定为静态方法
09  
10 String s="str";
11 s.addMethodA('good');  //实例调用方法A
12 String.addMethodB('hello'); //静态类调用方法B

以上的代码将两个方法添加到了String class里面(天哪,final的String 也被攻破了),然后分别用实例对象调用addMethodA,静态类调用AddMethodB.

3.Groovy是一把瑞士军刀。

java是一把基础工具,等你需要的时候,你需要到处去找jar包,来填充自己的程序,而且你需要看API去弄懂各种使用。此外,java的编写实在是太冗长了,为了打印一个HelloWorld,你需要编写class, 写一个main函数。对于Groovy来说:print “hello world!”.这一句就足够了,这只是开始…

通过 groovy 你能快速的打开控制台, 通过输入如下代码来输出所有的文件名 ( 递归处理 ) :

1 groovy -e "new File('.').eachFileRecurse { println it }"


即使 java 有一个名称为 eachFileRecurse 的方法和一个 FileListener 的接口,你仍旧需要显示的创建一个类, 声明一个 main 方法, 保存源代码到一个文件中, 并且编译它, 然后你才能运行它, 基于比较, 我们来看看 java 做相同工作的代码, 我们假设存在单独的 eachFileRecurse 方法:

01 public class ListFiles { // JAVA !!
02  
03 public static void main(String[] args) {
04  
05  new java.io.File(".").eachFileRecurse( // 假设 java 存在该方法
06  
07  new FileListener() {
08  
09     public void onFile (File file) {
10          System.out.println(file.toString());
11         }
12     }
13 );
14 }

 

好吧,下载一本好书《Groovy in Action[文字版][中文].pdf》,现在开始学习Groovy吧。

http://ishare.iask.sina.com.cn/f/22738137.html?from=like  翻译者希望我们给他捐点钱,呵呵,大家如果觉得确实不错,就不要太吝啬了。

转自:http://my.oschina.net/davidzhang/blog/89654?from=20121118

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值