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