
一直聽說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可以這樣新增一個方法,或者調用它。
//用閉包定義一個方法 var1為參數 ,->后面是執行語句(當然參數不是必須的)
def methodA={var1-> print "this is methodA"}
//用閉包定義一個方法 var1為參數 ,->后面是執行語句(當然參數不是必須的)
def methodB={var1-> print "this is methodB"}
String.metaClass.addMethodA=methodA; //將methodA綁定為成員方法。
String.metaClass.'static'.addMethodB=methodB; //將methodB綁定為靜態方法
String s="str";
s.addMethodA('good'); //實例調用方法A
String.addMethodB('hello'); //靜態類調用方法B
以上的代碼將兩個方法添加到了String class里面(天哪,final的String 也被攻破了),然后分別用實例對象調用addMethodA,靜態類調用AddMethodB.
3.Groovy是一把瑞士軍刀。
java是一把基礎工具,等你需要的時候,你需要到處去找jar包,來填充自己的程序,而且你需要看API去弄懂各種使用。此外,java的編寫實在是太冗長了,為了打印一個HelloWorld,你需要編寫class, 寫一個main函數。對於Groovy來說:print “hello world!”.這一句就足夠了,這只是開始…
通過 groovy 你能快速的打開控制台, 通過輸入如下代碼來輸出所有的文件名 ( 遞歸處理 ) :
groovy -e "new File('.').eachFileRecurse { println it }"
即使 java 有一個名稱為 eachFileRecurse 的方法和一個 FileListener 的接口,你仍舊需要顯示的創建一個類, 聲明一個 main 方法, 保存源代碼到一個文件中, 並且編譯它, 然后你才能運行它, 基於比較, 我們來看看 java 做相同工作的代碼, 我們假設存在單獨的 eachFileRecurse 方法:
public class ListFiles { // JAVA !!
public static void main(String[] args) {
new java.io.File(".").eachFileRecurse( // 假設 java 存在該方法
new FileListener() {
public void onFile (File file) {
System.out.println(file.toString());
}
}
);
}
好吧,有需要《Groovy in Action[文字版][中文].pdf》可以直接私信我,現在開始學習Groovy吧。
特別聲明:本文素材來源於網絡,僅作為分享學習之用,如有侵權,請聯系刪除!