Guillaume Laforge谈Groovy 2.1
本文来源于我在InfoQ中文站翻译的文章,原文地址是:http://www.infoq.com/cn/news/2013/02/Groovy2_1_Release 近日,SpringSource发布了Groovy 2.1。 在该版本中,Groovy添加了几个新特性:
InfoQ有幸采访了SpringSource Groovy部门的领导Guillaume Laforge以了解这些变化以及Groovy的成功之处。 InfoQ:invokedynamic是如何简化Groovy运行时的开发工作的? Laforge:我们不能说invokedynamic简化了Groovy运行时的开发工作,我们依然将精力放在常规的缓存技术上以加快动态运行时的速度,因为我们希望用户依然可以使用JDK 5或6。实现invokedynamic并不是那么简单的事情,因为各种JDK 7更新并不是完全稳定且没有瑕疵的。幸好,随着底层VM实现与APIs的不断成熟,这种情况已经有了极大的改观。因此,在未来的Groovy版本(如Groovy 3)中将只会使用invokedynamic,那时JDK 7将是所需的JDK的最低版本。接下来,我们就可以摆脱自己所用的一些小技巧,而不必在代码基上使用两套代码路径了。 InfoQ:invokedynamic在性能上是否有明显的改进呢? Laforge:invokedynamic可以让我们更具效率,特别是在内存使用上,因为我们就不需要在运行时生成那么多的类了,这样占用的内存会更少。对于性能来说,我们已经注意到一些重大的改进了。现在还很难给出一个百分比数字,因为在不同的微基准上,其变化还是非常大的。 InfoQ:哪些用例能从这种性能改进上获得最大的好处? Laforge:Groovy已经在使用原生类型计算方式了,因此对于那些数学密集型基准来说,Groovy的运行速度已经与Java不分伯仲了,所以说invokedynamic对于速度上的提升并没有那么大。 InfoQ:为了保证语言的可读性,你在引入或拒绝新的语言概念时遵从什么样的流程呢? Laforge:语言演化是个很有意思的问题。在过去几年中,我们对语言新特性添加的要求更为严格,因为我们不希望语言变得过于复杂而无法理解与使用。此外,我们还严格坚持某些基本的可读性与一致性原则。 InfoQ:显然,invokedynamic要求你抛弃过去的一些代码,为了避免回归问题需要做哪些测试呢? Laforge:在过去几年中,我们积累了大量的测试套件,包含了来自于用户、框架开发者等的用例,这都是为了强化实现以避免向后不兼容问题的发生。我们在各种系统环境和JDK版本下运行了所有的测试套件,就是为了确保高质量与向后兼容性。 InfoQ:在2.1版中引入了哪些其他的编译自定义优化特性呢? Laforge:Groovy 2.1在编译定制化方面进行了一些精化。 InfoQ:能否介绍一下新的元注解特性么? Laforge:注解在Java生态圈中得到了很好的应用。但有时使用的注解有些太多了,对于一个简单的成员变量、方法或是类来说,你可能会声明好几个注解。 InfoQ:Groovy的下一个主发布会有哪些值得期待的特性呢? Laforge:在Groovy的下一个主版本中,我们尚未计划任何重要的语言特性。显然,我们已经有了一些关于新特性的想法,但我们还是将大部分精力放在了语言的架构与实现上:其动态特性、编译后端与语法等等。 查看英文原文:InfoQ Speaks to Guillaume Laforge about the Recent Groovy 2.1 Release (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |