Groovy開發環境搭建

Groovy開發環境搭建

 

Groovy是一種基於JVM(Java虛擬機)的敏捷動態開發語言。它是一種成熟的面向對象編程語言,既可以用於面向對象編程,又可以用作純粹的腳本語言。

Groovy是一種動態語言,它和Java類似,都在Java虛擬機中運行。當運行Groovy腳本時它會先被編譯成Java類字節碼,然後通過JVM虛擬機執行這個Java字節碼類。

Groovy與 Java可以很好的互相調用並結合編程 ,比如在寫 Groovy 的時候忘記了語法可以直接按Java的語法繼續寫,也可以在 Java 中調用 Groovy 腳本。比起Java,Groovy語法更加的靈活和簡潔,可以用更少的代碼來實現Java實現的同樣功能。

 

 

Groovy 和 Java 語言對比

用 Java 編寫的典型的 Hello World 示例如下所示:

public class HelloWorld {

public static void main(String[] args) {

System.out.println("java:Hello World");

   }

}

 

用 Groovy 編寫 Hello World 程序就如下面這樣簡單:

println "Hello World!"

 

Groovy 支持鬆散的 Java 語法,例如,不需要爲打印 “Hello World!” 這樣的簡單操作定義類。Groovy 允許輸入println,而無需輸入System.out.println。

 

 

Groovy是依賴於Java的,所以首先要配置好JDK。

接着,下載Groovy,其網址:

http://groovy-lang.org/download.html

有兩種格式:.exe是安裝版,.zip是壓縮文件版,

我下載的是apache-groovy-sdk-3.0.0-rc-1.zip,是壓縮文件版,將其壓縮文件解壓到任意目錄下,即可看到如下文件路徑。

bin:該路徑下存放了各種工具命令,常用命令groovy就放在該路徑下。

lib:該目錄下包含了groovy的各種工具JAR包。

licenses:groovy項目相關的各種授權文檔。

 

下載完成後,解壓到指定目錄,

配置Groovy環境變量:將 bin 目錄添加到系統環境變量(配置Groovy環境變量)。

將(跟據你的實際情況)D:\groovy-3.0.0-rc-1\bin

放入系統環境變量path

在win10配置系統環境變量

右鍵此電腦,屬性,高級系統設置,系統屬性,在“系統變量”中,找到PATH,添加,參見下圖:

 

測試

在cmd命令行使用groovy -v,如果出現Groovy版本號說明配置成功。參見下圖:

 

注:若提示

WARNING: An illegal reflective access operation has occurred

WARNING: Illegal reflective access by org.codehaus.groovy.vmplugin.v7.Java7$1 (file:/D:/groovy-2.5.8/bin/../lib/groovy-2.5.8.jar) to constructor java.lang.invoke.MethodHandles$Lookup(java.lang.Class,int)

WARNING: Please consider reporting this to the maintainers of org.codehaus.groovy.vmplugin.v7.Java7$1

WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations

WARNING: All illegal access operations will be denied in a future release

說明groovy版本和jdk的版本不匹配,但影響不大。groovy-2.5.8和jdk11有此問題groovy-3.0和jdk11就沒有此問題。

 

我用的是jdk11,groovy-3.0.0-rc-1

一旦上述步驟之後,你就可以開始使用Groovy shell,有助於測試我們的Groovy,而不需要爲Groovy提供一個完整的集成開發環境。可以通過在命令提示符下命令groovysh來完成,參見下圖

輸入groovysh 回車

輸入println "Hello World!" 回車

 

在cmd中使用groovyconsole命令會啓動自帶的編輯器

輸入println "Hello World!",用script ->Run 或 按下快捷鍵Ctrl +R運行

另外如果選擇File - Save As...可以將Groovy保存爲groovy文件。所以Groovy的文件後綴就是groovy。當然你也可以在命令行用groovy xxx.groovy來運行Groovy程序。

 

 

Groovy語言基礎

Groovy註釋標記和Java一樣,使用//

Groovy語句可以不用分號結尾。

 

Groovy中的變量

基本類型(java中的int,float,double,byte,char,long,short)和對象類型(String等) ,最終都是對象類型。

int x = 10

println x.class //結果爲:class java.lang.Integer

 

Groovy運算符

Groovy的運算符與Java大多相同,也有些與Java的不同點,如:

冪運算符**

assert  2 ** 3   //顯示8

 

非運算符!

assert (!true)    //顯示false

 

Groovy支持將?:三目運算符簡化爲二目,如:

displayName = user.name ? user.name : 'Anonymous'  

displayName = user.name ?: 'Anonymous'

 

Groovy定義變量

Groovy中支持動態類型,即定義變量的時候可以不指定其類型。Groovy中,變量定義可以使用關鍵字def。

def var=1

def str="iamaperson"

def intx=1  //也可以指定類型

Groovy變量定義有強類型定義和弱類型定義2種方式。

強類型定義是在聲明一個變量的時候,同時指定變量的類型。如:

int x = 10

double y = 2.0

這種的聲明後期不能更改成其他類型。這種類型是強類型。

x="good" //拋出異常(Exception thrown)

 

弱類型定義不需要提前指定變量的類型,可以通過def關鍵字告訴編譯器聲明變量。

def z=5

z="Hi"

使用def定義的變量能夠隨時改變它的類型。

對於弱類型後期可以更改成其他類型 ,開始z 是一個int 類型 後期改成了字符串類型

一般而言,如果變量只有在本模塊內部使用,推薦使用弱類型定義方式,可以方便轉換成其他需要的類型。如果變量用於其他模塊或者其他類,推薦使用強類型定義方式,這種方式定義的變量不能動態轉換爲其他類型,保證了外界傳入的值是正確的。

使用弱類型定義的類型是Object類型,使用強類型定義的類型是具體的某一種類型。

 

Groovy的字符串

Groovy中字符串分爲三種,我們一個個來看。

單引號字符串,單引號字符串不會對$號進行轉義,原樣輸出,如下:

def str1 = 'i am $i yuan'//單引號不會轉義

println str1 //輸出  i am $i yuan

雙引號字符串,雙引號字符串會對$號進行轉義,如下:

def str2 = "i am $i yuan"//雙引號會轉義

println str2 //輸出  i am 10 yuan

 

三引號字符串,三引號字符串支持換行,原樣輸出,如下:

//三個引號原樣輸出

def str3 = '''

    public static void main(){

        println "miss you"

    }

'''

println str3

輸出:

    public static void main(){

        println "miss you"

    }

 

 

Groovy數據結構(容器類形)

列表

def listA=[1,2,3,4] //定義列表

println listA.min() //輸出1

 

列表轉數組

def listB = [1,2,3,4,5] as int[] //列表轉數組

listB[2]  //輸出3

 

數組

int[] array = [1,2,3]

 

映射(map

Groovy 定義 Map 的方式非常簡潔,通過中括號包含key、val的形式,key和value以冒號分隔([key:value])。Groovy中的Map其實就是java.util.Map,實現類默認使用的是java.util.LinkedHashMap。

//定義映射(map)

def students = [

                1 : "張三",

                2 : "李四",

                3 : "Jhon"

                ]

//索引

students[1]   //此句也可替換爲students.get(1),顯示 張三

 

Ranges

簡單來說Ranges就是對List的擴展,用…或者…<來定義,具體使用如下:

def Range1 = 1..10//包括10

println Range1.contains(10) //true

 

def Range2 = 1..<10//不包括10

println Range2.contains(10) //false

 

函數

函數定義時,參數的類型也可以不指定。比如

Stringfunction(arg1,args2){//無需指定參數類型}

除了變量定義可以不指定類型外,Groovy中函數的返回值也可以是無類型的。比如:

//無類型的函數定義,必須使用def關鍵字

def nonReturnTypeFunc(){

   last_line//最後一行代碼的執行結果就是本函數的返回值

}

//如果指定了函數返回類型,則可不必加def關鍵字來定義函數

String getString(){

return "I am a string"

}

 

def  repeat(val){

for(i = 0; i < 5; i++){

println val

}

}

調用這個函數。

repeat("hello world")

會輸出 “hello world” 五次。

 

groovy程序結構

包名的定義和作用及含義完全和Java一樣,如:

// defining a package named com.yoursite

package com.yoursite

 

Imports引入

常規的imports導包操作和Java一樣,如:

import groovy.xml.*

提示:Groovy與Java類似,已經幫我們默認導入了一些常用的包,所以在我們使用這些包的類時就不用再像上面那樣導入了,如下是自動導入的包列表:

import java.lang.*

import java.util.*

import java.io.*

import java.net.*

import groovy.lang.*                                  

import groovy.util.*

import java.math.BigInteger

import java.math.BigDecimal

 

 

延展閱讀

groovy常用語法及實戰

https://www.cnblogs.com/yufecheng/p/11302777.html

Groovy腳本基礎全攻略

https://www.jianshu.com/p/fbfaaecc19ee

精通 Groovy

https://www.ibm.com/developerworks/cn/education/java/j-groovy/j-groovy.html

發佈了60 篇原創文章 · 獲贊 60 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章