阅读更多

92顶
8踩

编程语言

原创新闻 年度总结:2008年Java工具

2008-12-29 16:21 by 副主编 ouspec 评论(27) 有24425人浏览
JavaEye新闻上次发表了“年度总结:Java 2008年大事记”,现在是此系列第二篇:年度总结:2008年Java工具。

磨刀不误砍柴工,拥有一个好的工具,在现代化编程/团队管理中拥有重要的地位。2008年的软件开发生命周期管理软件(software development lifecycle: SDLC)在2008年有了长足进展,JavaWorld的Java工具领域专家John Ferguson 为我们带来2008年Java领域自动构建框架,软件开发周期管理工具,测试工具,以及IDEs方面的总结。他指出java工具2008年的变化包括CI持续集成工具的改进,JVM脚本语言支持上升,以及对支持多核系统编程工具需求增加等。让我们开始吧!

Build automation

让我们从现代软件开发进程的核心部分开始:Build automation自动构建,整体来看,build automation包括持续集成(continuous integration :CI)工具,构建脚本build-scripting工具,代码质量控制工具,以及版本管理或者称为SCM存储管理工具。

build automation的第一个舞台是自动build脚本。传统工具类似于Apache MavenApache Ant,以及最新的 GantGradle,能够帮助创建build脚本。在2008年,我看到许多大型公司都开始使用Maven,被Maven能在内部软件组件中为多个团队之间提供标准化开发实践,和提供显著的连贯透明的架构所吸引。这个趋势明显将继续延续到2009年。

Maven:最新的和即将发布的功能

在2008年,Maven 2的最高版本2.0.9发布,Maven 2.0.9修正了bug和添加了一些新的功能,Maven拥有更好的稳定性,并提供很好的方式使用插件来驾驭依赖管理。比如,你能够使用Checkstyle 插件来更新Checkstyle的版本。学习Maven推荐查看JavaEye新闻的"开放文档《Maven权威指南》中文版介绍"。

总而言之,Maven开发中最活跃的是专注于新的重要版本的发布:Maven 2.1,这个版本将于2009年初面世。新的版本将包含很多性能改进和最优化,包括为多模块项目提供更精细的build 规则,和能够平行下载不相关依赖包,而不是现在我们使用的串行方式。

Eclipse对Maven的支持更好,m2eclipse 插件为Maven开发提供了完整的功能化的图形编辑器,提供Maven pom.xml文件图形化管理。这些功能包括依赖图(见下图1)和依赖层次。比如它让你更容易可视化的查看编辑你的项目依赖,了解和解决依赖冲突。



依赖搜索也是m2eclispe提供的另一个很有用的功能,一旦你开始使用,你会发现你离不开它了。它让添加一个新的依赖包进入你的项目不会出现任何问题。你只需要通过名字搜索Maven存储空间,选择版本,加入到你的pom.xml文件中。

Maven存储管理是也是每个Maven用户都需要的工具,Maven存储空间能够同时支持作为Inter公共存储空间的一个依赖缓存存在,也支持作为一个库发布和分享给整个公司使用。2008年见证这个领域快速升起的一颗新星:Nexus,Nexus让管理Maven存储空间成为一种享受。

同时Maven的速度也有很大提高。



持续集成实践添加了一个新的方向是代码编写规则工具,随着时间推移帮助开发者显示和分析代码规则,2008年在持续集成控制方面也有不少进展,Bamboo,Atlassian的一个商业持续集成工具,为这个领域注入了大量新功能,包括图形显示随时间推移的build过程和独立测试过程。

引用

Gant 和Gradle取代了Ant

传统的Java build脚本工具,Ant,在2008年似乎有点过时。相反,新的工具 Gant 在迅速发展中。Gant是也是一个build脚本工具,让你能够使用Groovy而不是XML来build Ant任务。Gant是前途光明的Grails web框架的底层build工具,因此也在2008年获得关注。如果你不能离开Ant在build脚本方面的灵活性,又无法忍受累赘的XML语法,Gant值得一看。

同样的,Gradle 也是一个基于Groovy的build工具,于2008年初次露面。Gradle 试图使用Groovy语法来提供Ant的灵活性,而且它还让你获得许多类似Maven的功能比如传递依赖管理和约定大于配置。


CI持续集成进入生命周期管理SDLC

2008年java开发领域在持续集成工具方面进步巨大。持续集成工具被视为生命周期管理工具的关键部分。一个好的CI工具让你能够持续跟踪整个项目,不仅仅是测试总数,最新的测试失败,还包括你的整个测试是如何进行的。这种数据对于开发进程调优非常有好处。

引用
Hudson受到开发者宠爱

在过去的一年中,Hudson 从一个开发中的产品变成市场中流行的开源CI项目。虽然Hudson的魅力有时候来自于极少出错,Hudson的直观的用户界面和有用的报表功能让它成为一个强大的小CI持续集成工具。

Hudson也领导了Maven集成市场,成为目前唯一的能够基于Maven依赖图正确决定哪个项目需要重新build的工具。当你在管理多模块Maven项目时,这个功能能够让你节约大量的时间。Hudson也提供丰富的插件库,允许你添加其他功能,比如与JIRA或者Trac集成,或者自动部署到Tomcat服务器上。


持续集成工具和代码质量工具集成

一些持续集成工具能够集成优秀的代码质量工具,比如Checkstyle,PMD,FindBugs,Cobertura和Emma。

这些工具提供有用信息,监控你的项目是否健康,比如代码标准,不良代码,以及代码覆盖等。开源代码质量工具相对比较稳定,今年Checkstyle发布了新的功能,持续发展的FindBugs控制了数据库,在商业市场,Clover发布了多个创新的功能,包括per-test每测试覆盖,让你能够不仅看到你的应用代码在测试中执行有多频繁,而且能够看到哪些测试执行了代码。

另外一个方面,2008年持续集成工具从独占的专家领域变得更加开放民主,让开发团队更多的参与进来。比如在Hudson中,一个插件让开发者"申明"一个失败的build,来告诉团队其他开发者他正在修改这个地方。在Bamboo中,你能对build添加注释,或者通过一个失败的build信息启动一个面向开发者的即时通讯讨论。Hudson甚至添加了一个CI游戏插件让你开发团队成员进行提升代码质量的比赛。

Subversion 1.5发布

在版本控制存储方面,2008年最大的新闻就是等待了很久的Subversion 1.5发布。它带来了一些强大的新功能,包括合并跟踪和存储复制支持改进。这个新的合并功能让多个不同的分支能够合并修改。

测试工具

基于java的测试工具领域2008年发生了很多事情,尤其是behavior-driven development (BDD)行为驱动开发框架引起了大家的兴趣,以及web测试工具发展迈进了一大步。

BDD是一个在test-driven development (TDD)测试驱动开发技术上发展起来的敏捷开发领域的新的技术。JBehave 在2008年9月发布,Jbehave是一个java BDD框架,你能够使用JUnit测试案例写BDD脚本,通过特殊的annotations,比如@Given, @When, 和 @Then。你也能写相应的文本脚本,让你能够在实现解决方案之前描述你的行为流程。下面是例子:

Simple JBehave test case

public class AccountDepositSteps extends Steps {

Account account = null;
BigDecimal initialDeposit = new BigDecimal("100.00");

    @Given("I have created a new account")
    public void createAccount() {
        account = new Account();
    }

    @When("I deposit $100 into the account")
    public void deposit() {
        account.makeDeposit(initialDeposit);
    }

    @Then("My account should have a balance of $100")
    public void checkBalance() {
        ensureThat(account.getBalance(), equalTo(initialDeposit));
    }
}



另外一个基于Groovy的BDD框架:easyb,提供了Groovy的强大功能,能够结构性的在java测试领域实现BDD。Easyb使用Groovy 域特定语言DSL能够跟随BDD脚本模型。Groovy能让测试具有更大的表达性,尤其当你熟悉Groovy惯用方法,比如文件集成,激活和闭包。上面的例子用easyb重写如下:

scenario "Make initial deposit onto a new account", {
    given "I have created a new account",{
       account = new Account()
    }
    when "I deposit $100 into the account", {
       initialAmount = 100
       account.makeDeposit(initialAmount)
    }
    then "the balance should be equal to the amount deposited", {
        account.balance.shouldBe initialAmount
    }
    and "My account should have a balance of $100", {
        account.balance.shouldBeEqualTo initialAmount
    }
}



web测试工具进化

这里有很多测试工具不仅仅是单元测试,2008年web测试工具进展迅速。这个领域尤其值得注意的工具有两个:SeleniumCanoo WebTest.

Selenium 是一个原始测试工具,在浏览器中运行你的web测试。在2008年,Selenium 1.0 beta发布了,提供更好的稳定性和新的功能。通过录制Selenium测试脚本,你能使用Selenium做功能测试和回归测试,也能通过Java甚至Groovy写Selenium测试案例来支持TDD测试驱动开发。2008年也见证了Selenium Grid的出现,一个非常有前途的工具,帮助你分布你的测试到多个不同的服务器,并且平行运行测试或者在特定平台浏览器上运行。

Canoo WebTest 在2008年也非常活跃。这个强大的web测试框架非常适合TDD或者BDD实现。使用Canoo WebTest,你能够用XML或者Groovy为你的web应用写测试案例。Canoo WebTest运行在web应用上,提供清晰,详细的HTML测试报告。Grails使用Canoo WebTest用于自动生成功能测试。Canoo WebTest并不像Selenium功能那么强大,对JavaScript的支持没有Selenium那么好。

IDEs

在IDE方面,2008年见证了 Eclipse 3.4 Ganymede 和NetBeans 6.5的发布,两者都带来了很多新功能。Eclipse 3.4 改进了java开发环境,包括:更好上下文帮助功能,更好的快速修复,大量提升可用性。一个很好的被重构的功能是Extract Class option,让你能够从class中获得一组属性和函数,创建一个新的class封装这些字段和函数。Eclipse 3.4的编译速度变快,能从多核进程中获得优势,把计算分布到不同的芯片上运行。Eclipse 3.4支持外部Subversion,完全支持Subversion插件。详情查看JavaEye新闻热烈讨论的 Eclipse 3.4(Ganymede )正式版本发布了

引用
Groovy Grails和IDEs

Groovy和Grails 2008年大量侵入java社区,Groovy是一个动态脚本语言,Grails是一个强大的基于Groovy的类似Ruby的web框架。2008年Groovy和Grails,以及Scala和Clojure发展很快,但是对于它们的IDE支持并不好,主要是因为它们是动态语言,比如很难提供很好的代码完成功能,因为动态语言缺乏类型。目前支持动态语言最好的是IntelliJ,其次是NetBeans,Eclipse仍需努力。可以预见到,2009年对于动态语言的支持会继续发展。关于Groovy可以查看JavaEye新闻关于Groovy大量报道


我最喜欢的Eclipse 3.4的功能是 Mylyn 3.0 ,Mylyn 是一个任务管理工具,Mylyn管理构成了一个开发者工作日的所有任务,例如我们修复的bug或者我们增加的特征,都被无缝的集成到IDE的界面中了。IDE集成提供了例如代码补全,变更管理和离线编辑等功能。

NetBeans 6.5

随着NetBeans 6.5的发布,NetBeans成为最舒服的开发环境之一。和以往一样,它提供了比Eclipse更流畅的用户使用体验,虽然和Eclipse相比缺少了一些插件。对Maven用户一个好消息是:NetBeans 6.5对Maven更加友好。虽然没有Eclipse的m2eclipse功能那么丰富,NetBeans Maven插件质量很好,并且视Maven项目为第一类成员对待。

NetBeans 6.5提供优秀的动态语言支持,包括JavaScript,Groovy和Grails,PHP,甚至是Ruby/Rails。你能使用所有这些语言创建项目,NetBeans为它们提供强大的开发环境。

NetBeans也支持JavaFX开发,通过可选插件,能够创建和调试JavaFX应用。

最后NetBeans 6.5为库提供更好的本地支持,比如Spring, Hibernate, 和 JavaServer Faces (JSF),提供比如进入Spring Bean的对话框这样的功能,并且支持在IDE内运行Hibernate 查询语言查询。关于NetBeans,JavaEye提供最新最详细的NetBeans新闻

总结

2008年在Java开发工具领域出现了许多重要的大事,开发环境提供更丰富的功能,更容易使用,并且满足了日益增加的对动态语言类似Groovy和Ruby的支持。对动态语言兴趣的增加在2008年趋势明显。另外一个整体趋势就是自动build工具在2008年发展很快。Groovy在测试领域成为领头羊,它让开发者更加容易编写更富表达能力和更加强大的测试工具,比如Hudson和Bamboo,将CI持续集成从专家手中释放出来面向一般的开发者。Maven也更加容易使用,拥有丰富的用户界面让Maven更加能够被理解。同时Subversion也提供新的自动脚本功能。

你对2009年Java工具的发展有什么看法呢?

英文原文:Year in Review: The Java tools roundup

92
8
评论 共 27 条 请登录后发表评论
7 楼 supermy 2008-12-30 09:49
maven 不好,1.0的时候就把我折腾得够呛,又回到了ant;2.0的时候,看了看,还是费劲。
6 楼 kaipingk 2008-12-30 09:29
netbeans 很多细节方面还需要改进啊
5 楼 lsk 2008-12-30 09:18
whaosoft 写道

都是好东西呀~~ 不过做什么领域要用到maven呢?

林子大了 就要用这个东西把"鸟"管起来
4 楼 whaosoft 2008-12-30 09:01
都是好东西呀~~ 不过做什么领域要用到maven呢?
3 楼 hilliate 2008-12-29 20:37
无视maven的飘过~
2 楼 gml520 2008-12-29 19:17
还是看英文的东西好啊!内容没有被删减!
1 楼 windyrup 2008-12-29 18:11
very good!

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 一个专业的IT管理人才必备的十大技能

    作为IT技术人员,相信没有一个人愿意永远在底层编写程序或做简单的系统维护。经过一段时间的技术和经验的积累,很多人都向往更高层的职位,但如何能成为一个专业的IT管理人才,并不是每一个人都清晰、明了。   如果你真想成为一名成功、成熟的IT专家,你需要不断地扩展你的技能与知识——有些知识领域可能对你很陌生,本文阐述了可以帮助你提高职业素质的重要能力。作为一名IT专业人士,要想有一个成功的职业生涯并不是很容易的事情。你有可能每一种技术都懂一些,但又都不精通,也有可能是一名专才。无论如何,一旦你想成为IT专家,想在你的游戏地盘里成为楚翘,你需要不断扩展的、跨领域的素质。但是,大部分的素质能力存在于传统IT技能范畴之外,它们可能适用于其他的功能学科。我们与其他人的差异越来越小,这超出了我们的习惯思维,恐怕对很多想迅速成功的IT专业人士也是一个不小的打击。   理解现有的和新兴的技术

  • 做一个专业的IT管理人才必备的十大能力

                     做一个专业的IT管理人才必备的十大能力            来自:zdnet.com.cn   Jeff Relkin       作为IT技术人员,相信没有一个人愿意永远在底层编写程序或做简单的系统维护。经过一段时间的技术和经验的积累,很多人都向往更高层的职位,但如何能成为一个专业的IT管理人才,并不是每一个人都清晰、明了。  如果你真想成为一名成功、

  • 软件工程 & 网络工程,职业方向是怎样的?选择之前一定要了解!

    各IT岗位需要的IT职业技能有哪些?现在的IT岗位很多大概分为了软件工程、网络工程、信息管理、多媒体设计几个方向。这里我主要针对前两个方向来说说。如果你在IT岗位却不了解自己的职业技能应该掌握哪些这个情况很糟糕。 一、软件工程:   软件工程:包括开发和测试两大部分,主要面向于软件的开发和相应服务的提供相对来说就业人数最多的方向,高级职位一般为系统架构师和分析师或其他同级职位。   1、职位入门:初级软件程序员   很多人以为作为一个程序员就已经进入IT行业了。对不起我不想打击你们,但是你们错了

  • IT人员应该掌握的30种技能

    每一个IT人员都应该掌握的30种技能 1处理简单的电脑问题。   比如,连接打印机、备份文件或者安装网卡。你不需要成为深入了解诸如超频CPU或者是入侵注册表之类问题的专家;但是因为你从事IT 行业,所以人们会期待你能够解决一般的电脑故障。(如果你手下的IT技术人员没有达到这样的水准,那么开除他们。参考:如何解雇IT技术人员)。    2.客户服务 从CIO到高级架...

  • 想成为程序员,这些技能不能少

    对于刚开始学习软件开发的新人来说,“必备技能”往往意味着一个长长的、标有重要度的学习列表,但是过长的列表通常会导致新人不知如何开始学习,压力倍增。 本文尝试列举出最重要的几个技能,也期望通过此列表能给新人一个比较明确的学习重点和路径。 深入学习一门编程语言 没有掌握任何一门编程语言,就不可能成为一名编程人员。 许多程序员试图在学习之初一次...

  • IT公司急需的程序员要掌握的几大关键技能!

    在当今竞争激烈的环境中,程序员必须不断学习和持续更新硬技能。那么成为一名企业急需的程序员需要学习什么呢? 本文,我列出了IT专业人员在人才竞争中必须具备的几大关键技能,这也是技术人员需要掌握的关键核心。 1、Python 除了人工智能用到了Python,Python还可以应用于众多领域,如:数据分析、组件集成、网络服务、图像处理、数值计算和科学计算等众多领域。 目前业内几乎所有大中型互联网企业都在使用Python,如Youtube、Dropbox、BT、Quora(中国知乎)、豆瓣、知乎、Google、Y

  • IT人应具备的五种能力

    IT人应具备的五种能力2006-08-10 23:25 IT业的兴起,意味着一个全新职业的出现。记得一位著名IT评论家在他的一篇文章里说过,做过IT的人,转行不难,而做传统行业的人转作IT,就显得不是那么容易了,而且摆出种种理由来阐明他的论点。在这种职务转换过程中,什么起了决定性作用?东裁员西裁员,难道是

  • 国内电子商务从业人员需要具备哪些知识?

    国内电子商务从业人员需要具备哪些知识?今天在这里谈这个话题,是应一些朋友的邀请,发表一下自己对国内电子商务从业人员知识储备的一点建议,以希望他们在毕业初始,迷茫的眼神里能够看到今天电子商务的希望,我简单概述一下仅供参考: 1.熟练的网络操作技能. QQ,email,MSN等通讯工作,baidu.google yahoo等搜索引擎的熟练应用. 2.扎实的产品知识能力, 熟知产品性能.能够

  • IT行业各岗位必备技能,入行必看

    IT行业道路是一条充满了挑战和冒险,收获和艰辛并存的挑战之路,你的每一分收获都是要实实在在的拿出你的努力去拼出来的。 今天小千姐姐和大家说说IT的各个岗位和相关所需要的技能。现在IT的岗位很多大概分为了软件工程、网络工程、信息管理、多媒体设计几个方向。这里我主要针对前两个方向来说说。 01、岗位的技术方向 软件工程 包括开发和测试两大部分,主要面向于软件的开发和相应服务的提供,相对来说就业人数最多...

  • IT人才市场最看重的12项技能

    IT行业很热门,不过前提是你要有所需的技能。如果你想进入这个行业,不妨看看在不久的将来最热门的几项IT技能。 KevinScott是谷歌公司的高级技术经理,也是美国计算机协会专业与教育委员会的创始成员,他说:“我在硅谷看到的一切与认为程序员行将消失、其工作外包出去的观点完全相反。从大企业到新兴公司,许多公司都在积极招聘。” 许多招聘人员认为,现在有更多的空位可供求职者...

  • IT人职业规划【转】

    在IT行业,一个人的成长大致可以分为: 第一阶段:22-25岁,深入研究技术,熟练掌握一种工具,体会大学中学习的理论在实际工作中的运用,熟悉工作的环境和工作方法,人与人合作的方式 。 第二阶段:25-28岁,参加项目开发,并...

  • 互联网时代IT人士最需要掌握的一些技能

    随着越来越多的企业围绕软件建立业务,网络和数据中心专业人员也在寻求采用软件来优化他们的技能。虽然软件可能不是处理数据中心时首先想到的事情,但IT行业观察人士表示,经验丰富的网络和基础设施专业人员可以明智地开展代码游戏。公共云、私有云、混合云,物联网、人工智能、机器学习等流行的技术趋势将促使网络和数据中心专业人员投入更多的培训时间和资金,以更好地了解IT机构的软件应用。 “程序员也需要完全了解管道和...

  • IT行业当前应该掌握哪些技术?

    今天面试过程中,面试官提到这些技术: 1、大数据、2、数据库集群、3、系统分布式部署、4、框架的运行原理等、5云服务。等等 请问IT行业当前需要掌握哪些技术才能得到大公司或者是正规公司的青睐?

  • IT 从业人员的基本素质

    IT行业是一个日新月异的行业,每时每刻都在产生新的思想、新的技术,IT技术逐渐***到各个行业、各个领域,并且逐渐成为人们工作和生活中不可缺少的一部分。 程序员工作几年之后, 其中陆陆续续会有一部分佼佼者被提拔为技术经理, 或者项目经理, 老板看中了他们的什么特质呢? 这里,小编稍微总结了一点和大家分享。第一,逻辑思维活跃。计算机实际上就是逻辑运算,从底层的加法器到全球共享的...

  • IT 技能发展:10 大基本 IT 技能

    IT 技能发展:10 大基本 IT 技能 着技术开发的快速发展和业务流程的变化,再加上不稳定的经济背景,拥有出众的 IT 技能变得比以往任何时候都更加重要。 Brien Posey 在 IT 行业工作了二十多年,我可以诚实地说,这个行业过去几年的变化比以往任何时候都大。其中一些变化是技术进步引起的,另一些是由政府法规推动的。 不管是什么原因,即使与五年前相比,IT 业的面貌也已经完全不同了...

  • 作为一名成功的IT程序员,需要哪些必备技能呢?

    由于很多朋友都是从其他行业转行IT界的,对IT行业应具备技能的理解比较浅显。但事实上,一名成功的程序员不仅应该拥有一定的硬技能,还应该具备一定的软技能。

  • 六项程序员应该具备的能力,拥有了才算合格,对职业发展很有帮助

    很多程序员喜欢称自己为码农,每天的工作除了敲代码,还是敲代码。其实,这其中很大一部分人只是自黑而已,他们多数都是合格的程序员。而有些人,的确是实实在在的码农,他们对系统、程序的理解能力不佳,个人的程序能力较为欠缺,算不上是合格的程序员。 那么,一个程序员要具备哪些能力,才能算是真正合格的程序员呢? 1、学习能力 如今的技术更新迭代非常快,不保持学习的话,即便你的技术基础再好,也有可能被弯道超车。...

Global site tag (gtag.js) - Google Analytics