磨刀不误砍柴工。拥有一个好的工具在现代编程和团队管理中起着重要的作用。2008年软件开发生命周期管理软件(softwaredevelopmentlifecycle:SDLC)在2008年取得了长足的进步。JavaWorld的Java工具领域专家JohnFerguson在2008年为我们带来了Java领域的自动化构建框架,软件开发周期管理工具、测试工具摘要和IDE。他指出,2008年java工具的变化包括CI持续集成工具的改进、JVM脚本语言支持的兴起,以及对支持多核系统的编程工具的需求增加。让我们开始吧!构建自动化让我们从现代软件开发过程的核心部分开始:构建自动化自动构建。总的来说,构建自动化包括持续集成(continuousintegration:CI)工具、构建脚本build-scripting工具、代码质量控制工具,以及版本管理或SCM存储管理工具。构建自动化的第一阶段是自动化构建脚本。ApacheMaven和ApacheAnt以及最近的Gant和Gradle等传统工具可以帮助创建构建脚本。2008年,我看到许多大公司开始使用Maven,被Maven在内部软件组件的多个团队之间提供标准化开发实践的能力所吸引,并提供了一个非常连贯和透明的架构。这种趋势显然会持续到2009年。Maven:最新和即将推出的功能2008年,发布了Maven2的最高版本2.0.9。Maven2.0.9修复了错误并添加了一些新功能。Maven具有更好的稳定性并提供了良好的使用插件来利用依赖管理的方式。例如,您可以使用Checkstyle插件来更新Checkstyle的版本。总而言之,Maven开发中最活跃的部分集中在发布一个新的主要版本:Maven2.1,它将在2009年初推出。新版本将包含许多性能改进和优化,包括更细粒度的构建规则多模块项目,以及并行下载不相关依赖项的能力,而不是我们现在使用的串行方法。Eclipse更好地支持Maven。m2eclipse插件为Maven开发提供了功能完备的图形化编辑器,提供了对Mavenpom.xml文件的图形化管理。这些功能包括依赖关系图(参见下面的图1)和依赖关系层次结构。例如,它使您更容易直观地查看和编辑您的项目依赖项,理解和解决依赖项冲突。依赖搜索也是m2eclispe提供的另一个有用的功能,一旦你开始使用它,你会发现你离不开它。它允许将新的依赖包毫无问题地添加到您的项目中。您只需按名称搜索Maven存储库,选择版本,然后将其添加到您的pom.xml文件中。Maven存储管理是每个Maven用户都需要的工具。Maven存储空间可以支持依赖缓存作为互联网公共存储空间的存在,也支持作为全公司的库发布共享。2008年,见证了这个领域迅速崛起的一颗新星:Nexus,Nexus让管理Maven存储空间成为一种享受。同时,Maven的速度也有了很大的提升。持续集成实践中加入的一个新方向是代码编写规则工具,它可以帮助开发人员展示和分析代码规则随时间的变化。2008年在持续集成管控方面也有很大的进步。Bamboo是Atlassian的商业持续集成工具,大量新功能已注入该领域,包括构建过程的图形显示和随时间推移的各个测试过程。引用:Gant和Gradle取代Ant传统的Java构建脚本工具Ant在2008年似乎有点过时。相反,新工具Gant正在快速发展。Gant还是一个构建脚本工具,允许您使用Groovy而不是XML来构建Ant任务。Gant在2008年作为前景广阔的GrailsWeb框架的底层构建工具也获得了关注。如果您离不开Ant在构建脚本方面的灵活性,并且无法忍受繁琐的XML语法,那么Gant值得一看。同样,Gradle也是一个基于Groovy的构建工具,于2008年首次亮相。Gradle试图使用Groovy语法来提供Ant的灵活性,但它也为您提供了许多类似Maven的功能,例如传递依赖管理和约定优于配置。CI持续集成进入生命周期管理SDLC2008年,java开发领域在持续集成工具方面取得了长足的进步。持续集成工具被认为是生命周期管理工具的关键部分。一个好的CI工具可以让你跟踪整个项目,不仅仅是测试的总数、最近的测试失败,还有你的整个测试的执行情况。这种数据对于开发过程调整非常有用。引述:Hudson受开发者青睐在过去的一年里,Hudson从一个开发中的产品变成了市场上流行的开源CI项目。虽然Hudson的魅力有时来自于它很少出错,但Hudson直观的用户界面和有用的报告功能使其成为一个强大的小型CI持续集成工具。Hudson还引领了Maven集成市场,是目前唯一能够根据Maven依赖图正确判断哪些项目需要重建的工具。当您管理多模块Maven项目时,此功能可以为您节省大量时间。Hudson还提供了丰富的插件库,允许您添加其他功能,例如与JIRA或Trac集成,或自动部署到Tomcat服务器。#p#持续集成工具和代码质量工具集成一些持续集成工具可以集成优秀的代码质量工具,比如Checkstyle、PMD、FindBugs、Cobertura和Emma。这些工具提供有用的信息来监控项目的健康状况,例如编码标准、错误代码和代码覆盖率。开源代码质量工具相对稳定。今年Checkstyle发布了新特性,不断开发的FindBugs控制数据库。在商业市场,Clover发布了多项创新功能,包括按测试覆盖率,让您不仅可以看到您的应用程序代码在测试中执行的频率,而且能够看到哪些测试执行了代码。另一方面,2008年,持续集成工具从专属专家领域变得更加开放和民主,让开发团队更多地参与。例如,在Hudson中,一个插件允许开发人员“声明”一个失败的构建,以告诉团队中的其他开发人员他们正在修改这个地方。在Bamboo中,您可以向构建添加注释,或使用构建失败消息启动面向开发人员的IM讨论。Hudson甚至添加了一个CI游戏插件,让您的开发团队成员竞争提高代码质量。Subversion1.5发布在版本控制存储方面,2008年最大的新闻是期待已久的Subversion1.5发布。它带来了一些很棒的新功能,包括合并跟踪和存储复制支持改进。这个新的合并功能允许多个不同的分支合并更改。测试工具2008年基于Java的测试工具领域发生了很多事情,尤其是行为驱动开发(BDD)框架引起了大家的兴趣,Web测试工具的发展向前迈进了一大步。BDD是在测试驱动开发(TDD)测试驱动开发技术的基础上发展起来的敏捷开发领域的新技术。JBehave发布于2008年9月,Jbehave是一个javaBDD框架,可以通过@Given、@When、@Then等特殊注解,使用JUnit测试用例编写BDD脚本。您还可以编写相应的文本脚本,以便在实施解决方案之前描述您的操作流程。下面是一个示例:Java代码SimpleJBehave测试用例{account=newAccount();}@When("我将100存入账户")publicvoiddeposit(){account.makeDeposit(initialDeposit);}@Then("我的账户应该有100的余额")publicvoidcheckBalance(){ensureThat(account.getBalance(),equalTo(initialDeposit));}}另一个基于Groovy的BDD框架:easyb,它提供了Groovy的强大功能,可以在java测试领域结构化地实现BDD。Easyb使用Groovy领域特定语言DSL来遵循BDD脚本模型。Groovy使测试更具表现力,尤其是当您熟悉文件集成、激活和闭包等Groovy习惯用法时。上面的例子用easyb改写如下:Java代码场景“Makeinitialdeposittoanewaccount”,{given"Ihavecreatedanewaccount",{account=newAccount()}when"Ideposit$100intotheaccount",{initialAmount=100account.makeDeposit(initialAmount)}然后“余额应该等于存入的金额”,{account.balance.shouldBeinitialAmount}和“我的账户应该有100的余额”,{account.balance.shouldBeEqualToinitialAmount}}Web测试工具的演变这里有很多测试工具,不仅仅是单元测试。2008年,Web测试工具发展迅速。该领域有两个特别值得注意的工具:Selenium和CanooWebTest。Selenium是一种原始测试工具,可在浏览器中运行Web测试。2008年,Selenium1.0beta发布,提供了更好的稳定性和新特性。通过录制Selenium测试脚本,可以使用Selenium进行功能测试和回归测试,也可以用Java甚至Groovy编写Selenium测试用例,支持TDD测试驱动开发。2008年还见证了SeleniumGrid的出现,这是一个非常有前途的工具,可帮助您将测试分发到多个不同的服务器并并行或在特定平台浏览器上运行测试。CanooWebTest在2008年也很活跃,这个强大的web测试框架非常适合TDD或者BDD的实现。使用CanooWebTest,您可以使用XML或Groovy为您的Web应用程序编写测试用例。CanooWebTest运行在网络应用程序上,并提供清晰详细的HTML测试报告。Grails使用CanooWebTest自动生成功能测试。CanooWebTest没有Selenium强大,对JavaScript的支持也没有Selenium好。IDE在IDE方面,2008年发布了Eclipse3.4Ganymede和NetBeans6.5,它们都带来了许多新特性。Eclipse3.4改进了java开发环境,包括:更好的上下文帮助功能、更好的快速修复以及大幅改进的可用性。一个很好的重构功能是ExtractClass选项,它允许您从一个类中获取一组属性和函数,并创建一个封装这些字段和函数的新类。Eclipse3.4编译速度更快,并且可以通过将计算分布在不同的芯片上运行来利用多核进程。Eclipse3.4支持外挂Subversion,全面支持Subversion插件。引用:GroovyGrails和IDEGroovy和Grails在2008年大规模入侵了Java社区,Groovy是一种动态脚本语言,而Grails是一个基于Groovy的强大的类Ruby网络框架。2008年,Groovy和Grails,以及Scala和Clojure发展迅速,但是IDE对它们的支持并不好,主要是因为它们是动态语言,比如很难提供好的代码补全功能,因为动态语言缺乏类型。目前对动态语言支持最好的是IntelliJ,其次是NetBeans,Eclipse还有待努力。可以预见,2009年对动态语言的支持将继续发展。我最喜欢Eclipse3.4的特性是Mylyn3.0。Mylyn是一个任务管理工具。Mylyn管理构成开发人员工作日的所有任务。例如,我们修复的错误或我们添加的功能都无缝集成到IDE界面中。IDE集成提供代码完成、更改管理和离线编辑等功能。NetBeans6.5随着NetBeans6.5的发布,NetBeans已成为最舒适的开发环境之一。一如既往,它提供了比Eclipse更流畅的用户体验,尽管与Eclipse相比它缺少一些插件。Maven用户的好消息:NetBeans6.5对Maven更加友好。NetBeansMaven插件虽然不如Eclipse的m2eclipse功能丰富,但质量不错,将Maven项目视为一流的成员。NetBeans6.5为动态语言提供了出色的支持,包括JavaScript、Groovy和Grails、PHP,甚至Ruby/Rails。您可以使用所有这些语言创建项目,NetBeans为它们提供了强大的开发环境。NetBeans还支持JavaFX开发,使用可选的插件可以创建和调试JavaFX应用程序。最后,NetBeans6.5为Spring、Hibernate和JavaServerFaces(JSF)等库提供更好的本机支持,提供访问SpringBean对话框等功能,并支持在IDE中运行Hibernate查询语言查询。总结2008年,Java开发工具领域发生了很多大事。开发环境提供更丰富的功能,更易于使用,满足对Groovy和Ruby等动态语言日益增长的支持。2008年人们对动态语言的兴趣增加的趋势很明显。另一个总体趋势是自动构建工具在2008年迅速发展。Groovy已经成为测试领域的领导者。它让开发者更容易编写出表现力更强、功能更强大的测试工具,如Hudson、Bamboo,将CI持续集成从专家手中释放给一般开发者。Maven也更易于使用,拥有丰富的用户界面使Maven更易于理解。同时,Subversion还提供了新的自动脚本功能。【编辑推荐】2008年十大优秀Java应用2008年Java大事从语言到平台的转变Sun高管透露JavaFX开源计划移动平台明年发布
