Java常用工具介紹

cdfarsight發表於2021-04-17

JDK

JDK (Java Development Kit)是Java開發的必備基礎工具集。它包含了JAVA的執行環境(JVM+Java系統類庫)和許多JAVA工具實用命令。

最初JDK是由發明java語言的公司SUN提供的,後來Oracle公司購買了java語言的版權,從此官方的JDK由Oracle提供。開發人員可以免費下載JDK並利用它來開發java程式。

若僅僅使用JDK,在任何文字編輯器(如:Windows 記事本、Notepad++等)編寫Java原始檔,然後在DOS下用javac.exe命令將Java源程式編譯成class位元組碼,然後通過Java.exe命令來執行class檔案,這是DOS時代程式設計師的美好回憶,也是Java 初學者一般採用的方式,能夠很快理解程式中各部分程式碼之間的關係,有利於理解Java物件導向的設計思想。但是,要想從事大規模企業級Java應用開發複雜的應用軟體,僅僅靠這種辦法是不夠的,我們還要採取更多先進的工具,以利於團體協同開發。

Eclipse

Eclipse是著名的跨平臺的自由整合開發環境,最初是由IBM公司用java語言開發而成,是IBM的商業軟體Visual Age for Java的替代品。Eclipse被貢獻給開源社群,由非營利軟體供應商聯盟Eclipse基金會(Eclipse Foundation)管理。

由於Eclipse 是一個開放原始碼的開放型、可擴充套件開發平臺,就其本身而言,它只是一個框架和一組服務,可通過外掛來組合出不同功能開發環境。

Eclipse 附帶了一個標準的外掛集,包括 Java 開發工具(Java Development Tools,JDT)。許多軟體開發商以Eclipse為基礎來開發自己的IDE,通過外掛使其作為其他計算機語言比如C++、PHP、Python等語言的開發工具。眾多外掛的支援使得Eclipse擁有很高的靈活性。

(1)MyEclipse

MyEclipse是Genuitec公司在標準的Eclipse基礎上,通入加入很多實用外掛而開發出來的一款商用收費的IDE。它可以方便進行資料庫應用開發,整合了完備的編碼、除錯、測試和釋出的功能,完美支援HTML、Struts、JSP、CSS、Javascript、SQL、Hibernate,Spring等框架的整合,極大的提高了工作效率。

(2)STS

通過改造Eclipse,Spring官方提供了針對利用Spring框架來開發應用的強大工具SpringToolSuite,使用該工具可以很輕易地生成一個spring工程,許多配置檔案都會自動為你生成而無需你過多的操心它們,特別是在使用springboot開發方式時更加方便。STS的介面風格和eclipse相同。

IntelliJ IDEA

IDEA 全稱 IntelliJ IDEA,是java程式語言整合開發環境,被公認為是最好的java開發工具之一,它在智慧程式碼輔助、重構、JavaEE支援、GUI設計等方面的功能是超常的,與各類版本工具(git、svn等)、Ant、JUnit、CVS能方便的整合 。

IDEA把Java開發人員從一些耗時的常規工作中解放出來,顯著地提高了開發效率,能生成更好的程式碼,使持續的重新設計和日常編碼變得簡易。

IntelliJ IDEA是收費軟體,也推出了免費的社群開源版本,它是JetBrains公司的產品,這家公司還開發了各種IDE工具用於支援不同的程式語言,除了IntelliJ IDEA之外,還有PhpStorm用於php開發,PyCharm用於Python,WebStorm用於HTML/CSS/JS,AppCode用於Object-C是XCode的替代物。

測試工具JUnit

JUnit是一個Java語言的單元測試框架,被多數Java開發環境整合。Junit測試是程式設計師測試,即所謂白盒測試,因為程式設計師知道被測試的軟體如何(How)完成功能和完成什麼樣(What)的功能。Junit在介面測試、迴歸測試、極限程式設計方面都能夠發力。

(1)介面測試

junit不僅能做單元測試,且方便進行介面測試。所謂的介面測試是用來檢查各個元件之間的介面呼叫的正確性的測試,即外部系統與系統之間以及各個子系統之間的互動點,測試的重點在資料的傳遞上。之所以推行介面測試是由於如果專案全部用單元測試的話可能時間上不允許,而介面測試是一種特殊的單元測試,覆蓋率沒有做到所謂的單元測試的百分之百,但是覆蓋了面向使用者的所有功能點,也可採用自動化+持續整合的方式,節約時間了成本,同時提高了效率。

(2)迴歸測試框架

JUnit是一個迴歸測試框架(regression testing framework),在程式碼重構時,要求改一點測一點,減少迴歸錯誤造成的時間消耗。

(3)極限程式設計

極限程式設計要求在編寫程式碼之前先寫測試,這樣可以強制你在寫程式碼之前好好的思考程式碼(方法)的功能和邏輯,否則編寫的程式碼很不穩定,那麼你需要同時維護測試程式碼和實際程式碼,工作量大大增加。在極限程式設計中,基本過程是這樣的:構思-> 編寫測試程式碼-> 編寫程式碼-> 測試,而且編寫測試和編寫程式碼都是增量式的,寫一點測一點,在編寫以後的程式碼中如果發現問題可以較快的追蹤到問題的原因,減小回歸錯誤的糾錯難度。

Maven

Maven是基於專案物件模型並可以通過一小段描述資訊來管理專案構建、報告和文件生成的軟體專案管理工具。它簡化了構建過程,無縫銜接了編譯、釋出、文件生成、團隊合作和其他任務。它能夠同時構建多個工程、釋出工程資訊、部署工程、在幾個工程中共享 JAR 檔案,並且協助團隊合作。

Maven為我們統一管理jar包,它把這些jar包存放在本地倉庫中。

maven把專案的構建劃分為不同的生命週期(lifecycle)。粗略包括:編譯、測試、打包、整合測試、驗證、安裝、部署。maven中所有的執行動作(goal)都需要指明自己在這個過程中的執行位置,然後maven執行的時候,就依照過程的發展依次呼叫這些goal進行各種處理。

gradle

Gradle是一個基於Apache Ant和Apache Maven概念的專案自動化構建開源工具。它使用Groovy語言來宣告專案設定,拋棄了基於XML的各種繁瑣配置。它面向Java應用為主,計劃未來將支援更多的語言。

Gradle是maven的替代品,目前功能超越了maven,是一款通用靈活的構建工具,也能與maven共存使用。它免費開源,gradle的整體設計是以作為一種語言為導向的,而非成為一個嚴格死板的框架。

它支援傳遞性依賴管理,而不需要遠端倉庫或者是pom.xml和ivy.xml配置檔案。

gradle對多工程的構建支援很出色,工程依賴是gradle的第一公民。

gradle支援區域性構建。支援多方式依賴管理:包括從maven遠端倉庫、nexus私服、ivy倉庫以及本地檔案系統的jars或者dirs。

gradle專案可以輕鬆遷移,適用於任何結構的工程,你可以在同一個開發平臺平行構建原工程和gradle工程。

Apache Commons類庫

Apache Commons是一個Apache專案,提供了功能齊全的通用Java元件。它是一套開發原始碼、免費使用、商業友好的優秀API,是Java官方API的補充。它在一定程度上反映了一線Java開發人員的實際需求,java官方類庫的編寫也常常參照Apache Commons的內容。當你看到它時,一定會被它的簡單而強大所吸引。

如果你至少參與了一箇中型規模的Java專案,那麼很有可能你已經使用到了Apache Commons,不管你自己有沒有察覺。其實有很多所謂的商業框架其實內部有些模組是借用Commons的,甚至有一些完全就是對Commons的類進行了簡單的封裝。

學習和使用Apache Commons相當有意義,一方面,它可以給你帶來生產力的大幅提升;二是你可以從中學到許多課本上學不到的東西:編碼習慣、程式碼組織、註釋、文件、如何用Java解決實際問題、特定問題的演算法等等。

Apache Commons的官方主頁是http://commons.apache.org/。

Apache Commons中的套件很多,這裡只簡單例舉幾個常用的

元件名 —— 用途

Collections

Java Collection框架擴充套件和增強

DBCP

資料庫連線池服務

DbUtils

JDBC幫助函式庫

FileUpload

為Servlet和Web應用程式提供檔案上傳功能

IO

I/O工具集合

Lang

為java.lang中的類提供附加功能。

Logging

對各種日誌API實現的封裝

Math

輕量級、字包含數學和統計元件

Validator

通過xml檔案定義驗證器和驗證規則的框架

資料框架Mybatis

MyBatis 是一款優秀的持久層框架。它簡單易學,且體積很小,沒有任何第三方依賴,安裝簡單隻需要兩三個jar檔案加幾個sql對映檔案就行。通過文件和經典專案程式碼,可以比較完全的掌握它的設計思路和實現。

MyBatis解除了sql與程式程式碼的耦合:通過提供DAO層,將業務邏輯和資料訪問邏輯分離,使系統的設計更清晰,更易維護,更易單元測試。

MyBatis 把sql寫在xml裡,便於統一管理和優化。通過sql語句可以滿足運算元據庫的所有需求。sql和程式碼的分離,提高了可維護性,且並未對應用程式或者資料庫的現有設計強加任何影響。還可以將sql寫在註解中,但這種做法並不流行。

MyBatis支援編寫動態sql,能夠完成複雜的應用需求。

Spring框架

java企業級開發的曾經標準是EJB,然而EJB規範十分複雜,學習起來也非常艱苦,而Spring出現的初衷就是為了解決這些問題。spring採用IOC機制將市面上優秀的框架揉和在一起建立起一個連貫的體系,提供了統一、高效的方式構造整個應用。絕大部分Java應用都可以從Spring中受益。

其基本特徵有:

(1)是一個輕量級控制反轉(IoC)框架

(2)是面向切面(AOP)框架

(3)簡單易測試,方便整合junit

(4)鬆耦合,完全面向介面

(5)申明式事務

(6)使用基本的JavaBean來完成以前只可能由EJB完成的事情

(7)輕量——從大小與開銷兩方面而言Spring都是輕量的。

spring在發展過程中,除了糅合其它優秀工具,也不斷的豐富各種功能,這些包括

DAO模組

提供了JdbcTemplate元件,可以用於替代Mybatis等資料框架。

支援JPA,這是和Hibernate共同完成的。

spring也編寫了連線池物件,實現了DataSource介面,這可作為選用。

Spring的AOP模組提供了事務管理服務。

物件/關係對映

Spring並不試圖實現它自己的ORM解決方案,而是為幾種流行的ORM框架提供了整合方案,包括Hibernate、JDO和iBATIS SQL映。

Spring的Web模組

Web模組提供了一個適合於Web應用的上下文。這個模組還提供了一些面向服務支援,例如:實現檔案上傳的multipart請求,郵件傳送的支援、spring自己的標籤支援。此外它也能夠和其它Web框架整合,比如Struts。

Spring的MVC框架

Spring為Web應用提供了一個功能全面的MVC框架,在此之間雖然有Struts已經十分流行,但Spring的創始人Rod Johnson認為當時流行的各種MVC框架都有各種各樣的缺陷,因而在spring中也增加了MVC的功能。

比如,它允許你宣告性地將請求引數自動繫結到業務物件中,還可以利用其它服務,例如國際化資訊與驗證。

解決Web頁面亂碼問題

在做java Web 專案時,亂碼問題時常都會出現,解決方法也不盡相同,有簡單也有複雜的;如果加入了Spring框架之後就不一樣了,可以採用Spring框架自帶的過濾器CharacterEncodingFilter,這樣可以大大減輕了我們的工作量,即簡單方便又容易理解。

型別轉換

提供了通用的型別轉換器:converter和formatter(格式化)。

校驗

為了驗證表單資料的正確性,採用了兩種方案,一是實體bean來校驗,這是使用國際驗證標準JSR303,是與hibernate共同完成的。二是利用Spring Validator介面,這適合更為複雜的場景。

springboot

為了方便應用程式的構建, SpringBoot應用而成,它整合了各種框架的使用配置,提供了大量的便利性,還能很好的支援分散式開發。

springboot專案以jar的方式執行,是普通的java application,但它內嵌了tomcat容器,因而免部署war包,也避免了我們自行安裝tomcat。它簡化了maven配置,提供了starter pom來簡化依賴載入。它使用更多註解,符合spring4的推薦。它有更強的“自動配置”,配置所寫的位置不同了,且儘量用“註解+純java程式碼配置”的方式。

springboot遵循“習慣優於配置”的理念,程式設計師只需要進行少量配置。

springboot還支援執行時監控。

ActiveMQ

Apache ActiveMQ是Apache軟體基金會所研發的開放原始碼訊息中介軟體。由於ActiveMQ是一個由Java語言開發的應用程式,因此我們需要在作業系統上先安裝Java虛擬機器,才能執行ActiveMQ。

ActiveMQ可以很方便的和spring整合使用。實際上,市面上的其它各種訊息系統,如activeMQ、RabitMQ、kafka等等都可以被spring整合使用。

相關文章