安裝本網站至主畫面:

[Groovy] 程式設計教學:使用考量

PUBLISHED ON DEC 27, 2018 — PROGRAMMING
Facebook Twitter LinkedIn LINE Skype EverNote GMail Yahoo Email

    在上一篇文章中,我們對 Groovy 做了一個初步的介紹,相信讀者對 Groovy 已經有一些初步的概念。在這一篇文章中,我們討論一些使用 Groovy 所要考量的點,讀者可以考慮是否要將 Groovy 用於自已的專案中。

    首先,Groovy 不會取代 Java,也不會和 Java 競爭,畢竟 Java 平台是 Groovy 的母體。大部分 Java 函式庫仍是以 Java 撰寫,即使我們用 Groovy 撰寫函式庫,也可以轉為 Java 通用的套件格式,供其他 Java 程式使用。由於大部分網路上的 Java 相關函式庫的範例和 API 仍使用 Java,仍然要會看 Java 程式碼。不過,比起其他的 Java 平台語言,Groovy 算是在語法上最接近 Java 的,某種程度上降低了入門的門檻。

    在 Java 平台語言中,速度往往不會是最重要的考量。比起其他的 Java 平台語言,Java 本身仍然是最快的,但是這些 Java 平台語言並沒有消失,仍然有一定的使用人口。而且,Java 平台語言不會自絕於 Java 之外,通常會提供某種和 Java 程式及函式庫互通的方法。對於需要效能的部分,仍然可以回頭撰寫 Java,再從其他 Java 平台語言呼叫。

    在 Java 平台上,有許多 Java 平台語言,以下數種是較為常見的:

    • Scala
    • Groovy
    • Kotlin
    • Clojure
    • Jython (移植 Python)
    • JRuby (移植 Ruby)

    不同的語言,代表不同的需求,像是 Clojure 帶有強烈的 Lisp 色彩,Scala 融合物件導向和函數式兩大程式設計模式 (paradigm),Jython 和 JRuby 則分別吸引 Python 和 Ruby 的使用者轉而投入 Java 平台。而 Groovy 刻意地和 Java 語法接近,提供 Java 程式設計者一個相對平滑的學習曲線。至於最近走紅的 Kotlin,則是因為其語法較 Java 好,又可執行在舊版 Java 平台上,因而受到 Android 程式開發者的喜愛。

    在這些語言中,前四者是相對較多人注目的,但 Groovy 不是最熱門的程式語言,可見以下的圖表:

    如果去查一些語言排名網站,也可以發現 Groovy 不是 top 級的語言,為什麼還要學習 Groovy 呢?筆者認為首要的原因是 Gradle,這是目前 Java 平台主流的編譯工具,像是 Android Studio 即是採用 Gradle 做為其專案管理工具。先前 Java 生態圈使用 Ant 和 Maven 這兩套編譯工具,這兩套都是 XML 為基礎的專案管理工具,然而,從先前的經驗可知,XML 相對不易使用。Gradle 改以 Groovy 為基礎所開發的 DSL (domain specific language),才解決了這個議題。

    除了 Gradle 以外,還有一些專案值得注意,像是用於網頁程式的 Grails 框架和桌面程式的 Griffon 框架等。由於網頁程式和桌面程式是做為使用者介面,往往不會是效能瓶頸的部分,將這些使用者介面的部分使用 Groovy 開發,而僅在需要效能的部分改用 Java。除了一開始必需的學習時間以外,長期來說,這樣的模式反而更節省開發時間。

    由於現行主流 Java 相關 IDE 的支援,Groovy 程式碼可以和 Java 程式碼混在同一個專案,通常核心功能仍是用 Java 開發,但是測試程式等非主要程式碼的部分就可以轉用 Groovy 撰寫,不論是用 JUnit 或是 Spock 皆可。和先前所述的概念相似,結合不同程式語言的長處,省下開發所費的心力。

    對於撰寫應用程式來說,靜態型別語言較為合適,因為可以透過語法和型別檢查提前找出錯誤。然而,對於某些任務,像是文字處理 (text processing)、資料分析 (data analysis)、工作流程自動化 (workflow automation) 等,靜態型別反而帶來過多的限制;像是目前主流的資料分析用語言,如 Python 或 R,都是動態型別語言。這時候,Groovy 可以做為一個動態型別語言的方案,同時仍繼續沿用 Java 生態圈的函式庫。

    先前 Groovy 因速度過慢而遭人詬病,不過,在 2.0 版後,Groovy 的速度已經改善不少。透過一些最佳化的方法,Groovy 程式的速度僅為 Java 程式的三至五倍慢左右,對大部分的情境來說,其實也夠用了。必要的時候,我們還是可以回頭撰寫 Java 程式,所以,不太需要撰心這點。

    透過本文的敘述,相信各位讀者已經對 Groovy 的使用時機有一些想法,對於要將 Groovy 用在自己的專案更有信心。在下一篇文章中,我們將實際建置 Groovy 開發環境,做為撰寫 Groovy 程式的準備。

    你或許對以下產品有興趣
    TAGS: GROOVY, JAVA