年度總結:2008年Java工具

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,以及最新的 Gant  Gradle,能夠幫助創建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)和依賴層次。比如它讓你更容易可視化的查看編輯你的項目依賴,瞭解和解決依賴衝突。 

powertools-figure1.jpg 

依賴搜索也是m2eclispe提供的另一個很有用的功能,一旦你開始使用,你會發現你離不開它了。它讓添加一個新的依賴包進入你的項目不會出現任何問題。你只需要通過名字搜索Maven存儲空間,選擇版本,加入到你的pom.xml文件中。 

Maven存儲管理是也是每個Maven用戶都需要的工具,Maven存儲空間能夠同時支持作爲Inter公共存儲空間的一個依賴緩存存在,也支持作爲一個庫發佈和分享給整個公司使用。2008年見證這個領域快速升起的一顆新星:Nexus,Nexus讓管理Maven存儲空間成爲一種享受。 

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

powertools-figure2.jpg 

持續集成實踐添加了一個新的方向是代碼編寫規則工具,隨着時間推移幫助開發者顯示和分析代碼規則,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。你也能寫相應的文本腳本,讓你能夠在實現解決方案之前描述你的行爲流程。下面是例子: 

Java代碼 複製代碼
  1. Simple JBehave test case  
  2.   
  3. public class AccountDepositSteps extends Steps {  
  4.   
  5. Account account = null;  
  6. BigDecimal initialDeposit = new BigDecimal("100.00");  
  7.   
  8.     @Given("I have created a new account")  
  9.     public void createAccount() {  
  10.         account = new Account();  
  11.     }  
  12.   
  13.     @When("I deposit $100 into the account")  
  14.     public void deposit() {  
  15.         account.makeDeposit(initialDeposit);  
  16.     }  
  17.   
  18.     @Then("My account should have a balance of $100")  
  19.     public void checkBalance() {  
  20.         ensureThat(account.getBalance(), equalTo(initialDeposit));  
  21.     }  
  22. }  




另外一個基於Groovy的BDD框架:easyb,提供了Groovy的強大功能,能夠結構性的在java測試領域實現BDD。Easyb使用Groovy 域特定語言DSL能夠跟隨BDD腳本模型。Groovy能讓測試具有更大的表達性,尤其當你熟悉Groovy慣用方法,比如文件集成,激活和閉包。上面的例子用easyb重寫如下: 

Java代碼 複製代碼
  1. scenario "Make initial deposit onto a new account", {  
  2.     given "I have created a new account",{  
  3.        account = new Account()  
  4.     }  
  5.     when "I deposit $100 into the account", {  
  6.        initialAmount = 100  
  7.        account.makeDeposit(initialAmount)  
  8.     }  
  9.     then "the balance should be equal to the amount deposited", {  
  10.         account.balance.shouldBe initialAmount  
  11.     }  
  12.     and "My account should have a balance of $100", {  
  13.         account.balance.shouldBeEqualTo initialAmount  
  14.     }  
  15. }  




web測試工具進化 

這裏有很多測試工具不僅僅是單元測試,2008年web測試工具進展迅速。這個領域尤其值得注意的工具有兩個:Selenium  Canoo 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 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章