一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專(zhuān)注于服務(wù)器技術(shù)及軟件下載分享
分類(lèi)導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - Java教程 - Javaer,常用的 14 個(gè)類(lèi)庫(kù),你知道嗎?

Javaer,常用的 14 個(gè)類(lèi)庫(kù),你知道嗎?

2021-09-14 01:00小姐姐味道小姐姐養(yǎng)的狗02號(hào) Java教程

第一送給Netty。其實(shí)我是有私心的,也只有在使用Netty開(kāi)發(fā)一些網(wǎng)絡(luò)應(yīng)用的時(shí)候,我才能理直氣壯的不引入Spring這個(gè)目前變得越來(lái)越重的家伙,還我一個(gè)清清爽爽的世界。

Javaer,常用的 14 個(gè)類(lèi)庫(kù),你知道嗎?

昨天下載下來(lái)Java16嘗嘗鮮。一看,好家伙,足足有176MB大。即使把jmc和jvisualvm給搞了出去,依然還是這么大,真的是讓人震驚不已。

但即使JDK足夠龐大,它的功能也已經(jīng)不夠用了。我們需要借助于第三方庫(kù),來(lái)完成企業(yè)級(jí)開(kāi)發(fā)。比如,一個(gè)常見(jiàn)的SpringBoot服務(wù),上百兆是輕輕松松的。

在這里,我盤(pán)點(diǎn)一下項(xiàng)目中常用的工具類(lèi)庫(kù)和Jar包,來(lái)看一看一個(gè)Java程序員要學(xué)多少東西才能走的更加長(zhǎng)遠(yuǎn)。

1. Netty

第一送給Netty。其實(shí)我是有私心的,也只有在使用Netty開(kāi)發(fā)一些網(wǎng)絡(luò)應(yīng)用的時(shí)候,我才能理直氣壯的不引入Spring這個(gè)目前變得越來(lái)越重的家伙,還我一個(gè)清清爽爽的世界。

Javaer,常用的 14 個(gè)類(lèi)庫(kù),你知道嗎?

Netty已經(jīng)成為了目前最流行的Java網(wǎng)絡(luò)編程框架。有了它,Java才有了與golang等語(yǔ)言相提并論的權(quán)利。

2. SpringBoot

在很多中小公司,Java企業(yè)級(jí)開(kāi)發(fā)首選SpringBoot,這是沒(méi)得說(shuō)的。由于它的應(yīng)用實(shí)在是太廣泛,我這里就不浪費(fèi)筆墨做過(guò)多介紹了。

Javaer,常用的 14 個(gè)類(lèi)庫(kù),你知道嗎?

Spring當(dāng)年的目標(biāo),是為了干掉J2EE。屠龍的少年如今變成了龍,現(xiàn)在在干著J2EE當(dāng)年做的事情。

不過(guò),盡量的做的輕量級(jí),一直是它的主旋律,這一點(diǎn)從來(lái)沒(méi)有變過(guò)。因?yàn)殄e(cuò)的不是Spring,錯(cuò)的是這個(gè)世界。

3. 工具類(lèi)庫(kù)

由于歷史原因,apache-commons工具類(lèi)庫(kù),幾乎遍布了項(xiàng)目中的每個(gè)角落,比如lang3、beanutils、collections、codec等。個(gè)人覺(jué)得,apache-commons的很多工具,已經(jīng)是過(guò)度設(shè)計(jì)了,在一些新項(xiàng)目里,我已經(jīng)很少使用了。

取而代之的,是大量使用guava工具類(lèi)庫(kù),以及國(guó)產(chǎn)的hutool工具類(lèi)庫(kù)。有了這些工具,就不用再在項(xiàng)目里寫(xiě)一些拼拼湊湊,讓人難受的小工具類(lèi)了。

說(shuō)點(diǎn)有意思的事情,guava這個(gè)詞朗朗上口,它的中文意思是一種熱帶水果:番石榴,長(zhǎng)的就像是小西瓜一樣。

4. 單元測(cè)試

JUnit幾乎成了Java單元測(cè)試的標(biāo)配。JUnit5更是對(duì)整體模塊進(jìn)行了重構(gòu)。現(xiàn)在,它包含3個(gè)主要的模塊:JUnit Jupiter、JUnit Platform、JUnit Vintage等。

Vintage是為了兼容比較老的版本而存在的,Platform是為了兼容其他測(cè)試引擎,這樣在JUnit上使用Mockito也成為了可能。如果你的項(xiàng)目比較新,建議直接上Jupiter。

Javaer,常用的 14 個(gè)類(lèi)庫(kù),你知道嗎?

很多國(guó)外系統(tǒng)對(duì)單元測(cè)試看的比較重,這和國(guó)內(nèi)的開(kāi)發(fā)模式是不太一樣的。雖然說(shuō),單元測(cè)試是一個(gè)程序員的基本功,但離著普及還有一段距離。不過(guò)現(xiàn)在也有很多公司強(qiáng)制要求寫(xiě)單元測(cè)試,以任務(wù)指標(biāo)的形式存在。

5. JMH

JMH是最裝逼,最牛逼的基準(zhǔn)測(cè)試工具套件,主要用在性能測(cè)試方面。如果定位到了熱點(diǎn)代碼,要測(cè)試它的性能數(shù)據(jù),評(píng)估改善情況,就可以交給 JMH。它的測(cè)量精度非常高,可達(dá)納秒級(jí)別。

它能夠消除JIT的差異,測(cè)試出真正的代碼性能。JMH 已經(jīng)在 JDK 12中被包含,其他版本的需要自行引入 maven。

6. OkHTTP

最新的JDK已經(jīng)內(nèi)置了HTTP的功能,但這種協(xié)議層面的東西,放在基礎(chǔ)類(lèi)庫(kù)里老感覺(jué)不是那么妥當(dāng)。

很長(zhǎng)一段時(shí)間里,Apache 的HttpClient統(tǒng)治了世界,甚至重構(gòu)后在不同版本之間不能夠做到兼容。我更喜歡輕量級(jí)的OkHTTP多一些,第一次見(jiàn)它還是在Android的應(yīng)用代碼里,現(xiàn)在用在應(yīng)用代碼里也很香。OKHTTP的透明壓縮,顯得也更加智能一些。

Javaer,常用的 14 個(gè)類(lèi)庫(kù),你知道嗎?

像SpringCloud這樣的組件,在底層是可以選擇切換成HttpClient還是OkHTTP的。

應(yīng)用層的協(xié)議變動(dòng)都比較大,更新也比較快。比如HTTP2,Quic等支持,顯然要對(duì)整個(gè)類(lèi)庫(kù)做很多的修改才能適配。

7. 數(shù)據(jù)庫(kù)連接池

SpringBoot2默認(rèn)選擇了hikaricp作為連接池,據(jù)說(shuō)是速度最快的連接池,而且代碼量非常的精簡(jiǎn)。c3p0、dbcp等老舊的數(shù)據(jù)庫(kù)連接池已經(jīng)慢慢退位。

hikaricp非常的卷,它采用無(wú)鎖化的思想,核心類(lèi)庫(kù)只有ConcurrentBag一個(gè),甚至使用Javassist修改字節(jié)碼來(lái)增加執(zhí)行速度。

Javaer,常用的 14 個(gè)類(lèi)庫(kù),你知道嗎?

在國(guó)內(nèi),還有一個(gè)使用較為廣泛的連接池是Druid,它有著完整的監(jiān)控功能。通過(guò)開(kāi)啟后臺(tái)可以直接在web端查看整個(gè)連接池的狀態(tài)。

8. caffeine

堆內(nèi)緩存,首選caffeine。很長(zhǎng)一段時(shí)間,我都在用Guava的LoadingCache。自從測(cè)試caffeine之后,我就決定是它了。

它結(jié)合了LRU和LFU,兩者合體之后,變成了新的W-TinyLFU算法,命中率非常高,內(nèi)存占用也更加的小。

在SpringBoot里,通過(guò)提供一個(gè)CacheManager的Bean,即可與Springboot-cache進(jìn)行集成,可以說(shuō)是很方便了。

9. hazelcast

說(shuō)完了堆內(nèi)的,就再說(shuō)個(gè)堆外的。

除了有redis這種選擇之外,我們還可以選擇hazelcast。hazelcast采用raft算法進(jìn)行分布式協(xié)調(diào),在一致性方面強(qiáng)于redis。據(jù)hazelcast測(cè)試,在達(dá)到一定規(guī)模的時(shí)候,速度竟然比redis還快,hazelcast和redis甚至有過(guò)激烈的口水戰(zhàn)。

hazelcast可以以jar包的方式集成在Java應(yīng)用中,自身同時(shí)作為客戶端和服務(wù)端,組件多節(jié)點(diǎn)的集群。它提供了類(lèi)似redisson一樣的功能齊全的分布式數(shù)據(jù)結(jié)構(gòu),比如Queue,你只需要直接在Java代碼中調(diào)用相應(yīng)的API,它就能把數(shù)據(jù)同步到所有的節(jié)點(diǎn)上去。

10. 日志組件

日志組件是常用的類(lèi)庫(kù),最早得到廣泛使用的是log4j,而現(xiàn)階段比較流行的是slf4j+logback。由于這些類(lèi)庫(kù)非常的好用,JDK自帶的JUL反而無(wú)人問(wèn)津。

Javaer,常用的 14 個(gè)類(lèi)庫(kù),你知道嗎?

slf4j是門(mén)面模式的典型應(yīng)用,它本身是一套接口,背后可以使用logback和log4j。這些關(guān)系,我們能夠從上面的圖很容易的看出來(lái)。

11. JSON、XML、YAML解析

由于Fastjson頻頻爆出漏洞,現(xiàn)在在Java中使用最廣泛的JSON解析類(lèi)庫(kù),就是jackson庫(kù)。它最主要的入口工具類(lèi)是ObjectMapper,解析方法是線程安全的,我們可以在整個(gè)項(xiàng)目中共享一個(gè)解析對(duì)象。

Javaer,常用的 14 個(gè)類(lèi)庫(kù),你知道嗎?

jackson庫(kù)不僅僅可以解析JSON,它還可以解析XML、YAML、TOML等。事實(shí)上,它的抽象接口,可以實(shí)現(xiàn)Avro、Protobuf、CSV等格式數(shù)據(jù)的加載,但我們最長(zhǎng)使用的,就是它的JSON解析。

12. Jolokia

我相信J2EE當(dāng)年的目的肯定是好的,但總是做一些又大又笨重的東西。JMS算一個(gè),JMX也算一個(gè)。

JMX其實(shí)是非常不好用的,因?yàn)樗压δ芨綦x在了Java體系之內(nèi)。現(xiàn)在的Promethus監(jiān)控系統(tǒng)就做的比較好,一切都是HTTP交互的文本格式。

Javaer,常用的 14 個(gè)類(lèi)庫(kù),你知道嗎?

Jolokia就可以提供JMX的遠(yuǎn)程訪問(wèn)方法,把JMX接口給強(qiáng)制轉(zhuǎn)化成HTTP接口,以便于其他的監(jiān)控系統(tǒng)進(jìn)行功能對(duì)接。從這個(gè)描述上來(lái)看,Jolokia就是一個(gè)適配器。不過(guò),通過(guò)Agent或者Jar包的方式,它能讓ActiveMQ,JBoss等這些老掉牙的系統(tǒng)接入到現(xiàn)代化的監(jiān)控系統(tǒng)中來(lái),也算是大功一件。

13. hibernate-validator

hibernate留下了一個(gè)很棒的遺產(chǎn),那就是它的驗(yàn)證框架,它是Bean Validation 的參考實(shí)現(xiàn),被廣泛的應(yīng)用于數(shù)據(jù)庫(kù)模型校驗(yàn)、參數(shù)校驗(yàn)等領(lǐng)域。

Javaer,常用的 14 個(gè)類(lèi)庫(kù),你知道嗎?

在JPA中,@Table的字段可以根據(jù)這些驗(yàn)證,自動(dòng)生成數(shù)據(jù)庫(kù)約束。在Spring的Controller中,也可以使用@Valid注解,來(lái)自動(dòng)對(duì)傳入的對(duì)象進(jìn)行參數(shù)驗(yàn)證。

14. freemarker

FreeMarker 是一款模板引擎,在很早之前,我主要用它來(lái)生成Web頁(yè)面。

Javaer,常用的 14 個(gè)類(lèi)庫(kù),你知道嗎?

不過(guò),隨著前后端分離的流行,我現(xiàn)在主要在一些代碼生成器工具中用到它。它的應(yīng)用比較廣泛,比如做一個(gè)郵件模板,短信模板之類(lèi)的。如果你寫(xiě)過(guò)JSP的話,一定會(huì)知道它做的功能是類(lèi)似的。

在Spring中,還有一個(gè)更加輕量級(jí)的模板引擎,叫做SPEL--一個(gè)表達(dá)式語(yǔ)言。你在@Value注解中所使用的語(yǔ)法就是它,它們都是類(lèi)似的技術(shù)。

End

這些類(lèi)庫(kù),是我在工作中最長(zhǎng)用到的,也是關(guān)注最多的。其實(shí),一個(gè)Spring就夠大家折騰的了,但Spring的功能有時(shí)候仍然不夠,因?yàn)樗旧砀嗟氖且粋€(gè)整合型的工具,我們不得不關(guān)注到更底層的技術(shù)。

正是得益于這些穩(wěn)定、可靠的類(lèi)庫(kù),我們的應(yīng)用開(kāi)發(fā)才能夠如此迅速。想要什么功能?找個(gè)類(lèi)庫(kù)吧,大體就能實(shí)現(xiàn),這就是目前的開(kāi)發(fā)幸福的地方。

獲得了如此方便快捷的功能,記得點(diǎn)贊鼓勵(lì)一下作者;遇到問(wèn)題了,提個(gè)bug,修個(gè)錯(cuò)誤,都是無(wú)聲的支持。就如同你看完本篇文章,順手點(diǎn)個(gè)贊點(diǎn)個(gè)再看一樣,道理都是一樣的。

作者簡(jiǎn)介:小姐姐味道 (xjjdog),一個(gè)不允許程序員走彎路的公眾號(hào)。聚焦基礎(chǔ)架構(gòu)和Linux。十年架構(gòu),日百億流量,與你探討高并發(fā)世界,給你不一樣的味道。

原文鏈接:https://mp.weixin.qq.com/s/DME-zokMquldkJGqp3J9Mw

延伸 · 閱讀

精彩推薦
  • Java教程Java實(shí)現(xiàn)搶紅包功能

    Java實(shí)現(xiàn)搶紅包功能

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)搶紅包功能,采用多線程模擬多人同時(shí)搶紅包,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙...

    littleschemer13532021-05-16
  • Java教程20個(gè)非常實(shí)用的Java程序代碼片段

    20個(gè)非常實(shí)用的Java程序代碼片段

    這篇文章主要為大家分享了20個(gè)非常實(shí)用的Java程序片段,對(duì)java開(kāi)發(fā)項(xiàng)目有所幫助,感興趣的小伙伴們可以參考一下 ...

    lijiao5352020-04-06
  • Java教程小米推送Java代碼

    小米推送Java代碼

    今天小編就為大家分享一篇關(guān)于小米推送Java代碼,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧...

    富貴穩(wěn)中求8032021-07-12
  • Java教程Java8中Stream使用的一個(gè)注意事項(xiàng)

    Java8中Stream使用的一個(gè)注意事項(xiàng)

    最近在工作中發(fā)現(xiàn)了對(duì)于集合操作轉(zhuǎn)換的神器,java8新特性 stream,但在使用中遇到了一個(gè)非常重要的注意點(diǎn),所以這篇文章主要給大家介紹了關(guān)于Java8中S...

    阿杜7472021-02-04
  • Java教程Java使用SAX解析xml的示例

    Java使用SAX解析xml的示例

    這篇文章主要介紹了Java使用SAX解析xml的示例,幫助大家更好的理解和學(xué)習(xí)使用Java,感興趣的朋友可以了解下...

    大行者10067412021-08-30
  • Java教程xml與Java對(duì)象的轉(zhuǎn)換詳解

    xml與Java對(duì)象的轉(zhuǎn)換詳解

    這篇文章主要介紹了xml與Java對(duì)象的轉(zhuǎn)換詳解的相關(guān)資料,需要的朋友可以參考下...

    Java教程網(wǎng)2942020-09-17
  • Java教程升級(jí)IDEA后Lombok不能使用的解決方法

    升級(jí)IDEA后Lombok不能使用的解決方法

    最近看到提示IDEA提示升級(jí),尋思已經(jīng)有好久沒(méi)有升過(guò)級(jí)了。升級(jí)完畢重啟之后,突然發(fā)現(xiàn)好多錯(cuò)誤,本文就來(lái)介紹一下如何解決,感興趣的可以了解一下...

    程序猿DD9332021-10-08
  • Java教程Java BufferWriter寫(xiě)文件寫(xiě)不進(jìn)去或缺失數(shù)據(jù)的解決

    Java BufferWriter寫(xiě)文件寫(xiě)不進(jìn)去或缺失數(shù)據(jù)的解決

    這篇文章主要介紹了Java BufferWriter寫(xiě)文件寫(xiě)不進(jìn)去或缺失數(shù)據(jù)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望...

    spcoder14552021-10-18
主站蜘蛛池模板: 99久视频 | 国产欧美国产综合第一区 | 果冻传媒mv在线观看入口免费 | 啊好痛嗯轻一点免费 | 桥本有菜在线四虎福利网 | 亚洲毛片免费看 | 欧美一级片免费看 | 波多野结衣不卡 | 给我视频免费看 | 惊弦45集免费看 | 大学生按摩黄a级中文片 | 网址在线观看你懂我意思吧免费的 | 洗濯屋动漫在线观看 | 亚洲AV精品无码喷水直播间 | 午夜 在线播放 | 王淑兰与铁柱全文免费阅读 | 好大好硬好紧太深了受不了 | 欧美日韩亚洲国内综合网香蕉 | 婷婷色在线播放 | 息与子中文字幕完整在线 | 精品一区二区三区免费毛片 | 国产精品久久毛片蜜月 | 男人天堂日韩 | 99久久中文字幕伊人 | blackedhd 18sex| 欧美一级视频在线观看 | 深夜影院深a久久 | 毛片视频在线免费观看 | 欧美洲大黑香蕉在线视频 | 五月精品| 天天射夜夜爽 | 99视频精品国在线视频艾草 | 无码AV免费精品一区二区三区 | 精品亚洲欧美中文字幕在线看 | 日韩首页 | 日本欧美大码a在线视频播放 | 二次元美女内裤凹陷太深 | 草嫩社区| 四虎影视永久在线精品免费 | 嗯啊视频在线 | 碰91精品国产91久久婷婷 |