手机版
你好,游客 登录 注册
背景:
阅读新闻

Apache发布Groovy 2.5正式版及3.0预览版

[日期:2018-07-13] 来源:infoq.com  作者:Michael Redlich ,译者 无明 [字体: ]

Apache基金会最近发布了Groovy2.5,新功能包括:

  • AST转换的改进
  • 新的宏支持
  • 其他杂项改进

运行Groovy 2.5至少需要JDK 7,在JDK 9+上运行可以忽略良性警告。

尽管最近人们把关注点转到了其他JVM语言上(如Kotlin),但Groovy仍然有很大的增长。正如Groovy提交者、OCI首席软件工程师Paul King博士在最近的一次网络研讨会上所说的:

Groovy的下载量说明,它仍然是继Java之后JVM上第二大最受欢迎的语言,而且这个数字还在不断增加。今年第一季度,下载次数为9000万次,比去年第一季度下载次数的两倍还要多。所以我们可以看到,人们仍然对Groovy很感兴趣。

在过去的12个月里,Groovy增加了30个新的提交者。

AST转换——注解

如下图所示,为了保证转换之间的一致性,对很多现有的AST转换进行了改进,并在2.5版本中添加了11个新的转换。在Groovy 3.0中添加了一个额外的转换,但在GA发布之前可能会出现更多转换。

Apache发布Groovy 2.5正式版及3.0预览版

AST转换——宏

如上所述,Groovy提供了大量的内置AST转换。开发人员也可以创建自己的自定义转换,前提是需要了解Groovy语法结构的内部表示。

2.5版本中的宏功能消除了了解语法结构内部表示的需要,正如发行说明中所定义的那样:

在创建编译时元编程扩展时,宏可以让你直接使用Groovy语法,而不是使用内部编译器表示。因此,转换的创建将掌握在所有Groovy程序员手中,而不仅仅是Groovy编译器创建者。

例如,假设开发人员希望创建一个转换(@Info),用于生成一个方法(@getInfo())。在2.5版本之前,需要编写以下代码:

...
def clazz = new MethodCallExpression(new VariableExpression("this"), "getClass", EMPTY_ARGUMENTS)
def body = new ExpressionStatement(new MethodCallExpression(clazz, "getName", EMPTY_ARGUMENTS))
classNode.addMethod('getInfo', ACC_PUBLIC, STRING_TYPE, EMPTY_ARRAY, ClassNode.EMPTY_ARRAY, body)
...

有了宏以后,上面代码中的前两行可以替换为:

def body = macro(true) {
    getClass().name
    }

更多详细信息可以查看发行说明。

Groovy 3.0

Groovy 3.0.0-alpha-3从6月下旬开始就可用,并计划于今年晚些时候推出其他beta版,候选版本预计于2019年初发布。

Groovy 3.0至少需要JDK 8才能运行,并对JDK 9及更高版本的支持进行了改进。一个名为Parrot Parser的新解析器将支持新的Groovy语法,这是一个重要的新特性。

其他资源:

查看英文原文Apache Releases Groovy 2.5 and Preview of Groovy 3.0

Linux公社的RSS地址:https://www.linuxidc.com/rssFeed.aspx

本文永久更新链接地址https://www.linuxidc.com/Linux/2018-07/153116.htm

linux
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款