Java應用程序開發相關工具集合
構建
這里搜集了用來構建應用程序的工具。
-
Apache Maven:Maven使用聲明進行構建并進行依賴管理,偏向于使用約定而不是配置進行構建。Maven優于Apache Ant。后者采用了一種過程化的方式進行配置,所以維護起來相當困難。
</li> -
Gradle:Gradle采用增量構建。Gradle通過Groovy編程而不是傳統的XML聲明進行配置。Gradle可以很好地配合Maven進行依賴管理,并且把Ant腳本當作頭等公民。
</li> </ul>字節碼操作
編程操作Java字節碼的函數庫。
-
ASM:通用底層字節碼操作及分析。
</li> -
Javassist:嘗試簡化字節碼編輯。
</li> -
Byte Buddy:使用“流式API”進一步簡化字節碼生成。
</li> </ul>代碼分析
軟件度量和質量評估工具。
-
Checkstyle:對編程規范和標準進行靜態分析。
</li> -
FindBugs:通過字節碼靜態分析找出潛在Bug。
</li> -
PMD:對源代碼中不良編程習慣進行分析。
</li> -
SonarQube:通過插件集成其它分析組件,提供評估最終結果報告。
</li> </ul>編譯器
創建分析器、解釋器和編譯器的框架。
-
ANTLR:功能完備的自頂向下分析復雜框架。
</li> -
JavaCC:相對ANTLR更具體,上手略為簡單。支持語法語法超前預測(syntactic lookahead)。
</li> </ul>持續集成
支持持續集成、測試和應用發布的工具。
-
Bamboo:Atlassian的持續集成(CI)解決方案,包含很多其它產品。
</li> -
CircleCI:提供托管服務,可免費試用。
</li> -
Codeship:提供托管服務,提供有限免費計劃。
</li> -
Go:ThoughtWork開源持續集成解決方案。
</li> -
Jenkins:提供基于服務器的部署服務。
</li> -
TeamCity:JetBrain持續集成方案,提供免費版。
</li> -
Travis:提供托管服務,常用于開源項目。
</li> </ul>數據庫
簡化數據庫交互的工具、庫。
-
Flyway:使用Java API輕松完成數據庫遷移。
</li> -
H2:小型SQL數據庫,以內存操作著稱。
</li> -
JDBI:便捷的JDBC抽象。
</li> -
jOOQ:基于SQL schema生成類型安全代碼。
</li> -
Presto:針對大數據的分布式SQL查詢引擎。
</li> -
Querydsl:針對Java的類型安全統一查詢。
</li> </ul>日期和時間
處理日期和時間的函數庫。
-
Joda-Time:Java 8出現之前,它是日期、時間處理的標準函數庫。
</li> -
Time4J:Java高級日期、時間函數庫。
</li> </ul>依賴注入
幫助代碼實現控制反轉模式的函數庫。
-
Dagger :編譯期的注入框架,沒有使用反射,主要用于Android開發。
</li> -
Guice:輕量級注入框架,功能強大可與Dagger媲美。
</li> </ul>開發庫
從基礎層次上改進開發流程。
-
AspectJ:面向切面編程擴展,與程序無縫連接。
</li> -
Auto:源代碼生成器集合。
</li> -
DCEVM:通過修改JVM,在運行時可無限次重定義已加載的類。OpenJDK 7、8已提供支持,詳情可查看這個分支(fork)。
</li> -
JRebel:商用軟件,無需重新部署可即時重新加載代碼及配置。
</li> -
Lombok:代碼生成器,旨在減少Java冗余代碼。
</li> -
RxJava:使用JVM中可觀察序列,創建異步、基于事件應用程序的函數庫。
</li> -
Spring Loaded:另一個JVM類重載代理。
</li> -
vert.x:JVM多語言事件驅動應用框架。
</li> </ul>分布式應用
用來開發分布式、具有容錯性應用程序的函數庫和框架。
-
Akka:構建并發、分布式和具有容錯功能的事件驅動應用程序所需的工具包和運行時。
</li> -
Apache Storm:分布式實時計算系統。
</li> -
Apache ZooKeeper:為大型分布式系統,使用分布式配置、同步和命名注冊提供協調服務。
</li> -
Hazelcast:分布式、高可擴展性內存網格。
</li> -
Hystrix:為分布式系統提供延遲和容錯處理。
</li> -
JGroups:一組提供可靠消息傳輸的工具包,可用來創建集群。集群中的節點可互相發送消息。
</li> -
Quasar:為JVM提供輕量級線程和Actor。
</li> </ul>發布
使用本機格式分發Java應用程序的工具。
-
Bintray:對二進制發布進行版本控制,可與Maven或Gradle配合使用。
</li> -
IzPack:為跨平臺部署建立授權工具。
</li> -
Launch4j:將JAR包裝為小巧的Windows可執行文件。
</li> -
packr:將程序JAR、資源和JVM打包成Windows、Linux和Mac OS X的本機文件。
</li> </ul>文檔處理
用來處理Office格式文檔的函數庫。
-
Apache POI:支持OOXML (XLSX、DOCX、PPTX)以及 OLE2 (XLS, DOC or PPT)格式的文檔。
</li> -
jOpenDocument:處理OpenDocument格式文檔。
</li> </ul>游戲開發
游戲開發框架。
-
jMonkeyEngine:支持現代3D開發的游戲引擎。
</li> -
libGDX:全面的跨平臺高級開發框架。
</li> -
LWJGL:抽象了OpenGL、CL、AL等函數庫的健壯框架。
</li> </ul>GUI
用來創建現代圖形用戶界面的函數庫。
-
JavaFX:Swing的繼承者。
</li> -
Scene Builder:JavaFX虛擬布局工具。
</li> </ul>高性能
與高性能計算有關的資源,包括集合以及很多具體功能的函數庫。
-
Disruptor:線程間消息函數庫。
</li> -
fastutil:快速緊湊的Java類型安全集合。
</li> -
GS Collections:受Smalltalk啟發的集合框架。
</li> -
hftc:Hash set和hash map。
</li> -
HPPC:基本類型集合。
</li> -
Javolution:針對實時嵌入式系統的函數庫。
</li> -
Trove:基本類型集合。
</li> </ul>IDE
視圖簡化開發的集成開發環境。
-
Eclipse:后臺做了很多工作,以其豐富插件著稱。
</li> -
IntelliJ IDEA:支持很多JVM語言,為Android開發提供了很多不錯的選項。其商業版本主要面向企業用戶。
</li> -
NetBeans:集成了很多Java SE和Java EE特性,包括數據庫訪問、服務器、HTML5以及AngularJS。
</li> </ul>圖像處理
用來幫助創建、評估或操作圖形的函數庫。
-
Picasso:Android下載圖像和圖像緩存函數庫。
</li> -
ZXing:多種格式的一維、二維條形碼處理函數庫。
</li> </ul>JSON
簡化JSON處理的函數庫。
-
Gson:將Java對象序列化為JSON及反向操作。使用時提供了很好的性能。
</li> -
Jackson:與GSON類似,但如果需要頻繁初始化Jackson庫會帶來性能問題。
</li> </ul>JVM和JDK
目前的JVM、JDK實現。
-
JDK 9:JDK 9早期訪問版本。
</li> -
OpenJDK:開源實現。
</li> </ul>日志
記錄應用程序的日志函數庫。
-
Apache Log4j 2:對之前版本進行了完全重寫。現在的版本具備一個強大的插件和配置架構。
</li> -
kibana:對日志進行分析并進行可視化。
</li> -
Logback:Log4j原班人馬作品。被證明是一個強健的日志函數庫,通過Groovy提供了很多有意思的配置選項。
</li> -
logstash:日志文件管理工具。
</li> -
SLF4J:日志抽象層,需要與某個具體日志框架配合使用。
</li> </ul>機器學習
提供具體統計算法的工具。其算法可從數據中學習。
-
Apache Hadoop:對商用硬件集群上大規模數據存儲和處理的開源軟件框架。
</li> -
Apache Mahout:專注協同過濾、聚類和分類的可擴展算法。
</li> -
Apache Spark:開源數據分析集群計算框架。
</li> -
h2o:用作大數據統計的分析引擎。
</li> -
Weka:用作數據挖掘的算法集合,包括從預處理到可視化的各個層次。
</li> </ul>消息
在客戶端之間進行消息傳遞,確保協議獨立性的工具。
-
Apache ActiveMQ:實現JMS的開源消息代理(broker),可將同步通訊轉為異步通訊。
</li> -
Apache Kafka:高吞吐量分布式消息系統。
</li> -
JBoss HornetQ:清晰、準確、模塊化且方便嵌入的消息工具。
</li> -
JeroMQ:ZeroMQ的純Java實現。
</li> </ul>其它
其它資源。
-
Design Patterns:實現并解釋了最常見的設計模式。
</li> -
Jimfs:內存文件系統。
</li> -
Lanterna:類似curses的簡單console文本GUI函數庫。
</li> -
LightAdmin:可插入式CRUD UI函數庫,可用于快速應用開發。
</li> -
Metrics:創建自己的軟件度量或者為支持框架添加度量信息,通過JMX或HTTP進行發布或者發送到數據庫。
</li> -
OpenRefine:用來處理混亂數據的工具,包括清理、轉換、使用Web Service進行擴展并將其關聯到數據庫。
</li> -
RoboVM:Java編寫原生iOS應用。
</li> </ul>自然語言處理
用來專門處理文本的函數庫。
-
Apache OpenNL:處理類似分詞等常見任務的工具。
</li> -
CoreNLP:斯坦佛的CoreNLP提供了一組基礎工具,可以處理類似標簽、實體名識別和情感分析這樣的任務。
</li> -
LingPipe:一組可以處理各種任務的工具集,支持POS標簽、情感分析等。
</li> -
Mallet:統計學自然語言處理、文檔分類、聚類、主題建模等。
</li> </ul>網絡
網絡編程函數庫。
-
Netty:構建高性能網絡應用程序開發框架。
</li> -
OkHttp :一個Android和Java應用的HTTP+SPDY客戶端。
</li> </ul>ORM
處理對象持久化的API。
-
EclipseLink:支持許多持久化標準,JPA、JAXB、JCA和SDO。
</li> -
Hibernate:廣泛使用、強健的持久化框架。Hibernate的技術社區非常活躍。
</li> -
Ebean:支持快速數據訪問和編碼的ORM框架。
</li> </ul>PDF
用來幫助創建PDF文件的資源。
-
Apache FOP:從XSL-FO創建PDF。
</li> -
Apache PDFBox:用來創建和操作PDF的工具集。
</li> -
DynamicReports:JasperReports的精簡版。
</li> -
iText:一個易于使用的PDF函數庫,用來編程創建PDF文件。注意,用于商業用途時需要許可證。
</li> -
JasperReports:一個復雜的報表引擎。
</li> </ul>REST框架
用來創建RESTful 服務的框架。
-
Dropwizard:偏向于自己使用的Web框架。用來構建Web應用程序,使用了Jetty、Jackson、Jersey和Metrics。
</li> -
Jersey:JAX-RS參考實現。
</li> -
RESTEasy:經過JAX-RS規范完全認證的可移植實現。
</li> -
Retrofit:一個Java類型安全的REST客戶端。
</li> -
Spark:受到Sinatra啟發的Java REST框架。
</li> -
Swagger:Swagger是一個規范且完整的框架,提供描述、生產、消費和可視化RESTful Web Service。
</li> </ul>科學
用于科學計算和分析的函數庫。
-
SCaVis:用于科學計算、數據分析和數據可視化環境。
</li> </ul>搜索
文檔索引引擎,用于搜索和分析。
-
Apache Solr :一個完全的企業搜索引擎。為高吞吐量通信進行了優化。
</li> -
Elasticsearch:一個分布式、支持多租戶(multitenant)全文本搜索引擎。提供了RESTful Web接口和無schema的JSON文檔。
</li> </ul>安全
用于處理安全、認證、授權或會話管理的函數庫。
-
Apache Shiro:執行認證、授權、加密和會話管理。
</li> -
Cryptomator:在云上進行客戶端跨平臺透明加密。
</li> -
Keycloak:為瀏覽器應用和RESTful Web Service集成SSO和IDM。目前還處于beta版本,但是看起來非常有前途。
</li> -
PicketLink:PicketLink是一個針對Java應用進行安全和身份認證管理的大型項目(Umbrella Project)。
</li> -
Spring Security:專注認證、授權和多維度攻擊防護框架。
</li> </ul>序列化
用來高效處理序列化的函數庫。
-
FlatBuffers:序列化函數庫,高效利用內存,無需解包和解析即可高效訪問序列化數據。
</li> -
Kryo:快速和高效的對象圖形序列化框架。
</li> -
MessagePack:一種高效的二進制序列化格式。
</li> </ul>服務器
用來部署應用程序的服務器。
-
Apache Tomcat:針對Servlet和JSP的應用服務器,健壯性好且適用性強。
</li> -
Apache TomEE:Tomcat加Java EE。
</li> -
GlassFish:Java EE開源參考實現,由Oracle資助開發。
</li> -
Jetty:輕量級、小巧的應用服務器,通常會嵌入到項目中。
</li> -
WildFly:之前被稱作JBoss,由Red Hat開發。支持很多Java EE功能。
</li> </ul>模版引擎
對模板中表達式進行替換的工具。
-
Apache Velocity:提供HTML頁面模板、email模板和通用開源代碼生成器模板。
</li> -
FreeMarker:通用模板引擎,不需要任何重量級或自己使用的依賴關系。
</li> -
Handlebars.java:使用Java編寫的模板引擎,邏輯簡單,支持語義擴展(semantic Mustache)。
</li> -
JavaServer Pages:通用網站模板,支持自定義標簽庫。
</li> -
Thymeleaf:旨在替換JSP,支持XML文件。
</li> </ul>測試
測試內容從對象到接口,涵蓋性能測試和基準測試工具。
-
Apache JMeter:功能性測試和性能評測。
</li> -
Arquillian:集成測試和功能行測試平臺,集成Java EE容器。
</li> -
AssertJ:支持流式斷言提高測試的可讀性。
</li> -
JMH:JVM微基準測試工具。
</li> -
JUnit:通用測試框架。
</li> -
Mockito:在自動化單元測試中創建測試對象,為TDD或BDD提供支持。
</li> -
Selenium:為Web應用程序提供可移植軟件測試框架。
</li> -
Selenide:為Selenium提供精準的周邊API,用來編寫穩定且可讀的UI測試。
</li> -
TestNG :測試框架。
</li> -
VisualVM:提供可視化方式查看運行中的應用程序信息。
</li> </ul>工具類
通用工具類函數庫。
-
Apache Commons:提供各種用途的函數,比如配置、驗證、集合、文件上傳或XML處理等。
</li> -
Guava:集合、緩存、支持基本類型、并發函數庫、通用注解、字符串處理、I/O等。
</li> -
javatuples:正如名字表示的那樣,提供tuple支持。盡管目前tuple的概念還有留有爭議。
</li> </ul>網絡爬蟲
用于分析網站內容的函數庫。
-
Apache Nutch :可用于生產環境的高度可擴展、可伸縮的網絡爬蟲。
</li> -
Crawler4j:簡單的輕量級爬蟲。
</li> -
JSoup :刮取、解析、操作和清理HTML。
</li> </ul>Web框架
用于處理Web應用程序不同層次間通訊的框架。
-
Apache Tapestry:基于組件的框架,使用Java創建動態、強健的、高度可擴展的Web應用程序。
</li> -
Apache Wicket:基于組件的Web應用框架,與Tapestry類似帶有狀態顯示GUI。
</li> -
Google Web Toolkit:一組Web開發工具集,包含在客戶端將Java代碼轉為JavaScript的編譯器、XML解析器、RCP API、JUnit集成、國際化支持和GUI控件。
</li> -
Grails:Groovy框架,旨在提供一個高效開發環境,使用約定而非配置、沒有XML并支持混入(mixin)。
</li> -
Play: 使用約定而非配置,支持代碼熱加載并在瀏覽器中顯示錯誤。
</li> -
PrimeFaces:JSF框架,提供免費版和帶技術支持的商業版。包含一些前端組件。
</li> -
Spring Boot:微框架,簡化了Spring新程序的開發過程。
</li> -
Spring:旨在簡化Java EE的開發過程,提供依賴注入相關組件并支持面向切面編程。
</li> -
Vaadin:基于GWT構建的事件驅動框架。使用服務端架構,客戶端使用Ajax。
</li> -
Ninja:Java全棧Web開發框架。非常穩固、快速和高效。
</li> -
Ratpack:一組Java開發函數庫,用于構建快速、高效、可擴展且測試完備的HTTP應用程序。
</li> </ul>資源
社區
活躍的討論區。
-
r/java:Java社區的Subreddit。
</li> -
stackoverflow:問答平臺。
</li> </ul>有影響的書籍
具有廣泛影響且值得閱讀的Java經典書籍。
- </li>
- </li>
-
</li>
</ul>
播客
可以一邊編程一邊聽的東西。
-
</li>
</ul>
推ter
值得關注的帳號。
-
Adam Bien:自由職業者、作家、JavaONE明星演講者、顧問、Java Champion。
</li> -
Antonio Goncalves:Java Champion、JUG Leader、Devoxx France、Java EE 6/7、JCP、作家。
</li> -
Arun Gupta:Java Champion、JavaONE明星演講者、JUG Leader、Devoxx4Kids成員、Red Hatter。
</li> -
Bruno Borges:Oracle產品經理、Java Jock。
</li> -
Ed Burns:Oracle技術團隊顧問。
</li> -
Eugen Paraschiv:Spring安全課程作者。
</li> -
James Weaver:Java、JavaFX、IoT開發者、作者和演講者。
</li> -
Java EE:Java EE 推ter官方賬號。
</li> -
Java Magazine:Java雜志官方賬號。
</li> -
Java.net:Java.net官方賬號。
</li> -
Java:Java 推ter官方賬號。
</li> -
Javin Paul:知名Java博客作者。
</li> -
Lukas Eder:Data Geekery(jOOQ)創始人兼CEO。
</li> -
Mario Fusco:RedHatter、JUG協調、活躍講師和作者。
</li> -
Mark Reinhold:Oracle首席架構師、Java平臺開發組。
</li> -
Martijn Verburg:London JUG co-leader、演講者、作家、Java Champion等。
</li> -
OpenJDK:OpenJDK官方賬號。
</li> -
Reza Rahman:Java EE、GlassFish、WebLogic傳道者、作家、演講者、開源黑客。
</li> -
Simon Maple:Java Champion、virtualJUG創始人、LJC leader、RebelLabs作者。
</li> -
Stephen Colebourne: Java Champion、演講者。
</li> -
Tim Boudreau:作家、NetBeans大牛。
</li> -
Trisha Gee:Java Champion、演講者。
</li> </ul>網站
值得閱讀的網站。
- </li>
- </li>
- </li>
- </li> </ul>
-
-
</li>
</ul>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-