前言
工欲善其事必先利其器,要想學(xué)好java這門語言,選擇一款好用順手的開發(fā)工具是必不可少的。另外面試java工作時開發(fā)工具的使用也是一個重要的考核點(diǎn)。
要想全面了解java開發(fā)工具,我們首先需要先了解一下java程序的開發(fā)過程,通過這個過程我們能夠了解到j(luò)ava開發(fā)都需要用到那些工具。
首先我們先了解完整項目開發(fā)過程,如圖所示:?
從上圖中我們能看到一個完整的java項目的開發(fā)包括很多的環(huán)節(jié),每個環(huán)節(jié)都需要用到不同的開發(fā)工具。在實(shí)際java項目開發(fā)中,一般每個環(huán)節(jié)都有專門的人負(fù)責(zé)。比如:原型的設(shè)計有產(chǎn)品經(jīng)理負(fù)責(zé)。界面的美化有專門的美工負(fù)責(zé)。前端有專門的前端開發(fā)人員負(fù)責(zé)。我們的課程中主要涉及的是研發(fā)這個環(huán)節(jié)。而研發(fā)主要工作就是根據(jù)項目的需求文檔設(shè)計系統(tǒng)架構(gòu)、設(shè)計數(shù)據(jù)庫、編寫調(diào)試程序代碼。對于普通的碼農(nóng)來說,主要的就是編寫和調(diào)試程序。
?
從上圖中我們可以看到:
1、要想編寫程序,需要一個能編寫源代碼的編輯工具。例如:Notepad++;
2、要想測試程序,需要一個編譯、執(zhí)行工具。例如:JDK;
3、要想單獨(dú)測試一個單元,需要一個單元測試工具。例如:JUnit、TestNG;
4、要想編寫開發(fā)文檔,需要開發(fā)文檔編輯工具。例如:word、Excel、PPT;
5、要想分析設(shè)計程序,需要程序的分析設(shè)計工具。例如:StarUML;
6、要想方便管理源碼和版本升級,需要源碼管理和版本維護(hù)工具。例如:SVN,Git;
7、要想多個團(tuán)隊協(xié)作開發(fā)或者項目用到很多的第三方類庫和Jar包。需要自動化構(gòu)建工具。例如:Maven、gradle; 8、要想在一個工具中使用以上所有功能,需要用到集成開發(fā)工具IDE。例如:Eclipse;
大家看到這么多工具是不是很頭疼。 所以說java開發(fā)入門門檻有點(diǎn)高。沒關(guān)系。后面的課程我會一個一個逐步給大家詳細(xì)介紹。 下面我們先簡單了解一下這些java開發(fā)常用工具。
一、java初學(xué)者常用源碼編輯工具介紹
java源代碼本質(zhì)上其實(shí)就是普通的文本文件,所以理論上來說任何可以編輯文本文件的編輯器都可以作為我們的java代碼編輯工具。比如:WINDOWS記事本、寫字板、word等。但是這些簡單工具沒有語法的高亮提示、自動完成等功能,這些功能的缺失會大大降低代碼的編寫效率。所以學(xué)習(xí)開發(fā)時一般我們不會選用這些簡單文本編輯工具。我們一般會選用一些功能比較強(qiáng)大的類似記事本的工具,比如: Notepad++、Sublime Text、editplus、ultraedit、vim等,具體介紹如下:
Notepad++
?
Notepad++是 Windows操作系統(tǒng)下的一套文本編輯器(軟件版權(quán)許可證: GPL),有完整的中文化接口及支持多國語言編寫的功能(UTF8技術(shù))。Notepad++功能比 Windows 中的 Notepad(記事本)強(qiáng)大,除了可以用來制作一般的純文字說明文件,也十分適合編寫計算機(jī)程序代碼。Notepad++ 不僅有語法高亮度顯示,也有語法折疊功能,并且支持宏以及擴(kuò)充基本功能的外掛模組。Notepad++是免費(fèi)軟件,可以免費(fèi)使用,自帶中文,支持所有主流的計算機(jī)程序語言。
editplus
?
EditPlus是一款由韓國 Sangil Kim (ES-Computing)出品的小巧但是功能強(qiáng)大的可處理文本、HTML和程序語言的Windows編輯器,你甚至可以通過設(shè)置用戶工具將其作為C,Java,Php等等語言的一個簡單的IDE。EditPlus功能強(qiáng)大,界面簡潔美觀,且啟動速度快;中文支持比較好;支持語法高亮;支持代碼折疊;支持代碼自動完成(但其功能比較弱),不支持代碼提示功能;配置功能強(qiáng)大,且比較容易,擴(kuò)展也比較強(qiáng)。
ultraedit
?
UltraEdit 是一套功能強(qiáng)大的文本編輯器,可以編輯文本、十六進(jìn)制、ASCII 碼,完全可以取代記事本,它是一款需要花費(fèi)49.95美元的共享軟件,它提供了友好界面的編程編輯器,支持語法高亮,代碼折疊和宏,以及一大堆其他的功能,內(nèi)置了對于HTML、PHP和JavaScript等語法的支持,可同時編輯多個文件,而且即使開啟很大的文件速度也不會慢。因?yàn)槭召M(fèi)它的流行程度不及以上兩款軟件。但是用它編輯十六進(jìn)制時非常好用。另外在國內(nèi)是否收費(fèi)對我們影響不大。
Sublime Text
?
Sublime Text是由程序員Jon Skinner于2008年1月份所開發(fā)出來,它最初被設(shè)計為一個具有豐富擴(kuò)展功能的Vim。它是一款收費(fèi)軟件,但是可以無限期試用,它是一個跨平臺的編輯器,同時支持Windows、Linux、Mac OS X等操作系統(tǒng),Sublime Text具有漂亮的用戶界面和強(qiáng)大的功能,例如代碼縮略圖,Python的插件,代碼段等。還可自定義鍵綁定,菜單和工具欄。Sublime Text 的主要功能包括:拼寫檢查,書簽,完整的 Python API , Goto 功能,即時項目切換,多選擇,多窗口等等。它目前非常流行的一款編輯器,特別是前端開發(fā),基本成了標(biāo)配。
vim
?
im是從 vi 發(fā)展出來的一個文本編輯器。代碼補(bǔ)全、編譯及錯誤跳轉(zhuǎn)等方便編程的功能特別豐富,在程序員中被廣泛使用,和Emacs并列成為類Unix系統(tǒng)用戶最喜歡的文本編輯器。目前Vim已經(jīng)有各主流系統(tǒng)的版本,但因?yàn)閷W(xué)習(xí)入門難度比較大,因此在windows平臺一直沒有流行起來。但是在類Unix系統(tǒng)非常流行。盡管vim較vi已經(jīng)改良了不少,但是初次使用還是會一頭霧水,不知如何操作,所以學(xué)習(xí)vim要首先過2關(guān)。第一關(guān)是理解vim的設(shè)計思路,vim設(shè)計之初就是整個文本編輯都用鍵盤而非鼠標(biāo)來完成,鍵盤上幾乎每個鍵都有固定的用法。第二關(guān)是命令關(guān),vim有過百條命令對應(yīng)編輯的需要,如果能熟練使用vim這些命令,編輯速度會比鼠標(biāo)要快很多。
二、java編譯執(zhí)行工具介紹
以上工具的主要功能是編寫java源代碼,要想編譯、執(zhí)行編寫的java代碼,我們還需要一個編譯和執(zhí)行的工具。也就是java官方提供的JDK(Java Development Kit),也叫java開發(fā)工具包。關(guān)于JDK的安裝與配置。我們下一節(jié)專門講解。在這我們簡單了解一下就行了。
JDK
?
JDK是 Java 語言的軟件開發(fā)工具包,JDK是整個java開發(fā)的核心,它包含了JAVA的運(yùn)行環(huán)境,JAVA工具和JAVA基礎(chǔ)的類庫等。當(dāng)我們編寫好java源碼后,使用JDK提供的java工具來編譯、執(zhí)行java程序。所以要做java開發(fā),首先就是要在開發(fā)電腦上安裝JDK。下節(jié)課我們專門介紹JDK的安裝與配置。
三、java單元測試工具介紹
單元測試(模塊測試)是開發(fā)者編寫的一小段代碼,用于檢驗(yàn)被測代碼的一個很小的、很明確的功能是否正確。通常而言,一個單元測試是用于判斷某個特定條件(或者場景)下某個特定函數(shù)的行為是否合理正確。例如:是在現(xiàn)實(shí)世界中,某公司為神州十一號生產(chǎn)了一個零件,必須要單獨(dú)測試這個零件是否有問題。如果單個零件都不測試。等到都集成到產(chǎn)品中以后再測試。遇到問題往往會找不到原因出在那里,會造成非常大的損失。所以要把所有問題在零件集成到產(chǎn)品以前就解決。這就是單元測試。
?
JUnit
JUnit是一個Java語言的單元測試框架。它由Kent Beck和Erich Gamma建立,逐漸成為源于Kent Beck的sUnit的xUnit家族中最為成功的一個。 JUnit有它自己的JUnit擴(kuò)展生態(tài)圈。多數(shù)Java的開發(fā)環(huán)境都已經(jīng)集成了JUnit作為單元測試的工具。JUnit是由 Erich Gamma 和 Kent Beck 編寫的一個回歸測試框架(regression testing framework)。Junit測試是程序員測試,即所謂白盒測試,因?yàn)槌绦騿T知道被測試的軟件如何(How)完成功能和完成什么樣(What)的功能。Junit是一套框架,繼承TestCase類,就可以用Junit進(jìn)行自動測試了。
TestNG
?
TestNG即Testing, Next Generation,下一代測試技術(shù),它是一個測試 Java 應(yīng)用程序的新框架。是一套根據(jù)JUnit 和NUnit思想而構(gòu)建的利用注解來強(qiáng)化測試功能的一個測試框架,即可以用來做單元測試,也可以用來做集成測試。TestNG 不僅確實(shí)強(qiáng)大、創(chuàng)新、可擴(kuò)展、靈活。TestNG是一個設(shè)計用來簡化廣泛的測試需求的測試框架。由于設(shè)計目標(biāo)的不同,對比junit的只適合用于單元測試,TestNG無疑走的更遠(yuǎn)。
四、java源碼管理與版本控制工具
java項目一般都是團(tuán)隊開發(fā),當(dāng)多人共同編寫一個項目的時候。代碼的整合就需要用到專門的源碼管理工具了。另外java項目版本的不斷更新,也需要版本的管理。所以源碼管理與版本控制工具也是每個java程序員必須要熟練掌握的。目前比較流行的java版本控制工具主要有svn、git這兩款軟件。這兩種工具也是每個java程序員必須要熟練掌握的。本節(jié)我們只是簡單介紹一下,后面的課程我們會拿出專門的一節(jié)來講解這些工具的具體使用。
SVN
?
SVN是Subversion的簡稱,是一個開放源代碼的版本控制系統(tǒng),相較于RCS、CVS,它采用了分支管理系統(tǒng),它的設(shè)計目標(biāo)就是取代CVS。互聯(lián)網(wǎng)上很多版本控制服務(wù)已從CVS遷移到Subversion。說得簡單一點(diǎn)SVN就是用于多個人共同開發(fā)同一個項目,共用資源的目的。SVN的缺陷是過分依賴網(wǎng)絡(luò),不適合分布式開發(fā)。使用svn的工作流程如下:1、早上從從服務(wù)器下載項目組最新代碼。2、進(jìn)入自己的分支,進(jìn)行工作,每隔一個小時向服務(wù)器自己的分支提交一次代碼(很多人都有這個習(xí)慣。因?yàn)橛袝r候自己對代碼改來改去,最后又想還原到前一個小時的版本,或者看看前一個小時自己修改了哪些代碼,就需要這樣做了)。3、下班時間快到了,把自己的分支合并到服務(wù)器主分支上,一天的工作完成,并反映給服務(wù)器。
Git
?
Git是一個開源的分布式版本控制系統(tǒng),可以有效、高速的處理從很小到非常大的項目版本管理。Git 是 Linus Torvalds 為了幫助管理 Linux 內(nèi)核開發(fā)而開發(fā)的一個開放源碼的版本控制軟件。與常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本庫的方式,不必服務(wù)器端軟件支持(ps:這得分是用什么樣的服務(wù)端,使用http協(xié)議或者git協(xié)議等不太一樣。并且在push和pull的時候和服務(wù)器端還是有交互的。),使源代碼的發(fā)布和交流極其方便,目前GIT已經(jīng)可以在windows下使用,主要方法有二:msysgit和Cygwin。Cygwin和Linux使用方法類似,Windows版本的GIT提供了友好的GUI(圖形界面),安裝后很快可以上手使用。
五、自動化構(gòu)建工具
一個大型的java項目的開發(fā)往往需要加載很多的各式各樣的第三方j(luò)ar包依賴,這時就需要專門工具來維護(hù)這些繁雜的jar包,否則各個jar包的版本問題,依賴問題會讓你頭很大,當(dāng)多個團(tuán)隊協(xié)作開發(fā)時,項目的標(biāo)準(zhǔn)框架配置也需要能夠快速在不同團(tuán)隊之間復(fù)制,另外項目從創(chuàng)建、開發(fā)、測試、發(fā)布的整個項目生命周期也需要專門的工具來維護(hù)。自動化構(gòu)建工具就是為了解決以上這些問題的。目前比較主流的自動化構(gòu)建工具主要有:Maven、gradle、Ant等。其中Ant已經(jīng)走下坡路,除了維護(hù)以前的老項目以外,已經(jīng)基本沒有公司用了。過去幾年中Maven已經(jīng)成為java項目的事實(shí)構(gòu)建工具,沒有之一。而近兩年Gradle獲得越來越多的人使用,分走了不少M(fèi)aven的用戶。在這我們主要了解一下Maven和gradle。
Maven
?
Maven是一個采用純Java編寫的開源項目管理工具。它包含了一組標(biāo)準(zhǔn)集合,一個項目生命周期(Project Lifecycle),一個依賴管理系統(tǒng)(Dependency Management System),和用來運(yùn)行定義在生命周期階段(phase)中插件(plugin)目標(biāo)(goal)的邏輯。Maven采用了一種被稱之為project object model (POM)概念來管理項目,所有的項目配置信息都被定義在一個叫做POM.xml的文件中,通過該文件,Maven可以管理項目的整個生命周期,包括編譯,構(gòu)建,測試,發(fā)布,報告等等。
gradle
?
Gradle是一個基于Apache Ant和Apache Maven概念的項目自動化建構(gòu)工具。它使用一種基于Groovy的特定領(lǐng)域語言(DSL)來聲明項目設(shè)置,拋棄了基于XML的各種繁瑣配置。面向Java應(yīng)用為主。當(dāng)前其支持的語言限于Java、Groovy和Scala,計劃未來將支持更多的語言。和Maven一樣,Gradle只是提供了構(gòu)建項目的一個框架,真正起作用的是Plugin。Gradle在默認(rèn)情況下為我們提供了許多常用的Plugin,其中包括有構(gòu)建Java項目的Plugin,還有War,Ear等。與Maven不同的是,Gradle不提供內(nèi)建的項目生命周期管理,只是java Plugin向Project中添加了許多Task,這些Task依次執(zhí)行,為我們營造了一種如同Maven般項目構(gòu)建周期。
六、java集成開發(fā)工具介紹
初學(xué)java為了能更好的掌握java代碼的編寫,我們一般會選用一款高級記事本類的工具作為開發(fā)工具, 而實(shí)際項目開發(fā)時,更多的還是選用集成IDE做為開發(fā)工具,比如當(dāng)下最流行的兩款工具:Eclipse、IDEA,所謂集成IDE就是把代碼的編寫、調(diào)試、編譯、執(zhí)行都集成到一個工具中了,不用單獨(dú)在為每個環(huán)節(jié)使用工具。對于這兩款軟件近些年廣大網(wǎng)友一直有爭議。有說IDEA最流行的,也有說eclipse最流行的。實(shí)際情況估計沒人能說的清。大家在學(xué)習(xí)的時候,這兩款軟件都嘗試使用使用吧。具體介紹如下:
Eclipse
?
Eclipse是一個開放源碼的項目,是著名的跨平臺的自由集成開發(fā)環(huán)境(IDE),最初主要用來Java語言開發(fā),后來通過安裝不同的插件Eclipse可以支持不同的計算機(jī)語言,比如C++和Python等開發(fā)工具。Eclipse的本身只是一個框架平臺,但是眾多插件的支持使得Eclipse擁有其他功能相對固定的IDE軟件很難具有的靈活性。許多軟件開發(fā)商以Eclipse為框架開發(fā)自己的IDE。目前最新版本已經(jīng)到了4.5版,代號為Mars。基于Eclipse平臺開發(fā)并集成了很多插件的myeclipse也有很多人在使用。但因myeclipse屬于收費(fèi)軟件,所以大公司很少使用。
IDEA
?
IDEA 全稱 IntelliJ IDEA,是java語言開發(fā)的集成環(huán)境,IntelliJ在業(yè)界被公認(rèn)為最好的java開發(fā)工具之一,尤其在智能代碼助手、代碼自動提示、重構(gòu)、J2EE支持、各類版本工具(git、svn、github等)、JUnit、CVS整合、代碼分析、 創(chuàng)新的GUI設(shè)計等方面的功能可以說是超常的。IDEA是JetBrains公司的產(chǎn)品,這家公司總部位于捷克共和國的首都布拉格,開發(fā)人員以嚴(yán)謹(jǐn)著稱的東歐程序員為主。它的旗艦版本還支持HTML,CSS,PHP,MySQL,Python等。免費(fèi)版只支持Java等少數(shù)語言。
七、java項目分析與設(shè)計工具介紹
由于面向?qū)ο蠹夹g(shù)的發(fā)展,傳統(tǒng)的java項目的開發(fā)過程需要做很多的面向?qū)ο蟮姆治龊驮O(shè)計。整個分析和設(shè)計過程中,需要專業(yè)的工具來描述和記錄分析設(shè)計的結(jié)果。也需要專門的工具來協(xié)助理清分析的思路,UML就是這樣的工具。
UML的全稱是,統(tǒng)一建模語言(UML,UnifiedModelingLanguage),它是面向?qū)ο筌浖臉?biāo)準(zhǔn)化建模語言。UML因其簡單、統(tǒng)一的特點(diǎn),而且能表達(dá)軟件設(shè)計中的動態(tài)和靜態(tài)信息,目前已成為可視化建模語言的工業(yè)標(biāo)準(zhǔn)。在軟件開發(fā)過程中,統(tǒng)一建模語言可以在整個設(shè)計周期中使用,幫助設(shè)計者縮短設(shè)計時間,減少改進(jìn)的成本,使軟硬件分割最優(yōu)。
需要注意的是:在現(xiàn)在流行的敏捷開發(fā)中。UML的地位遠(yuǎn)不如以前重要了。另外數(shù)據(jù)庫的分析與設(shè)計也需要專門的工具來描述和理清數(shù)據(jù)庫之間的關(guān)系。下面我們就來簡單介紹兩款這樣的軟件。
Staruml
?
StarUML是一款開放源碼的UML開發(fā)工具,是由韓國公司主導(dǎo)開發(fā)出來的產(chǎn)品,是一種創(chuàng)建UML類圖,生成類圖和其他類型的統(tǒng)一建模語言(UML)圖表的工具。它可以繪制常用的9種UML圖,而且完全免費(fèi),軟件也比較小,是非常好用的一款軟件,不過作者已經(jīng)很多年不更新了。由此軟件延伸一款新的軟件:StarUML2。但這款新的軟件屬于收費(fèi)軟件。
PowerDesigner
?
PowerDesigner最初由Xiao-Yun Wang(王曉昀)在SDP Technologies公司開發(fā)完成。PowerDesigner是Sybase的企業(yè)建模和設(shè)計解決方案,采用模型驅(qū)動方法,將業(yè)務(wù)與IT結(jié)合起來,可幫助部署有效的企業(yè)體系架構(gòu),并為研發(fā)生命周期管理提供強(qiáng)大的分析與設(shè)計技術(shù)。PowerDesigner獨(dú)具匠心地將多種標(biāo)準(zhǔn)數(shù)據(jù)建模技術(shù)(UML、業(yè)務(wù)流程建模以及市場領(lǐng)先的數(shù)據(jù)建模)集成一體,并與 .NET、WorkSpace、PowerBuilder、Java?、Eclipse 等主流開發(fā)平臺集成起來,從而為傳統(tǒng)的軟件開發(fā)周期管理提供業(yè)務(wù)分析和規(guī)范的數(shù)據(jù)庫設(shè)計解決方案。此外,它支持60多種關(guān)系數(shù)據(jù)庫管理系統(tǒng)(RDBMS)版本。PowerDesigner運(yùn)行在Microsoft Windows平臺上,并提供了Eclipse插件
這些工具都是以后開發(fā)經(jīng)常用到的,在本節(jié)課中我們只是做了簡單的介紹 。
評論
查看更多