[Groovy] 程序设计教学:简介

PUBLISHED ON DEC 23, 2018 — PROGRAMMING

    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 用于自已的项目中。

    你或许对以下产品有兴趣
    TAGS: GROOVY, JAVA