聲明:轉載請註明做者出處,歡迎你們留言探討技術問題。其餘問題概不回覆。前端
(書接上回)上節課咱們簡單介紹了java語言的發展歷史、版本歷史以及java語言的特色、應用領域等。這節課咱們來介紹java經常使用的開發工具。都說工欲善其事必先利其器,要想學好java這門語言,選擇一款好用順手的開發工具是必不可少的。另外面試java工做時開發工具的使用也是一個重要的考覈點。因此這節課你們要好好學習。我會盡可能介紹全面一些。讓你們對經常使用的工具都能有些簡單的瞭解。java
首先咱們先了解完整項目開發過程,如圖所示:git
從上圖中咱們能看到一個完整的java項目的開發包括不少的環節,每一個環節都須要用到不一樣的開發工具。在實際java項目開發中,通常每一個環節都有專門的人負責。好比:原型的設計有產品經理負責。界面的美化有專門的美工負責。前端有專門的前端開發人員負責。咱們的課程中主要涉及的是研發這個環節。而研發主要工做就是根據項目的需求文檔設計系統架構、設計數據庫、編寫調試程序代碼。對於普通的碼農來講,主要的就是編寫和調試程序。程序員
從上圖中咱們能夠看到:github
一、要想編寫程序,須要一個能編寫源代碼的編輯工具。例如:Notepad++; 二、要想測試程序,須要一個編譯、執行工具。例如:JDK; 三、要想單獨測試一個單元,須要一個單元測試工具。例如:JUnit、TestNG; 四、要想編寫開發文檔,須要開發文檔編輯工具。例如:word、Excel、PPT; 五、要想分析設計程序,須要程序的分析設計工具。例如:StarUML; 六、要想方便管理源碼和版本升級,須要源碼管理和版本維護工具。例如:SVN,Git; 七、要想多個團隊協做開發或者項目用到不少的第三方類庫和Jar包。須要自動化構建工具。例如:Maven、gradle; 八、要想在一個工具中使用以上全部功能,須要用到集成開發工具IDE。例如:Eclipse;面試
你們看到這麼多工具是否是很頭疼。哈哈:) 因此說java開發入門門檻有點高。不要緊。後面的課程我會一個一個逐步給你們詳細介紹。 下面咱們先簡單瞭解一下這些java開發經常使用工具。數據庫
java源代碼本質上其實就是普通的文本文件,因此理論上來講任何能夠編輯文本文件的編輯器均可以做爲咱們的java代碼編輯工具。好比:WINDOWS記事本、寫字板、word等。可是這些簡單工具沒有語法的高亮提示、自動完成等功能,這些功能的缺失會大大下降代碼的編寫效率。因此學習開發時通常咱們不會選用這些簡單文本編輯工具。咱們通常會選用一些功能比較強大的相似記事本的工具,好比: Notepad++、Sublime Text、editplus、ultraedit、vim等,具體介紹以下:編程
Notepad++是 Windows操做系統下的一套文本編輯器(軟件版權許可證: GPL),有完整的中文化接口及支持多國語言編寫的功能(UTF8技術)。Notepad++功能比 Windows 中的 Notepad(記事本)強大,除了能夠用來製做通常的純文字說明文件,也十分適合編寫計算機程序代碼。Notepad++ 不只有語法高亮度顯示,也有語法摺疊功能,而且支持宏以及擴充基本功能的外掛模組。Notepad++是免費軟件,能夠無償使用,自帶中文,支持全部主流的計算機程序語言。vim
EditPlus是一款由韓國 Sangil Kim (ES-Computing)出品的小巧可是功能強大的可處理文本、HTML和程序語言的Windows編輯器,你甚至能夠經過設置用戶工具將其做爲C,Java,Php等等語言的一個簡單的IDE。EditPlus功能強大,界面簡潔美觀,且啓動速度快;中文支持比較好;支持語法高亮;支持代碼摺疊;支持代碼自動完成(但其功能比較弱),不支持代碼提示功能;配置功能強大,且比較容易,擴展也比較強。windows
UltraEdit 是一套功能強大的文本編輯器,能夠編輯文本、十六進制、ASCII 碼,徹底能夠取代記事本,它是一款須要花費49.95美圓的共享軟件,它提供了友好界面的編程編輯器,支持語法高亮,代碼摺疊和宏,以及一大堆其餘的功能,內置了對於HTML、PHP和JavaScript等語法的支持,可同時編輯多個文件,並且即便開啓很大的文件速度也不會慢。由於收費它的流行程度不及以上兩款軟件。可是用它編輯十六進制時很是好用。另外在國內是否收費對咱們影響不大:)。
Sublime Text是由程序員Jon Skinner於2008年1月份所開發出來,它最初被設計爲一個具備豐富擴展功能的Vim。它是一款收費軟件,可是能夠無限期試用,它是一個跨平臺的編輯器,同時支持Windows、Linux、Mac OS X等操做系統,Sublime Text具備漂亮的用戶界面和強大的功能,例如代碼縮略圖,Python的插件,代碼段等。還可自定義鍵綁定,菜單和工具欄。Sublime Text 的主要功能包括:拼寫檢查,書籤,完整的 Python API , Goto 功能,即時項目切換,多選擇,多窗口等等。它目前很是流行的一款編輯器,特別是前端開發,基本成了標配。
im是從 vi 發展出來的一個文本編輯器。代碼補全、編譯及錯誤跳轉等方便編程的功能特別豐富,在程序員中被普遍使用,和Emacs並列成爲類Unix系統用戶最喜歡的文本編輯器。目前Vim已經有各主流系統的版本,但由於學習入門難度比較大,所以在windows平臺一直沒有流行起來。可是在類Unix系統很是流行。儘管vim較vi已經改良了很多,可是初次使用仍是會一頭霧水,不知如何操做,因此學習vim要首先過2關。第一關是理解vim的設計思路,vim設計之初就是整個文本編輯都用鍵盤而非鼠標來完成,鍵盤上幾乎每一個鍵都有固定的用法。第二關是命令關,vim有過百條命令對應編輯的須要,若是能熟練使用vim這些命令,編輯速度會比鼠標要快不少。
以上工具的主要功能是編寫java源代碼,要想編譯、執行編寫的java代碼,咱們還須要一個編譯和執行的工具。也就是java官方提供的JDK(Java Development Kit),也叫java開發工具包。關於JDK的安裝與配置。咱們下一節專門講解。在這咱們簡單瞭解一下就好了。
JDK是 Java 語言的軟件開發工具包,JDK是整個java開發的核心,它包含了JAVA的運行環境,JAVA工具和JAVA基礎的類庫等。當咱們編寫好java源碼後,使用JDK提供的java工具來編譯、執行java程序。因此要作java開發,首先就是要在開發電腦上安裝JDK。下節課咱們專門介紹JDK的安裝與配置。
單元測試(模塊測試)是開發者編寫的一小段代碼,用於檢驗被測代碼的一個很小的、很明確的功能是否正確。一般而言,一個單元測試是用於判斷某個特定條件(或者場景)下某個特定函數的行爲是否合理正確。例如:是在現實世界中,某公司爲神州十一號生產了一個零件,必需要單獨測試這個零件是否有問題。若是單個零件都不測試。等到都集成到產品中之後再測試。遇到問題每每會找不到緣由出在那裏,會形成很是大的損失。因此要把全部問題在零件集成到產品之前就解決。這就是單元測試。
JUnit是一個Java語言的單元測試框架。它由Kent Beck和Erich Gamma創建,逐漸成爲源於Kent Beck的sUnit的xUnit家族中最爲成功的一個。 JUnit有它本身的JUnit擴展生態圈。多數Java的開發環境都已經集成了JUnit做爲單元測試的工具。JUnit是由 Erich Gamma 和 Kent Beck 編寫的一個迴歸測試框架(regression testing framework)。Junit測試是程序員測試,即所謂白盒測試,由於程序員知道被測試的軟件如何(How)完成功能和完成什麼樣(What)的功能。Junit是一套框架,繼承TestCase類,就能夠用Junit進行自動測試了。
TestNG即Testing, Next Generation,下一代測試技術,它是一個測試 Java 應用程序的新框架。是一套根據JUnit 和NUnit思想而構建的利用註解來強化測試功能的一個測試框架,便可以用來作單元測試,也能夠用來作集成測試。TestNG 不只確實強大、創新、可擴展、靈活。TestNG是一個設計用來簡化普遍的測試需求的測試框架。因爲設計目標的不一樣,對比junit的只適合用於單元測試,TestNG無疑走的更遠。
java項目通常都是團隊開發,當多人共同編寫一個項目的時候。代碼的整合就須要用到專門的源碼管理工具了。另外java項目版本的不斷更新,也須要版本的管理。因此源碼管理與版本控制工具也是每一個java程序員必需要熟練掌握的。目前比較流行的java版本控制工具主要有svn、git這兩款軟件。這兩種工具也是每一個java程序員必需要熟練掌握的。本節咱們只是簡單介紹一下,後面的課程咱們會拿出專門的一節來說解這些工具的具體使用。
SVN是Subversion的簡稱,是一個開放源代碼的版本控制系統,相較於RCS、CVS,它採用了分支管理系統,它的設計目標就是取代CVS。互聯網上不少版本控制服務已從CVS遷移到Subversion。說得簡單一點SVN就是用於多我的共同開發同一個項目,共用資源的目的。SVN的缺陷是過度依賴網絡,不適合分佈式開發。使用svn的工做流程以下:一、早上從從服務器下載項目組最新代碼。二、進入本身的分支,進行工做,每隔一個小時向服務器本身的分支提交一次代碼(不少人都有這個習慣。由於有時候本身對代碼改來改去,最後又想還原到前一個小時的版本,或者看看前一個小時本身修改了哪些代碼,就須要這樣作了)。三、下班時間快到了,把本身的分支合併到服務器主分支上,一天的工做完成,並反映給服務器。
Git是一個開源的分佈式版本控制系統,能夠有效、高速的處理從很小到很是大的項目版本管理。Git 是 Linus Torvalds 爲了幫助管理 Linux 內核開發而開發的一個開放源碼的版本控制軟件。與經常使用的版本控制工具 CVS, Subversion 等不一樣,它採用了分佈式版本庫的方式,沒必要服務器端軟件支持(ps:這得分是用什麼樣的服務端,使用http協議或者git協議等不太同樣。而且在push和pull的時候和服務器端仍是有交互的。),使源代碼的發佈和交流極其方便,目前GIT已經能夠在windows下使用,主要方法有二:msysgit和Cygwin。Cygwin和Linux使用方法相似,Windows版本的GIT提供了友好的GUI(圖形界面),安裝後很快能夠上手使用。
一個大型的java項目的開發每每須要加載不少的各式各樣的第三方jar包依賴,這時就須要專門工具來維護這些繁雜的jar包,不然各個jar包的版本問題,依賴問題會讓你頭很大,當多個團隊協做開發時,項目的標準框架配置也須要可以快速在不一樣團隊之間複製,另外項目從建立、開發、測試、發佈的整個項目生命週期也須要專門的工具來維護。自動化構建工具就是爲了解決以上這些問題的。目前比較主流的自動化構建工具主要有:Maven、gradle、Ant等。其中Ant已經走下坡路,除了維護之前的老項目之外,已經基本沒有公司用了。過去幾年中Maven已經成爲java項目的事實構建工具,沒有之一。而近兩年Gradle得到愈來愈多的人使用,分走了很多Maven的用戶。在這咱們主要了解一下Maven和gradle。
Maven是一個採用純Java編寫的開源項目管理工具。它包含了一組標準集合,一個項目生命週期(Project Lifecycle),一個依賴管理系統(Dependency Management System),和用來運行定義在生命週期階段(phase)中插件(plugin)目標(goal)的邏輯。Maven採用了一種被稱之爲project object model (POM)概念來管理項目,全部的項目配置信息都被定義在一個叫作POM.xml的文件中,經過該文件,Maven能夠管理項目的整個生命週期,包括編譯,構建,測試,發佈,報告等等。
Gradle是一個基於Apache Ant和Apache Maven概念的項目自動化建構工具。它使用一種基於Groovy的特定領域語言(DSL)來聲明項目設置,拋棄了基於XML的各類繁瑣配置。面向Java應用爲主。當前其支持的語言限於Java、Groovy和Scala,計劃將來將支持更多的語言。和Maven同樣,Gradle只是提供了構建項目的一個框架,真正起做用的是Plugin。Gradle在默認狀況下爲咱們提供了許多經常使用的Plugin,其中包括有構建Java項目的Plugin,還有War,Ear等。與Maven不一樣的是,Gradle不提供內建的項目生命週期管理,只是java Plugin向Project中添加了許多Task,這些Task依次執行,爲咱們營造了一種如同Maven般項目構建週期。
初學java爲了能更好的掌握java代碼的編寫,咱們通常會選用一款高級記事本類的工具做爲開發工具, 而實際項目開發時,更多的仍是選用集成IDE作爲開發工具,好比當下最流行的兩款工具:Eclipse、IDEA,所謂集成IDE就是把代碼的編寫、調試、編譯、執行都集成到一個工具中了,不用單獨在爲每一個環節使用工具。對於這兩款軟件近些年廣大網友一直有爭議。有說IDEA最流行的,也有說eclipse最流行的。實際狀況估計沒人能說的清。你們在學習的時候,這兩款軟件都嘗試使用使用吧。具體介紹以下:
Eclipse是一個開放源碼的項目,是著名的跨平臺的自由集成開發環境(IDE),最初主要用來Java語言開發,後來經過安裝不一樣的插件Eclipse能夠支持不一樣的計算機語言,好比C++和Python等開發工具。Eclipse的自己只是一個框架平臺,可是衆多插件的支持使得Eclipse擁有其餘功能相對固定的IDE軟件很難具備的靈活性。許多軟件開發商以Eclipse爲框架開發本身的IDE。目前最新版本已經到了4.5版,代號爲Mars。基於Eclipse平臺開發並集成了不少插件的myeclipse也有不少人在使用。但因myeclipse屬於收費軟件,因此大公司不多使用。
IDEA 全稱 IntelliJ IDEA,是java語言開發的集成環境,IntelliJ在業界被公認爲最好的java開發工具之一,尤爲在智能代碼助手、代碼自動提示、重構、J2EE支持、各種版本工具(git、svn、github等)、JUnit、CVS整合、代碼分析、 創新的GUI設計等方面的功能能夠說是超常的。IDEA是JetBrains公司的產品,這家公司總部位於捷克共和國的首都布拉格,開發人員以嚴謹著稱的東歐程序員爲主。它的旗艦版本還支持HTML,CSS,PHP,MySQL,Python等。免費版只支持Java等少數語言。
因爲面向對象技術的發展,傳統的java項目的開發過程須要作不少的面向對象的分析和設計。整個分析和設計過程當中,須要專業的工具來描述和記錄分析設計的結果。也須要專門的工具來協助理清分析的思路,UML就是這樣的工具。
UML的全稱是,統一建模語言(UML,UnifiedModelingLanguage),它是面向對象軟件的標準化建模語言。UML因其簡單、統一的特色,並且能表達軟件設計中的動態和靜態信息,目前已成爲可視化建模語言的工業標準。在軟件開發過程當中,統一建模語言能夠在整個設計週期中使用,幫助設計者縮短設計時間,減小改進的成本,使軟硬件分割最優。
須要注意的是:在如今流行的敏捷開發中。UML的地位遠不如之前重要了。另外數據庫的分析與設計也須要專門的工具來描述和理清數據庫之間的關係。下面咱們就來簡單介紹兩款這樣的軟件。
StarUML是一款開放源碼的UML開發工具,是由韓國公司主導開發出來的產品,是一種建立UML類圖,生成類圖和其餘類型的統一建模語言(UML)圖表的工具。它能夠繪製經常使用的9種UML圖,並且徹底免費,軟件也比較小,是很是好用的一款軟件,不過做者已經不少年不更新了。由此軟件延伸一款新的軟件:StarUML2。但這款新的軟件屬於收費軟件。
PowerDesigner最初由Xiao-Yun Wang(王曉昀)在SDP Technologies公司開發完成。PowerDesigner是Sybase的企業建模和設計解決方案,採用模型驅動方法,將業務與IT結合起來,可幫助部署有效的企業體系架構,併爲研發生命週期管理提供強大的分析與設計技術。PowerDesigner獨具匠心地將多種標準數據建模技術(UML、業務流程建模以及市場領先的數據建模)集成一體,並與 .NET、WorkSpace、PowerBuilder、Java™、Eclipse 等主流開發平臺集成起來,從而爲傳統的軟件開發週期管理提供業務分析和規範的數據庫設計解決方案。此外,它支持60多種關係數據庫管理系統(RDBMS)版本。PowerDesigner運行在Microsoft Windows平臺上,並提供了Eclipse插件
本節課內容雖然簡單,可是對於初學者來講很重要,這些工具都是之後開發常常用到的,在本節課中咱們只是作了簡單的介紹,後面的課程咱們會詳細講解這些工具的使用。下節課咱們將介紹JDK的安裝與配置。下課!!~~~
PS:文章是由華宇互聯旗下品牌樂橙谷java培訓組織整理編寫,轉載請註明出處!
本文源發表至:樂橙谷 www.lechengu.com