1. 程式人生 > >Java資源大全(元件、工具等)

Java資源大全(元件、工具等)

Awesome系列的Java資源整理。awesome-java 就是akullpp發起維護的Java資源列表,內容包括:構建工具、資料庫、框架、模板、安全、程式碼分析、日誌、第三方庫、書籍、Java 站點等等。

業務流程管理套件

流程驅動的軟體系統構建,中介軟體。

  • jBPM:非常靈活的業務流程管理框架,致力於構建開發與業務分析人員之間的橋樑。 官網
  • Activiti:新一代的開源 BPM 引擎,核心是基於 Java 的超快速、超穩定的 BPMN 2.0 流程引擎,強調流程服務的可嵌入性和可擴充套件性。 官網  下載

經典的工具與庫 (Ancients)

In existence since the beginning of time and which will continue being used long after the hype has waned.自從一開始就存在,並且在炒作已經消失之後將繼續使用。

  • Apache Hadoop - 商品硬體叢集資料集的儲存和大規模處理。
  • Apache Velocity -一般HTML頁面,電子郵件或原始碼生成的模板。
  • FreeMarker -一般模板引擎沒有任何重量級或意見依賴。
  • GlassFish - Oracle支援的Java EE的應用伺服器和參考實現。
  • GWT - 工具箱包括客戶端程式碼的Java到JavaScript編譯器,XML解析器,RPC的API,JUnit整合,GUI的國際化支援和小部件。
  • HornetQ -清晰,簡潔,模組化,並被嵌入。
  • Hudson - 持續整合伺服器仍在積極發展。
  • Java Modeling Language (JML) - 行為介面規範語言,可用於指定程式碼模組的行為。 它結合了埃菲爾的合同方式的設計和介面規範語言的Larch系列的基於模型的規範方法,以及細化演算的一些要素。 由其他幾種驗證工具使用。
  • JavaCC - 更具體,稍微更容易學習。
  • JavaServer Faces - Oracle的開源實施JSF標準,Mojarra。
  • JUnit - 通用測試框架。
  • Launch4j - 將JAR包裝在輕量級和本機Windows可執行檔案中。
  • Quartz - 具有Apache 2.0許可證的開源作業排程程式庫。
  • Trove - 原始集合

Bean對映 (Bean Mapping)

Frameworks that ease bean mapping.簡化Bean對映的框架。

  • Dozer - 使用註釋,API或XML配置將資料從一個物件複製到另一個物件的對映器。
  • JMapper - 使用位元組碼操作進行閃電快速對映。 支援註釋,API或XML配置。
  • MapStruct - 程式碼生成器,它簡化了不同bean型別之間的對映,基於配置方法的約定。
  • ModelMapper -ModelMapper是一個智慧物件對映庫,可自動對映物件。
  • Orika - Orika是一個Java Bean對映框架,它將資料從一個物件遞迴到另一個物件.
  • Selma - 愚蠢簡單的靜態連結對映器。 Selma是一個基於註釋處理器的bean對映器。

構建工具 (Build)

Tools which handle the build cycle and dependencies of an application.處理應用程式的構建週期和依賴關係的工具。

  • Apache Maven - 宣告式構建和依賴關係管理,有利於配置的約定。 可能更喜歡Apache Ant,它使用相當程式的方法,可能難以維護。
  • Bazel - 從Google構建工具,快速可靠地構建程式碼。
  • Gradle -通過Groovy程式設計的增量構建,而不是宣告XML。 適用於Maven依賴管理。

位元組碼操作 (Bytecode Manipulation)

Libraries to manipulate bytecode programmatically.以程式設計方式操縱位元組碼的庫。

  • ASM - 所有目的,低級別,位元組碼操作和分析。
  • Byte Buddy - 進一步簡化使用流暢API的位元組碼生成。
  • Byteman - 執行時通過DSL(規則)操作位元組碼,主要用於測試/故障排除。
  • cglib - 位元組程式碼生成庫。

快取 (Caching)

Libraries which provide caching facilities.提供快取設施的圖書館。

群集管理 (Cluster Management)

Frameworks which can dynamically manage applications inside of a cluster.可以動態管理叢集內的應用程式的框架。

  • Apache Aurora - Apache Aurora是用於長時間執行服務和cron作業的Mesos框架。
  • Apache Mesos - 從機器上摘取CPU,記憶體,儲存和其他計算資源。
  • Singularity - 奇異性是一種Mesos框架,使部署和操作變得容易。 它支援Web服務,後臺工作人員,預定工作和一次性任務。

程式碼分析 (Code Analysis)

Tools that provide metrics and quality measurements.提供指標和質量測量的工具

  • Codacy - 持續的靜態分析,程式碼覆蓋率和軟體指標,以自動執行程式碼審查。
  • Error Prone -將常見的程式設計錯誤視為編譯時錯誤。
  • FindBugs - 位元組碼的靜態分析以發現潛在的錯誤。
  • Infer - 產生潛在錯誤列表的工具。
  • jQAssistant - 使用基於Neo4J的查詢語言進行靜態程式碼分析。
  • PMD - 用於查詢不良編碼實踐的原始碼分析。
  • SonarQube - 通過外掛整合其他分析元件,並隨時間提供指標的概述。
  • Spoon - 用於分析和轉換Java原始碼的庫。

程式碼覆蓋 (Code Coverage)

Frameworks and tools that enable collection of code coverage metrics for test suites.允許收集測試套件的程式碼覆蓋率指標的框架和工具。

  • Clover -Atlassian的專有程式碼覆蓋工具,依賴於原始碼檢測,而不是位元組碼檢測.
  • Cobertura - 依賴離線(或靜態)位元組碼儀器和類載入來收集程式碼覆蓋度量; GPLv2許可
  • JaCoCo -使用離線和執行時位元組碼工具集的程式碼覆蓋率指標的框架; EclEmma,Eclipse程式碼覆蓋外掛突出使用。

程式碼生成 (Code Generators)

Tools that generate patterns for repetitive code in order to reduce verbosity and error-proneness.生成重複程式碼模式的工具,以減少冗長度和錯誤傾向。

  • ADT4J - 用於代數資料型別的JSR-269程式碼生成器。
  • Auto -生成工廠,服務和價值類。
  • Immutables - 註釋處理器生成簡單,安全和一致的值物件.
  • JHipster - 用於Spring Boot和AngularJS的Yeoman原始碼生成器。
  • Joda-Beans - 小型框架可以將可查詢的屬性新增到Java中,從而增強JavaBeans.
  • Lombok -旨在減少冗長度的程式碼生成器。

命令列引數解析器 (Command-line Argument Parsers)

Libraries that make it easy to parse command line options, arguments, etc.可以方便地解析命令列選項,引數等的庫

  • Airline -用於解析Git的基於註釋的框架,如命令列引數。
  • args4j - 小庫來解析類似於javac的引數。
  • JCommander -命令列引數通過實現介面解析框架與自定義型別和驗證.
  • JOpt Simple -使用POSIX getopt()和GNU getopt_long()語法的簡單解析器。 不使用註釋,而是使用流暢的API。

編譯器 (Compiler-compiler)

Frameworks that help to create parsers, interpreters or compilers.有助於建立解析器,直譯器或編譯器的框架。

  • ANTLR -複雜的全功能框架,用於自頂向下的解析。
  • JFlex -詞彙分析儀

配置 (Configuration)

Libraries that provide external configuration.提供外部配置的庫。

  • config - JVM語言的配置庫。
  • ini4j - 提供一個處理Windows的INI檔案的API。
  • owner - 減少屬性樣板。
  • KAConf - 基於註釋的Java和Kotlin配置系統。

約束滿足問題求解器(Constraint Satisfaction Problem Solver)

Libraries that help on implementing optimization and satisfiability problems.有助於實現優化和可滿足性問題的庫。

  • Choco - 使用約束程式設計技術的現成約束滿足問題求解器。
  • JaCoP -包括FlatZinc語言的介面,使其能夠執行MiniZinc模型。

持續整合(Continuous Integration)

Tools which support continuously building, testing and releasing applications.支援連續構建,測試和釋出應用程式的工具。

  • Bamboo -Atlassian的解決方案與其他產品的良好整合。 您可以申請開源許可證或購買。
  • Concourse -提供具有可在版本控制中儲存的配置的碼頭化管道。
  • Go - ThoughtWorks開源解決方案。
  • Jenkins -提供基於伺服器的部署服務。
  • TeamCity - JetBrains CI解決方案免費版本。
  • Travis - 託管服務經常用於開源專案。

(CSV)

Frameworks and libraries that simplify reading/writing CSV data.簡化讀取/寫入CSV資料的框架和庫。

  • Super CSV -強大的CSV解析器,支援Dozer,Joda-Time和Java 8。
  • uniVocity-parsers -其中一個速度最快,功能最完整的CSV。 還附帶TSV和固定寬度記錄的解析器。

資料庫(Database)

Everything which simplifies interactions with the database.一切都簡化了與資料庫的互動。

  • Apache Hive -資料倉庫基礎設施建在Hadoop之上。
  • Apache Phoenix - 用於低延遲應用的HBase高效能關係資料庫層。
  • Chronicle Map - 高效的記憶體中(選擇持久儲存到磁碟)非堆疊鍵值儲存。
  • eXist - 一個NoSQL文件資料庫和應用平臺。
  • FlexyPool - 為最常見的連線池解決方案提供指標和故障轉移策略。
  • Flyway - 簡單的資料庫遷移工具。
  • H2 - 小型資料庫顯示其記憶體中的功能。
  • HikariCP - 高效能JDBC連線池。
  • JDBI -JDBC的方便抽象。
  • Jedis - 與redis互動的小客戶端,具有命令的方法。
  • jOOQ -生成基於SQL模式的型別安全程式碼。
  • Liquibase - 資料庫獨立庫,用於跟蹤,管理和應用資料庫模式更改。
  • MapDB -嵌入式資料庫引擎,提供在磁碟或非堆記憶體中支援的併發集合。
  • Presto -分散式SQL查詢引擎,用於大資料。
  • Querydsl -Typesafe統一查詢。
  • Realm - 移動資料庫直接在手機,平板電腦或可穿戴式電腦內部執行。
  • Redisson -在Redis伺服器之上允許分散式和可擴充套件的資料結構。
  • Speedment - 利用Java 8 Stream API進行查詢的資料庫訪問庫。
  • sql2o -簡化JDBC封裝,簡化了資料庫訪問,並簡化了將ResultSet對映到POJO。
  • Vibur DBCP - 提供高階效能監控功能的JDBC連線池庫

資料結構(Data structures)

Efficient and specific data structures.高效和具體的資料結構。

  • Apache Avro - 資料交換格式包括動態打字,未標記資料,缺少手動分配的ID。
  • Apache Orc -用於基於hadoop的工作負載的快速高效的柱狀儲存格式。
  • Apache Parquet -基於谷歌Dremel的彙編演算法的柱狀儲存格式。
  • Apache Thrift -來自Facebook的資料交換格式。
  • Protobuf - Google的資料交換格式
  • SBE - 簡單的二進位制編碼,是最快的訊息格式之一。
  • Wire -清潔,輕便的協議緩衝區。

日期和時間(Date and Time)

Libraries related to handling date and time.與處理日期和時間相關的圖書館。

  • Joda-Time - Java 8之前的事實上的標準日期/時間庫。
  • ThreeTenBP - Joda-Time作者的JSR 310埠(java.time包)。
  • Time4J - 高階日期和時間庫。

依賴注入(Dependency Injection)

Libraries that help to realize the Inversion of Control paradigm.有助於實現控制正規化反轉的圖書館。

  • Dagger2 -無反射的編譯時注入框架。
  • Guice -輕巧但功能強大的框架,完成匕首。
  • HK2 - 輕量級和動態依賴注入框架。

開發(Development)

Augmentation of the development process at a fundamental level.將發展程序擴大到根本層面。

  • AspectJ - 無縫面向方面的程式設計擴充套件。
  • DCEVM - 修改JVM,允許在執行時無限制地重新定義載入的類。
  • Faux Pas -通過規避Java執行系統中的任何功能介面預設情況下不允許引發檢查異常的問題來簡化錯誤處理的庫。
  • JRebel c - 立即重新載入程式碼和配置更改,無需重新部署。

分散式應用(Distributed Applications)

Libraries and frameworks for writing distributed and fault-tolerant applications.用於編寫分散式和容錯應用程式的庫和框架。

  • Akka -用於構建併發,分散式和容錯事件驅動應用程式的工具包和執行時。
  • Apache ZooKeeper - 協調服務與大型分散式系統的分散式配置,同步和命名登錄檔。
  • Atomix -容錯分散式協調框架。
  • Copycat - 容錯狀態機複製框架。
  • Hazelcast - 高度可擴充套件的記憶體資料網格。
  • JGroups - 用於可靠訊息傳遞和建立叢集的工具包。
  • Orbit - 虛擬演員,為傳統演員增添了另一個抽象層次。
  • Quasar -用於JVM的輕量級執行緒和actors。

分散式資料庫(Distributed Databases)

Databases in a distributed system that appear to applications as a single data source.分散式系統中的應用程式顯示為單個數據源的資料庫。

  • Druid -實時和歷史的OLAP資料儲存,優於聚合和近似查詢。
  • Infinispan - 用於快取的高度併發鍵/值資料儲存。
  • OpenTSDB -可擴充套件和分散式的時間序列資料庫寫在Apache HBase之上。
  • OrientDB -嵌入式分散式資料庫寫在Hazelcast之上。

分發(Distribution)

Tools which handle the distribution of applications in native formats.以原生格式處理應用程式分發的工具。

  • Bintray -處理髮布的二進位制檔案的版本控制。 也可以與Maven或Gradle一起使用,並提供開源軟體或幾項業務計劃的免費計劃。
  • Boxfuse -使用Immutable Infrastructure的原理將JVM應用程式部署到AWS。
  • Capsule -簡單而強大的包裝和部署。 類固醇上的脂肪JAR或支援JVM優化容器的“Docker for Java”。
  • Central Repository - 最大的二進位制元件儲存庫可作為開源社群的免費服務。 Apache Maven使用的預設值,可用於所有其他構建工具。
  • IzPack -用於跨平臺部署的安裝程式創作工具。
  • JitPack -易於使用的GitHub軟體包儲存庫。 根據需要構建Maven / Gradle專案,併發布即用型軟體包。
  • Nexus - 具有代理和快取功能的二進位制管理。
  • packr -在Windows,Linux和Mac OS X上打包JAR,資產和本機分發的JVM。

檔案處理(Document Processing)

Libraries that assist with processing office document formats.協助處理辦公檔案格式的圖書館。

  • Apache POI - 支援OOXML(XLSX,DOCX,PPTX)以及OLE2(XLS,DOC或PPT)。
  • documents4j - 使用第三方轉換器(如MS Word)進行文件格式轉換的API。
  • docx4j - 建立和操作Microsoft Open XML檔案。

格式驗證(Formal Verification)

Formal-methods tools: proof assistants, model checking, symbolic execution etc.正式方法工具:證明助理,模型檢查,符號執行等

  • CATG -卷積單元測試引擎。 使用正式方法自動生成單元測試。
  • Checker Framework - 可插拔式系統。 包括無效型別,物理單位,不變性型別等。
  • Daikon - Daikon檢測可能的程式不變數,並可以根據這些invariats生成JML規範。
  • Java Path Finder (JPF) - 包含模型檢查器的JVM形式驗證工具等。 由NASA建立..
  • JMLOK 2.0 -通過反饋導向的隨機測試生成檢測程式碼和JML規範之間的不一致,並建議檢測到每個不一致的可能.
  • KeY - KeY系統是一種正式的軟體開發工具,旨在儘可能無縫地整合面向物件軟體的設計,實現,形式規範和形式驗證。 使用JML進行規範和符號執行來進行驗證。
  • OpenJML - 將JML規範轉換為SMT-LIB格式,並將程式隱含的證明問題傳遞給後端求解器

功能程式設計(Functional Programming)

Libraries that facilitate functional programming.促進功能程式設計的庫。

  • cyclops-react - Monad和流實用程式,理解,模式匹配,所有JDK集合的功能擴充套件,未來流,蹦床等等。
  • derive4j - Java 8註解處理器和用於匯出代數資料型別建構函式,模式匹配,態射的框架。
  • Fugue - 功能延伸
  • Functional Java - 實現許多基礎和高階程式設計抽象,有助於面向元件的開發。
  • Javaslang - 提供持久資料型別和功能控制結構的功能元件庫。
  • jOOλ - 擴充套件到Java 8,其目的是解決lambda中的差距,提供大量缺失型別和豐富的一系列順序Stream API新增。.

遊戲開發(Game Development)

Frameworks that support the development of games.支援遊戲開發的框架。

  • libGDX - 全面跨平臺,高層次框架。
  • LWJGL - 強大的框架,可以抽象出OpenGL / CL / AL等庫。

地理空間(Geospatial)

Libraries for working with geospatial data and algorithms.用於處理地理空間資料和演算法的庫。

  • Geo -