推薦Java 中優秀的第三方開源 jar 包
1. log4j
理由:向system.out.println()說永別,剛開始學java的時候總是喜歡依靠system.out.println()的輸出來檢視異常和除錯。後來工作後就果斷log4j了,這樣專案開發和釋出的時候,可以根據自己的需求開關日誌級別,把日誌列印到遠端服務等多種功能。現在這個基本成為標配了。
2.guava
google出品的第三方工具庫。當java.util 提供的資料結構不能滿足的時候從這裡你可以快速找到大量已經寫好的資料結構了,這使得你不用花費心思在一些常用的資料結構上了。比如LRU快取之類的。只是好幾個版本的跨度比較大,相容也不怎麼好。
3.apache commons 包含的元件 http://commons.apache.org/。
apache commons 涵蓋了大量的小工具,比如發郵件(線上告警用),快速且方便的IO操作封裝。等等工具很多,可以自己慢慢去學習。
4.netty
一個網路通訊框架,當需要實現自定義協議的時候我就用這個,netty的新版本自帶了很多協議的實現版本,這是搞網路快速開發不二的選擇。
5.httpclient 系列
主要是用在測試線上服務的時候用的。畢竟是一個基於http協議網路工具,當開發的web上線的時候,利用httpclient來寫測試用例,效果很不錯。測試的工具有很多,但是這個可以滿足你定製http請求的需求。
6.jetty
httpclient 的同一個專案下有一個簡易的http server 但是沒有實現servlet,這個時候jetty的效果就體現出來了。特別的是,當你打算對 jsp jstl 等方式編寫的網頁進行功能測試的時候,jetty就可以承擔 mock的作用,好用得很。使得你可以在junit的框架下對jsp編寫的網頁進行測試。
7.maven
現在的java已經離不開這個玩意了。你可以自己搭建一個nexus 來做maven私服。當你存在RPC的需求的時候。完全可以把自己的介面部分和client打包上傳到maven私服,呼叫的服務只需要include這個包就可以遠端呼叫你的服務了。在國內配合上dubbo這類 SOA框架。那個效果酸爽的很。完成了實際意義上的介面於實現在網路層級的分離。讓java 的package 形成一個網路上的package。需要某個服務的時候,include 直接呼叫。其他的一律不用管。
8. Disruptor http://lmax-exchange.github.io/disruptor/
高效能的併發框架,一般用來在涉及到 生產者--消費者模型的時候會用到。拋開效能不談(實際上效能相當棒)它的抽象方式和介面都設計得很好。
9.quartz http://www.quartz-scheduler.org/
一個排程器,當涉及到多工定時呼叫的時候這個框架能幫上非常多。特別在網路遊戲伺服器中,如果需要定時或者短時定時來做某些事情的時候(使用者的長時間buff狀態,重新整理時間等),quart是一個非常不錯的選擇。如果時間比較短的話,利用java內建的DelayQueue 也可以。
10.jOOQ/jOOQ · GitHub
用來替代hibernate等,第一次用的時候就眼前一亮。之前用hibernate的時候,如果遇到複雜查詢需要優化,是個很麻煩的事情,dba給的建議肯定是基於sql的,需要在sql、hql之間轉來轉去,或者用原生sql去做。
jooq基本就解決了這個問題,掌握一門sql就可以了