跳过正文
Background Image
  1. Posts/

在 Jenkins 上用了这么久的 Groovy,是时候认识一下它了

·1673 字·4 分钟· ·
沈显鹏
作者
沈显鹏
目录

在使用 Jenkins 和 Groovy 越久,我就这样的疑问:

Groovy 到底是什么语言? Groovy 有哪些特性? Groovy 和 Java 有什么区别? Groovy 和 Java 如何选择? Groovy 在整个开发语言中占什么位置?要不要学?

本篇我的学习结果的分享,希望也能帮助你解答以上的这些问题。

什么是 Groovy
#

Apache Groovy 是一种强大的、可选类型的动态语言,具有静态类型和静态编译功能,适用于 Java 平台,旨在通过简洁、熟悉且易于学习的语法提高开发人员的工作效率。 它与任何 Java 程序顺利集成,并立即为你的应用程序提供强大的功能,包括脚本功能、特定领域语言创作、运行时和编译时元编程和函数式编程。

Groovy 的特性
#

翻译官方的说法,Groovy 有以下六大特性。

  1. 平坦的学习曲线 - 简洁、易读且富有表现力的语法,Java 开发人员易于学习
  2. 强大的功能 - 闭包、构建器、运行时和编译时元编程、函数式编程、类型推断和静态编译
  3. 流畅的 Java 集成 - 与 Java 和任何第三方库无缝、透明地集成和互操作
  4. 领域特定语言 - 灵活可延展的语法,先进的集成和定制机制,在你的应用程序中集成可读的业务规则
  5. 充满活力和丰富的生态系统 - Web 开发、响应式应用程序、并发/异步/并行库、测试框架、构建工具、代码分析、GUI 构建
  6. 脚本和测试胶水 - 非常适合编写简洁和可维护的测试,以及所有构建和自动化任务

Groovy 和 Java 的区别
#

 Groovy vs Java

  1. Groovy 是一种编程语言,也支持脚本语言;Java 是一种面向对象的编程语言。
  2. Groovy 支持多方法,运行方法的选择将在运行时选择;Java 提供多方法的声明,在编译时而不是运行时选择。
  3. Groovy 中,自动资源管理机制是不存在的,静态的、匿名的内部类;Java 从 Java7 版本开始就提供了自动资源管理,在内部静态类或匿名类方面占上风。
  4. Groovy 中,有一些函数式编程特性,如 Lambda 函数,函数式接口;而 Java 从 JDK 8 版本开始就有 Lambda 函数、函数式接口和许多其他的流和并行操作功能。
  5. Groovy 可以用单引号或双引号格式定义和声明字符串和字符字面;Java 只有双引号格式来声明和定义字符串字面或字符字面。
  6. Groovy 中所有东西都是一个对象,并且只使用对象。因此,不存在自动装箱或拆箱的概念,也不存在基元的转换;相反,Java 有基元数据类型和 Wrapper 类,可以显式或隐式地进行自动装箱和自动拆箱。
  7. Groovy 中,数据类型的自动拓宽和缩小有很多宽广的范围,有很多转换;而Java在数据类型的缩小或拓宽方面有限制。
  8. Groovy 对其所有类型的类成员或数据都有一个默认的访问修饰符;而Java的默认访问级别是包级,取决于类成员的类型。
  9. Groovy 在其类中自动生成 getters 和 setter 来访问和修改类的成员;而在 Java 中,它们必须在类中明确提到访问修饰符。
  10. Groovy 有 Groovy beans;而Java有Java beans。
  11. Groovy 也被称为 Java 的超集,因为 Java 程序可以在 Groovy 环境中运行。反过来并不一定。
  12. Groovy 在定义类型时有更简单的语法,只需使用 def 来声明一个变量;Java有不同类型的类型名称来声明变量或类的任何方法或成员。
  13. Groovy 不要求任何主方法或方法的入口点来运行类或任何程序;而 Java 则要求类中的 main 方法来运行程序。

Groovy 和 Java 如何选择
#

  • 如果可扩展性和性能至关重要并且公司开发 Web 应用程序,当然是 Java。比如电商、银行、金融、国防、医疗保健等领域的大公司都会选择 Java,因为它经过时间证明,通常用于开发复杂的企业项目。
  • Groovy 可以用来编排一些 Pipeline,自动化,测试任务,因为它既是编程语言也是一种出色的脚本语言,功能强大且易于学习。

Groovy 目前流行排名
#

TIOBE index

我们从这张图看到 2022 年 Groovy 语言的排行有一个非常大的下滑,从之前的排名 12 直接跌倒了 20。

从数据上 2022 年 2 月 Groovy 有小幅减少(从 0.76,%0.74%),但这不是主要原因,主要是很可能是因为 TIOBE index 从 Alexa 更换为 Similarweb 网络流量引擎导致的波动。

这些语言的排名上升包括:Assembly language,Go,Swift, MATLAB, Delphi/Object Pascal, Classic Visual Basic, Objective-C 的增长抢占了 Groovy 原有的位置。

TIOBE index for Groovy

另外从 Groovy 的流行历史来看,它目前还是有很多人在使用的。开发者或许不会把它当作第一语言,但作为脚本语言学习一下还是可以的。

对于使用 Jenkins Shared Libraries 的 DevOps 工程师,需要学习 Groovy。

参考
#

相关文章

如何通过 Jenkins 进行资源的锁定和释放
·901 字·2 分钟
本文介绍了如何使用 Jenkins 的 Lockable Resources 插件来管理和锁定资源,确保在多任务环境中资源的独占性和安全性。
通过 Jenkins 来提交修改的代码 git push by Jenkins
·439 字·1 分钟
如何通过 Jenkins Pipeline 脚本来提交修改的代码到 Git 仓库,包括克隆仓库、修改代码和推送更改等步骤。
Jenkins Linux Agent 配置
·353 字·1 分钟
本文提供了 Jenkins Linux Agent 的逐步配置指南,包括 Java 运行时的准备、节点创建以及常见问题的排查方法。
Jenkins Windows Agent 配置
·608 字·2 分钟
本文提供 Jenkins Windows Agent 的详细配置步骤,包括 Java 运行时准备、节点创建以及常见问题的排查方法。
Jenkinsfile 配置
·256 字·1 分钟
本文介绍了如何使用 Jenkinsfile 配置 Jenkins Pipeline,包括构建、测试和发布阶段的示例,以及如何处理邮件通知。
Jenkins 作业超时后让构建失败的方法(已解决)
·331 字·1 分钟
本文介绍如何在 Jenkins 流水线中正确处理超时场景,通过 try 和 catch 结合 error 确保超时后作业会失败。