写点什么

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

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

关注

评论

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

几个大厂的研发类面试题你知道多少?(C/C++工程师方向)

linux大本营

c++ Linux 后台开发 架构师

架构师养成第二课

万有引力

Spring视图解析流程

无用且垂死的星辰

我膨胀了,测试必要商城小程序,用了3种方式!:)

清菡软件测试

App

离开

成周

LeetCode题解:874. 模拟行走机器人,模拟情境,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

ShardingSphere Proxy 主从读写 入门使用

Java 主从读写 ShardingSphere

Defi挖矿软件系统开发|Defi挖矿APP开发

系统开发

第二周 框架设计 作业一 「架构师训练营 3 期」

胡云飞

极客大学架构师训练营 框架设计

架构师训练营第二周作业

J

极客大学架构师训练营

那些年,支撑尾款人们熬夜的AI

脑极体

整天都在讨论使用SpringBoot,可你居然连缓存都不清楚

小Q

Java 缓存 学习 面试 springboot

Sharding-Sphere Proxy 分库分表 简单示例

Java MySQL 分库分表 ShardingSphere-Proxy

吴桐:2021年中国区块链产业发展的六大趋势

CECBC

区块链 新基建

架构师系列之8:python网站压测工具

桃花原记

架构师训练营第 11 周学习总结

netspecial

极客大学架构师训练营

秒懂DHCP是什么

第二周 框架设计 学习总结

胡云飞

极客大学架构师训练营 框架设计

喝完可乐桶后程序员回归本源,开源Spring基础内容

小Q

Java spring 学习 源码 面试

阿里开源十亿级并发设计手册:数据库+缓存+消息队列+分布式+维护

Java架构追梦

Java 阿里巴巴 编程 架构 亿级流量

极客时间架构师训练营 1 期 - 第 11 周总结

Kaven

区块链如何解决互联网为基础的广告困境?

CECBC

区块链 互联网广告

深入了解Linux共享内存及函数详解(含编程示例)

ShenDu_Linux

Linux 程序员 内存 进程

搞懂这篇文章,关于IO复用的问题就信手拈来了

程序员小灰

Linux 后台开发 io epoll Linux服务器开发

极客时间架构师培训 1 期 - 第 11 周作业

Kaven

ShardingSphere Raw JDBC 主从示例

Java JDBC ShardingSphere

Spring 源码学习 06:AnnotatedBeanDefinitionReader

程序员小航

Java spring 源码 源码阅读

DeFi交易所系统APP开发|DeFi交易所软件开发

系统开发

Mysql Docker 主从配置

MySQL Docker 主从读写

框架设计作业

cc

架构师训练营第二周学习心得

cc

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