速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

新版 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:411502
用户头像

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

关注

评论

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

多线程之信号量(By C++)

赖猫

c++ 多线程

第十三周 数据应用2 总结

三板斧

极客大学架构师训练营

第十周作业

Jack

python3参考秘籍-附PDF下载

程序那些事

Python 程序那些事 Python秘籍 Python数据分析

“关灯”看这出戏,依旧是百年至美

脑极体

笔记|怎样成为高效学习的人

熊斌

学习 个人成长 成长笔记 七日更

工具之书:《账簿与权力》与 GNUCash

lidaobing

GNUCash 28天写作

架构师训练营第十周作业

丁乐洪

思考-国际化系统表结构设计

BerryMew

刨根问底,kafka到底会不会丢消息

爱笑的架构师

kafka 消息队列 Kafka知识点 消息中间件 七日更

Hystrix-技术专题-基础运作原理

洛神灬殇

你不得不知道的反射(非常重要)

安琪拉的博客

Java 反射 java反射

TypeScript | 第五章:高级类型

梁龙先森

typescript 大前端 七日更

如何解决MySQL主从数据库没有同步的问题?

冰河

MySQL 高可用 主从复制

加快你ROS安装的一篇文章

良知犹存

ROS

架构师训练营 第十周作业

文江

一个HashMap能跟面试官扯上半个小时

安琪拉的博客

Java HashMap底层原理

垃圾回收你懂,Java垃圾回收你懂吗?

华为云开发者联盟

Java 虚拟机 存储 对象 垃圾回收

Thread 线程,状态转换、方法使用、原理分析

小傅哥

线程 小傅哥 Thread 七日更 状态流转

领域驱动落地实现

星际行者

DDD 领域驱动

架构师训练营大作业1

邓昀垚

微服务:服务本身的设计、维护以及治理

积极&丧

ModelArts黑科技揭秘|模型智能评估、诊断,让模型来个“体检

华为云开发者联盟

AI 模型 华为云 modelarts 智能诊断

回溯和动态规划解决每次移动一步最终回到原地算法、富兰克林成功要素和狗熊掰棒子、swift多线程编程入门operation John 易筋 ARTS 打卡 Week 31

John(易筋)

ARTS 打卡计划 富兰克林成功要素 狗熊掰棒子 动态规划解决移动回到原地 swift operation

skynet源码分析之网络层—Lua层

赖猫

c++ lua skynet

今天,我们为什么应该读懂华为人工智能?

脑极体

刘华:戏说Docker和K8s,一文让你成为懂王

刘华Kenneth

Docker 云计算 Kubernetes DevOps k8s

生产环境全链路压测建设历程 20:某快递 A 股上市公司的生产压测案例之彩蛋

数列科技杨德华

全链路压测 七日更

架构师训练营 1 期 - 第十三周 - 数据应用 2

三板斧

极客大学架构师训练营

到底什么是 CDN

转山转水

CDN

Multi-Architecture镜像制作指南已到,请查收!

华为云开发者联盟

Docker Kubernetes 容器 镜像 Multi-Architecture

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