2018年不能错过的 14 个 Java 库
轉(zhuǎn)載自?2018年不能錯(cuò)過的 14 個(gè) Java 庫
下面是整理給你的 2018 年不應(yīng)該錯(cuò)過的 14 個(gè) Java 庫包清單,多多少少大家應(yīng)該都接觸過一些,如果還沒聽過那就OUT了。
Guice
Guice是一個(gè)Java 6以上支持依賴注入框架。由谷歌提供。
OkHttp
HTTP是現(xiàn)代網(wǎng)絡(luò)的通訊方式。決定我們?nèi)绾谓粨Q數(shù)據(jù)和媒體。 如果有效地執(zhí)行HTTP通訊會(huì)使您的內(nèi)容加載更快,并且節(jié)省帶寬。OkHttp是一個(gè)HTTP客戶端,高效是其特點(diǎn):
(1)在HTTP / 2情況下支持對(duì)同一主機(jī)的所有請(qǐng)求能夠共享同一個(gè)socket。
(2)通過連接池降低請(qǐng)求延遲(如果HTTP / 2不可用)。
(3)透明GZIP壓縮下載大小。
(4)對(duì)響應(yīng)進(jìn)行?緩存?,可以完全避免重復(fù)請(qǐng)求的網(wǎng)絡(luò)。
用于Android的類型安全的HTTP客戶端,能夠?qū)TTP API轉(zhuǎn)為Java接口。
Retrofit會(huì)產(chǎn)生上面GitHubService的實(shí)現(xiàn)類:
JDeferred
Java的Deferred/Promise庫類似于JQuery:
Deferred對(duì)象和Promise
Promise回調(diào): .then(…), .done(…), .fail(…), .progress(…), .always(…)
多個(gè)promises - .when(p1, p2, p3, …).then(…)
Callable 和 Runnable - wrappers.when(new Runnable() {…})
使用Executor Service
Java范型支持: Deferred<Integer, Exception, Doubledeferred;, deferred.resolve(10);, deferred.reject(new Exception());,deferred.notify(0.80);,
Android支持
Java 8 Lambda友好
RxJava
RxJava - JVM的反應(yīng)式擴(kuò)展Reactive Extension -使用可觀察序列來組合異步和基于事件的程序。
它擴(kuò)展了觀察者模式以支持?jǐn)?shù)據(jù)/事件序列,并添加操作符,允許您以聲明方式組合序列,同時(shí)抽象出對(duì)低級(jí)線程,同步,線程安全和?并發(fā)?數(shù)據(jù)結(jié)構(gòu)等問題的關(guān)注。
RxJava的一個(gè)常見用例是在后臺(tái)線程上運(yùn)行一些計(jì)算,比如網(wǎng)絡(luò)請(qǐng)求,并在UI線程上顯示結(jié)果(或錯(cuò)誤):
MBassador
MBassador是一種輕量級(jí),高性能的事件總線,實(shí)現(xiàn)發(fā)布訂閱模式。它為易于使用而設(shè)計(jì),功能豐富且可擴(kuò)展,同時(shí)保持資源效率和高性能。
MBassador的高性能核心是一個(gè)專門的數(shù)據(jù)結(jié)構(gòu),提供非阻塞讀取器,并最大限度地減少寫爭(zhēng)奪的鎖爭(zhēng)用,使?并發(fā)?讀/寫訪問的性能降低最小。
注釋驅(qū)動(dòng)
遞送一切,尊重類型層次結(jié)構(gòu)
同步和異步消息傳遞
可配置的引用類型
消息過濾
包裝消息
處理程序優(yōu)先級(jí)
自定義錯(cuò)誤處理
可擴(kuò)展性
Lombok
使用注釋來減少Java中的重復(fù)代碼,例如getters setters,not null檢查,生成Builder等。
val - 不會(huì)產(chǎn)生麻煩的final局部變量。
@NonNull - 或者:我怎么學(xué)會(huì)停止擔(dān)心和喜歡上了NullPointerException。
@Cleanup - 自動(dòng)資源管理:安全地調(diào)用您的close()方法,沒有麻煩。
@Getter / @Setter - 不要再寫public int getFoo(){return foo;}。
@ToString - 無需啟動(dòng)調(diào)試器來查看您的字段:只需讓Lombok為您生成一個(gè)toString!
@EqualsAndHashCode - 從對(duì)象的字段中生成hashCode和equals實(shí)現(xiàn)。
@NoArgsConstructor,@RequiredArgsConstructor和@AllArgsConstructor - 按順序構(gòu)造的構(gòu)造函數(shù):生成不帶參數(shù),每個(gè)final /非空字段有一個(gè)參數(shù)或每個(gè)字段有一個(gè)參數(shù)的構(gòu)造函數(shù)。
@Data - 現(xiàn)所有字段上都有@ToString,@EqualsAndHashCode,@Getter的快捷方式,所有非final字段的@Setter和@RequiredArgsConstructor!
@Value - 編寫不可變的類非常容易。
@Builder - 沒有麻煩的花哨的API對(duì)象創(chuàng)建!
@SneakyThrows - 大膽地引發(fā)檢查異常,在沒有觸發(fā)他們之前!
@同步 - 同步:不要暴露你的鎖。
@Getter(lazy = true)懶惰是一種美德!
SLF4j
Simple Logging Facade for Java (SLF4J)用作各種日志框架(例如java.util.logging,logback,log4j)的簡(jiǎn)單封裝管理抽象,允許最終用戶在部署時(shí)插入所需的日志框架。
簡(jiǎn)而言之,嵌入式庫或組件應(yīng)該考慮SLF4J的作為日志記錄需求,因?yàn)樵搸觳粫?huì)強(qiáng)加最終用戶選擇哪個(gè)日志框架。 另一方面,對(duì)于獨(dú)立應(yīng)用程序使用SLF4J并不一定有意義。獨(dú)立應(yīng)用程序可以直接調(diào)用他們選擇的日志框架。
JUnitParams
與標(biāo)準(zhǔn)JUnit的主要區(qū)別:
更明確 - params是在測(cè)試方法參數(shù)中,而不是類字段
更少的代碼 - 你不需要一個(gè)構(gòu)造函數(shù)來設(shè)置參數(shù)
您可以在一個(gè)類中混合使用非參數(shù)方法的參數(shù)
參數(shù)可以作為CSV字符串或參數(shù)提供程序類傳遞
參數(shù)提供程序類可以具有任意多個(gè)提供所需方法的參數(shù),以便可以對(duì)不同的案例進(jìn)行分組
你可以有一個(gè)提供參數(shù)的測(cè)試方法(不再有外部類或靜態(tài))
您可以在IDE中查看實(shí)際的參數(shù)值(在JUnit的Parametrised中,它只是連續(xù)的參數(shù)數(shù)量):
單元測(cè)試框架:
Jukito
集合 JUnit, Guice, 和 Mockito優(yōu)點(diǎn):
通過自動(dòng)化,大大減少了樣板,導(dǎo)致更容易閱讀測(cè)試
引入對(duì)測(cè)試對(duì)象中的API更改更有彈性的測(cè)試
用@Inject注釋的字段會(huì)自動(dòng)注入
使得將對(duì)象連接在一起變得容易,因此您可以將單元測(cè)試縮放為部分集成測(cè)試
Awaitility
Awaitility是一種用于同步異步操作的小型Java DSL。
測(cè)試異步系統(tǒng)很困難。 它不僅需要處理線程,超時(shí)和?并發(fā)?問題,但測(cè)試代碼的意圖可能被所有這些細(xì)節(jié)模糊。 Awaitility是一種DSL,允許您以簡(jiǎn)潔易讀的方式表達(dá)異步系統(tǒng)的期望。
Spock
為企業(yè)準(zhǔn)備的測(cè)試和規(guī)范框架。
模擬HTTP服務(wù)的工具:
HTTP響應(yīng)stubbing存根,匹配HTTP的URL、頭部和正文內(nèi)容
請(qǐng)求驗(yàn)證
在單元測(cè)試中運(yùn)行,作為獨(dú)立進(jìn)程或作為WAR應(yīng)用程序運(yùn)行
可通過流暢的Java API,JSON文件和通過HTTP的JSON進(jìn)行配置
記錄/回放存根
故障注入
每次請(qǐng)求的條件代理
瀏覽器代理請(qǐng)求檢查和替換
狀態(tài)行為模擬
可配置的響應(yīng)延遲
總結(jié)
以上是生活随笔為你收集整理的2018年不能错过的 14 个 Java 库的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 功放机和各种DVD功放机是什么样的
- 下一篇: Java成神之路技术整理