現(xiàn)在有很多庫(kù)、實(shí)用工具和程序任java開發(fā)人員選擇。每個(gè)工具都有其優(yōu)點(diǎn),但其中有一些因它的知名度、多功能性和有效性從眾多選項(xiàng)中脫穎而出。
以下這8個(gè)工具,從代碼構(gòu)建到錯(cuò)誤擠壓,覆蓋java開發(fā)的全域。學(xué)習(xí)這些工具可以幫助你改善代碼質(zhì)量,成為一個(gè)更高效的java開發(fā)人員。
1.eclipse
盡管intellij idea、netbeans和一些其他的ide正在日益普及,但是有調(diào)查表明,eclipse仍然是幾乎半數(shù)java開發(fā)人員首選的開發(fā)環(huán)境。 eclipse是ide領(lǐng)域的瑞士軍刀,有著大量定制的接口和無數(shù)的插件。它無處不在,后面本文將推薦的其他所有工具都提供eclipse插件。
eclipse的工作流程可分為三個(gè)方面:工作臺(tái),工作空間和視角。工作臺(tái)作為到ide的出發(fā)點(diǎn)。工作空間將項(xiàng)目、文件和配置設(shè)置組合在一個(gè)單獨(dú)的 目錄下。視角定義工具、視圖和有效設(shè)置。雖然新手開發(fā)人員可能會(huì)覺得相比netbeans和intellij idea,eclipse使用起來更難,但eclipse的靈活性,使其成為企業(yè)開發(fā)的首選ide。
luna,eclipse的最新版本,支持java 8、分屏編輯、新的黑色主題,以及一個(gè)功能齊全的命令行終端。
官方網(wǎng)站:https://eclipse.org/
2.gradle
gradle是一個(gè)自動(dòng)化項(xiàng)目工具,建立在apache maven和apache ant的功能上。雖然gradle并不是最流行的構(gòu)建工具(最流行的是maven,64%的java開發(fā)人員會(huì)選擇它),但它的普及速度很快。它也可作為默認(rèn)的android構(gòu)建工具。
gradle引以為傲的是它的簡(jiǎn)單。gradle使用groovy編程語言,與maven和ant使用xml語法截然相反。一個(gè)基本的gradle構(gòu)建文件由一行簡(jiǎn)單的代碼組成:
apply plugin: 'java'.
下面的命令會(huì)生成一個(gè)gradle構(gòu)建文件,創(chuàng)建項(xiàng)目文件的目錄樹,并附帶一個(gè)項(xiàng)目便攜式gradle封裝:
$ gradle init --type java-library
gradle還有可用于添加新的語言,生成支持ide的項(xiàng)目文件,構(gòu)建本地二進(jìn)制文檔,檢查依賴性更新等等的插件。
想要了解更多信息,請(qǐng)參見gradle的java / jvm入門指南。
官方網(wǎng)站:https://gradle.org/
3.javadoc
javadoc是oracle提供的文檔生成器。它可以將特殊格式的注釋解析為html文檔。以下截圖就是javadoc生成的java se 8 api規(guī)范:
javadoc注釋使用開放標(biāo)簽、關(guān)閉標(biāo)簽,以及一個(gè)或多個(gè)描述性標(biāo)簽的格式。開放式標(biāo)簽類似于標(biāo)準(zhǔn)java多行注釋標(biāo)記,使用兩個(gè)星號(hào)的除外。javadoc也解析普通的html標(biāo)簽。
javadoc自動(dòng)格式化標(biāo)簽和關(guān)鍵字,除非另有規(guī)定。javadoc廣泛使用超鏈接,允許你參考和鏈接到代碼的不同區(qū)域。許多ide——包括 eclipse——可以自動(dòng)添加javadoc注釋模塊到變量、類和方法中。支持maven、gradle和ant的插件在編譯代碼的同時(shí)也可以構(gòu)建 javadoc html。
想要了解更多信息,請(qǐng)參閱oracle關(guān)于如何為javadoc工具寫文檔注釋的文章。
官方網(wǎng)站:http://www.oracle.com/technetwork/java/javase/documentation/index-jsp-135444.html
4.junit
junit是用于編寫和運(yùn)行單元測(cè)試的開源框架。一個(gè)基本的junit測(cè)試包括測(cè)試類、測(cè)試方法、以及執(zhí)行測(cè)試的功能。 junit使用標(biāo)注來確定測(cè)試如何構(gòu)造和運(yùn)行。例如,如果你的程序有一個(gè)類叫做mathclass,具有乘法和除法的方法,你可以創(chuàng)建junit測(cè)試來檢 查不符合預(yù)期的值。輸入數(shù)字2和5到乘法方法,你希望得到的結(jié)果為10。當(dāng)輸入0作為除法方法的第二個(gè)參數(shù)時(shí),你會(huì)期望給出一個(gè)數(shù)字計(jì)算異常的警告因?yàn)槌?數(shù)不能為0:
@test標(biāo)注規(guī)定,mathclass方法是一個(gè)測(cè)試用例。 在junit提供額外的標(biāo)注,比如@before,這樣你就可以在測(cè)試運(yùn)行之前設(shè)置環(huán)境。 junit還可以設(shè)置規(guī)則用于定義測(cè)試方法的行為。例如,temporaryfolder規(guī)則使得一旦測(cè)試完成,由測(cè)試創(chuàng)建的文件或文件夾就會(huì)被刪除。
想要了解更多信息,請(qǐng)參考junit入門。 此外還有使用junit單元測(cè)試的教程。
官方網(wǎng)站:http://junit.org/
5.cobertura
cobertura可用于分析java代碼的測(cè)試覆蓋率。cobertura根據(jù)沒有被測(cè)試覆蓋的代碼生成基于html的報(bào)告。
cobertura提供可用于插裝、檢查和測(cè)試代碼的工具。通過監(jiān)控可測(cè)試的代碼,cobertura允許你使用你選擇的測(cè)試框架,甚至不需要測(cè)試框架就可以運(yùn)行程序。
cobertura根據(jù)行、分支和程序包三個(gè)方面給出代碼覆蓋報(bào)告。每個(gè)類別都有一個(gè)可自定義的閾值,如果覆蓋面低于閾值,就會(huì)觸發(fā)警告。cobertura還集成了maven和gradle 的自動(dòng)檢測(cè)功能。
mkyong.com提供了一個(gè)將cobertura與maven整合的示例。
官方網(wǎng)站:http://cobertura.github.io/cobertura/
6.findbugs
findbugs是一個(gè)匹配編譯代碼模式,而非使用bug數(shù)據(jù)庫(kù)的工具。當(dāng)提供源代碼時(shí),findbugs還可高亮顯示檢測(cè)出bug的代碼行。
在它的3.0.1版本中,findbugs繼續(xù)保持著數(shù)以百計(jì)的bug描述。根據(jù)bug的嚴(yán)重程度,findbugs將bug分為四個(gè)水平:相關(guān) 的,令人困擾的,可怕的,以及最可怕的。除了圖形用戶界面,findbugs還提供一個(gè)命令行界面,ant任務(wù),以及eclipse插件。
官方網(wǎng)站:http://findbugs.sourceforge.net/
7.visualvm
包含在jdk中的visualvm是監(jiān)控和審查java應(yīng)用程序性能的工具。 visualvm檢測(cè)并重視活躍的jvm實(shí)例來檢索有關(guān)進(jìn)程的診斷信息。
visualvm可以很容易地實(shí)時(shí)診斷性能問題。它提供了全套的分析工具,包括jconsole、jstack、jmap、jinfo和jstat等。此外,你還可以對(duì)jvm做一個(gè)快照,這樣以后在任何時(shí)都能審查。
官方網(wǎng)站:http://visualvm.java.net/
8.groovy
groovy是一種編程語言,通過添加新的關(guān)鍵字,自動(dòng)導(dǎo)入常用的類,以及可選類型變量聲明,既簡(jiǎn)化又?jǐn)U展了java。
groovy的核心優(yōu)勢(shì)之一是它的腳本功能。類可以被編譯為java字節(jié)碼或使用groovy shell動(dòng)態(tài)執(zhí)行。groovy的java基礎(chǔ)使得它相較于jython和jruby更容易為java開發(fā)人員所接受。
想要了解更多信息,請(qǐng)參見groovy的入門指南。
官方網(wǎng)站:http://www.groovy-lang.org/
其他選擇
java這個(gè)大世界中正在不斷涌現(xiàn)新的工具、實(shí)用程序和庫(kù)。如果你的首選工具沒能進(jìn)入上述名單,歡迎分享。