【AICon】探索RAG 技术在实际应用中遇到的挑战及应对策略!AICon精华内容已上线73%>>> 了解详情
写点什么

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

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

关注

评论

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

前端网络之跨域请求

Jason199

跨域 7月月更

Web3流量聚合平台Starfish OS,给玩家元宇宙新范式体验

股市老人

Envoy负载均衡与限流设计

阿泽🧸

7月月更 Envoy负载均衡

zookeeper-集群leader选举

zarmnosaj

7月月更

架构师成长:关于我在 ArchSummit 大会收获了什么

宇宙之一粟

架构 个人感悟 ArchSummit 7月月更

架构实战营模块7作业

挖了蘑菇哩斯

架构实战营

正则什么的,你让我写,我会难受,你让我用,真香!

掘金安东尼

前端 正则 7月月更

如何分析并设计性能测试场景

老张

性能测试 需求分析

Java中关于多线程的知识点

Java学术趴

7月日更

Okaleido tiger NFT即将登录Binance NFT平台,NFT权益时代即将开启

鳄鱼视界

王者荣耀商城异地多活架构设计(架构实战营 模块七作业)

Gor

Starfish OS:以现实为纽带,打造元宇宙新范式

EOSdreamer111

Okaleido tiger NFT即将登录Binance NFT平台,后市持续看好

EOSdreamer111

Java多线程之常见锁策略与CAS中的ABA问题

未见花闻

7月月更

Okaleido tiger NFT即将登录Binance NFT平台,你期待吗?

股市老人

王者荣耀商城异地多活部署设计

Geek_e8bfe4

关于Web响应式设计

程序员海军

Web 7月月更 响应式设计

TableWidget 排序的多种方式

小肉球

qt 7月月更

云原生(九) | Devops篇之Jenkins安装与实战

Lansonli

云原生 7月月更

python小知识-如何判断一个对象为空值

AIWeker

Python python小知识 7月月更

Docker小白的福音:50条Docker命令清单,干就完了!

wljslmz

Docker Linux Docker 镜像 7月月更

C#入门系列(二十六) -- 程序集和命名空间

陈言必行

7月月更

STM32+ENC28J60+UIP协议栈实现WEB服务器示例

DS小龙哥

7月月更

【函数式编程实战】(一)Java演变与函数式编程

小明Java问道之路

Lambda stream 函数式编程 7月月更

王者荣耀商城异地多活架构设计

Geek_7a789a

从日常小事看如何工作

耳东@Erdong

7月月更

树莓派3B搭建Flink集群

程序员欣宸

Java flink 树莓派 7月月更

iOS中内存管理(Autoreleasepool)

NewBoy

ios 前端 移动端 iOS 知识体系 7月月更

mysql进阶(十四) 批量更新与批量更新多条记录的不同值实现方法

No Silver Bullet

MySQL 数据库 7月月更 批量更新

鸿蒙eTS版天气预报

坚果

开源 HarmonyOS OpenHarmony Open Harmony 7月月更

【MySql 实战】以 sql 的方式多表联动更新数据

安逸的咸鱼

MySQL 实战 7月月更

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