導航:首頁 > 程序命令 > java程序員為什麼用groovy

java程序員為什麼用groovy

發布時間:2022-08-12 03:46:33

1. java程序員為什麼學習Groovy

首先Groovy也是運行在java虛擬機上的,二者有語法上的區別但是和java並沒有本質上的不同。
Groovy和java是相結合的關系而並不是將java取而代之。
1、Java開發者學習Groovy的成本很低
2、是一種成熟的面向對象編程語言,既可以用於面向對象編程,又可以用作純粹的腳本語言
3、完成同樣的事情Groovy可能比Java需要寫的代碼要少
4、支持單元測試和模擬(對象),可以 簡化測試
5、groovy中基本類型也是對象,可以直接調用對象的方法
......

1
2
3
4
5
6
7
8
9

def var="hello "+
"world"+
",groovy!"
def repeat(val){
for(i = 0; i < 5; i++){
println val
}
}
repeat(var)

輸出:
hello world,groovy!
hello world,groovy!
hello world,groovy!
hello world,groovy!
hello world,groovy!
最後,為什麼要學,這是給那些比較「懶」的java程序員准備的,代碼量小啊,而且一些新特性用起來也很方便省心。

2. Java程序員為什麼學習Groovy

Groovy是java親兒子。可以直接用java的API,但是Groovy的語法看起來比較類似於腳本語言的語法,同樣用Java 和Groovy寫同樣的東西,Groovy的代碼看起來要簡潔的多。 你知道Java有很多地方很操蛋的,簡單的一個操作要寫一大串...

3. 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可以這樣新增一個方法,或者調用它。

//用閉包定義一個方法 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吧。

4. Java程序員為什麼學習Groovy

  1. groovy、kotlin、scala等都是基於jvm平台的語言(都會編譯成位元組碼),並且可以和java混合使用。

  2. 他們對java進行了不同程度的改良,語法結構、集合操作方式、更多的語法糖、泛型的支持(java是偽泛型),更好的lambda表達式語法等等。一般來講這些語言可以大幅度提高生產效率,比如kotlin可以節省1/3的代碼量。

  3. 從日常使用的角度,建議學習kotlin,當前kotlin已經被google確定為新任官方語言。如果做android開發,不至於再多學習一門語言。

5. Java程序員為什麼學習Groovy

正如Groovy對Java很多特性進行的包裝優化一樣,基於Groovy的HttpBuilder也包裹了HttpClient,使網路編程變得更加的方便易用,下面稍微來用一個例子看一下。
尋找各種依賴的jar包有時候會讓我們失去耐心,不過值得慶幸的是我們有Maven和Gradle這樣的工具,可以根據配置輕松的幫我們配置好我們需要的數據。下面我們來敘述一下整個過程。
1. 創建文件夾httpbuildertest
2. 創建gradle配置文件,build.gradle,內容如下:
apply plugin: "groovy"apply plugin: "eclipse"repositories { mavenCentral()}dependencies { compile "org.codehaus.groovy:http-builder:0.4.0" compile "org.codehaus.groovy:groovy-all:2.3.3" testCompile "org.spockframework:spock-core:0.7-groovy-2.0"}

gradle我們將做另文介紹
3. 執行gralde eclipse(當然必須先安裝gradle),就可以生成eclipse所需要的.classpath和.project文件,這時候就可以使用eclipse導入功能來import->Existing Projects Into WorkSpace。
4. 創建我們的一個測試,試試看是不是可以使用httpbuilder了
import groovyx.net.http.HTTPBuilderimport spock.lang.Specification;import static groovyx.net.http.Method.*import static groovyx.net.http.ContentType.*class HttpbuildLabSpec extends Specification{HTTPBuilder http = new HTTPBuilder( 'http://m.weather.com.cn' )public void testRequestWeather(){ when: def info ="" http.request( GET, JSON ) { url.path = '/data/101290401.html' headers.'User-Agent' = 'Mozilla/5.0 Ubuntu/8.10 Firefox/3.0.4' response.success = { resp, json -> info = json.weatherinfo.city } response.failure = { resp -> println "Unexpected error: ${resp.statusLine.statusCode} : ${resp.statusLine.reasonPhrase}" } } then:"曲靖"==info}}

打完收工,通過這個小例子我們可以了解到這么一些內容:
(1)HTTPBuilder 是這個框架的核心類(要不然怎麼和框架一個名字),構建這個類的對象的時候,指定要請求的baseUrl。
(2)request方法可以指定請求的method和返回的數據格式,method對應的是GET/PUT/POST/DELETE/HEAD幾個常量,而數據格式目前有JSON/XML/HTML/BINARY/URLENC/ANY幾種。
(3)一個比較有意思的地方是,在http的request方法裡面,彷彿是無根之水一樣突然冒出來了幾個沒有聲明過的變數,看起來連編譯也不會通過的方法,那麼是如何能正常運作的呢?這個我們就要研究到Groovy的Closure(閉包)。Groovy的閉包里包含有一個delegate屬性,一般來說,這個delegate里保存的是閉包使用上下文的對象引用,比如a調用了一個閉包b,則b的delegate就是a的this對象。而在HTTPBuilder對象調用request方法的時候,它把傳入閉包的delegate改成了一個叫做SendDelegate的類對象(這是HTTPBuilder的內部類,他們都是用Java寫的,在新版的HttpBuilder里,已經改名為RequestConfigDelegate),這個類裡面,分別包含了一個叫做getHeaders()的方法,一個叫做getUrL()的方法,一個叫做getResponse()的方法。稍微思索一下我們就可以想到,Groovy里有這樣的特性,如果直接使用一個識別不出來的變數,Groovy會假設它是getter的一種簡寫形式,自動進行補全(當然這也是DSL的常用伎倆,把方法偽裝成短語),而getter並沒有參數,所以其括弧是可以簡寫的,實際上上面的代碼可以寫作getUrl().path = '/data/101290401.html',這樣就非常符合程序員的視覺體驗了。
(4)第四點羅嗦了不少,主要是為了喜歡追根問題的同學釋疑,實際上整個調用還是非常的簡單明快的,在request閉包里,我們通過response(記得嗎,實際上就是GetResponse()),獲得了一個Map結構,這個Map的內部結構實際上是Map<String,Closure>,對「success」和「failure」這兩個key我們分別設置了對應的閉包,這樣就完成了回調的設置,一旦方法成功或者失敗,就可以調用到對應的閉包。
(5)使用了JSON作為返回格式,閉包的第二個參數就是解析好的返回body,就是一個Json對象,是可以直接用點號來訪問的。當然最好不要在失敗的閉包里放這個參數,一般失敗的情況比較多,也許就是一個html返回,格式錯誤那麼測試也就無法按照預期進行了。

6. Java程序員為什麼學習Groovy

現在流行script語言,就是代碼不編譯,到運行的時候再編譯。這樣的優點是不用重新發布就可以直接修改代碼。立刻生效。特別適合j2ee應用。把一段經常改動的部分改成groovy就好了。需要修改直接改一下,方便多了。當然為了性能,一般是在java中調用groovy。
java本身支持調用多種script語言,例如javascript之類。相比之下,groovy最接近java語言,程序員學習時需要花費的時間最少。所以學的人用的多一點。

7. Java程序員為什麼學習Groovy

它是一種動態語言,和python差不多,說白了就是膠水語言,用來連接各個組件,比如web調用本地等,或者做插件之類的,增加工程部署易用性。

8. Java程序員為什麼學習Groovy

因為Groovy可以擴展java
可以更好的編寫
望採納,謝謝

閱讀全文

與java程序員為什麼用groovy相關的資料

熱點內容
linux設置umask命令 瀏覽:738
北京精雕編程教程開料入門 瀏覽:798
iso文件變成壓縮包 瀏覽:941
python爬蟲驅動瀏覽器包 瀏覽:948
es文件瀏覽器自動刪除空文件夾 瀏覽:243
安卓主屏幕鍵不能用了怎麼辦 瀏覽:331
寸雙孔文件夾 瀏覽:437
九城伺服器什麼時候可以開通 瀏覽:658
蘋果安卓手錶怎麼充 瀏覽:412
2019管理類聯考真題pdf 瀏覽:757
電腦上pdf文件 瀏覽:623
安卓為什麼玩抖音小游戲就沒有廣告 瀏覽:149
如何把伺服器指向本身 瀏覽:432
如何進入騰訊雲伺服器後台 瀏覽:104
netcore游戲編程 瀏覽:899
冰箱壓縮機能做空調嗎 瀏覽:292
方舟編譯新浪 瀏覽:475
文件夾可以藏酒瓶嗎 瀏覽:827
應用光學張以謨pdf 瀏覽:632
java獲取最新文件 瀏覽:503