NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

新版 Groovy 发布了,带来众多新特性

  • 2009-03-03
  • 本文字数:1188 字

    阅读完需:约 4 分钟

演员 Christopher Walken 曾在周末夜现场(Saturday Night Live)上演了一出喜剧,他说要“拳打南山猛虎、脚踢北海苍龙”。同样,Groovy 团队也听到了人们的呼声,要求加入更多的特性,就在最近他们发布了该获得大奖的语言的 1.6 版。其发布声明宣称该版本拥有众多的新特性,包括:

  • 运行时性能的巨大改进
  • 多路赋值——if/else 和 try/catch 块中可选的 return 语句
  • AST 转换及各种转换注解,如 @Singleton、@Lazy、@Immutable、@Delegate 及助手
  • Grape 模块和依赖系统及其 @Grab 转换
  • 各种改进的 Swing builder,这要归功于 Swing / Griffon( http://griffon.codehaus.org )团队
  • 几个 Swing 控制台的改进
  • 集成 JMX builder
  • 内建的 JSR-223 脚本引擎
  • 改进的各种元编程,像是 EMC DSL、甚至是针对 POJO 的单实例元类及运行时掺元(mixin)

该版本的一个主要关注点就是性能,Groovy 团队已经将性能提高了150% 到460%。另一个特性就是对 JMX builder 提供了官方的集成,这又一次证明了社区对 Groovy 改进的巨大推动力。

以下示例展示了该版本的几个新特性,包括多路赋值及 AST 转换。

复制代码
// this class' properties are immutable once the object is constructed<br></br>
@Immutable final class ServerConfig {<br></br>
  String url<br></br>
  int port<br></br>
}<p>
def getServerInfo() {</p><br></br>
  ['http://home.net', 8080]<br></br>
}<p>
// attempts to set a property on an Immutable object</p><br></br>
def setUrl(config, newUrl) {<br></br>
  try {<br></br>
    config.url = newUrl<br></br>
  }<br></br>
  catch (ReadOnlyPropertyException ex) {<br></br>
    ex<br></br>
  }<br></br>
}<p>
// multiple assignment</p><br></br>
def (url, port) = getServerInfo()<p>
assert url == 'http://home.net'</p><br></br>
assert port == 8080<p>
def config = new ServerConfig(url, port)</p><p>
assert config.url == url</p><br></br>
assert config.port == port<p>
// try to change the property on the Immutable object</p><br></br>
def result = setUrl(config, 'www.google.com')<p>
// verify the property change failed</p><br></br>
assert result instanceof ReadOnlyPropertyException<br></br>

上面的示例展示了 @Immutable AST 转换如何以简单的方式创建只读对象。该示例还介绍了新的“多路赋值”特性。请查看 Groovy 用户指南来了解关于 AST 转换的更多信息,上面的示例只介绍了 @Immutable 转换。

既然已经对 Groovy 1.6 有了一个大概的了解,为何不看看 Groovy 1.6 的新特性这篇文章呢? 这是 Groovy 项目经理 Guillaume LaForge 专门为 InfoQ 撰写的关于 Groovy 1.6 的文章,该文并不是泛泛而谈,而是深入剖析了 Groovy 1.6 的新特性。Guillaume 介绍了所有的新特性并提供了大量代码示例来阐述这些新功能。

查看英文原文: Just the Cure, More Groovy

2009-03-03 07:411418
用户头像

发布了 88 篇内容, 共 258.6 次阅读, 收获喜欢 8 次。

关注

评论

发布
暂无评论
发现更多内容

架构师训练营学习小结(2020.9.14 - 9.20)

zjzj2017

栈与队列简介

Java旅途

数据结构 队列

数据提交

hasWhere

《转》POI的XWPFParagraph.getRuns分段问题

hasWhere

Java进阶教程、大厂面试真题、项目实战,GitHub上这14个开源项目屌炸天了!

Java架构之路

Java 程序员 面试 编程语言 项目实战

CICD实战——服务自动构建与部署

TARS基金会

DevOps 后端 jenkins CI/CD TARS

格式化报文输出

hasWhere

onblur调用alert导致的死循环

hasWhere

架构师训练营学习小结(第二周2020.9.21 - 9.27)

zjzj2017

阿里P8大牛力荐Java程序员进阶必读的书籍清单(附电子版)

Java架构之路

Java 程序员 面试 编程语言 书籍推荐

收款神器!解读聚合收款码背后的原理

楼下小黑哥

java安全编码指南之:敏感类的拷贝

程序那些事

Java java安全编码 java安全 java安全编码指南

最通俗易懂的——如何将机器学习模型的准确性从80%提高到90%以上

计算机与AI

学习 数据科学

ARChatRoom功能介绍手册

anyRTC开发者

音视频 WebRTC 语音 RTC 安卓

学习路线

hasWhere

《我在你床下》观后感

徐说科技

如何避免option请求

hasWhere

c++ 杂谈3

菜鸟小sailor 🐕

一文了解Zookeeper

Java旅途

kafka zookeeper 分布式

LeetCode题解:641. 设计循环双端队列,使用队列,JavaScript,详细注释

Lee Chen

大前端 LeetCode

Http自定义请求头接收不正确

hasWhere

在多架构时代,英特尔扩展高性能计算边界

E科讯

鸿蒙系统究竟是PPT秀还是有真材实料?鸿蒙HarmonyOS开发环境搭建与运行Demo

软测小生

华为 鸿蒙 HarmonyOS

架构师训练营第二周作业

zjzj2017

高难度对话读书笔记—求助的勇气

wo是一棵草

TensorFlow 篇 | TensorFlow 2.x 基于 HParams 的超参数调优

Alex

tensorflow keras hparams tensorboard 超参数调优

学习思路

hasWhere

基于数组的有界阻塞队列 —— ArrayBlockingQueue

程序员小航

Java 源码 队列 源码阅读 JUC

Redis 缓存性能实践及总结

vivo互联网技术

redis redis集群 redis监控

架构师训练营第 1 期 第 2 周作业

李循律

极客大学架构师训练营

form表单提交get请求

hasWhere

新版Groovy发布了,带来众多新特性_Java_Craig Wickesser_InfoQ精选文章