Groovy運行於JVM之上,然而其對動態語言、函數式編程範式以及元編程功能的加持所帶來的表現力和簡潔性能夠說甩了Java幾條街。咱們能夠利用Groovy的全部動態功能構建高性能的JVM應用、將開發效率提升幾個數量級! 這就是咱們爲何要學它!編程
注: 本文首發於 My 公衆號 CodeSheep ,可 長按 或 掃描 下面的 當心心 來訂閱 ↓ ↓ ↓vim
本文實驗所用OS爲CentOS7,這裏介紹使用sdk工具來安裝Groovy的方法。安全
curl -s get.sdkman.io | bash
bash
source "$HOME/.sdkman/bin/sdkman-init.sh"
服務器
一句話搞定!框架
sdk install groovy
curl
groovy -v
函數式編程
一切就緒函數
[root@localhost ~]# vim Hello.groovy
[root@localhost ~]# more Hello.groovy
println "Hello World From Groovy !"
[root@localhost ~]# groovy Hello
Hello World From Groovy !
複製代碼
兩大優勢:表現力 + 簡潔!!!微服務
用Java寫一段代碼以下:
public class Greetingss {
public static void main( String[] args ) {
for( int i=0; i<3; i++ ) {
System.out.println("ho ");
}
System.out.println("Merry Groovy");
}
}
複製代碼
用Groovy重構一遍以下:
for(i in 0..2) {
print 'ho '
}
print 'Merry Groovy'
複製代碼
看看兩種語言的信噪比對比,真是給人不可估量的感動!
能夠避免代碼中的大量null引用的判斷
def foo( str ) {
str?.reverse() // 僅當str不爲null時reverse纔會執行
}
複製代碼
這能夠幫咱們省多少個if
啊!!!
與Java相比,Groovy的異常處理少了不少繁文縟節
對於那些不想處理或者不適合在代碼當前層次處理的異常,Groovy對用戶不作任何要求,任何用戶未處理的異常會自動傳遞到高一層,咱們啥也不用寫:
def openfile( fileName ) { // 無需throws
new FileInputStream( fileName ) // 無需try...catch... 處理
}
複製代碼
異常能夠放到其調用代碼中處理:
try {
openFile("nonexistfile")
} catch( FileNotFoundException ex ) {
print "Oops: " + ex
}
複製代碼
若捕獲全部異常(Exception),則上面catch中異常的類型均可省略:
try {
openFile("nonexistfile")
} catch( ex ) { // 省略類型表示可捕獲全部異常
print "Oops: " + ex
}
複製代碼
靜態方法內可以使用this來引用Class對象,所以能夠鏈式調用
class Wizard {
def static learn( trick, action ) {
//...
this
}
}
Wizard.learn('xxxx', {...})
.learn('yyyy', {...})
.learn('zzzz', {...})
複製代碼
做者更多的SpringBt實踐文章在此:
若是有興趣,也能夠抽點時間看看做者一些關於容器化、微服務化方面的文章: