原文: https://github.com/akullpp/awesome-java
構(gòu)建
這里搜集了用來構(gòu)建應(yīng)用程序的工具尚辑。
Apache Maven:Maven使用聲明進(jìn)行構(gòu)建并進(jìn)行依賴管理北滥,偏向于使用約定而不是配置進(jìn)行構(gòu)建井赌。Maven優(yōu)于Apache Ant。后者采用了一種過程化的方式進(jìn)行配置舟铜,所以維護(hù)起來相當(dāng)困難戈盈。
Gradle:Gradle采用增量構(gòu)建。Gradle通過Groovy編程而不是傳統(tǒng)的XML聲明進(jìn)行配置深滚。Gradle可以很好地配合Maven進(jìn)行依賴管理奕谭,并且把Ant腳本當(dāng)作頭等公民。
字節(jié)碼操作
編程操作Java字節(jié)碼的函數(shù)庫痴荐。
ASM:通用底層字節(jié)碼操作及分析血柳。
Javassist:嘗試簡化字節(jié)碼編輯。
Byte Buddy:使用“流式API”進(jìn)一步簡化字節(jié)碼生成生兆。
代碼分析
軟件度量和質(zhì)量評估工具难捌。
Checkstyle:對編程規(guī)范和標(biāo)準(zhǔn)進(jìn)行靜態(tài)分析。
FindBugs:通過字節(jié)碼靜態(tài)分析找出潛在Bug鸦难。
PMD:對源代碼中不良編程習(xí)慣進(jìn)行分析根吁。
SonarQube:通過插件集成其它分析組件,提供評估最終結(jié)果報告合蔽。
編譯器
創(chuàng)建分析器击敌、解釋器和編譯器的框架。
ANTLR:功能完備的自頂向下分析復(fù)雜框架拴事。
JavaCC:相對ANTLR更具體沃斤,上手略為簡單。支持語法語法超前預(yù)測(syntactic lookahead)刃宵。
持續(xù)集成
支持持續(xù)集成衡瓶、測試和應(yīng)用發(fā)布的工具。
Bamboo:Atlassian的持續(xù)集成(CI)解決方案牲证,包含很多其它產(chǎn)品哮针。
CircleCI:提供托管服務(wù),可免費(fèi)試用。
Codeship:提供托管服務(wù)十厢,提供有限免費(fèi)計劃等太。
Go:ThoughtWork開源持續(xù)集成解決方案。
Jenkins:提供基于服務(wù)器的部署服務(wù)寿烟。
TeamCity:JetBrain持續(xù)集成方案澈驼,提供免費(fèi)版。
Travis:提供托管服務(wù)筛武,常用于開源項(xiàng)目缝其。
數(shù)據(jù)庫
簡化數(shù)據(jù)庫交互的工具、庫徘六。
Flyway:使用Java API輕松完成數(shù)據(jù)庫遷移内边。
H2:小型SQL數(shù)據(jù)庫,以內(nèi)存操作著稱待锈。
JDBI:便捷的JDBC抽象漠其。
jOOQ:基于SQL schema生成類型安全代碼。
Presto:針對大數(shù)據(jù)的分布式SQL查詢引擎竿音。
Querydsl:針對Java的類型安全統(tǒng)一查詢和屎。
日期和時間
處理日期和時間的函數(shù)庫。
Joda-Time:Java 8出現(xiàn)之前春瞬,它是日期柴信、時間處理的標(biāo)準(zhǔn)函數(shù)庫。
Time4J:Java高級日期宽气、時間函數(shù)庫随常。
依賴注入
幫助代碼實(shí)現(xiàn)控制反轉(zhuǎn)模式的函數(shù)庫。
Dagger :編譯期的注入框架萄涯,沒有使用反射绪氛,主要用于Android開發(fā)。
Guice:輕量級注入框架涝影,功能強(qiáng)大可與Dagger媲美枣察。
開發(fā)庫
從基礎(chǔ)層次上改進(jìn)開發(fā)流程。
AspectJ:面向切面編程擴(kuò)展燃逻,與程序無縫連接序目。
Auto:源代碼生成器集合。
DCEVM:通過修改JVM唆樊,在運(yùn)行時可無限次重定義已加載的類宛琅。OpenJDK 7刻蟹、8已提供支持逗旁,詳情可查看這個分支(fork)。
JRebel:商用軟件,無需重新部署可即時重新加載代碼及配置片效。
Lombok:代碼生成器红伦,旨在減少Java冗余代碼。
RxJava:使用JVM中可觀察序列淀衣,創(chuàng)建異步昙读、基于事件應(yīng)用程序的函數(shù)庫。
Spring Loaded:另一個JVM類重載代理膨桥。
vert.x:JVM多語言事件驅(qū)動應(yīng)用框架蛮浑。
分布式應(yīng)用
用來開發(fā)分布式、具有容錯性應(yīng)用程序的函數(shù)庫和框架只嚣。
Akka:構(gòu)建并發(fā)沮稚、分布式和具有容錯功能的事件驅(qū)動應(yīng)用程序所需的工具包和運(yùn)行時。
Apache Storm:分布式實(shí)時計算系統(tǒng)册舞。
Apache ZooKeeper:為大型分布式系統(tǒng)蕴掏,使用分布式配置、同步和命名注冊提供協(xié)調(diào)服務(wù)调鲸。
Hazelcast:分布式盛杰、高可擴(kuò)展性內(nèi)存網(wǎng)格。
Hystrix:為分布式系統(tǒng)提供延遲和容錯處理藐石。
JGroups:一組提供可靠消息傳輸?shù)墓ぞ甙垂捎脕韯?chuàng)建集群。集群中的節(jié)點(diǎn)可互相發(fā)送消息贯钩。
Quasar:為JVM提供輕量級線程和Actor募狂。
發(fā)布
使用本機(jī)格式分發(fā)Java應(yīng)用程序的工具。
Bintray:對二進(jìn)制發(fā)布進(jìn)行版本控制角雷,可與Maven或Gradle配合使用祸穷。
IzPack:為跨平臺部署建立授權(quán)工具。
Launch4j:將JAR包裝為小巧的Windows可執(zhí)行文件勺三。
packr:將程序JAR雷滚、資源和JVM打包成Windows、Linux和Mac OS X的本機(jī)文件吗坚。
文檔處理
用來處理Office格式文檔的函數(shù)庫祈远。
Apache POI:支持OOXML (XLSX、DOCX商源、PPTX)以及 OLE2 (XLS, DOC or PPT)格式的文檔车份。
jOpenDocument:處理OpenDocument格式文檔。
游戲開發(fā)
游戲開發(fā)框架牡彻。
jMonkeyEngine:支持現(xiàn)代3D開發(fā)的游戲引擎扫沼。
libGDX:全面的跨平臺高級開發(fā)框架出爹。
LWJGL:抽象了OpenGL、CL缎除、AL等函數(shù)庫的健壯框架严就。
GUI
用來創(chuàng)建現(xiàn)代圖形用戶界面的函數(shù)庫。
JavaFX:Swing的繼承者器罐。
Scene Builder:JavaFX虛擬布局工具梢为。
高性能
與高性能計算有關(guān)的資源,包括集合以及很多具體功能的函數(shù)庫轰坊。
Disruptor:線程間消息函數(shù)庫铸董。
fastutil:快速緊湊的Java類型安全集合。
GS Collections:受Smalltalk啟發(fā)的集合框架肴沫。
hftc:Hash set和hash map袒炉。
HPPC:基本類型集合。
Javolution:針對實(shí)時嵌入式系統(tǒng)的函數(shù)庫樊零。
Trove:基本類型集合我磁。
IDE
視圖簡化開發(fā)的集成開發(fā)環(huán)境。
Eclipse:后臺做了很多工作驻襟,以其豐富插件著稱夺艰。
IntelliJ IDEA:支持很多JVM語言,為Android開發(fā)提供了很多不錯的選項(xiàng)沉衣。其商業(yè)版本主要面向企業(yè)用戶郁副。
NetBeans:集成了很多Java SE和Java EE特性,包括數(shù)據(jù)庫訪問豌习、服務(wù)器存谎、HTML5以及AngularJS。
圖像處理
用來幫助創(chuàng)建肥隆、評估或操作圖形的函數(shù)庫既荚。
Picasso:Android下載圖像和圖像緩存函數(shù)庫。
ZXing:多種格式的一維栋艳、二維條形碼處理函數(shù)庫恰聘。
JSON
簡化JSON處理的函數(shù)庫。
Gson:將Java對象序列化為JSON及反向操作吸占。使用時提供了很好的性能晴叨。
Jackson:與GSON類似,但如果需要頻繁初始化Jackson庫會帶來性能問題矾屯。
JVM和JDK
目前的JVM兼蕊、JDK實(shí)現(xiàn)。
JDK 9:JDK 9早期訪問版本件蚕。
OpenJDK:開源實(shí)現(xiàn)孙技。
日志
記錄應(yīng)用程序的日志函數(shù)庫惧所。
Apache Log4j 2:對之前版本進(jìn)行了完全重寫。現(xiàn)在的版本具備一個強(qiáng)大的插件和配置架構(gòu)绪杏。
kibana:對日志進(jìn)行分析并進(jìn)行可視化。
Logback:Log4j原班人馬作品纽绍。被證明是一個強(qiáng)健的日志函數(shù)庫蕾久,通過Groovy提供了很多有意思的配置選項(xiàng)。
logstash:日志文件管理工具拌夏。
SLF4J:日志抽象層僧著,需要與某個具體日志框架配合使用。
機(jī)器學(xué)習(xí)
提供具體統(tǒng)計算法的工具障簿。其算法可從數(shù)據(jù)中學(xué)習(xí)盹愚。
Apache Hadoop:對商用硬件集群上大規(guī)模數(shù)據(jù)存儲和處理的開源軟件框架。
Apache Mahout:專注協(xié)同過濾站故、聚類和分類的可擴(kuò)展算法皆怕。
Apache Spark:開源數(shù)據(jù)分析集群計算框架。
h2o:用作大數(shù)據(jù)統(tǒng)計的分析引擎西篓。
Weka:用作數(shù)據(jù)挖掘的算法集合愈腾,包括從預(yù)處理到可視化的各個層次。
消息
在客戶端之間進(jìn)行消息傳遞岂津,確保協(xié)議獨(dú)立性的工具虱黄。
Apache ActiveMQ:實(shí)現(xiàn)JMS的開源消息代理(broker),可將同步通訊轉(zhuǎn)為異步通訊吮成。
Apache Kafka:高吞吐量分布式消息系統(tǒng)橱乱。
JBoss HornetQ:清晰、準(zhǔn)確粱甫、模塊化且方便嵌入的消息工具泳叠。
JeroMQ:ZeroMQ的純Java實(shí)現(xiàn)。
其它
其它資源茶宵。
Design Patterns:實(shí)現(xiàn)并解釋了最常見的設(shè)計模式析二。
Jimfs:內(nèi)存文件系統(tǒng)。
Lanterna:類似curses的簡單console文本GUI函數(shù)庫节预。
LightAdmin:可插入式CRUD UI函數(shù)庫叶摄,可用于快速應(yīng)用開發(fā)。
Metrics:創(chuàng)建自己的軟件度量或者為支持框架添加度量信息安拟,通過JMX或HTTP進(jìn)行發(fā)布或者發(fā)送到數(shù)據(jù)庫蛤吓。
OpenRefine:用來處理混亂數(shù)據(jù)的工具,包括清理糠赦、轉(zhuǎn)換会傲、使用Web Service進(jìn)行擴(kuò)展并將其關(guān)聯(lián)到數(shù)據(jù)庫锅棕。
RoboVM:Java編寫原生iOS應(yīng)用。
自然語言處理
用來專門處理文本的函數(shù)庫淌山。
Apache OpenNL:處理類似分詞等常見任務(wù)的工具裸燎。
CoreNLP:斯坦佛的CoreNLP提供了一組基礎(chǔ)工具,可以處理類似標(biāo)簽泼疑、實(shí)體名識別和情感分析這樣的任務(wù)德绿。
LingPipe:一組可以處理各種任務(wù)的工具集,支持POS標(biāo)簽退渗、情感分析等移稳。
Mallet:統(tǒng)計學(xué)自然語言處理、文檔分類会油、聚類个粱、主題建模等。
網(wǎng)絡(luò)
網(wǎng)絡(luò)編程函數(shù)庫翻翩。
Netty:構(gòu)建高性能網(wǎng)絡(luò)應(yīng)用程序開發(fā)框架都许。
OkHttp :一個Android和Java應(yīng)用的HTTP+SPDY客戶端。
ORM
處理對象持久化的API嫂冻。
EclipseLink:支持許多持久化標(biāo)準(zhǔn)梭稚,JPA、JAXB絮吵、JCA和SDO弧烤。
Hibernate:廣泛使用、強(qiáng)健的持久化框架蹬敲。Hibernate的技術(shù)社區(qū)非诚景海活躍。
Ebean:支持快速數(shù)據(jù)訪問和編碼的ORM框架伴嗡。
用來幫助創(chuàng)建PDF文件的資源急波。
Apache FOP:從XSL-FO創(chuàng)建PDF。
Apache PDFBox:用來創(chuàng)建和操作PDF的工具集瘪校。
DynamicReports:JasperReports的精簡版澄暮。
iText:一個易于使用的PDF函數(shù)庫,用來編程創(chuàng)建PDF文件阱扬。注意泣懊,用于商業(yè)用途時需要許可證。
JasperReports:一個復(fù)雜的報表引擎麻惶。
REST框架
用來創(chuàng)建RESTful 服務(wù)的框架馍刮。
Dropwizard:偏向于自己使用的Web框架。用來構(gòu)建Web應(yīng)用程序窃蹋,使用了Jetty卡啰、Jackson静稻、Jersey和Metrics。
Jersey:JAX-RS參考實(shí)現(xiàn)匈辱。
RESTEasy:經(jīng)過JAX-RS規(guī)范完全認(rèn)證的可移植實(shí)現(xiàn)振湾。
Retrofit:一個Java類型安全的REST客戶端。
Spark:受到Sinatra啟發(fā)的Java REST框架亡脸。
Swagger:Swagger是一個規(guī)范且完整的框架押搪,提供描述、生產(chǎn)梗掰、消費(fèi)和可視化RESTful Web Service。
科學(xué)
用于科學(xué)計算和分析的函數(shù)庫嗅回。
SCaVis:用于科學(xué)計算及穗、數(shù)據(jù)分析和數(shù)據(jù)可視化環(huán)境。
搜索
文檔索引引擎绵载,用于搜索和分析埂陆。
Apache Solr :一個完全的企業(yè)搜索引擎。為高吞吐量通信進(jìn)行了優(yōu)化娃豹。
Elasticsearch:一個分布式焚虱、支持多租戶(multitenant)全文本搜索引擎。提供了RESTful Web接口和無schema的JSON文檔懂版。
安全
用于處理安全鹃栽、認(rèn)證、授權(quán)或會話管理的函數(shù)庫躯畴。
Apache Shiro:執(zhí)行認(rèn)證民鼓、授權(quán)、加密和會話管理蓬抄。
Cryptomator:在云上進(jìn)行客戶端跨平臺透明加密丰嘉。
Keycloak:為瀏覽器應(yīng)用和RESTful Web Service集成SSO和IDM。目前還處于beta版本嚷缭,但是看起來非常有前途饮亏。
PicketLink:PicketLink是一個針對Java應(yīng)用進(jìn)行安全和身份認(rèn)證管理的大型項(xiàng)目(Umbrella Project)。
Spring Security:專注認(rèn)證阅爽、授權(quán)和多維度攻擊防護(hù)框架路幸。
序列化
用來高效處理序列化的函數(shù)庫。
FlatBuffers:序列化函數(shù)庫付翁,高效利用內(nèi)存劝赔,無需解包和解析即可高效訪問序列化數(shù)據(jù)。
Kryo:快速和高效的對象圖形序列化框架胆敞。
MessagePack:一種高效的二進(jìn)制序列化格式着帽。
服務(wù)器
用來部署應(yīng)用程序的服務(wù)器杂伟。
Apache Tomcat:針對Servlet和JSP的應(yīng)用服務(wù)器,健壯性好且適用性強(qiáng)仍翰。
Apache TomEE:Tomcat加Java EE赫粥。
GlassFish:Java EE開源參考實(shí)現(xiàn),由Oracle資助開發(fā)予借。
Jetty:輕量級越平、小巧的應(yīng)用服務(wù)器,通常會嵌入到項(xiàng)目中灵迫。
WildFly:之前被稱作JBoss秦叛,由Red Hat開發(fā)。支持很多Java EE功能瀑粥。
模版引擎
對模板中表達(dá)式進(jìn)行替換的工具挣跋。
Apache Velocity:提供HTML頁面模板、email模板和通用開源代碼生成器模板狞换。
FreeMarker:通用模板引擎避咆,不需要任何重量級或自己使用的依賴關(guān)系。
Handlebars.java:使用Java編寫的模板引擎修噪,邏輯簡單查库,支持語義擴(kuò)展(semantic Mustache)。
JavaServer Pages:通用網(wǎng)站模板黄琼,支持自定義標(biāo)簽庫樊销。
Thymeleaf:旨在替換JSP,支持XML文件脏款。
測試
測試內(nèi)容從對象到接口现柠,涵蓋性能測試和基準(zhǔn)測試工具。
Apache JMeter:功能性測試和性能評測弛矛。
Arquillian:集成測試和功能行測試平臺够吩,集成Java EE容器。
AssertJ:支持流式斷言提高測試的可讀性丈氓。
JMH:JVM微基準(zhǔn)測試工具周循。
JUnit:通用測試框架。
Mockito:在自動化單元測試中創(chuàng)建測試對象万俗,為TDD或BDD提供支持湾笛。
Selenium:為Web應(yīng)用程序提供可移植軟件測試框架。
Selenide:為Selenium提供精準(zhǔn)的周邊API闰歪,用來編寫穩(wěn)定且可讀的UI測試嚎研。
TestNG :測試框架。
VisualVM:提供可視化方式查看運(yùn)行中的應(yīng)用程序信息。
工具類
通用工具類函數(shù)庫临扮。
Apache Commons:提供各種用途的函數(shù)论矾,比如配置、驗(yàn)證杆勇、集合贪壳、文件上傳或XML處理等。
Guava:集合蚜退、緩存闰靴、支持基本類型、并發(fā)函數(shù)庫钻注、通用注解蚂且、字符串處理、I/O等幅恋。
javatuples:正如名字表示的那樣杏死,提供tuple支持。盡管目前tuple的概念還有留有爭議佳遣。
網(wǎng)絡(luò)爬蟲
用于分析網(wǎng)站內(nèi)容的函數(shù)庫识埋。
Apache Nutch :可用于生產(chǎn)環(huán)境的高度可擴(kuò)展凡伊、可伸縮的網(wǎng)絡(luò)爬蟲零渐。
Crawler4j:簡單的輕量級爬蟲。
JSoup :刮取系忙、解析诵盼、操作和清理HTML。
Web框架
用于處理Web應(yīng)用程序不同層次間通訊的框架银还。
Apache Tapestry:基于組件的框架风宁,使用Java創(chuàng)建動態(tài)、強(qiáng)健的蛹疯、高度可擴(kuò)展的Web應(yīng)用程序戒财。
Apache Wicket:基于組件的Web應(yīng)用框架,與Tapestry類似帶有狀態(tài)顯示GUI捺弦。
Google Web Toolkit:一組Web開發(fā)工具集饮寞,包含在客戶端將Java代碼轉(zhuǎn)為JavaScript的編譯器、XML解析器列吼、RCP API幽崩、JUnit集成、國際化支持和GUI控件寞钥。
Grails:Groovy框架慌申,旨在提供一個高效開發(fā)環(huán)境,使用約定而非配置理郑、沒有XML并支持混入(mixin)蹄溉。
Play: 使用約定而非配置咨油,支持代碼熱加載并在瀏覽器中顯示錯誤。
PrimeFaces:JSF框架类缤,提供免費(fèi)版和帶技術(shù)支持的商業(yè)版臼勉。包含一些前端組件。
Spring Boot:微框架餐弱,簡化了Spring新程序的開發(fā)過程宴霸。
Spring:旨在簡化Java EE的開發(fā)過程,提供依賴注入相關(guān)組件并支持面向切面編程膏蚓。
Vaadin:基于GWT構(gòu)建的事件驅(qū)動框架瓢谢。使用服務(wù)端架構(gòu),客戶端使用Ajax驮瞧。
Ninja:Java全棧Web開發(fā)框架氓扛。非常穩(wěn)固、快速和高效论笔。
Ratpack:一組Java開發(fā)函數(shù)庫采郎,用于構(gòu)建快速、高效狂魔、可擴(kuò)展且測試完備的HTTP應(yīng)用程序蒜埋。
社區(qū)
活躍的討論區(qū)。
r/java:Java社區(qū)的Subreddit最楷。
stackoverflow:問答平臺整份。
有影響的書籍
具有廣泛影響且值得閱讀的Java經(jīng)典書籍。
Effective Java (2nd Edition)
Java Concurrency in Practice | Java并發(fā)編程實(shí)戰(zhàn)
Thinking in Java | 中文版
播客
可以一邊編程一邊聽的東西籽孙。
The Java Posse
值得關(guān)注的帳號烈评。
Adam Bien:自由職業(yè)者、作家犯建、JavaONE明星演講者讲冠、顧問、Java Champion适瓦。
Antonio Goncalves:Java Champion竿开、JUG Leader、Devoxx France犹菇、Java EE 6/7德迹、JCP、作家揭芍。
Arun Gupta:Java Champion胳搞、JavaONE明星演講者、JUG Leader、Devoxx4Kids成員肌毅、Red Hatter筷转。
Bruno Borges:Oracle產(chǎn)品經(jīng)理、Java Jock悬而。
Ed Burns:Oracle技術(shù)團(tuán)隊顧問呜舒。
Eugen Paraschiv:Spring安全課程作者。
James Weaver:Java笨奠、JavaFX袭蝗、IoT開發(fā)者、作者和演講者般婆。
Java EE:Java EE Twitter官方賬號到腥。
Java Magazine:Java雜志官方賬號。
Java.net:Java.net官方賬號蔚袍。
Java:Java Twitter官方賬號乡范。
Javin Paul:知名Java博客作者。
Lukas Eder:Data Geekery(jOOQ)創(chuàng)始人兼CEO啤咽。
Mario Fusco:RedHatter晋辆、JUG協(xié)調(diào)、活躍講師和作者宇整。
Mark Reinhold:Oracle首席架構(gòu)師瓶佳、Java平臺開發(fā)組。
Martijn Verburg:London JUG co-leader没陡、演講者涩哟、作家索赏、Java Champion等盼玄。
OpenJDK:OpenJDK官方賬號。
Reza Rahman:Java EE潜腻、GlassFish埃儿、WebLogic傳道者、作家融涣、演講者童番、開源黑客。
Simon Maple:Java Champion威鹿、virtualJUG創(chuàng)始人剃斧、LJC leader、RebelLabs作者忽你。
Stephen Colebourne: Java Champion幼东、演講者。
Tim Boudreau:作家、NetBeans大牛根蟹。
Trisha Gee:Java Champion脓杉、演講者。
網(wǎng)站
值得閱讀的網(wǎng)站简逮。
Google Java Style
InfoQ
Java Code Geeks
Java.net
Javalobby
JavaWorld
RebelLabs
The Java Specialist’ Newsletter
TheServerSide.com
Thoughts On Java
ImportNew