第一篇:Java程序員必須掌握的開發(fā)工具
Java程序員必須掌握的開發(fā)工具
以下的開發(fā)工具,能幫助你成為一名高級(jí)java程序開發(fā)人員。
1.Eclipse
盡管IntelliJ IDEA、NetBeans和一些其他的IDE正在日益普及,但是有調(diào)查表明,Eclipse仍然是幾乎半數(shù)Java開發(fā)人員首選的開發(fā)環(huán)境。Eclipse是IDE領(lǐng)域的瑞士軍刀,有著大量定制的接口和無數(shù)的插件。它無處不在,后面本文將推薦的其他所有工具都提供Eclipse插件。這也是八維必講的開發(fā)工具。
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è)功能齊全的命令行終端。
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引以為傲的是它的簡單。Gradle使用Groovy編程語言,與Maven和Ant使用XML語法截然相反。
3.Javadoc
Javadoc是Oracle提供的文檔生成器。它可以將特殊格式的注釋解析為HTML文檔。
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。
4.JUnit
JUnit是用于編寫和運(yùn)行單元測試的開源框架。一個(gè)基本的JUnit測試包括測試類、測試方法、以及執(zhí)行測試的功能。JUnit使用標(biāo)注來確定測試如何構(gòu)造和運(yùn)行。例如,如果你的程序有一個(gè)類叫做MathClass,具有乘法和除法的方法,你可以創(chuàng)建JUnit測試來檢 查不符合預(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è)測試用例。在JUnit提供額外的標(biāo)注,比如@Before,這樣你就可以在測試運(yùn)行之前設(shè)置環(huán)境。JUnit還可以設(shè)置規(guī)則用于定義測試方法的行為。例如,TemporaryFolder規(guī)則使得一旦測試完成,由測試創(chuàng)建的文件或文件夾就會(huì)被刪除。
5.Cobertura
Cobertura可用于分析Java代碼的測試覆蓋率。Cobertura根據(jù)沒有被測試覆蓋的代碼生成基于HTML的報(bào)告。
Cobertura提供可用于插裝、檢查和測試代碼的工具。通過監(jiān)控可測試的代碼,Cobertura允許你使用你選擇的測試框架,甚至不需要測試框架就可以運(yùn)行程序。
Cobertura根據(jù)行、分支和程序包三個(gè)方面給出代碼覆蓋報(bào)告。每個(gè)類別都有一個(gè)可自定義的閾值,如果覆蓋面低于閾值,就會(huì)觸發(fā)警告。Cobertura還集成了Maven和Gradle 的自動(dòng)檢測功能。
6.FindBugs
FindBugs是一個(gè)匹配編譯代碼模式,而非使用bug數(shù)據(jù)庫的工具。當(dāng)提供源代碼時(shí),F(xiàn)indBugs還可高亮顯示檢測出bug的代碼行。
在它的3.0.1版本中,F(xiàn)indBugs繼續(xù)保持著數(shù)以百計(jì)的bug描述。根據(jù)bug的嚴(yán)重程度,F(xiàn)indBugs將bug分為四個(gè)水平:相關(guān) 的,令人困擾的,可怕的,以及最可怕的。除了圖形用戶界面,F(xiàn)indBugs還提供一個(gè)命令行界面,Ant任務(wù),以及Eclipse插件。
7.VisualVM
包含在JDK中的VisualVM是監(jiān)控和審查Java應(yīng)用程序性能的工具。VisualVM檢測并重視活躍的JVM實(shí)例來檢索有關(guān)進(jìn)程的診斷信息。
VisualVM可以很容易地實(shí)時(shí)診斷性能問題。它提供了全套的分析工具,包括JConsole、jstack、jmap、jinfo和jstat等。此外,你還可以對(duì)JVM做一個(gè)快照,這樣以后在任何時(shí)都能審查。
8.Groovy
Groovy是一種編程語言,通過添加新的關(guān)鍵字,自動(dòng)導(dǎo)入常用的類,以及可選類型變量聲明,既簡化又?jǐn)U展了Java。
Groovy的核心優(yōu)勢(shì)之一是它的腳本功能。類可以被編譯為Java字節(jié)碼或使用Groovy Shell動(dòng)態(tài)執(zhí)行。Groovy的Java基礎(chǔ)使得它相較于Jython和JRuby更容易為Java開發(fā)人員所接受。
第二篇:優(yōu)秀的java程序員必須掌握的十項(xiàng)技能
西安尚學(xué)堂
一個(gè)優(yōu)秀的Java程序員必須掌握的10項(xiàng)技能
3G時(shí)代迫使IT從業(yè)者中的技術(shù)人員掌握越來越多的實(shí)用技能,作為IT行業(yè)的技術(shù)創(chuàng)造者,一個(gè)優(yōu)秀的java程序員必須掌握以下的10項(xiàng)技能,方能勝任java程序員的崗位。
1、語法:必須比較熟悉,在寫代碼的時(shí)候的編輯器對(duì)某一行報(bào)錯(cuò)應(yīng)該能夠根據(jù)報(bào)錯(cuò)信息知道是什么樣的語法錯(cuò)誤并且知道如何修正。
2、命令:必須熟悉自帶的常用命令及其常用選項(xiàng),需要熟悉的命令:appletviewer、Htmlonverter、jar、java、javac、javadoc、javap、javaw、native2ascii、serialver,如果這些命令你沒有全部使用過,那么你對(duì)java實(shí)際上還很不了解。
3、工具:必須至少熟練使用一種IDE的開發(fā)工具,例如、Netbeans、JBuilder、Jdeveloper、IDEA、JCreator或者Workshop,包括進(jìn)行工程管理、常用選項(xiàng)的設(shè)置、插件的安裝配置以及進(jìn)行調(diào)試。
4、API:的核心API是非常龐大的,但是有一些內(nèi)容筆者認(rèn)為是必須熟悉的,否則不可能熟練的運(yùn)用Java,包括:
◆java.lang包下的80%以上的類的功能的靈活運(yùn)用。
◆java.util包下的80%以上的類的靈活運(yùn)用,特別是集合類體系、規(guī)則表達(dá)式、zip、以及時(shí)間、隨機(jī)數(shù)、屬性、資源和Timer.◆java.io包下的60%以上的類的使用,理解IO體系的基于管道模型的設(shè)計(jì)思路以及常用IO類的特性和使用場合。
◆java.math包下的100%的內(nèi)容。
◆java.net包下的60%以上的內(nèi)容,對(duì)各個(gè)類的功能比較熟悉。
◆java.text包下的60%以上的內(nèi)容,特別是各種格式化類。
◆熟練運(yùn)用JDBC.8)、java.security包下40%以上的內(nèi)容,如果對(duì)于安全沒有接觸的話根本就不可能掌握java.◆AWT的基本內(nèi)容,包括各種組件事件、監(jiān)聽器、布局管理器、常用組件、打印?!鬝wing的基本內(nèi)容,和AWT的要求類似。
◆XML處理,熟悉SAX、DOM以及JDOM的優(yōu)缺點(diǎn)并且能夠使用其中的一種完成XML的解析及內(nèi)容處理。
5、測試:必須熟悉使用junit編寫測試用例完成代碼的自動(dòng)測試。
6、管理:必須熟悉使用ant完成工程管理的常用任務(wù),例如工程編譯、生成javadoc、生成jar、版本控制、自動(dòng)測試。
7、排錯(cuò):應(yīng)該可以根據(jù)信息比較快速的定位問題的原因和大致位置。
8、思想:必須掌握OOP的主要要求,這樣使用Java開發(fā)的系統(tǒng)才能是真正的Java系統(tǒng)。
9、規(guī)范:編寫的代碼必須符合流行的編碼規(guī)范,例如類名首字母大寫,成員和方法名首字母小寫,方法名的第一個(gè)單詞一般是動(dòng)詞,包名全部小寫等,這樣程序的可讀性才比較好。
10、博學(xué):掌握、Oracle、WebLogic、Jboss、、Struts、Hibernate 等流行技術(shù),掌握軟件架構(gòu)設(shè)計(jì)思想、搜索引擎優(yōu)化、緩存系統(tǒng)設(shè)計(jì)、網(wǎng)站負(fù)載均衡、系統(tǒng)性能調(diào)優(yōu)等實(shí)用技術(shù)。
第三篇:Java程序員必須掌握的線程知識(shí)
Java程序員必須掌握的線程知識(shí) Callable和Future Callable和Future出現(xiàn)的原因
創(chuàng)建線程的2種方式,一種是直接繼承Thread,另外一種就是實(shí)現(xiàn)Runnable接口。
這2種方式都有一個(gè)缺陷就是:在執(zhí)行完任務(wù)之后無法獲取執(zhí)行結(jié)果。如果需要獲取執(zhí)行結(jié)果,就必須通過共享變量或者使用線程通信的方式來達(dá)到效果,這樣使用起來就比較麻煩。
而自從Java 1.5開始,就提供了Callable和Future,通過它們可以在任務(wù)執(zhí)行完畢之后得到任務(wù)執(zhí)行結(jié)果。
Callable和Future介紹
Callable接口代表一段可以調(diào)用并返回結(jié)果的代碼;Future接口表示異步任務(wù),是還沒有完成的任務(wù)給出的未來結(jié)果。所以說Callable用于產(chǎn)生結(jié)果,F(xiàn)uture用于獲取結(jié)果。
Callable接口使用泛型去定義它的返回類型。Executors類提供了一些有用的方法在線程池中執(zhí)行Callable內(nèi)的任務(wù)。由于Callable任務(wù)是并行的(并行就是整體看上去是并行的,其實(shí)在某個(gè)時(shí)間點(diǎn)只有一個(gè)線程在執(zhí)行),我們必須等待它返回的結(jié)果。
java.util.concurrent.Future對(duì)象為我們解決了這個(gè)問題。在線程池提交Callable任務(wù)后返回了一個(gè)Future對(duì)象,使用它可以知道Callable任務(wù)的狀態(tài)和得到Callable返回的執(zhí)行結(jié)果。Future提供了get()方法讓我們可以等待Callable結(jié)束并獲取它的執(zhí)行結(jié)果。
Callable與Runnable
java.lang.Runnable吧,它是一個(gè)接口,在它里面只聲明了一個(gè)run()方法:
publicinterfaceRunnable{
publicabstractvoid run();}
由于run()方法返回值為void類型,所以在執(zhí)行完任務(wù)之后無法返回任何結(jié)果。
Callable位于java.util.concurrent包下,它也是一個(gè)接口,在它里面也只聲明了一個(gè)方法,只不過這個(gè)方法叫做call():
publicinterfaceCallable
/**
* Computes a result, or throws an exception if unable to do so.*
* @return computed result
* @throws Exception if unable to compute a result
*/
V call()throwsException;}
可以看到,這是一個(gè)泛型接口,call()函數(shù)返回的類型就是傳遞進(jìn)來的V類型。
那么怎么使用Callable呢?
一般情況下是配合ExecutorService來使用的,在ExecutorService接口中聲明了若干個(gè)submit方法的重載版本:
第一個(gè)submit方法里面的參數(shù)類型就是Callable。
暫時(shí)只需要知道Callable一般是和ExecutorService配合來使用的,具體的使用方法講在后面講述。
一般情況下我們使用第一個(gè)submit方法和第三個(gè)submit方法,第二個(gè)submit方法很少使用。
Future
Future就是對(duì)于具體的Runnable或者Callable任務(wù)的執(zhí)行結(jié)果進(jìn)行取消、查詢是否完成、獲取結(jié)果。必要時(shí)可以通過get方法獲取執(zhí)行結(jié)果,該方法會(huì)阻塞直到任務(wù)返回結(jié)果。
Future類位于java.util.concurrent包下,它是一個(gè)接口:
publicinterfaceFuture
boolean cancel(boolean mayInterruptIfRunning);
boolean isCancelled();
boolean isDone();
V get()throwsInterruptedException,ExecutionException;
V get(long timeout,TimeUnit unit)
throwsInterruptedException,ExecutionException,TimeoutException;}
在Future接口中聲明了5個(gè)方法,下面依次解釋每個(gè)方法的作用:
cancel方法用來取消任務(wù),如果取消任務(wù)成功則返回true,如果取消任務(wù)失敗則返回false。參數(shù)mayInterruptIfRunning表示是否允許取消正在執(zhí)行卻沒有執(zhí)行完畢的任務(wù),如果設(shè)置true,則表示可以取消正在執(zhí)行過程中的任務(wù)。如果任務(wù)已經(jīng)完成,則無論mayInterruptIfRunning為true還是false,此方法肯定返回false,即如果取消已經(jīng)完成的任務(wù)會(huì)返回false;如果任務(wù)正在執(zhí)行,若mayInterruptIfRunning設(shè)置為true,則返回true,若mayInterruptIfRunning設(shè)置為false,則返回false;如果任務(wù)還沒有執(zhí)行,則無論mayInterruptIfRunning為true還是false,肯定返回true。isCancelled方法表示任務(wù)是否被取消成功,如果在任務(wù)正常完成前被取消成功,則返回 true。
isDone方法表示任務(wù)是否已經(jīng)完成,若任務(wù)完成,則返回true;
get()方法用來獲取執(zhí)行結(jié)果,這個(gè)方法會(huì)產(chǎn)生阻塞,會(huì)一直等到任務(wù)執(zhí)行完畢才返回;
get(long timeout, TimeUnit unit)用來獲取執(zhí)行結(jié)果,如果在指定時(shí)間內(nèi),還沒獲取到結(jié)果,就直接返回null。
也就是說Future提供了三種功能:
1)判斷任務(wù)是否完成;
2)能夠中斷任務(wù);
3)能夠獲取任務(wù)執(zhí)行結(jié)果。
因?yàn)镕uture只是一個(gè)接口,所以是無法直接用來創(chuàng)建對(duì)象使用的,因此就有了下面的FutureTask。FutureTask
FutureTask實(shí)現(xiàn)了RunnableFuture接口,這個(gè)接口的定義如下:
publicinterfaceRunnableFuture
void run();}
可以看到這個(gè)接口實(shí)現(xiàn)了Runnable和Future接口,接口中的具體實(shí)現(xiàn)由FutureTask來實(shí)現(xiàn)。這個(gè)類的兩個(gè)構(gòu)造方法如下 :
publicFutureTask(Callable
if(callable ==null)
thrownewNullPointerException();
sync =newSync(callable);
}
publicFutureTask(Runnable runnable, V result){
sync =newSync(Executors.callable(runnable, result));
} 如上提供了兩個(gè)構(gòu)造函數(shù),一個(gè)以Callable為參數(shù),另外一個(gè)以Runnable為參數(shù)。這些類之間的關(guān)聯(lián)對(duì)于任務(wù)建模的辦法非常靈活,允許你基于FutureTask的Runnable特性(因?yàn)樗鼘?shí)現(xiàn)了Runnable接口),把任務(wù)寫成Callable,然后封裝進(jìn)一個(gè)由執(zhí)行者調(diào)度并在必要時(shí)可以取消的FutureTask。
FutureTask可以由執(zhí)行者調(diào)度,這一點(diǎn)很關(guān)鍵。它對(duì)外提供的方法基本上就是Future和Runnable接口的組合:get()、cancel、isDone()、isCancelled()和run(),而run()方法通常都是由執(zhí)行者調(diào)用,我們基本上不需要直接調(diào)用它。
一個(gè)FutureTask的例子
publicclassMyCallableimplementsCallable
privatelong waitTime;
publicMyCallable(int timeInMillis){
this.waitTime=timeInMillis;
}
@Override
publicString call()throwsException{ Thread.sleep(waitTime);
//return the thread name executing this callable task
returnThread.currentThread().getName();
}
}
publicclassFutureTaskExample{
publicstaticvoid main(String[] args){
MyCallable callable1 =newMyCallable(1000);// 要執(zhí)行的任務(wù)
MyCallable callable2 =newMyCallable(2000);
FutureTask
FutureTask
ExecutorService executor =Executors.newFixedThreadPool(2);// 創(chuàng)建線程池并返回ExecutorService實(shí)例
executor.execute(futureTask1);// 執(zhí)行任務(wù)
executor.execute(futureTask2);
while(true){
try{
if(futureTask1.isDone()&& futureTask2.isDone()){// 兩個(gè)任務(wù)都完成System.out.println(“Done”);
executor.shutdown();// 關(guān)閉線程池和服務(wù)
return;
}
if(!futureTask1.isDone()){// 任務(wù)1沒有完成,會(huì)等待,直到任務(wù)完成 System.out.println(“FutureTask1 output=”+futureTask1.get());
}
System.out.println(“Waiting for FutureTask2 to complete”);
String s = futureTask2.get(200L,TimeUnit.MILLISECONDS);
if(s!=null){
System.out.println(“FutureTask2 output=”+s);
}
}catch(InterruptedException|ExecutionException e){
e.printStackTrace();
}catch(TimeoutException e){
//do nothing
}
} }}
運(yùn)行如上程序后,可以看到一段時(shí)間內(nèi)沒有輸出,因?yàn)間et()方法等待任務(wù)執(zhí)行完成然后才輸出內(nèi)容.輸出結(jié)果如下:
FutureTask1 output=pool-1-thread-1WaitingforFutureTask2 to completeWaitingforFutureTask2 to completeWaitingforFutureTask2 to completeWaitingforFutureTask2 to completeWaitingforFutureTask2 to completeFutureTask2 output=pool-1-thread-2Done
第四篇:Java程序員需要了解的8個(gè)Java開發(fā)工具
Java程序員需要了解的8個(gè)Java開發(fā)工具
Java是計(jì)算機(jī)應(yīng)用程序編程語言,被廣泛用于創(chuàng)建Web應(yīng)用、服務(wù)器處理、用戶端的API開發(fā)乃至數(shù)據(jù)庫等多個(gè)領(lǐng)域。下面厚學(xué)網(wǎng)小編列出了8個(gè)有助于你開發(fā)Java應(yīng)用程序好的Java工具。
1.SparkJava 這是一款體形輕巧,功能強(qiáng)大的Web應(yīng)用框架。Spark擁有簡單而直接的方法。您可以通過一些繁瑣的XML配置來使用Spark框架編寫應(yīng)用程序。Spark能讓你花費(fèi)很少的精力來開發(fā)Java的Web應(yīng)用程序。
2.jClarity jClarity是兩款產(chǎn)品的結(jié)合:illuminate用于性能監(jiān)控,而census則可以收集日志和分析數(shù)據(jù)。jClarity支持云集成,并且其框架緊湊輕巧。
3.Clover Clover是用于代碼覆蓋的一大利器。該工具有助于用于應(yīng)用程序測試的代碼。我們可以在IDE或持續(xù)集成系統(tǒng)中運(yùn)行Clover。該工具能讓測試的運(yùn)行速度更快。
4.JProfiler JProfiler擁有直觀的用戶界面,可以幫助你解決性能瓶頸和理解問題。JProfiler能讓你輕松約束內(nèi)存泄漏和修復(fù)線程的問題。
5.VisualVM VisualVM是一個(gè)集多功能于一身的Java故障排除工具。你可以使用VisualVM整合多命令行JDK工具。此輕便的工具有著驚人的分析能力。你可以在各種技術(shù),如jvmstat、JMX和Serviceability Agent(SA)中使用VisualVM。VisualVM出名的是附加了API,以獲得更多的數(shù)據(jù),以及自動(dòng)使用更快捷。
6.Elasticsearch Elasticsearch提供了可以整合現(xiàn)有的應(yīng)用程序來驅(qū)動(dòng)其與輸入數(shù)據(jù)的交互的工具。這款開源工具提供了實(shí)時(shí)搜索和分析引擎。Elasticsearch可用于可靠性和可擴(kuò)展性作為重要因素的分布式環(huán)境。該工具提供了超簡單的全文搜索體驗(yàn)。
7.Sonarqube
Sonarqube是一個(gè)用來管理代碼質(zhì)量的開放式平臺(tái)?;赪eb的應(yīng)用程序可以與Java應(yīng)用程序進(jìn)行配置。它提供了規(guī)則、警報(bào)、閾值、排除和設(shè)置功能。SonarQube允許用戶將指標(biāo)結(jié)合在一起,以及使用歷史的措施混合。
8.Takipi Takipi是一個(gè)輕量級(jí)的Java代理。Takipi安裝方便,用不了幾分鐘就可以搞定。它對(duì)代碼注釋或配置并沒有要求。你可以使用一臺(tái)具有完全功能的服務(wù)器與Takipi工作。此款 Java工具能幫助你減少調(diào)試時(shí)間。
總結(jié)
對(duì)于想學(xué)習(xí)Java的朋友來說,比較快的方式當(dāng)然是結(jié)合自身實(shí)際情況找一家專業(yè)的培訓(xùn)機(jī)構(gòu)來進(jìn)行系統(tǒng)有效的學(xué)習(xí),對(duì)此,小編推薦您可以訪問厚學(xué)網(wǎng)(004km.cn)來了解各大知名培訓(xùn)機(jī)構(gòu)的詳細(xì)情況,為自己的選擇保駕護(hù)航;目前厚學(xué)網(wǎng)共計(jì)入駐了多家IT領(lǐng)域的知名培訓(xùn)機(jī)構(gòu),如:被北大青鳥、達(dá)內(nèi)、上海藍(lán)鷗、閣瑞鈦倫特軟件培訓(xùn)等,在讓客戶了解全面的課程信息及真實(shí)用戶評(píng)價(jià)的同時(shí),也讓客戶能夠更放心,省心的選擇到想學(xué)的課程,希望小編的傾力推薦能夠?qū)δ倪x擇有所幫助,期待您早日學(xué)有所成,加油!
第五篇:Java程序員實(shí)用不離手的八大開發(fā)工具
扣丁學(xué)堂 Codingke.com 以下這8個(gè)工具,從代碼構(gòu)建到錯(cuò)誤擠壓,覆蓋Java開發(fā)的全域。
學(xué)習(xí)這些工具可以幫助你改善代碼質(zhì)量,成為一個(gè)更高效的Java開發(fā)人員。每個(gè)工具都有其優(yōu)點(diǎn),但其中有一些因它的知名度、多功能性和有效性從眾多選項(xiàng)中脫穎而出。
loading...以下這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è)功能齊全的命令行終端。
2.GradleGradle是一個(gè)自動(dòng)化項(xiàng)目工具,建立在Apache Maven和Apache Ant的功能上。雖然Gradle并不是最流行的構(gòu)建工具(最流行的是Maven,64%的Java開發(fā)人員會(huì)選擇它),但它的普及速度很快。它也可作為默認(rèn)的Android構(gòu)建工具。
Gradle引以為傲的是它的簡單。Gradle使用Groovy編程語言,與Maven和Ant使用XML語法截然相反。一個(gè)基本的Gradle構(gòu)建文件由一行簡單的代碼組成:
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)制文檔,檢查依賴性更新等等的插件。
3.javadocJavadoc是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。
4.JUnitJUnit是用于編寫和運(yùn)行單元測試的開源框架。一個(gè)基本的JUnit測試包括測試類、測試方法、以及執(zhí)行測試的功能。
JUnit使用標(biāo)注來確定測試如何構(gòu)造和運(yùn)行。例如,如果你的程序有一個(gè)類叫做MathClass,具有乘法和除法的方法,你可以創(chuàng)建JUnit測試來扣丁學(xué)堂 Codingke.com 檢 查不符合預(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è)測試用例。
在JUnit提供額外的標(biāo)注,比如@Before,這樣你就可以在測試運(yùn)行之前設(shè)置環(huán)境。
JUnit還可以設(shè)置規(guī)則用于定義測試方法的行為。例如,TemporaryFolder規(guī)則使得一旦測試完成,由測試創(chuàng)建的文件或文件夾就會(huì)被刪除。
5.CoberturaCobertura可用于分析Java代碼的測試覆蓋率。Cobertura根據(jù)沒有被測試覆蓋的代碼生成基于HTML的報(bào)告。
Cobertura提供可用于插裝、檢查和測試代碼的工具。通過監(jiān)控可測試的代碼,Cobertura允許你使用你選擇的測試框架,甚至不需要測試框架就可以運(yùn)行程序。
Cobertura根據(jù)行、分支和程序包三個(gè)方面給出代碼覆蓋報(bào)告。每個(gè)類別都有一個(gè)可自定義的閾值,如果覆蓋面低于閾值,就會(huì)觸發(fā)警告。Cobertura還集成了Maven和Gradle 的自動(dòng)檢測功能。
6.FindBugsFindBugs是一個(gè)匹配編譯代碼模式,而非使用bug數(shù)據(jù)庫的工具。當(dāng)提供源代碼時(shí),F(xiàn)indBugs還可高亮顯示檢測出bug的代碼行。
在它的3.0.1版本中,F(xiàn)indBugs繼續(xù)保持著數(shù)以百計(jì)的bug描述。根據(jù)bug的嚴(yán)重程度,F(xiàn)indBugs將bug分為四個(gè)水平:相關(guān) 的,令人困擾的,可怕的,以及最可怕的。除了圖形用戶界面,F(xiàn)indBugs還提供一個(gè)命令行界面,Ant任務(wù),以及Eclipse插件。
7.VisualVM包含在JDK中的VisualVM是監(jiān)控和審查Java應(yīng)用程序性能的工具。VisualVM檢測并重視活躍的JVM實(shí)例來檢索有關(guān)進(jìn)程的診斷信息。
VisualVM可以很容易地實(shí)時(shí)診斷性能問題。它提供了全套的分析工具,包括JConsole、jstack、jmap、jinfo和jstat等。此外,你還可以對(duì)JVM做一個(gè)快照,這樣以后在任何時(shí)都能審查。
8.GroovyGroovy是一種編程語言,通過添加新的關(guān)鍵字,自動(dòng)導(dǎo)入常用的類,以及可選類型變量聲明,既簡化又?jǐn)U展了Java。
Groovy的核心優(yōu)勢(shì)之一是它的腳本功能。類可以被編譯為Java字節(jié)碼或使用Groovy Shell動(dòng)態(tài)執(zhí)行。Groovy的Java基礎(chǔ)使得它相較于Jython和JRuby更容易為Java開發(fā)人員所接受。
其他選擇
Java這個(gè)大世界中正在不斷涌現(xiàn)新的工具、實(shí)用程序和庫。如果你的首選工具沒能進(jìn)入上述名單,歡迎分享。