【IT168技术文档】Groovy是个成功而又强大的动态语言,它运行于Java虚拟机之上,由虚拟机保证其与Java的无缝集成,Groovy的语法和API深深植根于Java,其动态性则来源于其他语言如Smalltalk、Python及Ruby。
很多开源项目都用到了Groovy,如Grails、Spring及JBoss Seam等等,同时不少商业产品及财富500强的关键应用中也出现了它的影子,以此增加脚本化能力以对应用提供良好的扩展机制,凭借Groovy,专家和开发者可以通过领域特定语言以良好的可读性和维护性表达业务概念。
Groovy项目经理及SpringSource的Groovy开发领导Guillaume Laforge将通过本文介绍新发布的Groovy 1.6带来的众多新特性。
Groovy 1.6概览
Groovy 1.6的主要亮点列举如下:
·编译时与运行时性能的巨大提升
·多路赋值
·if/else与try/catch块中可选的返回语句
·Java 5注解定义
·AST转换和众多转换注解,比如@Singleton、@Lazy、@Immutable、@Delegate及助手
·Grape模块和依赖系统及其@Grab转换
·Swing builder的若干改进、这要归功于Swing / Griffon团队,同时还有Swing console的几处改进
·集成了JMX builder
·各种元编程的改进,像是EMC DSL,针对POJO的基于实例的元类(per-instance metaclasses),以及运行时的掺元(mixin)
·内置JSR-223脚本引擎
·开箱即用的OSGi支持
所有这些改进和新特性都是为了同一个目标:帮助开发者提高生产率,变得更加敏捷。这是通过如下手段实现的:
·将更多的精力集中在手头的任务而不是泛泛的代码上
·利用现有的企业API而不是重复发明轮子
·改进语言的整体性能和品质
·允许开发者根据需要对语言进行定制进而得到自己的领域特定语言
除了这些重要的方面以外,Groovy并不仅仅是个语言,它还是一个完整的生态系统。
对Groovy所生成的字节码信息的改进有助于更多代码覆盖工具的普及,如Cobertura及其Groovy支持,同时还为新工具的加入(如对Groovy进行静态代码分析的CodeNarc)铺平了道路。
Groovy语法的可扩展性及其元编程能力促使了一些高级测试工具的诞生,如行为驱动开发项目Easyb、Mock库GMock及测试与规范框架Spock。
Groovy的灵活性、丰富的表现力及脚本能力为持续集成实践与项目构建解决方案提供了高级的构建脚本和基础设施,如Gant和Graddle。
从工具的角度来看,Groovy也在不断的进步,比如说通过groovydoc Ant任务可以为Groovy/Java的混合项目生成适当的JavaDoc封面、文档以及能够连接Groovy和Java源文件的内链接。
与此同时,IDE的开发者们也在不断改进其对Groovy的支持,他们向用户提供了强大的武器,比如跨语言的代码重构、对动态语言用法的深入理解、代码完成等等,以此提高Groovy开发者的生产率。
既然已经对Groovy世界有了初步的了解,让我们看看Groovy 1.6带来的众多创新吧!
性能改进
相比于之前的版本,我们将大量精力放到了Groovy编译时和运行时的性能改进上。
新的编译器要比之前的快3到5倍。该改进也被移植进了1.5.x分支中,这样旧的分支和当前的稳定分支都可以从中受益。感谢类寻找缓存(class lookup caches),项目越大,编译的速度就越快。
然而最值得关注的变化莫过于Groovy的运行时性能改进了。我们使用了Great Language Shootout的几个基准来度量其改进。对于选择的基准,相比于旧的Groovy 1.5.x,新版Groovy的性能提升了150%到460%。显然微观的基准并不会直接反映出项目中源代码的性能提升水平,但项目的整体性能肯定会提升很多。