Groovy檢視原始碼討論檢視歷史
Groovy |
Groovy是一種基於JVM(Java虛擬機)的敏捷開發語言,它結合了Python、Ruby和Smalltalk的許多強大的特性,Groovy 代碼能夠與 Java 代碼很好地結合,也能用於擴展現有代碼。由於其運行在 JVM 上的特性,Groovy也可以使用其他非Java語言編寫的庫。
簡介
Groovy 是 用於Java虛擬機的一種敏捷的動態語言,它是一種成熟的面向對象編程語言,既可以用於面向對象編程,又可以用作純粹的腳本語言。使用該種語言不必編寫過多的代碼,同時又具有閉包和動態語言中的其他特性。Groovy是JVM的一個替代語言(替代是指可以用 Groovy 在Java平台上進行 Java 編程),使用方式基本與使用 Java代碼的方式相同,該語言特別適合與Spring的動態語言支持一起使用,設計時充分考慮了Java集成,這使 Groovy 與 Java 代碼的互操作很容易。(注意:不是指Groovy替代java,而是指Groovy和java很好的結合編程。類型對於變量,屬性,方法,閉包的參數以及方法的返回類型都是可有可無的,都是在給變量賦值的時候才決定它的類型, 不同的類型會在後面用到,任何類型都可以被使用,即使是基本類型 (通過自動包裝(autoboxing)). 當需要時,很多類型之間的轉換都會自動發生,比如在這些類型之間的轉換: 字符串(String),基本類型(如int) 和類型的包裝類 (如Integer)之間,可以把不同的基本類型添加到同一數組(collections)中。
評價
在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可見。[1]