每個Java開發(fā)人員都應(yīng)該知道的10大Github倉庫
Java是業(yè)務(wù)應(yīng)用程序開發(fā)中排名第一的編程語言,它也是頂級編程語言之一。Java具有許多功能強大且豐富的倉庫,盡管標(biāo)準(zhǔn)Java庫功能強大,但是在專業(yè)軟件開發(fā)領(lǐng)域你還需要其他Java庫。
今天,就和大家盤點10個最受歡迎的Java倉庫:
1. Apache Commons
Apache Commons就像Java軟件開發(fā)中的瑞士刀一樣,并且拓展了許多Java Core庫,如果你想在項目中編寫實用程序類,那么成熟且強大的Apache Commons庫的可用性相對更好,Apache Commons由43個模塊庫組成,涵蓋了集合、數(shù)學(xué)、類、數(shù)據(jù)庫、緩存、I/O Utils等領(lǐng)域。
它在業(yè)界廣泛使用,如果你正在從事一個大型項目,并且沒有使用任何Apache Commons庫,那么你可能正在重復(fù)造輪子。
Github地址:https://commons.apache.org/
2. Google Guava
谷歌Guava是另一個頂級的通用Java庫。最初由谷歌開發(fā),由著名軟件工程師Joshua Bloch設(shè)計。它現(xiàn)在是一個開源項目,許多谷歌以外的工程師都為之貢獻(xiàn)了力量,與Apache Commons一樣,它也是模塊化的,包含許多獨立的庫。
它涵蓋了基本實用工具、集合、字符串操作、并發(fā)實用工具、圖形庫、散列等等。與Apache Commons library相比,Guava具有更好的設(shè)計。如果你想要創(chuàng)建或使用程序類庫,可以首選Guava庫。
Github地址:https://github.com/google/guava
3. Jackson
在軟件開發(fā)中,你必須處理各種格式化的數(shù)據(jù),諸如你需要以不同的格式加載或保存數(shù)據(jù),或者需要以不同的格式傳輸數(shù)據(jù)。JSON是現(xiàn)代軟件開發(fā)中事實上的數(shù)據(jù)交換格式,其他常見的數(shù)據(jù)格式是Avro、 XML、 YAML、 Protobuf、 CSV、 BSON、 CBR。
Jackson是一套用于Java的數(shù)據(jù)處理庫,Jackson JSON實際上是流JSON解析器/生成器庫。它還支持其他數(shù)據(jù)格式,如Avro、BSON、CBOR、CSV、Smile、Protobuf、XML或YAML,以及數(shù)據(jù)類型,如Guava、Joda、pcollection等等。Jackson是高度模塊化的,具有提供基本功能的核心模塊和各種擴展模塊。
地址:https://github.com/FasterXML/jackson
4. JAXB
XML是另一種流行的數(shù)據(jù)格式,它提供了更嚴(yán)格的驗證、存儲和數(shù)據(jù)傳輸,在Java 8之前,Java標(biāo)準(zhǔn)庫都支持XML,包括數(shù)據(jù)綁定。從Java 9開始,XML處理功能不再是標(biāo)準(zhǔn)Java庫的一部分,并轉(zhuǎn)移到一個單獨的庫JAXB中。
JAXB提供了在Java中使用XML所需的一切。它為XML和Java代碼之間的映射提供了一種標(biāo)準(zhǔn)而有效的方法。它還包括基于注釋的數(shù)據(jù)綁定。
項目地址:https://javaee.github.io/jaxb-v2/
5. SLF4J
SLF4J是為各種loging APIs提供一個簡單統(tǒng)一的接口,從而使得最終用戶能夠在部署的時候配置自己希望的loging APIs實現(xiàn)。Logging API實現(xiàn)既可以選擇直接實現(xiàn)SLF4J接的loging APIs如:NLOG4J、SimpleLogger。也可以通過SLF4J提供的API實現(xiàn)來開發(fā)相應(yīng)的適配器如Log4jLoggerAdapter、JDK14LoggerAdapter。
項目地址:http://www.slf4j.org/
6. Log4j 2
Apache Log4j 2是apache開發(fā)的一款Log4j的升級產(chǎn)品。與Logback相比,我更喜歡Log4j 2,特別是對于大型項目,因為它提供了更好的性能。對于大型項目,日志庫的性能是至關(guān)重要的,比如異步日志、峰值吞吐量和延遲。
Github地址:https://logging.apache.org/log4j/2.x/performance.html
7. Mockito
單元/集成測試是軟件開發(fā)過程中不可分割的一部分。通常你希望測試單個類(SUT),但它依賴于其他重量級類或外部功能(例如,數(shù)據(jù)庫操作、I/O操作)。在這樣的場景中編寫單元/集成測試的一種方法是mock。
Mockito是Java中使用最廣泛的模擬庫。無論測試的是小型項目還是大型復(fù)雜的企業(yè)Java項目,都可以在任何地方使用Mockito。它提供了一個非常簡單、干凈的API,使你的單元/集成測試保持干凈。
8. AssertJ
AssertJ是我的列表中第二個與TDD相關(guān)的庫。測試的主要功能之一是驗證測試結(jié)果是否與預(yù)期結(jié)果相匹配。JUnit在org.junit.Assert類中有內(nèi)置的斷言機制,它為測試驗證提供了兩個靜態(tài)方法。對于專業(yè)開發(fā)人員來說,這兩個方法是不夠的。幸運的是,在Java領(lǐng)域中存在兩個強大的庫:Hamcrest和AssertJ。
Github地址:https://assertj.github.io/doc/
9. Hibernate
在我們的日常生活中,作為一個軟件工程師,我們不得不與數(shù)據(jù)存儲打交道。目前,有許多類型的數(shù)據(jù)存儲:SQL和大量的NoSQL數(shù)據(jù)存儲。處理數(shù)據(jù)存儲的一種方法是使用低級API(例如,JDBC用于SQL),但是這種處理方式還是有所弊端,因此,處理數(shù)據(jù)存儲的最佳方法是在應(yīng)用程序和數(shù)據(jù)存儲之間引入一個抽象層。這個抽象層(ORM)將Java類映射為數(shù)據(jù)庫表/集合。
Hibernate是所有編程語言中最早的ORM庫之一,它激發(fā)了業(yè)界許多類似的技術(shù)。雖然Hibernate主要以用于SQL數(shù)據(jù)庫的ORM功能而被人所熟知。但它也擴展到了NoSQL數(shù)據(jù)庫。Hibernate也是模塊化的,提供了一個核心模塊和許多基于功能的模塊。
Github地址:https://hibernate.org/
10. Apache HTTPComponents
HTTP是迄今為止最常用和流行的應(yīng)用層協(xié)議。Java標(biāo)準(zhǔn)庫沒有提供太多處理HTTP的功能。幸運的是,Apache HTTPComponents提供了一個Java組件的工具集,該工具集中于HTTP和相關(guān)協(xié)議。Apache HTTPComponents也是非常模塊化的,并且占用空間小。
Github地址:https://hc.apache.org/