groovy語言是一款免費的jvm開發語言,軟件包括靜態類型和靜態編譯兩大功能,結合了Python、Ruby和Smalltalk等多種特性,支持腳本功能、Java語言編寫、語法高亮、代碼差錯等功能,可以大大提高編程效率。需要的朋友可以下載哦!
平學習曲線
簡潔,可讀和表達的語法,易於Java開發人員學習
平滑的Java集成
無縫和透明地集成並與Java和任何第三方庫進行互操作 充滿生機
Web開發,反應式應用程序,並發/異步/並行庫,測試框架,構建工具,代碼分析,GUI構建
強大的功能
閉包,構建器,運行時和編譯時元程序設計,函數編程,類型推斷和靜態編譯
域特定語言
靈活和可擴展的語法,高級集成和定製機製,在您的應用程序中集成可讀的業務規則 腳本和測試膠
偉大的寫作簡潔和可維護的測試,以及所有的構建和自動化任務
1、 構建在強大的Java語言之上 並 添加了從Python,Ruby和Smalltalk等語言中學到的 諸多特征,例如動態類型轉換、閉包和元編程(metaprogramming)支持。。
2、為Java開發者提供了 現代最流行的編程語言特性,而且學習成本很低(幾乎為零)。
3、 支持DSL(Domain Specific Languages領域定義語言)和其它簡潔的語法,讓代碼變得易於閱讀和維護。
4、受檢查類型異常(Checked Exception)也可以不用捕獲。
5、 Groovy擁有處理原生類型,麵向對象以及一個Ant DSL,使得創建Shell Scripts變得非常簡單。
6、在開發Web,GUI,數據庫或控製台程序時 通過 減少框架性代碼 大大提高了開發者的效率。
7、支持單元測試和模擬(對象),可以 簡化測試。
8、無縫集成 所有已經存在的 Java對象和類庫。
9、直接編譯成Java字節碼,這樣可以在任何使用Java的地方 使用Groovy。[2]
10、支持函數式編程,不需要main函數。
11、一些新的運算符。
12、默認導入常用的包。
13、斷言不支持jvm的-ea參數進行開關。
14、支持對對象進行布爾求值。
15、類不支持default作用域,且默認作用域為public。
16、groovy中基本類型也是對象,可以直接調用對象的方法。
動態類型
類型對於變量,屬性,方法,閉包的參數以及方法的返回類型都是可有可無的,都是在給變量賦值的時候才決定它的類型, 不同的類型會在後麵用到,任何類型都可以被使用,即使是基本類型 (通過自動包裝(autoboxing)). 當需要時,很多類型之間的轉換都會自動發生,比如在這些類型之間的轉換: 字符串(String),基本類型(如int) 和類型的包裝類 (如Integer)之間,可以把不同的基本類型添加到同一數組(collections)中。
閉包
閉包就是可以使用參數的代碼片段,每個閉包會被編譯成繼承groovy.lang.Closure類的類,這個類有一個叫call方法,通過該方法可以傳遞參數並調用這個閉包.它們可以訪問並修改在閉包創建的範圍內的變量,在閉包內創建的變量在閉包被調用的範圍內同樣可以被引用, 閉包可以保存在變量中並被作為參數傳遞到方法中。
Groovy 語法與Java 語言的語法很相似,雖然 Groovy 的語法源於Smalltalk和Ruby這類語言的理念,但是可以將它想像成 Java 語言的一種更加簡單、表達能力更強的變體。(在這點上,Ruby與 Groovy 不同,因為它的語法與 Java 語法差異很大。)
許多 Java 開發人員喜歡 Groovy 代碼和 Java 代碼的相似性。從學習的角度看,如果知道如何編寫 Java 代碼,那就已經了解 Groovy 了。Groovy 和 Java 語言的主要區別是:完成同樣的任務所需的 Groovy 代碼比 Java 代碼更少。
groovy類介紹
Groovy類和java類一樣,完全可以用標準java bean的語法定義一個Groovy類。但作為另一種語言,可以使用更Groovy的方式定義類,這樣的好處是,可以少寫一半以上的javabean代碼。
(1)不需public修飾符
如前麵所言,Groovy的默認訪問修飾符就是public,如果Groovy類成員需要public修飾,則根本不用寫它。
(2)不需要類型說明
同樣前麵也說過,Groovy也不關心變量和方法參數的具體類型。
(3)不需要getter/setter方法
在很多ide(如eclipse)早就可以為程序員自動產生getter/setter方法了,在Groovy中,不需要getter/setter方法--所有類成員(如果是默認的public)根本不用通過getter/setter方法引用它們(當然,如果一定要通過getter/setter方法訪問成員屬性,Groovy也提供了它們)。
(4)不需要構造函數
不再需要程序員聲明任何構造函數,因為實際上隻需要兩個構造函數(1個不帶參數的默認構造函數,1個隻帶一個map參數的構造函數--由於是map類型,通過這個參數可以構造對象時任意初始化它的成員變量)。
(5)不需要return
Groovy中,方法不需要return來返回值。
(6)不需要()
Groovy中方法調用可以省略()(構造函數除外)。
在Groovy中類和文件的對應關係並不像Java中那麼固定(Java中一個文件隻能有一個聲明為public的類和其他一些非公共的類和內嵌類) 。在同一個groovy文件中可以包含多個public的類定義。具體規則如下:
如果在一個groovy文件中沒有任何類定義,它將被當做script來處理,也就意味著這個文件將被透明的轉換為一個Script類型的類,這個自動轉換得到的類將使用原始的groovy文件名(去掉擴展名,沒有包名,在default包中)作為類的名字。groovy文件的內容被打包進run方法,另外在新產生的類中被加入一個main方法以進行外部執行該腳本。
如果在groovy文件正好有一個類的定義,並且該類的名字與文件名稱相同,那麼這就和java中的類與文件的一一對應關係相同。
在一個groovy文件中可以包含多個不同可見性的類定義,並且沒有強製性的要求其中有一個類的類名與文件名相同。groovyc編譯器會很樂於把該文件中定義的所有的類都編譯成*.class文件。如果希望能夠直接調用這個groovy script,比如說在使用groovy命令行或者在某個IDE中執行,那麼應該在該文件中的第一個類中定義一個main方法。
在一個groovy文件中可以混合類的定義和腳本定義。在這種情況下,那些腳本代碼將會變成直接調用的主類,所以在這種情況下不應該再定義一個和文件同名的類。
在沒有經過明確的編譯過程即執行時,groovy將通過文件名來查找類。在這種情況下,名稱將會很重要。Groovy隻能找到那些和文件名匹配的類。在找到這種名字匹配的類時,找到的文件中定義的其他類將被解析並變得對groovy可見。
76.4M / 03-25
立即下載55M / 06-05
立即下載237.9M / 04-13
立即下載140.5M / 03-06
立即下載900.9M / 03-02
立即下載96.2M / 07-06
立即下載311.2M / 07-06
立即下載335M / 07-06
立即下載200M / 07-06
立即下載413.8M / 07-06
立即下載353.9M / 06-05
立即下載131.8M / 04-13
立即下載230.8M / 03-03
立即下載195.6M / 03-03
立即下載165.4M / 03-03
立即下載45.6M / 09-08
立即下載665.2M / 07-06
立即下載2.84G / 07-06
立即下載93M / 07-06
立即下載338.3M / 07-06
立即下載1.38G / 07-26
立即下載488.3M / 07-16
立即下載109.8M / 06-03
立即下載142M / 01-08
立即下載1.2M / 11-23
立即下載548.8M / 04-13
立即下載1.6M / 04-13
立即下載1.48G / 03-18
立即下載646.6M / 03-03
立即下載133.7M / 03-03
立即下載325.8M / 06-07
立即下載60M / 04-29
立即下載254M / 04-25
立即下載659M / 04-23
立即下載1M / 12-26
立即下載253.4M / 12-08
立即下載253M / 12-08
立即下載1.19G / 11-16
立即下載110.5M / 04-23
立即下載26.7M / 03-16
立即下載488.3M / 07-16
立即下載248.9M / 12-08
立即下載248.9M / 12-08
立即下載201.2M / 04-13
立即下載100.6M / 03-06
立即下載148.9M / 03-06
立即下載1.12G / 07-06
立即下載1.25G / 07-06
立即下載9.48G / 07-06
立即下載50KB / 07-06
立即下載116.2M / 04-10
立即下載1.92G / 04-17
立即下載201.5M / 04-13
立即下載7.31G / 07-01
立即下載94.3M / 07-06
立即下載2.48G / 07-06
立即下載7.63G / 07-06
立即下載1M / 07-06
立即下載778.1M / 07-06
立即下載509.7M / 07-06
立即下載561.8M / 07-11
立即下載1.32G / 01-19
立即下載72M / 07-06
立即下載548.7M / 07-06
立即下載1.00G / 07-06
立即下載9.13G / 07-06
立即下載126.2M / 07-06
立即下載72M / 07-06
立即下載105.1M / 07-06
立即下載132M / 07-06
立即下載