java常用的開發(fā)工具泡仗。都說工欲善其事必先利其器番甩,要想學(xué)好java這門語言,選擇一款好用順手的開發(fā)工具是必不可少的盼玄。另外面試java工作時開發(fā)工具的使用也是一個重要的考核點染簇。
java源代碼本質(zhì)上其實就是普通的文本文件,所以理論上來說任何可以編輯文本文件的編輯器都可以作為我們的java代碼編輯工具强岸。比如:WINDOWS記事本锻弓、寫字板、word等蝌箍。但是這些簡單工具沒有語法的高亮提示青灼、自動完成等功能,這些功能的缺失會大大降低代碼的編寫效率妓盲。所以學(xué)習(xí)開發(fā)時一般我們不會選用這些簡單文本編輯工具杂拨。我們一般會選用一些功能比較強大的類似記事本的工具,比如: Notepad++悯衬、Sublime Text弹沽、editplus、ultraedit、vim等策橘,具體介紹如下:
Notepad++是 Windows操作系統(tǒng)下的一套文本編輯器(軟件版權(quán)許可證: GPL)炸渡,有完整的中文化接口及支持多國語言編寫的功能(UTF8技術(shù))。Notepad++功能比 Windows 中的 Notepad(記事本)強大丽已,除了可以用來制作一般的純文字說明文件蚌堵,也十分適合編寫計算機程序代碼。Notepad++ 不僅有語法高亮度顯示沛婴,也有語法折疊功能吼畏,并且支持宏以及擴充基本功能的外掛模組。Notepad++是免費軟件嘁灯,可以免費使用泻蚊,自帶中文,支持所有主流的計算機程序語言丑婿。
EditPlus是一款由韓國 Sangil Kim (ES-Computing)出品的小巧但是功能強大的可處理文本性雄、HTML和程序語言的Windows編輯器,你甚至可以通過設(shè)置用戶工具將其作為C,Java,Php等等語言的一個簡單的IDE枯冈。EditPlus功能強大毅贮,界面簡潔美觀,且啟動速度快尘奏;中文支持比較好滩褥;支持語法高亮;支持代碼折疊炫加;支持代碼自動完成(但其功能比較弱)瑰煎,不支持代碼提示功能;配置功能強大俗孝,且比較容易酒甸,擴展也比較強。
UltraEdit 是一套功能強大的文本編輯器赋铝,可以編輯文本插勤、十六進制、ASCII 碼革骨,完全可以取代記事本农尖,它是一款需要花費49.95美元的共享軟件,它提供了友好界面的編程編輯器良哲,支持語法高亮盛卡,代碼折疊和宏,以及一大堆其他的功能筑凫,內(nèi)置了對于HTML滑沧、PHP和JavaScript等語法的支持并村,可同時編輯多個文件,而且即使開啟很大的文件速度也不會慢滓技。因為收費它的流行程度不及以上兩款軟件哩牍。但是用它編輯十六進制時非常好用。另外在國內(nèi)是否收費對我們影響不大:)殖属。
Sublime Text是由程序員Jon Skinner于2008年1月份所開發(fā)出來姐叁,它最初被設(shè)計為一個具有豐富擴展功能的Vim瓦盛。它是一款收費軟件洗显,但是可以無限期試用,它是一個跨平臺的編輯器原环,同時支持Windows挠唆、Linux、Mac OS X等操作系統(tǒng)嘱吗,Sublime Text具有漂亮的用戶界面和強大的功能玄组,例如代碼縮略圖,Python的插件谒麦,代碼段等俄讹。還可自定義鍵綁定,菜單和工具欄绕德。Sublime Text 的主要功能包括:拼寫檢查患膛,書簽,完整的 Python API 耻蛇, Goto 功能踪蹬,即時項目切換,多選擇臣咖,多窗口等等跃捣。它目前非常流行的一款編輯器,特別是前端開發(fā)夺蛇,基本成了標配疚漆。
im是從 vi 發(fā)展出來的一個文本編輯器。代碼補全刁赦、編譯及錯誤跳轉(zhuǎn)等方便編程的功能特別豐富娶聘,在程序員中被廣泛使用,和Emacs并列成為類Unix系統(tǒng)用戶最喜歡的文本編輯器截型。目前Vim已經(jīng)有各主流系統(tǒng)的版本趴荸,但因為學(xué)習(xí)入門難度比較大,因此在windows平臺一直沒有流行起來宦焦。但是在類Unix系統(tǒng)非常流行发钝。盡管vim較vi已經(jīng)改良了不少顿涣,但是初次使用還是會一頭霧水,不知如何操作酝豪,所以學(xué)習(xí)vim要首先過2關(guān)涛碑。第一關(guān)是理解vim的設(shè)計思路,vim設(shè)計之初就是整個文本編輯都用鍵盤而非鼠標來完成孵淘,鍵盤上幾乎每個鍵都有固定的用法蒲障。第二關(guān)是命令關(guān),vim有過百條命令對應(yīng)編輯的需要瘫证,如果能熟練使用vim這些命令揉阎,編輯速度會比鼠標要快很多。
以上工具的主要功能是編寫java源代碼背捌,要想編譯毙籽、執(zhí)行編寫的java代碼,我們還需要一個編譯和執(zhí)行的工具毡庆。也就是java官方提供的JDK(Java Development Kit)坑赡,也叫java開發(fā)工具包。關(guān)于JDK的安裝與配置么抗。我們下一節(jié)專門講解毅否。在這我們簡單了解一下就行了。
JDK是 Java 語言的軟件開發(fā)工具包蝇刀,JDK是整個java開發(fā)的核心螟加,它包含了JAVA的運行環(huán)境,JAVA工具和JAVA基礎(chǔ)的類庫等熊泵。當我們編寫好java源碼后仰迁,使用JDK提供的java工具來編譯、執(zhí)行java程序顽分。所以要做java開發(fā)徐许,首先就是要在開發(fā)電腦上安裝JDK。下節(jié)課我們專門介紹JDK的安裝與配置卒蘸。
單元測試(模塊測試)是開發(fā)者編寫的一小段代碼雌隅,用于檢驗被測代碼的一個很小的、很明確的功能是否正確缸沃。通常而言恰起,一個單元測試是用于判斷某個特定條件(或者場景)下某個特定函數(shù)的行為是否合理正確。例如:是在現(xiàn)實世界中趾牧,某公司為神州十一號生產(chǎn)了一個零件检盼,必須要單獨測試這個零件是否有問題。如果單個零件都不測試翘单。等到都集成到產(chǎn)品中以后再測試吨枉。遇到問題往往會找不到原因出在那里蹦渣,會造成非常大的損失。所以要把所有問題在零件集成到產(chǎn)品以前就解決貌亭。這就是單元測試柬唯。
JUnit是一個Java語言的單元測試框架。它由Kent Beck和Erich Gamma建立圃庭,逐漸成為源于Kent Beck的sUnit的xUnit家族中最為成功的一個锄奢。 JUnit有它自己的JUnit擴展生態(tài)圈。多數(shù)Java的開發(fā)環(huán)境都已經(jīng)集成了JUnit作為單元測試的工具剧腻。JUnit是由 Erich Gamma 和 Kent Beck 編寫的一個回歸測試框架(regression testing framework)拘央。Junit測試是程序員測試,即所謂白盒測試恕酸,因為程序員知道被測試的軟件如何(How)完成功能和完成什么樣(What)的功能堪滨。Junit是一套框架胯陋,繼承TestCase類蕊温,就可以用Junit進行自動測試了。
TestNG即Testing, Next Generation遏乔,下一代測試技術(shù)义矛,它是一個測試 Java 應(yīng)用程序的新框架。是一套根據(jù)JUnit 和NUnit思想而構(gòu)建的利用注解來強化測試功能的一個測試框架盟萨,即可以用來做單元測試凉翻,也可以用來做集成測試。TestNG 不僅確實強大捻激、創(chuàng)新制轰、可擴展、靈活胞谭。TestNG是一個設(shè)計用來簡化廣泛的測試需求的測試框架垃杖。由于設(shè)計目標的不同,對比junit的只適合用于單元測試丈屹,TestNG無疑走的更遠调俘。
java項目一般都是團隊開發(fā),當多人共同編寫一個項目的時候旺垒。代碼的整合就需要用到專門的源碼管理工具了彩库。另外java項目版本的不斷更新,也需要版本的管理先蒋。所以源碼管理與版本控制工具也是每個java程序員必須要熟練掌握的骇钦。目前比較流行的java版本控制工具主要有svn、git這兩款軟件竞漾。這兩種工具也是每個java程序員必須要熟練掌握的眯搭。本節(jié)我們只是簡單介紹一下皇忿,后面的課程我們會拿出專門的一節(jié)來講解這些工具的具體使用。
SVN是Subversion的簡稱坦仍,是一個開放源代碼的版本控制系統(tǒng)鳍烁,相較于RCS、CVS繁扎,它采用了分支管理系統(tǒng)幔荒,它的設(shè)計目標就是取代CVS∈崦担互聯(lián)網(wǎng)上很多版本控制服務(wù)已從CVS遷移到Subversion爹梁。說得簡單一點SVN就是用于多個人共同開發(fā)同一個項目,共用資源的目的提澎。SVN的缺陷是過分依賴網(wǎng)絡(luò)姚垃,不適合分布式開發(fā)。使用svn的工作流程如下:1盼忌、早上從從服務(wù)器下載項目組最新代碼积糯。2、進入自己的分支谦纱,進行工作看成,每隔一個小時向服務(wù)器自己的分支提交一次代碼(很多人都有這個習(xí)慣。因為有時候自己對代碼改來改去跨嘉,最后又想還原到前一個小時的版本川慌,或者看看前一個小時自己修改了哪些代碼,就需要這樣做了)祠乃。3梦重、下班時間快到了,把自己的分支合并到服務(wù)器主分支上亮瓷,一天的工作完成琴拧,并反映給服務(wù)器。
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(圖形界面)讶踪,安裝后很快可以上手使用。
一個大型的java項目的開發(fā)往往需要加載很多的各式各樣的第三方j(luò)ar包依賴泊交,這時就需要專門工具來維護這些繁雜的jar包乳讥,否則各個jar包的版本問題,依賴問題會讓你頭很大廓俭,當多個團隊協(xié)作開發(fā)時云石,項目的標準框架配置也需要能夠快速在不同團隊之間復(fù)制,另外項目從創(chuàng)建研乒、開發(fā)汹忠、測試、發(fā)布的整個項目生命周期也需要專門的工具來維護雹熬。自動化構(gòu)建工具就是為了解決以上這些問題的宽菜。目前比較主流的自動化構(gòu)建工具主要有:Maven、gradle橄唬、Ant等赋焕。其中Ant已經(jīng)走下坡路,除了維護以前的老項目以外仰楚,已經(jīng)基本沒有公司用了。過去幾年中Maven已經(jīng)成為java項目的事實構(gòu)建工具犬庇,沒有之一僧界。而近兩年Gradle獲得越來越多的人使用,分走了不少Maven的用戶臭挽。在這我們主要了解一下Maven和gradle捂襟。
Maven是一個采用純Java編寫的開源項目管理工具。它包含了一組標準集合欢峰,一個項目生命周期(Project Lifecycle)葬荷,一個依賴管理系統(tǒng)(Dependency Management System),和用來運行定義在生命周期階段(phase)中插件(plugin)目標(goal)的邏輯纽帖。Maven采用了一種被稱之為project object model (POM)概念來管理項目宠漩,所有的項目配置信息都被定義在一個叫做POM.xml的文件中,通過該文件懊直,Maven可以管理項目的整個生命周期扒吁,包括編譯,構(gòu)建室囊,測試雕崩,發(fā)布魁索,報告等等。
Gradle是一個基于Apache Ant和Apache Maven概念的項目自動化建構(gòu)工具盼铁。它使用一種基于Groovy的特定領(lǐng)域語言(DSL)來聲明項目設(shè)置粗蔚,拋棄了基于XML的各種繁瑣配置。面向Java應(yīng)用為主饶火。當前其支持的語言限于Java支鸡、Groovy和Scala,計劃未來將支持更多的語言趁窃。和Maven一樣牧挣,Gradle只是提供了構(gòu)建項目的一個框架,真正起作用的是Plugin醒陆。Gradle在默認情況下為我們提供了許多常用的Plugin瀑构,其中包括有構(gòu)建Java項目的Plugin,還有War刨摩,Ear等寺晌。與Maven不同的是,Gradle不提供內(nèi)建的項目生命周期管理澡刹,只是java Plugin向Project中添加了許多Task呻征,這些Task依次執(zhí)行,為我們營造了一種如同Maven般項目構(gòu)建周期罢浇。
初學(xué)java為了能更好的掌握java代碼的編寫陆赋,我們一般會選用一款高級記事本類的工具作為開發(fā)工具, 而實際項目開發(fā)時嚷闭,更多的還是選用集成IDE做為開發(fā)工具攒岛,比如當下最流行的兩款工具:Eclipse、IDEA胞锰,所謂集成IDE就是把代碼的編寫灾锯、調(diào)試、編譯嗅榕、執(zhí)行都集成到一個工具中了顺饮,不用單獨在為每個環(huán)節(jié)使用工具。對于這兩款軟件近些年廣大網(wǎng)友一直有爭議凌那。有說IDEA最流行的兼雄,也有說eclipse最流行的。實際情況估計沒人能說的清案怯。大家在學(xué)習(xí)的時候君旦,這兩款軟件都嘗試使用使用吧。具體介紹如下:
Eclipse是一個開放源碼的項目,是著名的跨平臺的自由集成開發(fā)環(huán)境(IDE)金砍,最初主要用來Java語言開發(fā)局蚀,后來通過安裝不同的插件Eclipse可以支持不同的計算機語言,比如C++和Python等開發(fā)工具恕稠。Eclipse的本身只是一個框架平臺琅绅,但是眾多插件的支持使得Eclipse擁有其他功能相對固定的IDE軟件很難具有的靈活性。許多軟件開發(fā)商以Eclipse為框架開發(fā)自己的IDE鹅巍。目前最新版本已經(jīng)到了4.5版千扶,代號為Mars÷媾酰基于Eclipse平臺開發(fā)并集成了很多插件的myeclipse也有很多人在使用澎羞。但因myeclipse屬于收費軟件,所以大公司很少使用敛苇。
IDEA 全稱 IntelliJ IDEA妆绞,是java語言開發(fā)的集成環(huán)境,IntelliJ在業(yè)界被公認為最好的java開發(fā)工具之一枫攀,尤其在智能代碼助手括饶、代碼自動提示、重構(gòu)来涨、J2EE支持图焰、各類版本工具(git、svn蹦掐、github等)技羔、JUnit、CVS整合笤闯、代碼分析堕阔、 創(chuàng)新的GUI設(shè)計等方面的功能可以說是超常的。IDEA是JetBrains公司的產(chǎn)品颗味,這家公司總部位于捷克共和國的首都布拉格,開發(fā)人員以嚴謹著稱的東歐程序員為主牺弹。它的旗艦版本還支持HTML浦马,CSS,PHP张漂,MySQL晶默,Python等。免費版只支持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ū)ο筌浖臉藴驶UZ言尿这。UML因其簡單、統(tǒng)一的特點庆杜,而且能表達軟件設(shè)計中的動態(tài)和靜態(tài)信息射众,目前已成為可視化建模語言的工業(yè)標準。在軟件開發(fā)過程中晃财,統(tǒng)一建模語言可以在整個設(shè)計周期中使用叨橱,幫助設(shè)計者縮短設(shè)計時間,減少改進的成本拓劝,使軟硬件分割最優(yōu)雏逾。
需要注意的是:在現(xiàn)在流行的敏捷開發(fā)中。UML的地位遠不如以前重要了郑临。另外數(shù)據(jù)庫的分析與設(shè)計也需要專門的工具來描述和理清數(shù)據(jù)庫之間的關(guān)系栖博。下面我們就來簡單介紹兩款這樣的軟件。
StarUML是一款開放源碼的UML開發(fā)工具厢洞,是由韓國公司主導(dǎo)開發(fā)出來的產(chǎn)品仇让,是一種創(chuàng)建UML類圖,生成類圖和其他類型的統(tǒng)一建模語言(UML)圖表的工具躺翻。它可以繪制常用的9種UML圖丧叽,而且完全免費,軟件也比較小公你,是非常好用的一款軟件踊淳,不過作者已經(jīng)很多年不更新了。由此軟件延伸一款新的軟件:StarUML2陕靠。但這款新的軟件屬于收費軟件迂尝。
PowerDesigner最初由Xiao-Yun Wang(王曉昀)在SDP Technologies公司開發(fā)完成。PowerDesigner是Sybase的企業(yè)建模和設(shè)計解決方案剪芥,采用模型驅(qū)動方法垄开,將業(yè)務(wù)與IT結(jié)合起來,可幫助部署有效的企業(yè)體系架構(gòu)税肪,并為研發(fā)生命周期管理提供強大的分析與設(shè)計技術(shù)溉躲。PowerDesigner獨具匠心地將多種標準數(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運行在Microsoft Windows平臺上,并提供了Eclipse插件
在此我向大家推薦一個架構(gòu)學(xué)習(xí)交流群屁魏。交流學(xué)習(xí)群號:938837867 暗號:555 里面會分享一些資深架構(gòu)師錄制的視頻錄像:有Spring滔以,MyBatis,Netty源碼分析氓拼,高并發(fā)你画、高性能、分布式桃漾、微服務(wù)架構(gòu)的原理坏匪,JVM性能優(yōu)化、分布式架構(gòu)等這些成為架構(gòu)師必備