生成式AI领域的最新成果都在这里!抢 QCon 展区门票 了解详情
写点什么

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

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

关注

评论

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

五种简单保护网站安全的方法看这里!

行云管家

网络安全 网站 数据安全 网站安全

危机来临,防御性编程能否帮助程序员抵御裁员风暴?

SoFlu软件机器人

杭州悦数成立「悦数图技术陆家嘴数据智能研究院」,入驻上海陆家嘴金融城「双城辉映」平台

悦数图数据库

分布式图数据库 图数据

【资源汇总】TiDB-TiCDC 源码解读系列最全资源!!!

TiDB 社区干货传送门

TiDB v7.5.0 vs Oceanbase v4.2.1.1 : online ddl 吐血验证测试

TiDB 社区干货传送门

以裸眼3D为例,未来户外数字媒体如何演变?

Dylan

技术 媒体 数字 3D 设备

数字化时代:普通人的应对策略与准备

AI 计算机 数字化时代 自媒体 人工智能「

Mac电脑最好用的Plist编辑器:PlistEdit Pro直装中文版

mac大玩家j

文本编辑器 Mac软件

【第七在线】可持续时尚与商品计划:减少库存浪费的方法

第七在线

全面解读《State of PostgreSQL 2023》报告

酷克数据HashData

技术写作与内容研究:主题得分、关键词搜索量、社区和论坛策略

小万哥

程序人生 后端开发 技术写作 关键词搜索 社区和论坛

Ubuntu 22.04上安装NFS服务教程。

百度搜索:蓝易云

云计算 Linux ubuntu 运维 NFS

探索JavaScript:使用JavaScript创造引人入胜的前端体验

TinTinLand

区块链

macos冒险游戏推荐:索尼克梦之队Sonic Dream Team激活最新

胖墩儿不胖y

好玩的游戏推荐 Mac游戏分享

条件编译 | AI工程化部署

AIWeker

c AI AI工程化部署

Socket.D 基于消息的响应式应用层网络协议

不在线第一只蜗牛

网络协议 应用层 网络通讯

Tiktok怎样多开不封号?海外云手机就能解决!

Ogcloud

跨境电商 TikTok

QCN9024|Wallys DR9074-TRIBAND Now Supported by ATH11K for Enhanced Linux Compatibility!

wallyslilly

QCN9074 QCN9024

网站遇到DDOS攻击该怎么解决?

德迅云安全杨德俊

安全 DDoS 网站优化 #web

测试开发 | 循环神经网络(RNN):时序数据的魔法笔

测吧(北京)科技有限公司

测试

测试开发 | 长短时记忆网络(LSTM):时序信息的记忆大师

测吧(北京)科技有限公司

测试

【终极教程】Cocos2dx服务端重构(优化cocos2dx服务端)

测试开发 | 深度学习的引擎:神经网络结构探析

测吧(北京)科技有限公司

测试

从零开始封装 vue 组件

EquatorCoco

Vue 前端 代码

一站式指南:使用Motoko打造高性能后端服务

TinTinLand

区块链

测试开发 | 卷积神经网络(CNN):图像识别的骨干

测吧(北京)科技有限公司

测试

Eclipse、IntelliJ IDEA、PyCharm三种IDE的区别

小魏写代码

深度学习:人工智能的前沿探索

测吧(北京)科技有限公司

测试

年终收官!华为云开发者日·2023年度创享峰会成功举办

华为云开发者联盟

人工智能 软件开发 华为云 华为云开发者联盟 华为云CodeArts

TiDB在银行业核心系统POC测试应用压测参考手册

TiDB 社区干货传送门

性能调优 性能测评 数据库架构设计 应用适配 OLTP 场景实践

Git:Rebase和Merge之间的区别

百度搜索:蓝易云

Linux Rebase 云服务器 NFS merge

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