[Groovy] 程式設計教學:簡介

【分享文章】
Facebook Twitter LinkedIn LINE Skype EverNote GMail Yahoo Email

    Groovy 是一個運行在 Java 平台之上的動態型別 (dynamically-typed)、通用型 (general-purpose) 程式語言,但可視需求自行加入型別的資訊;目前 Groovy 是 Apache 基金會底下的一個開放原始碼 (open-source) 計畫,以 Apache License v2 授權發行,大體上來說,可以放心地將 Groovy 用在商業軟體上,實際上,也有不少商業公司使用 Groovy。

    雖然 Groovy 在台灣能見度不算高,但 Groovy 其實在 Java 生態圈中仍有一定地位,像是用在 Java 及 Android 專案管理的 Gradle 就是一個基於 Groovy 的 DSL (domain-specific language),筆者會注意到 Groovy 也是從 Gradle 開始。

    根據 Groovy 官網及其他相關資料,可以 Groovy 有以下特性:

    • 運行在 Java 平台上
    • 動態型別語言,但可選擇性加入型別資訊
    • 可和 Java 函式庫互通
    • 語法上接近 Java
    • 吸收 Python、Ruby、Smalltalk 等語言的特性
    • 豐富的生態圈,包括但不限於
      • Gradle:Java 平台相當流行的流程自動化軟體
      • Grails:網頁程式框架
      • Griffon:桌面程式框架
      • Spock:測試框架
      • GPars:平行程式框架

    Groovy 不僅可運行在 Java 平台上,更重要地,Groovy 可以直接沿用 Java 函式庫,減少程式設計者重造輪子的時間和心力。其實,Groovy 也可以用來寫 Java 函式庫,供其他 Java 程式使用,但因為效能的考量,實際上較少這樣做。另外,Groovy 刻意在語法上接近 Java,降低 Java 程式設計者的學習曲線。

    從 Groovy 上知名的專案來看,包括網頁程式 (Grails)、桌面程式 (Griffon)、工作流程自動化 (Gradle)、測試框架 (Spock) 等,大部分都是比較不需效能的部分。使用 Groovy 的好處,在於 Groovy 可以和 Java 共存,需要效能的部分仍是用 Java 撰寫,其他部分則是用 Groovy 節省開發時間。

    Groovy 在設計時,參考了一些 Python、Ruby、Perl、Smalltalk 等語言的特性,語法相對簡潔,類似腳本語言。其實,Groovy 有做為通用型腳本語言的潛力,尤其在 Windows 平台上。筆者在先前的文章中曾說過,由於 Windows 平台對 C 支援不佳,對於主流的腳本語言,包括 Python 及 Ruby 等,在 Windows 上有時會水土不服;而 Groovy 是基於 Java 平台,絕大部分的 Java 函式庫都是以 Java 實作,幾乎沒有 C 所造成的問題。但是 Groovy 目前學習資源較少,是最大的問題。

    雖然 Groovy 號稱簡單易學,但筆者認為其實 Groovy 並不是那麼容易,因為:

    • Groovy 的語法 (syntax) 是 Java 語法加上 Groovy 特有的語法而成,等於至少會順便看過一輪 Java 語法,但語意 (semantic) 上仍有一些細微的相異
    • 大部分的 Java 函式庫預設程式設計者使用 Java,範例和 API 文件都以 Java 使用者的角度撰寫,所以還是要會看基本的 Java 語法
    • Groovy 的工具鏈 (toolchain) 是沿用原先 Java 的工具,比起 Python 或 Ruby,Java 的工具較為複雜
    • Groovy 學習資源較少,且大部分的 Groovy 學習資源都是以讀者為 Java 程式設計者的前提去撰寫

    因此,筆者著手撰寫一些 Groovy 的學習資料,希望對讀者有所幫助。在下一篇文章中,我們會討論一些使用 Groovy 時的考量,讀者可以思考一下是否要將 Groovy 用於自已的專案中。

    【分享文章】
    Facebook Twitter LinkedIn LINE Skype EverNote GMail Yahoo Email
    【追蹤網站】
    Facebook Twitter Plurk
    臉書討論區
    【支持本站】
    Buy me a coffeeBuy me a coffee
    標籤: GROOVY, JAVA