忘记番石榴:5个Google库Java开发人员应该知道的
什么是最有用但未知的Google Java庫?
如果我們在激烈的黑客馬拉松中阻止某人并要求她命名一個受歡迎的Google Java庫,那么答案可能就是Guava。 這也就不足為奇了,因為它的主要重點是提高開發(fā)人員的生產(chǎn)力。 但是其他Google圖書館呢? 您有機(jī)會檢查一下嗎?
在下面的文章中,我們將介紹一些來自Google的有趣的Java庫,并向您介紹如何使用它們。
向混合物中添加另一個庫
首先,我們要明確一點:我們愛番石榴。 它包含Google的一些基于Java的項目的核心庫,例如集合,緩存,通用注釋,I / O等。 這些不僅對Google開發(fā)人員有用,而且對更廣泛的社區(qū)也有用。
盡管它不是Google唯一的好東西。 我們不是在談?wù)摕o人駕駛汽車,谷歌光纖或Ara項目(并且我們?nèi)栽诘却詈笠粋€)–我們是在談?wù)?strong>更多的圖書館 。
好消息是,因為我們?yōu)槟龅搅诉@一點,所以無需梳理每個可用的庫即可找到合適的庫。 我們選擇了5個Google庫,這些庫可以使您的生活更輕松,并且代碼更美觀。 去看一下:
Guice是Java的輕量級依賴注入(DI)框架,其作用類似于Spring的核心控制反轉(zhuǎn)(IOC)庫。 它幾乎和番石榴一樣流行 。 如果您不熟悉它,Guice可以簡化工廠的需求,并簡化代碼中“ new”的使用。 用Google自己的話來說,Guice @Inject是新的。
盡管該庫不會使您免于編寫工廠,但它將有助于確保您的代碼不直接依賴于它們。 這樣,更改,單元測試和重用代碼將變得更加容易。
酷因素
該庫旨在使開發(fā)和調(diào)試更加輕松快捷。 該文檔甚至聲稱可以幫助您更好地理解代碼。 Guice提供的另一個很棒的功能是在發(fā)生錯誤時生成有用的消息,因此您將了解發(fā)生了什么以及如何解決。
這個開源庫是Java的靜態(tài)分析工具,使您可以在編譯時捕獲常見的編程錯誤。 您可以成為團(tuán)隊中最好的開發(fā)人員,但是您或您的一位同事可能被最新的《權(quán)力的游戲》情節(jié)所吸引,并犯了一個錯誤。
換句話說,此工具將幫助您在錯誤變成生產(chǎn)錯誤并弄亂您的應(yīng)用程序之前發(fā)現(xiàn)錯誤。
例如,它可以檢測到的錯誤模式之一是CannotMockFinalClass –表示Mockito無法模擬最終類:
import org.junit.runner.RunWith; import org.junit.runners.JUnit4; import org.mockito.Mock; import org.mockito.Mockito;/*** Test for CannotMockFinalClass.*/ @RunWith(JUnit4.class) public class CannotMockFinalClassPositiveCases {static final class FinalClass {}// BUG: Diagnostic contains: Mockito cannot mock@Mock FinalClass impossible;public void method() {// BUG: Diagnostic contains: Mockito cannot mockFinalClass local = Mockito.mock(FinalClass.class);} }酷因素
在官方庫頁面上,您會找到常見錯誤及其建議修復(fù)的列表。 這意味著每個錯誤都有別人已經(jīng)想到的解決方案,您可以在自己的代碼中輕松實現(xiàn)它。 順便說一句,如果您對常見的生產(chǎn)錯誤感興趣,請查看我們對生產(chǎn)中十大異常類型的分析 。
真理是一個測試框架,旨在幫助您的測試和錯誤消息更具可讀性和可發(fā)現(xiàn)性。 它會生成有意義的錯誤消息,以報告測試失敗的原因,同時可擴(kuò)展到新類型的對象。 哦,它附帶了一個很棒的口號:“我們已將失敗作為策略”。
您可以使用Truth代替JUnit的斷言,FEST或Hamcrest的matchers類,或者只是以您認(rèn)為適合于代碼的方式使用它。 它為您提供一個測試動詞,該動詞對一個主語,該值或被測對象進(jìn)行斷言。
您可以使用Truth來聲明JUnit樣式的假設(shè)(并跳過失敗測試),斷言和異常。
import static com.google.common.truth.Truth.assertThat;Set < Foo > foo = ...; assertThat(foo).isEmpty()org.truth0.FailureStrategy$ThrowableAssertionError: Not true that is empty at org.truth0.FailureStrategy.fail(FailureStrategy.java: 33)...Kythe提供并支持工具和標(biāo)準(zhǔn),以鼓勵操縱源代碼的程序之間的互操作性(在系統(tǒng)之間共享,交換和使用信息)。 一種更簡單的解釋方法是說該庫為構(gòu)建可與源代碼一起使用的工具提供了一個生態(tài)系統(tǒng)。
該庫的主要目標(biāo)是提供一種可與任何源代碼一起使用的,與語言無關(guān)的標(biāo)準(zhǔn)交換機(jī)制。 它包括構(gòu)建系統(tǒng),編譯器,解釋器,靜態(tài)分析,編輯器,代碼審查應(yīng)用程序等。 這樣,您就可以與任何其他系統(tǒng)共享信息。
酷因素
Kythe擁有一個豐富的社區(qū) ,可以回答您的任何問題。 在Python,JavaScript或Java上需要Kythe的幫助嗎? 想知道如何為Python模塊建模嗎? 還是您只是想知道Kythe的發(fā)音 ? 只是問社區(qū)。
Protobuf(也稱為協(xié)議緩沖區(qū))庫是Google的語言無關(guān),平臺無關(guān)且可擴(kuò)展的機(jī)制,用于序列化結(jié)構(gòu)化數(shù)據(jù)。 如果您不確定這是什么意思,Google會說它就像XML,只是更小,更快和更簡單。
如果我們必須為此庫選擇一個標(biāo)語,則它可能是“一次構(gòu)造,可在任何地方使用”,這是描述它的最佳方法。 一旦定義了數(shù)據(jù)的結(jié)構(gòu)方式,就可以使用生成的特殊源代碼從多種數(shù)據(jù)流和多種語言中進(jìn)行讀寫。
酷因素
此處有完整的披露要求:protobuf是Takipi上我們最喜歡的庫之一 ,我們可以保證它會幫助您簡化復(fù)雜的元素。
我們有沒有忘記任何人?
我們知道您在想什么-這么多的庫,一個字都沒有關(guān)于GWT 。 GWT是用于基于瀏覽器的應(yīng)用程序的開發(fā)工具包,即使JavaScript不是您的最佳選擇,它也可以創(chuàng)建高性能的Web應(yīng)用程序。 它基本上是Java到JavaScript的編譯器。
這個免費的開放源代碼庫由于使用了許多Google產(chǎn)品而變得流行。 該列表包括Google Inbox,AdWords,AdSense,航班,酒店搜索器,優(yōu)惠,電子錢包和Blogger,這些都是Google出名的,功能強(qiáng)大的產(chǎn)品。
除了Google之外,還有一些使用GWT的知名公司,例如Ruxit,Go Grid,Whirled等。
其他Google庫
在對Twitter進(jìn)行評論之后,我們決定添加2個在此未提及的有用的庫,謝謝@ joschi83 !
1. AutoValue –代碼生成器的集合,可自動生成重復(fù)的Java代碼。
2. GSON –流行的Java序列化/反序列化庫,可以將Java對象轉(zhuǎn)換為JSON并返回。
最后的想法
有很多Java庫可以幫助您的代碼并使代碼更智能,更易于使用。 您所要做的就是了解您要查找的內(nèi)容,并查看某個庫如何提供幫助。
如果您是Guava的忠實粉絲,但在其他庫中找不到任何有用的東西,則應(yīng)查看每個開發(fā)人員都可以使用的Google Guava鮮為人知的一些功能 。
翻譯自: https://www.javacodegeeks.com/2016/07/forget-guava-5-google-libraries-java-developers-know.html
總結(jié)
以上是生活随笔為你收集整理的忘记番石榴:5个Google库Java开发人员应该知道的的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 代码冲突检测_Java中常见的
- 下一篇: 休眠文件怎么删除休眠文件删除方法介绍