Martin Lippert谈新发布的SpringSource Tool Suite 2.6

VMWare SpringSource的Martin Lippert最近宣布了SpringSource Tool Suite 2.6.0和2.6.1的发布,这是一个基于Eclipse、用于构建Spring应用程序的开发环境。新版本中有不少新特性,将很多项目升级到了最新版本,比如Spring Roo 1.1.4、Eclipse Helios SR2、Groovy 1.7.8、Grails 1.3.7。新版本更新了对Spring Roo和Groovy on Grails的支持,并改善了它们的性能;还包含了一个Spring Web Flow的图形化编辑器、新的内容辅助支持、针对Spring注解的快速修复和重构。

InfoQ采访了Martin,了解了开发者对新版本能有何期待,以及别的一些内容。

Mike Bria,代表InfoQ:新版本中有什么新功能可以帮助程序员使用Spring的基于注解的元编程吗?

Martin Lippert,就职于SpringSource:

鉴于越来越多的Spring开发者正从基于XML的配置方式转到基于注解的Spring编程,我们正尝试为基于注解的Spring编程提供支持,就像过去在XML编辑器中编写Spring配置文件的支持一样。

首先,我们关注于配置部分的@Autowired、@Qualifier,还为控制器做了很多支持。因此你在Java编辑器中有了针对Spring注解的自动补全和内容辅助,就像编写标准Java代码一样。对@RequestMapping的支持特别好;它包含了键入路径变量时的自动补全和内容辅助,对缺失或不完全匹配的变量的快速修复,甚至还有重构支持。当你重命名一个参数时,它会自动根据名称映射到一个路径变量上,注解中的路径变量也会随之改变。

我们的目标就是避免为那些注解提供额外的试图或特殊编辑器;让开发者留在Java编辑器中,在编写Java代码时提供尽可能多的帮助。

InfoQ:还有什么其他新的重构工具和功能(除了针对注解的)吗?

在这个最新版之前,我们就已经提供了大量自动重构功能。你可以重命名Bean的id、属性等等,你所做的所有修改都会反映在Spring配置XML中。就算你重命名了一个用@Bean声明的方法,在你的Spring配置中对该Bean的引用也会自动改变。 尽管如此我们还是努力提供更多的改进。在2.6.0中,我们为p命名空间增加了重构支持,还增加了advice和pointcut定义的重命名支持。此外,我们在下一个版本中也计划了很多这方面的内容。

InfoQ:能否跟我们说说新的图形化Web Flow编辑器?

在2.6.0中我们为Spring Webflow引入了一个全新的图形化编辑器。我们和Webflow团队一起努力开发了一款可视化编辑器,在使用Webflow时你可以看到你想要的和你所需要看到的东西。不仅如此,如果你不喜欢我们设计的标准布局,你还可以改变它――它是完全可配置的!你应该看一看,这真是太美了。

InfoQ:这个版本中改善了对Spring Roo和Groovy on Grails的支持。你能解释下有什么新的东西么?

我们一直想包含最新的Spring Roo,为它提供全方位的支持。这就是为什么我们要在4月12日发布2.6.0.SR1,在5月18日发布2.6.1.SR1。我们将继续跟着Roo发布新的版本。总的来说,基本的Roo支持很稳定、很成熟。

在Groovy和Grails方面有不少动作,我们正努力为Grails提供最好的开发者体验!为了这个目标,我们大幅改进了Eclipse底层的Groovy-as-a-language支持,添加了更好的(更可配置的)语法高亮、类似“内嵌重命名”的重构改进、对Groovy++的早期支持,还有一些编译性能改善。在Grails方法,我们增加了从gsps跳转到标签定义的支持,还增加了直接调用新Grails构件向导的菜单项,可能的话,还要保证那些向导可以基于上下文做预填充。我们相信这能让Grails的开发更有乐趣。

InfoQ:能够部署到一个基于云的环境中是许多开发者日益增长的需求。新版本在这方面做的如何?

4月12日Cloud Foundry发布了,我们也提供了Cloud Foundry的STS支持。这允许使用Cloud Foundry的开发者直接在STS里将它们的应用部署到云里。无论你是将应用完全托管在cloudfoundry.com上还是部署在开发环境的本地微型云,甚至是开发机上,它都可以支持的很好。你可以启动或停止云中的应用,为它们分配服务,浏览远程文件系统,这些都可以直接在STS中完成。

InfoQ:我在ToolSuite 2.5里看到过“基于代理重新加载”(Agent-based reloading)的介绍。我想很多开发者并没有意识到这一特性,或者是至少没有意识到该特性为他们提供了什么。你能跟我们谈谈这个特性么,在2.6里它又有什么新的内容?

“基于代理重新加载”是一个很棒的特性。但它还处于初期阶段,因此我们并没有着重介绍它。在使用tc Server时,它可以在很大程度上减少等待应用重新部署的时间。应用运行于tc Server中并开启该功能时,很多代码变更可以立刻反映在运行的应用程序中,无需重启服务器。

当然,这听起来和调试Java应用时的热代码替换(hot-code-replacement)很类似,但它实际远不限于此。有了它,你可以在应用程序运行时添加/删除/修改方法,甚至成员变量。代理会负责将那些变更推送给运行中的应用程序,不会丢失对象的状态;完全不用重启或重新部署应用程序,重启服务器。

我要重申一下,它还处在初期阶段,我们正持续改进它――近期的主要关注点将是保证对Spring配置的变化能正确反映在运行中的应用程序里。最近的改进中添加了对Groovy和Grails应用程序的支持。

InfoQ:能否告诉我们新版本中对AspectJ Dev Tools的增强?

可以这么说,AJDT中最近的特性/变更的主要驱动力是Spring Roo和Spring Data项目。虽然方式很不同,但两者都大量使用了切面;例如,Spring-Data大量使用了通用切面。

在处理AspectJ代码时,所有这些变化都为编辑器提供了更平滑的体验,保证你想做的任何动作里都用到了AspectJ构造器。例如,搜索/重构操作都能意识到中间类型(intertype)声明,并做相应处理。

InfoQ:同样与AspectJ有关,你们也对JDT织入做了一些变更。能说明一下吗?

实际上,最近我们默认开启了JDT织入。AJDT用JDT织入来多“开启”一点Eclipse,以便UI扩展(比如AJDT)能实现它们需要的功能。JDT织入实际使用了AspectJ在Eclipse启动时织入其中,使用了Equinox Aspects孵化项目中开发的技术。这项技术我们已经使用了一段时间,但过去它总是“opt-in”——在最近的版本中已经默认开启了,因为它已经证明了自己的可靠性和健壮性。

InfoQ:据说ToolSuite的团队在一个较为分散的团队中使用了有纪律的敏捷过程。能稍微就关键的方面展开说一下你们是怎么做的吗?

STS的开发团队确实是一支遍布在全球的分散的团队。成员主要是在加拿大和德国,但整个团队总共遍布在5个城市里,我们运用了敏捷方法。我们有一个略微定制过的敏捷过程,结合了Scrum和看板中的技术,因此我们有一个持续改进的带优先级的backlog,通过Skype做每日Scrum,还有一些别的东西。

但我认为对外界而言,最显著的、最能看到的变化是我们的发布周期。我们大概每三个月就能发布一个新的STS版本,每个版本之间还包括两个公开里程碑版本。这让我们能以规则的步伐来发布新特性和其他改进。人们很感兴趣的新特性可以在里程碑版本中让他们提前使用。我们很希望Spring社区中能有更多的人参与到这个过程之中。对我们开发工具而言,反馈是必不可少的,任何来自社区的反馈或建议都是我们的无价之宝。

InfoQ:最后,下一个版本的backlog里有什么热点内容吗?开发者可以期待些什么呢?

我们目前正在努力改进Cloud Foundry集成功能,为Cloud Foundry和STS提供更深的整合。下一件大事当然是支持接下来发布的核心Spring框架的3.1版本。对新的“profiles”特性的支持将尤其出色,你会喜欢它的。

在2.7的开发过程中,我们与Gradle团队紧密配合,希望能为Eclipse提供Gradle支持。我们还将继续改进Grails中的重构支持,提供智能重命名,它能理解构件之间的关系,一并重命名(简单的例子:在重命名领域类时重命名你的测试类)。

我们还开放了Groovy-Eclipse,让那些使用自定义DSL的人能更方便地进行扩展——提供一段简单的Groovy脚本就能扩展Groovy编辑器的内建推论和代码辅助功能。我们自己也会拓展这一特性,支持Grails中用到的多种DSL。我们相信这一定会开启无限可能。

谢谢Martin!

查看英文原文:Martin Lippert on the newly released SpringSource Tool Suite 2.6

你可能感兴趣的:(Martin Lippert谈新发布的SpringSource Tool Suite 2.6)