Java 资源大全


精选的Java框架,库和软件的精选列表。

内容

项目

Bean Mapping

简化bean映射的框架。

  • Dozer - 使用注释和API或XML配置将数据从一个对象复制到另一个对象的映射器。
  • JMapper - 使用字节代码操作进行闪电般的快速映射。支持注释和API或XML配置。
  • MapStruct - 基于配置约定方法,简化不同bean类型之间映射的代码生成器。
  • ModelMapper - 智能对象映射库,可自动将对象相互映射。
  • Orika - JavaBean映射框架,用于递归地将数据以及其他功能从一个对象复制到另一个对象。
  • Selma - 基于注释处理器的bean映射器。

构建

处理应用程序的构建周期和依赖关系的工具。

  • Apache Maven - 声明性构建和依赖关系管理,有利于约定优于配置。它可能更适合Apache Ant,它使用相当程序化的方法并且难以维护。
  • Bazel - 来自Google的工具,可以快速可靠地构建代码。
  • Buck - 鼓励创建由代码和资源组成的小型可重用模块。
  • Gradle - 通过Groovy编程的增量构建,而不是声明XML。适用于Maven的依赖管理。

字节码操作

库以编程方式操作字节码。

  • ASM - 通用的低级字节码操作和分析。
  • Byte Buddy - 使用流畅的API进一步简化字节码生成。
  • bytecode-viewer - Java 8 Jar和Android APK逆向工程套件。
  • Byteman - 通过DSL在运行时处理字节码; 主要用于测试/故障排除。
  • cglib - 字节码生成库。
  • Javassist - 试图简化字节码编辑。
  • Mixin - 使用真实Java代码在运行时处理字节码。

缓存

提供缓存设施的库。

  • 咖啡因 - 高性能,接近最佳的缓存库。
  • Ehcache - 分布式通用缓存。
  • Infinispan - 用于缓存的高度并发键/值数据存储。

CLI

与CLI相关的所有库。

  • ASCII表格 - 用ASCII绘制表格的库。
  • 航空公司 - 基于注释的框架,用于解析类似Git的命令行参数。
  • args4j - 用于解析命令行参数的小型库。
  • Jansi - 用于格式化控制台输出的ANSI转义码。
  • Java ASCII Render - 控制台的图形基元。
  • JCommander - 命令行参数解析框架,包含自定义类型和通过实现接口验证。
  • JLine - 包括现代shell中的功能,如完成或历史记录。
  • JOpt Simple - 使用POSIX#getopt和GNU#getopt_long语法的流畅解析器。
  • picocli - 使用的ANSI颜色和样式有助于基于注释的POSIX / GNU /任何语法,子命令,强选键输入选项和位置参数。
  • Text-IO - 帮助创建完整的基于控制台的应用程序。
  • Lanterna - 简单的控制台文本GUI库,类似于curses。

集群管理

可以动态管理集群内部应用程序的框架。

  • Apache Aurora - 用于长期运行服务和cron作业的Mesos框架。
  • Apache Mesos - 从机器中提取CPU,内存,存储和其他计算资源。
  • Singularity - Mesos框架,使部署和操作变得简单。它支持Web服务,后台工作程序,预定作业和一次性任务。

代码分析

提供指标和质量测量的工具。

  • Checkstyle - 编码约定和标准的静态分析。
  • 错误发生 - 将常见的编程错误作为编译时错误捕获。
  • 推断 - 用于验证代码正确性的现代静态分析工具。
  • jQAssistant - 使用基于Neo4J的查询语言进行静态代码分析。
  • NullAway - 以低构建时开销消除NullPointerExceptions。
  • PMD - 用于查找错误编码实践的源代码分析。
  • SonarJava - SonarQube和SonarLint的静态分析器。
  • Sourcetrail!c - 可视源代码导航器。
  • Spoon - 用于分析和转换Java源代码的库。
  • Spotbugs - 字节码的静态分析,以发现潜在的错误。

代码覆盖率

框架和工具,支持测试套件的代码覆盖度量标准收集。

  • Clover!c - 依靠源代码检测而不是字节码检测。
  • Cobertura - 依靠离线或静态字节码检测和类加载来收集代码覆盖率指标。
  • JaCoCo - 使用离线和运行时字节码检测来收集代码覆盖率指标的框架。

代码生成器

为重复代码生成模式的工具,以减少冗长和错误倾向。

  • ADT4J - 用于代数数据类型的JSR-269代码生成器。
  • 自动 - 生成工厂,服务和值类。
  • FreeBuilder - 自动生成Builder模式。
  • Immutables - 注释处理器,用于生成简单,安全且一致的值对象。
  • JavaPoet - 生成源文件的API。
  • JHipster - 用于Spring Boot和AngularJS的Yeoman源代码生成器。
  • Joda-Beans - 为Java添加可查询属性,增强JavaBeans的小框架。
  • Lombok - 旨在减少冗长的代码生成器。

编译器编译器

有助于创建解析器,解释器或编译器的框架。

  • ANTLR - 用于自上而下解析的复杂功能全面的框架。
  • JavaCC - 生成自上而下解析器的解析器生成器。允许词法状态切换并允许扩展BNF规范。
  • JFlex - 一个词法分析器生成器。

配置

提供外部配置的库。

  • centraldogma - 基于Git,ZooKeeper和HTTP / 2的高度可用的版本控制服务配置库。
  • cfg4j - 用Java编写的分布式应用程序的现代配置库。
  • config - JVM语言的配置库。
  • dotenv - 用于Java的十二因素配置库。
  • ini4j - 提供用于处理Windows'INI文件的API。
  • KAConf - 基于注释的Java和Kotlin配置系统。
  • 所有者 - 减少属性的样板。

约束满足问题解决者

帮助实施优化和可满足性问题的库。

  • Choco - 使用约束编程技术的现成约束满足问题求解器。
  • JaCoP - 包含FlatZinc语言的界面,使其能够执行MiniZinc模型。
  • OptaPlanner - 业务规划和资源调度优化求解器。

CSV

简化读取/写入CSV数据的框架和库。

  • jackson-dataformat-csv - 用于读写CSV的Jackson扩展。
  • opencsv - 简单的CSV解析器。
  • Super CSV - 强大的CSV解析器,支持Dozer,Joda-Time和Java 8。
  • uniVocity-parsers - 速度最快,功能最全的解析器之一。还提供TSV和固定宽度记录的解析器。

数据库

简化与数据库交互的一切。

  • Apache Phoenix - 基于HBase的高性能关系数据库层,适用于低延迟应用。
  • Chronicle Map - 高效的内存选择持久化到磁盘,堆外键值存储。
  • druid - 高性能,面向列的分布式数据存储。
  • eXist - 一个NoSQL文档数据库和应用程序平台。
  • FlexyPool - 将指标和故障转移策略引入最常见的连接池解决方案。
  • Flyway - 简单的数据库迁移工具。
  • H2 - 以其内存功能着称的小型SQL数据库。
  • HikariCP - 高性能JDBC连接池。
  • jasync-sql - MySQL和PostgreSQL的异步数据库驱动程序。
  • JDBI - 方便的JDBC抽象。
  • Jedis - 用于与Redis交互的小客户端,以及命令方法。
  • Jest - Elasticsearch REST API的客户端。
  • jetcd - etcd的客户端库。
  • Jinq - 通过符号执行Java 8 Lambdas在JPA或jOOQ之上进行Typesafe数据库查询。
  • jOOQ - 基于SQL模式生成类型安全代码。
  • Liquibase - 用于跟踪,管理和应用数据库模式更改的独立于数据库的库。
  • MapDB - 嵌入式数据库引擎,提供磁盘或堆外内存支持的并发集合。
  • MariaDB4j - MariaDB的Launcher,不需要安装或外部依赖。
  • OrientDB - 在Hazelcast之上编写的可嵌入分布式数据库。
  • Presto - 用于大数据的分布式SQL查询引擎。
  • Querydsl - Typesafe统一查询。
  • Realm - 直接在手机,平板电脑或可穿戴设备内部运行的移动数据库。
  • Redisson - 允许在Redis服务器之上提供分布式和可扩展的数据结构。
  • requery - 一个现代,轻量级但功能强大的对象映射和SQL生成器。轻松映射或创建数据库,或从任何使用Java的平台执行查询和更新。
  • Speedment - 利用Java 8的Stream API进行查询的数据库访问库。
  • sql2o - 精简的JDBC包装器,简化了数据库访问,并提供了ResultSet到POJO的简单映射。
  • Vibur DBCP - 具有高级性能监控功能的JDBC连接池库。
  • Xodus - 高度并发的事务模式和符合ACID的嵌入式数据库。

数据结构

高效和具体的数据结构。

  • Apache Avro - 具有动态类型,无标记数据和缺少手动分配ID的数据交换格式。
  • Apache Orc - 基于Hadoop的工作负载的快速高效的列式存储格式。
  • Apache Parquet - 基于Google关于Dremel的论文中的汇编算法的列式存储格式。
  • Apache Thrift - 源自Facebook的数据交换格式。
  • Big Queue - 基于内存映射文件的大型,快速且持久的队列。
  • 持久收集 - Java Collections Framework的持久且不可变的模拟。
  • Protobuf - Google的数据交换格式。
  • SBE - 简单二进制编码,是最快的消息格式之一。
  • Tape - 一种快速,交易,基于文件的FIFO。
  • Wire - 干净,轻量级的协议缓冲区。

日期和时间

与处理日期和时间相关的库。

依赖注入

有助于实现控制反转范例的库。

  • Apache DeltaSpike - CDI扩展框架。
  • Dagger2 - 没有反射的编译时注入框架。
  • 羽毛 - 超轻量级,符合JSR-330标准的依赖注入库。
  • Governator - 增强Google Guice的扩展程序和实用程序。
  • Guice - 完善Dagger的轻量级和自以为是的框架。
  • HK2 - 轻量级和动态依赖注入框架。

开发

从根本上加强开发进程。

  • AspectJ - 面向方面的无缝编程扩展。
  • DCEVM - JVM修改,允许在运行时无限制地重新定义加载的类。
  • Faux Pas - 通过规避Java Runtime中的任何功能接口都不允许抛出已检查异常的问题来简化错误处理的库。
  • HotswapAgent - 无限的运行时类和资源重新定义。
  • JavaParser - 解析,修改和生成Java代码。
  • JavaSymbolSolver - Java的符号求解器。
  • JRebel!c - 即时重新加载代码和配置更改,无需重新部署。
  • NoException - 允许在功能接口中检查异常,并将异常转换为Optional return。

分布式应用程序

用于编写分布式和容错应用程序的库和框架。

  • Apache Geode - 内存数据管理系统,提供可靠的异步事件通知和有保证的消息传递。
  • Apache Storm - 实时计算系统。
  • Apache ZooKeeper - 具有大型分布式系统的分布式配置,同步和命名注册表的协调服务。
  • Atomix - 容错分布式协调框架。
  • Axon Framework - 用于创建CQRS应用程序的框架。
  • Dropwizard断路器 - Dropwizard的断路器设计模式。
  • Failsafe - 使用重试和断路器进行简单的故障处理。
  • Hazelcast!c - 具有免费开源版本的高度可扩展的内存数据网格。
  • Hystrix - 提供延迟和容错功能。
  • JGroups - 用于可靠消息传递和集群创建的工具包。
  • Orbit - 虚拟演员; 为传统演员增加了另一层次的抽象。
  • Quasar - JVM的轻量级线程和角色。
  • resilience4j - 功能容错库。
  • ScaleCube - 基于SWIM和八卦协议的嵌入式集群成员库。
  • Zuul - 提供动态路由,监控,弹性,安全性等的网关服务。

分布式事务

分布式事务提供了一种机制,可在出现并发访问和部分故障时确保数据更新的一致性。

  • Atomikos - 为REST,SOA和微服务提供事务,支持JTA和XA。
  • Bitronix - JTA 1.1 API的简单但完整的实现。
  • Narayana - 为传统的ACID和补偿交易提供支持,也符合JTA,JTS和其他标准。

应用发布

处理本机格式应用程序分发的工具。

  • Bintray!c - 处理发布的二进制文件的版本控制。与Maven或Gradle兼容,提供免费的开源软件计划以及多个商业计划。
  • Boxfuse - 使用不可变基础架构的原理将JVM应用程序部署到AWS。
  • Capsule - 简单而强大的打包和部署。类固醇的胖JAR,或支持JVM优化容器的“Docker for Java”。
  • Central Repository - 最大的二进制组件存储库,可作为开源社区的免费服务。默认情况下由Apache Maven使用,并且可在所有其他构建工具中使用。
  • IzPack - 用于跨平台部署的安装创作工具。
  • JitPack - GitHub易于使用的软件包存储库。按需构建Maven / Gradle项目并发布即用型软件包。
  • Nexus!c - 具有代理和缓存功能的二进制管理。
  • packr - 在Windows,Linux和Mac OS X上打包JAR,资产和JVM以进行本机分发。
  • really-executable-jars-maven-plugin - 用于制作自动执行JAR的Maven插件。

文档处理

协助处理办公文档格式的库。

  • Apache POI - XLSX,DOCX,PPTX 支持OOXML2XLS,DOC或PPT以及OLE。
  • documents4j - 如MS Word使用第三方转换器进行文档格式转换的API。
  • docx4j - 创建和操作Microsoft Open XML文件。
  • zerocell - 基于注释的API,用于将Excel工作表中的数据读入POJO,重点是减少开销。

Formal Verification

正式方法工具:证明助理,模型检查,符号执行等

  • CATG - Concolic单元测试引擎。使用正式方法自动生成单元测试。
  • Checker Framework - 可插拔类型系统。包括空值类型,物理单位,不变性类型等。
  • Daikon - 检测可能的程序不变量,并根据这些不变量生成JML规范。
  • JPF Java Path Finder - 包含模型检查器等的JVM形式验证工具。由美国宇航局创建。
  • JMLOK 2.0 - 通过反馈导向的随机测试生成检测代码和JML规范之间的不一致性,并建议检测到每个不合格的可能原因。
  • KeY - 正式的软件开发工具,旨在尽可能无缝地集成面向对象软件的设计,实现,形式规范和形式验证。使用JML进行规范和符号执行以进行验证。
  • OpenJML - 将JML规范转换为SMT-LIB格式,并将程序隐含的证明问题传递给后端求解器。

函数编程

便于函数式编程的库。

  • cyclops-react - Monad和流实用程序,理解,模式匹配,所有JDK集合的功能扩展,未来流,蹦床等等。
  • derive4j - Java 8注释处理器和框架,用于派生代数数据类型构造函数,模式匹配和态射。
  • Fugue - 番石榴的功能扩展。
  • Functional Java - 实现了许多基本和高级编程抽象,有助于面向组合的开发。
  • jOOλ - Java 8扩展,旨在通过提供众多缺失类型和一组丰富的顺序Stream API添加来修复lambda中的空白。
  • protonpack - 流实用程序的集合。
  • StreamEx - 增强Java 8 Streams。
  • Vavr - 提供持久数据类型和功能控制结构的功能组件库。

游戏开发

支持游戏开发的框架。

  • FXGL - JavaFX游戏开发框架。
  • jMonkeyEngine - 现代3D开发的游戏引擎。
  • libGDX - 全方位的跨平台,高级框架。
  • LWJGL - 强大的框架,抽象出像OpenGL / CL / AL这样的库。

Geospatial

用于处理地理空间数据和算法的库。

  • Apache SIS - 用于开发地理空间应用程序的库。
  • Geo - Java中的GeoHash实用程序。
  • Geotoolkit.org - 用于开发地理空间应用程序的库。建立在Apache SIS项目之上。
  • GeoTools - 为地理空间数据提供工具的库。
  • GraphHopper - 道路路由引擎。用作Java库或独立Web服务。
  • H2GIS - H2数据库的空间扩展。
  • Jgeohash - 使用GeoHash算法的库。
  • Mapsforge - 基于OpenStreetMap数据的地图渲染。
  • Spatial4j - 通用空间/地理空间库。

GUI

库创建现代图形用户界面。

  • JavaFX - Swing的继任者。
  • Scene Builder - JavaFX应用程序的可视化布局工具。
  • SWT - 标准窗口小部件工具包,图形窗口小部件工具包。

高性能

关于高性能计算的所有内容,从集合到特定库。

  • Agrona - 高性能应用程序中常见的数据结构和实用程序方法。
  • Disruptor - 线程间消息传递库。
  • Eclipse Collections - 受Smalltalk启发的集合框架。
  • fastutil - 快速和紧凑的特定类型集合。
  • HPPC - 原始集合。
  • JCTools - JDK目前​​缺少并发工具。
  • Koloboke - 哈希集和哈希映射。

HTTP客户端

协助创建HTTP请求和/或绑定响应的库。

  • Async Http Client - 异步HTTP和WebSocket客户端库。
  • Feign - 受Retrofit,JAXRS-2.0和WebSocket启发的HTTP客户端活页夹。
  • OkHttp - HTTP + SPDY客户端。
  • Play WS - 具有反应流和缓存的Typesafe客户端。
  • restQL-core - 从多个服务获取信息的微服务查询语言。
  • Retrofit - Typesafe REST客户端。
  • Ribbon - 在云端经过实战测试的客户端IPC库。
  • Riptide - Spring的RestTemplate的客户端响应路由。

超媒体类型

处理序列化到超媒体类型的库。

IDE

集成开发环境,试图简化开发的几个方面。

  • Eclipse - 已建立的开源项目,支持大量插件和语言。
  • IntelliJ IDEA!c - 支持多种JVM语言,为Android开发提供了很好的选择。商业版针对企业部门。
  • NetBeans - 提供从数据库访问到HTML5的多个Java SE和EE功能的集成。
  • Visual Studio Code - 通过使用内部市场的扩展,为轻量级项目提供简单,现代的工作流程。

图形图像库

协助创建,评估或操纵图形图像的库。

  • Imgscalr - 在纯Java 2D中实现的简单,高效且硬件加速的图像缩放库。
  • Tess4J - Tesseract OCR API的JNA包装器。
  • Thumbnailator - 高质量的缩略图生成库。
  • TwelveMonkeys - 扩展支持的图像文件格式数量的插件集合。
  • ZXing - 多格式1D / 2D条码图像处理库。

JSON

用于将JSON序列化和反序列化为Java对象的库。

  • DSL-JSON - 具有高级编译时数据绑定的JSON库。
  • Genson - 功能强大且易于使用的Java-to-JSON转换库。
  • Gson - 将对象序列化为JSON,反之亦然。即时使用具有良好的性能。
  • HikariJSON - 高性能JSON解析器,比Jackson快2倍。
  • jackson-modules-java8 - 用于Java 8数据类型和功能的Jackson模块集。
  • Jackson-datatype-money - 支持JSON序列化和JavaMoney数据类型反序列化的开源Jackson模块。
  • Jackson - 与GSON类似,但如果需要更频繁地实例化库,则可以提高性能。
  • JSON-io - 将Java转换为JSON。将JSON转换为Java。漂亮的印刷JSON。Java JSON序列化程序。
  • jsoniter - 具有迭代器和延迟解析API的快速灵活的库。
  • LoganSquare - 基于Jackson的流API的JSON解析和序列化库。优于GSON&Jackson的库。
  • Moshi - 现代JSON库,不太自以为是,使用内置类型,如List和Map。
  • Yasson - 类和JSON文档之间的绑定层,类似于JAXB。

JSON处理

用于处理JSON格式数据的库。

  • fastjson - 非常快的处理器,没有额外的依赖关系和完整的数据绑定。
  • Jolt - JSON到JSON转换工具。
  • JsonPath - 使用类似XPATH的语法从JSON中提取数据。
  • JsonSurfer - 流媒体JsonPath处理器,专用于处理大而复杂的JSON数据。

JVM和JDK

  • JVM / JDK的当前实现。*

  • Avian - 具有JIT和AOT模式的JVM。包括iOS端口。

  • Graal - 可以嵌入的Polyglot虚拟机。
  • OpenJ9 - 高性能,企业级,灵活许可,开放式管理的跨平台Java虚拟机,可扩展和扩充Eclipse OMR和OpenJDK项目中的运行时技术组件。
  • OpenJDK - Linux的开源实现。
  • ParparVM - 适用于iOS的非阻塞并发GC的VM。
  • Zulu - 适用于Windows,Linux和Mac OS X的OpenJDK版本。

日志

记录应用程序行为的库。

  • Apache Log4j 2 - 使用强大的插件和配置架构完成重写。
  • Graylog - 适用于扩展角色和权限管理的开源聚合器。
  • Kibana - 分析和可视化日志文件。某些功能需要付款。
  • Logback - 通过Groovy提供有趣配置选项的强大日志库。
  • Logbook - 用于HTTP请求和响应记录的可扩展的开源库。
  • Logstash - 用于管理日志文件的工具。
  • SLF4J - 抽象层/简单的日志记录。
  • tinylog - 具有静态记录器类的轻量级日志框架。
  • Tracer - 在分布式系统中调用跟踪和日志关联。

机器学习

提供用于从数据中学习的特定统计算法的工具。

  • Apache Flink - 快速,可靠,大规模的数据处理引擎。
  • Apache Mahout - 可扩展的算法,专注于协同过滤,聚类和分类。
  • Apache Spark - 数据分析集群计算框架。
  • DatumBox - 为自然语言处理提供多种算法和预训练模型。
  • DeepDive - 从非结构化数据创建结构化信息并将其集成到现有数据库中。
  • Deeplearning4j - 分布式和多线程深度学习库。
  • H2O - 用于统计大数据的分析引擎。
  • JSAT - 支持多线程执行的预处理,分类,回归和聚类算法。
  • Oryx 2 - 用于构建实时,大规模机器学习应用程序的框架。包括用于协作过滤,分类,回归和群集的端到端应用程序。
  • 微笑 - 统计机器智能和学习引擎提供了一组机器学习算法和可视化库。
  • Weka - 用于从预处理到可视化的数据挖掘任务的算法集合。

消息

有助于在客户端之间发送消息以确保协议独立性的工具。

  • Aeron - 高效,可靠,单播和多播消息传输。
  • Apache ActiveMQ - 实现JMS并将同步转换为异步通信的消息代理。
  • Apache Camel - 通过企业集成模式将不同的传输API粘合在一起。
  • Apache Kafka - 高吞吐量分布式消息传递系统。
  • Apache Pulsar - 分布式发布/子消息系统。
  • Apache RocketMQ - 一种快速,可靠,可扩展的分布式消息传递平台。
  • EventBus - 简单的发布/订阅事件总线。
  • 爱马仕 - 建立在Kafka之上的快速可靠的消息代理。
  • JeroMQ - ZeroMQ的实现。
  • Nakadi - 在Kafka之上提供RESTful API。
  • Smack - 跨平台的XMPP客户端库。

杂项

其他一切。

  • Codename One - 用于编写本机移动应用程序的跨平台解决方案。
  • CQEngine - Java集合上的超快速,类似SQL的查询。
  • 设计模式 - 最常见设计模式的实现和解释。
  • Failsafe - 使用重试和断路器进行简单的故障处理。
  • FF4J - Java的功能标志。
  • FizzBu​​zz企业版 - 由严肃的商人为严肃的商业目的制作的FizzBu​​zz的严肃实施。
  • J2ObjC - 用于将Android库移植到iOS的Java-to-Objective-C转换器。
  • JavaX - 重点介绍Java,重点是简单性。
  • JBake - 静态网站生成器。
  • JBot - 构建聊天机器人的框架。
  • Jimfs - 内存文件系统。
  • Joda-Money - JDK未提供的基本货币和金钱类和算法。
  • JPad - Snippet runner。
  • LightAdmin - 可插入的CRUD UI库,用于快速应用程序开发。
  • Maven Wrapper - Maven的Gradle Wrapper模拟,允许在不安装maven的情况下构建项目。
  • Membrane Service Proxy - 用Java编写的开源反向代理框架。
  • MinimalFTP - 轻量级,小型和可定制的FTP服务器。
  • 现代Java - Java 8指南 - 流行的Java 8指南。
  • Modernizer - 检测旧版Java API的使用。
  • 多操作系统引擎 - 开发原生移动设备iOS,Android等的开源跨平台引擎应用。
  • OpenRefine - 处理凌乱数据的工具:清理,转换,使用Web服务扩展它并将其链接到数据库。
  • Polyglot for Maven - Maven 3.3.1+的扩展,允许用XML以外的方言编写POM模型。
  • Smooks - 用于构建处理数据的应用程序的可扩展框架,这意味着绑定,转换,消息处理和丰富。
  • Togglz - 功能切换模式的实现。
  • TypeTools - 用于解析泛型类型的工具。
  • XMLBeam - 在代码中使用注释或XPath处理XML。
  • OctoLinker - 浏览器扩展,可以更有效地浏览GitHub上的代码。

微服务

用于创建和管理微服务的工具。

  • Apollo - 用于编写可组合微服务的库。
  • consul-api - ConsulAPI的客户端:分布式,高可用性和数据中心感知注册/发现服务。
  • Eureka - 基于REST的服务注册表,用于弹性负载平衡和故障转移。
  • Lagom - 用于创建基于微服务的系统的框架。
  • Micronaut - 现代全栈框架,专注于模块化,最小内存占用和启动时间。

监控

监控生产中应用程序的工具。

  • AppDynamics!c - 性能监视器。
  • Automon - 将AOP的强大功能与监控和/或记录工具相结合。
  • BugSnag!c - 异常和错误监控,集成了多个第三方工具,可实现更好的工作流程和免费的业余爱好者层。
  • LeakCanary - 内存泄漏检测。
  • 故障安全执行器 - 在Spring-Boot环境中对故障安全断路器进行开箱即用的监控。
  • Glowroot - 开源Java APM。
  • inspectIT - 通过可以即时更改的挂钩捕获详细的运行时信息。它支持通过OpenTracing API跟踪多个系统,并可以将数据与最终用户监控相关联。
  • Instrumental!c - 实时Java应用程序性能监控。具有免费开发账户的商业服务。
  • JavaMelody - 性能监控和分析。
  • jmxtrans - 连接到多个JVM并通过JMX查询它们的属性。它的查询语言基于JSON,允许非Java程序员访问JVM属性。支持不同的输出写入,包括Graphite,Ganglia和StatsD。
  • Jolokia - JMX over REST。
  • Kamon - 用于监视在JVM上运行的应用程序的工具。
  • Metrics - 通过JMX或HTTP公开指标并将其发送到数据库。
  • New Relic!c - 性能监视器。
  • nudge4j - 通过字节码注入从Java 8浏览器远程开发人员控制台。
  • OverOps!c - 生产中错误监控和调试。
  • Pinpoint - 开源APM工具。
  • Prometheus - 提供多维数据模型,DSL,自治服务器节点等等。
  • SPM!c - 具有JVM应用程序分发事务跟踪的性能监视器。
  • Stagemonitor - JVM应用程序的开源性能监视和事务跟踪。
  • Sysmon - 适用于Java VM的轻量级平台监控工具。
  • zipkin - 分布式跟踪系统,用于收集解决微服务架构中延迟问题所需的时序数据。

Native

用于处理特定于平台的本机库。

  • JavaCPP - 提供对本机C ++的高效和轻松访问。
  • JNA - 在不编写JNI的情况下使用本机库。还提供了通用系统库的接口。
  • JNR - 在不编写JNI的情况下使用本机库。还提供了通用系统库的接口。与JNA目标相同,但更快,并作为即将到来的Project Panama的基础。

自然语言处理

专门处理文本的库。

  • CogCompNLP - 为纯文本输入提供通用注释器。
  • CoreNLP - 为标记,命名实体识别和情感分析等任务提供一组基本工具。
  • DKPro - 用于语言预处理,机器学习,词汇资源等的可重复使用的NLP工具的集合。
  • LingPipe - 用于从POS标记到情感分析的任务的工具包。

联网

用于构建网络服务器的库。

  • Comsat - 将标准的Java Web相关API与Quasar光纤和actor集成。
  • Dubbo - 高性能RPC框架。
  • Finagle - 用于构建高并发服务器的可扩展RPC系统。它为多个协议实现统一的客户端和服务器API,并且与协议无关,以简化新协议的实现。
  • Grizzly - NIO框架。用作Glassfish中的网络层。
  • gRPC - 基于protobuf和HTTP / 2的RPC框架。
  • KryoNet - 使用NIO和Kryo​​为高效的TCP和UDP客户端/服务器网络通信提供简洁的API。
  • MINA - 抽象的,事件驱动的异步I / O API,用于通过Java NIO进行TCP / IP和UDP / IP上的网络操作。
  • Netty - 构建高性能网络应用程序的框架。
  • Nifty - 在Netty上实现Thrift客户端和服务器。
  • sshj - 以编程方式使用SSH,SCP或SFTP。
  • TLS Channel - 类似套接字通过SSLEngine实现ByteChannel接口,实现易于使用的TLS。
  • Undertow - 基于NIO提供阻塞和非阻塞API的Web服务器。用作WildFly中的网络层。
  • urnlib - 表示,解析和编码URN,如RFC 2141中所述。

ORM

处理对象持久性的API。

  • Apache Cayenne - 为数据访问提供干净,静态的API。还包括用于处理数据库映射的GUI Modeler,以及DB逆向工程和生成。
  • Ebean - 提供简单快速的数据访问。
  • EclipseLink - 支持许多持久性标准:JPA,JAXB,JCA和SDO。
  • Hibernate - 健壮且广泛使用,拥有活跃的社区。
  • MyBatis - 使用存储过程或SQL语句耦合对象。
  • SimpleFlatMapper - 简单的数据库和CSV映射器。

PaaS

PDF

帮助创建PDF文件的工具。

性能分析

用于性能分析,分析和基准测试的工具。

  • fastThread!c - 使用免费的基于云的上传界面分析和可视化线程转储。
  • GCeasy!c - 分析和可视化GC日志的工具。它提供免费的基于云的上传界面。
  • honest-profiler - 低开销,无偏差的采样分析器。
  • jHiccup - 记录并记录平台JVM停顿。
  • JITWatch - 分析HotSpot JVM所做的JIT编译器优化。
  • JMH - 用于构建,运行和分析用Java和其他语言编写的纳米/微/毫/宏基准的Java工具。 JVM。
  • JProfiler!c - 支持JEE的JDBC,JPA和NoSQL的数据库分析。
  • LatencyUtils - 用于延迟测量和报告的实用程序。
  • XRebel!c - 使用浏览器内部小部件对Web应用程序进行实时分析。
  • YourKit Java Profiler!c - 在JVM上运行的任何应用程序的Profiler。

平台

框架是包含多个类别的多个库的套件。

Apache Commons

  • Pool - 通用对象池组件。
  • BCEL - 字节代码工程库 - 分析,创建和操作Java类文件。
  • Codec - 例如语音,base64,URL通用编码/解码算法。
  • Compress - 定义用于处理tar,zip和bzip2文件的API。
  • IO - I / O实用程序的集合。
  • Configuration - 以各种格式读取配置/首选项文件。
  • VFS - 虚拟文件系统组件,用于将文件,FTP,SMB,ZIP等视为单个逻辑文件系统。
  • Jelly - 基于XML的脚本和处理引擎。
  • CSV - 用于读取和写入逗号分隔值文件的组件。
  • JCS - Java缓存系统。
  • Email - 用于从Java发送电子邮件的库。
  • DbUtils - JDBC帮助程序库。
  • FileUpload - servlet和Web应用程序的文件上载功能。
  • Lang - 为java.lang中的类提供额外的功能。
  • Jexl - 表达语言,它扩展了JSTL的表达式语言。
  • CLI - 命令行参数解析器。
  • Validator - 在xml文件中定义验证器和验证规则的框架。
  • Net - 网络实用程序和协议实现的集合。
  • RNG - Commons Rng提供伪随机数生成器的实现。
  • RDF - 可由JVM上的系统实现的RDF 1.1的通用实现。
  • Weaver - 提供一种增强编织编译字节码的简便方法。
  • BeanUtils - 围绕Java反射和内省API的易于使用的包装器。
  • Collections - 扩展或扩充Java Collections Framework。
  • DBCP - 数据库连接池服务。
  • Math - 轻量级,自包含的数学和统计组件。
  • Exec - 用于处理Java中的外部流程执行和环境管理的API。
  • Logging围绕各种日志API实现的包装器。
  • OGNL - 对象图导航语言。
  • JCI - Java编译器接口。
  • Daemon - 类似于unix-daemon的java代码的替代调用机制。
  • Functor - 仿函数是一个可以作为对象操作的函数,或者是一个表示单个通用函数的对象。
  • Digester - XML-to-Java-object映射实用程序。
  • BSF - Bean Scripting Framework - 脚本语言的接口,包括JSR-223。
  • Imaging - 一个纯Java图像库。
  • SCXML - 状态图XML规范的实现,旨在创建和维护Java SCXML引擎。
  • JXPath - 使用XPath语法操作Java Bean的实用程序。
  • Chain - 责任链模式实施。
  • Proxy - 用于创建动态代理的库。
  • BeanUtils2 - 重新设计Commons BeanUtils。
  • ClassScan - 无需加载即可查找类接口,方法,字段和注释。
  • CLI2重新设计Commons CLI。
  • Convert - Commons-Convert旨在提供一个专门用于将一种类型的对象转换为另一种类型的任务的库。
  • Finder - 受UNIX find命令启发的Java库。
  • Flatfile - 用于处理平面数据结构的Java库。
  • Graph - 通用图形API和算法。
  • I18n - 添加本地化消息包的功能,该功能包含一个或多个属于一起的本地化文本。
  • Id - Id是用于生成标识符的组件。
  • Javaflow - 继续实现以捕获应用程序的状态。
  • JNet - JNet允许通过java.net API动态注册url流处理程序。
  • Monitoring - 监控旨在为Java应用程序提供简单但可扩展的监控解决方案。
  • Nabla - Nabla提供自动微分类,可以生成用Java语言实现的任何函数的派生。
  • OpenPGP - 使用OpenPGP签名和验证数据的接口。
  • Performance - 微基准客户端的小框架,具有Commons DBCP和Pool的实现。
  • Pipeline - 提供一组围绕工作队列设计的管道实用程序,这些工作队列并行运行以顺序处理数据对象。

其他

  • CUBA平台 - 基于Spring,EclipseLink和Vaadin开发具有丰富Web界面的企业应用程序的高级框架。
  • Light-Java - 一个快速,轻量级和高效的微服务框架。
  • Orienteer - 用于快速配置/开发CRM,ERP,LMS和其他应用程序的开源业务应用程序平台。
  • Spring - 提供许多用于依赖注入,面向方面编程,安全性等的包。

进程

帮助管理操作系统进程的库。

  • ch.vorburger.exec - 围绕Apache Commons Exec的便捷API。
  • zt-exec - 为Apache Commons Exec和ProcessBuilder提供统一的API。
  • zt-process-killer - 停止从Java启动的进程或通过PID启动系统进程。

反射库

用于开发反射应用程序的库。

  • Akka - 用于构建并发,分布式,容错和事件驱动应用程序的工具包和运行时。
  • Reactive Streams - 为具有非阻塞背压的异步流处理提供标准。
  • Reactor - 用于构建反应式快速数据应用程序的库。
  • RxJava - 允许使用可观察序列组合异步和基于事件的程序。
  • vert.x - Polyglot事件驱动的应用程序框架。

REST框架

专门用于创建RESTful服务的框架。

  • Dropwizard - 使用Jetty,Jackson,Jersey和Metrics设置现代Web应用程序的意见框架。
  • Jersey - JAX-RS参考实现。
  • Microserver - 一个方便,可扩展的微服务插件系统,用于Spring和Spring Boot。有超过30个插件和增长,它支持微整体和纯微服务风格。
  • Rapidoid - 一个简单,安全且极其快速的框架,由嵌入式HTTP服务器,GUI组件和依赖注入组成。
  • rest.li - 使用类型安全绑定和异步,非阻塞IO以及端到端开发人员工作流构建健壮,可扩展的RESTful架构的框架促进清洁实践,统一界面设计和一致的数据建模。
  • RESTEasy - 完全认证和可移植的JAX-RS规范实现。
  • RestExpress - JBoss Netty HTTP堆栈上的瘦包装器,提供扩展和性能。
  • Restlet Framework - 具有强大路由和过滤功能的先锋框架,以及统一的客户端和服务器API。
  • Spark - Sinatra启发框架。
  • Crnk - 实现JSON API规范,以构建面向资源的REST端点,包括排序,过滤,分页,链接,对象图,类型安全,批量更新,集成和更多。
  • Swagger - 与REST API的标准,语言无关的接口。

科学

用于科学计算,分析和可视化的库。

  • DataMelt - 科学计算,数据分析和数据可视化的环境。
  • Erdos - 理论算法的模块化,轻量级和简单的图形框架。
  • GraphStream - 用于建模和分析动态图的库。
  • JFreeChart - 用于Swing,JavaFX和服务器端应用程序的2D图表库。
  • JGraphT - 提供数学图论理论对象和算法的图库。
  • JGraphX - 主要是Swing用于可视化和与节点边缘图形交互的库。
  • Mines Java Toolkit - 用于地球物理科学计算,可视化和数字信号分析的库。
  • Morpheus - 提供一种多功能的二维内存高效表格数据结构,称为DataFrame,可为JVM上的科学计算提供高效的内存分析。
  • Tablesaw - 包括数据框架,嵌入式列存储以及数百种转换,汇总或过滤数据的方法。

搜索

索引文档的引擎,用于搜索和分析。

  • Apache Lucene - 高性能,功能齐全的跨平台文本搜索引擎库。
  • Apache Solr - 针对大量流量进行了优化的企业搜索引擎。
  • Elasticsearch - 具有RESTful Web界面和无架构JSON文档的分布式,多租户能力的全文搜索引擎。

安全

处理安全性,身份验证,授权或会话管理的库。

  • Apache Shiro - 执行身份验证,授权,加密和会话管理。
  • Bouncy Castle - 通用加密库和JCA提供程序,提供从基本帮助程序到PGP / SMIME操作的各种功能。
  • Cryptomator - 云中文件的多平台,透明,客户端加密。
  • Hdiv - 运行时应用程序,可以排除OWASP Top 10中包含的应用程序安全风险,包括SQL注入,跨站点脚本,跨站点请求伪造,数据篡改,和暴力攻击。
  • jjwt - 适用于Java和Android的JSON Web令牌。
  • Jwks RSA - JSON Web Key Set解析器。
  • Keycloak - 用于浏览器应用和RESTful Web服务的集成SSO和IDM。
  • Keyczar - 易于使用,安全的加密框架,带有密钥版本控制。
  • Keywhiz - 用于分发和管理机密的系统。
  • Nbvcxz - 高级密码强度估算。
  • OACC - 提供基于权限的授权服务。
  • pac4j - 安全引擎。
  • PicketLink - 用于安全和身份管理的伞项目。
  • SecurityBuilder - 用于JCA和JSSE类的Fluent Builder API,尤其是X.509证书。
  • Themis - 多平台高级加密库提供易于使用的加密,用于保护敏感数据:具有前向保密的安全消息传递,安全数据存储AES256GCM ; 适合构建端到端加密应用程序。
  • Tink - 为常见的加密任务提供简单且防误用的API。
  • Vault - 保护,存储和严格控制对令牌,密码,证书,API密钥和其他机密的访问。它处理租赁,密钥撤销,密钥滚动和审计。通过统一的API,用户可以访问加密的键/值存储和网络加密即服务,或生成AWS IAM / STS凭证,SQL / NoSQL数据库,X.509证书,SSH凭据等。

序列化

高效处理序列化的库。

  • FlatBuffers - 内存高效的序列化库,可以访问序列化数据而无需解压缩和解析。
  • FST - 兼容JDK的高性能对象图序列化。
  • Kryo - 快速高效的对象图序列化框架。
  • MessagePack - 高效的二进制序列化格式。
  • PHP Serializer - 以PHP序列化格式序列化对象。

服务器

专门用于部署应用程序的服务器。

  • Apache Tomcat - 用于Servlet和JSP的强大,全面的服务器。
  • Apache TomEE - Tomcat和Java EE。
  • Jetty - 提供Web服务器和javax.servlet容器,以及对HTTP / 2,WebSocket,OSGi,JMX,JNDI,JAAS和许多其他集成的支持。
  • nanohttpd - 小巧,易于嵌入的HTTP服务器。
  • WebSphere Liberty - 由IBM开发的轻量级模块化服务器。
  • WildFly - 以前称为JBoss,由Red Hat开发,具有广泛的Java EE支持。

模板引擎

替换模板中表达式的工具。

  • Handlebars.java - 无逻辑和语义的胡须模板。
  • Jade4J - 以前称为Jade Pug的实现。
  • Jtwig - 模块化,可配置且经过全面测试的模板引擎。
  • Pebble - 受Twig的启发,并以其继承功能和易于阅读的语法分离。它附带内置自动安全功能,用于安全性,并包含对国际化的集成支持。
  • Thymeleaf - 旨在成为JSP的替代品,适用于XML文件。

测试

从模型到视图进行测试的工具。

异步

简化测试异步服务的工具。

  • Awaitility - 用于同步异步操作的DSL。
  • ConcurrentUnit - 用于测试多线程和异步应用程序的工具包。
  • GreenMail - 用于集成测试的内存中电子邮件服务器。支持SMTP,POP3和IMAP,包括SSL。
  • Hoverfly Java - Hoverfly的本机绑定,一种允许您模拟HTTP服务的代理。
  • REST Assured - 用于轻松测试REST / HTTP服务的DSL。

BDD

测试TDD出现的软件开发过程,受DDD和OOAD的影响很大。

  • Cucumber - 提供一种用客户可以理解的简单语言描述功能的方法。
  • Cukes-REST - 使用Cucumber进行REST服务测试的Gherkin步骤集合。
  • J8Spec - 遵循类似Jasmine的语法。
  • JBehave - 广泛可配置的框架,用于描述故事。
  • JGiven - 提供流畅的API,允许更简单的组合。
  • Lamdba Behave - 旨在提供一个流畅的API,用长而简洁的句子写出测试,读起来像普通的英语。

Fixtures

与随机数据的创建和处理相关的一切。

构架

提供环境以运行特定用例的测试。

  • ArchUnit - 用于指定和断言体系结构规则的测试库。
  • Apache JMeter - 功能测试和性能测量。
  • Arquillian - Java EE容器的集成和功能测试平台。
  • Citrus - 集中测试框架,侧重于客户端和服务器端消息传递。
  • Gatling - 负载测试工具,易于使用,可维护性和高性能。
  • JUnit - 通用测试框架。
  • Pact JVM - 消费者驱动的合同测试。
  • PIT - 用于评估现有JUnit或TestNG测试套件的故障检测能力的快速变异测试框架。

Matchers

提供自定义匹配器的库。

  • AssertJ - 流畅的断言,提高了可读性。
  • JSONAssert - 简化测试JSON字符串。
  • Truth - Google的断言和提议框架。

杂项

与测试有关的其他内容。

  • Mutability Detector - 报告给定类的实例是否是不可变的。
  • raml-tester - 测试请求/响应是否与给定的RAML定义匹配。
  • TestContainers - 提供常用数据库,Selenium Web浏览器或可在Docker容器中运行的任何其他内容的一次性实例。
  • pojo-tester - 自动执行基本POJO方法的测试。

模拟

模拟合作者帮助测试单个隔离单元的工具。

  • JMockit - 集成测试,API模拟和伪造以及代码覆盖。
  • Mockito - 模拟框架,允许您使用简洁的API编写测试。
  • MockServer - 允许模拟与HTTPS集成的系统。
  • Moco - 存根和模拟的简洁Web服务。
  • PowerMock - 模拟静态方法,构造函数,最终类和方法,私有方法以及静态初始化程序的删除。
  • WireMock - 存根和模拟Web服务。

参数化

简化参数化测试的编写。

  • Burst - 用于改变测试数据的单元测试库。
  • junit-dataprovider - JUnit的类似TestNG的数据提供者/运行者。
  • JUnitParams - 创建可读且可维护的参数化测试。

效率

提供一般实用功能的库。

  • bucket4j - 基于令牌桶算法的速率限制库。
  • cactoos - 面向对象原语的集合。
  • CRaSH - 为运行CRaSH的JVM提供shell。由Spring Boot和其他人使用。
  • Dex - Java / JavaFX工具,具有强大的ETL和数据可视化功能。
  • Embulk - 批量数据加载器,可帮助在各种数据库,存储,文件格式和云服务之间进行数据传输。
  • fswatch - 用于监视目录文件系统更改的微库,简化了java.nio.file.WatchService
  • Gephi - 用于可视化和操作大型图形网络的跨平台。
  • Guava - 集合,缓存,基元支持,并发库,通用注释,字符串处理,I / O等。
  • JADE - 用于构建和调试多代理系统的框架和环境。
  • JavaVerbalExpressions - 帮助构建困难的正则表达式的库。
  • JGit - 一个实现Git版本控制系统的轻量级纯Java库。
  • minio-java - 提供简单的API来访问任何与Amazon S3兼容的对象存储服务器。
  • Protégé - 提供本体编辑器和构建基于知识的系统的框架。
  • Underscore-java - Underscore.js函数的端口。

版本管理员

有助于创建开发shell环境并在不同Java版本之间切换的实用程序。

  • jabba - 受nvm启发的Java版本管理器。支持Mac OS X,Linux和Windows。
  • jenv - 受rbenv启发的Java版本管理器。可以全局配置或按项目配置。在Debian和Mac OS X上测试过。
  • SDKMan - 受RVM和rbenv启发的Java版本管理器。支持基于UNIX的平台和Windows。

网页抓取

分析网站内容的库。

  • Apache Nutch - 适用于生产环境的高度可扩展,高度可扩展的Web爬虫。
  • Crawler4j - 简单轻巧的网页抓取工具。
  • jsoup - Scrapes,解析,操作和清理HTML。
  • StormCrawler - 用于构建低延迟和可扩展的Web爬虫的SDK。
  • webmagic - 具有下载,网址管理,内容提取和持久性的可扩展爬虫。

Web框架

处理Web应用程序各层之间通信的框架。

  • Apache Tapestry - 面向组件的框架,用于创建动态,健壮,高度可扩展的Web应用程序。
  • Apache Wicket - 基于组件的Web应用程序框架,类似于Tapestry,具有状态GUI。
  • Blade - 轻巧,模块化的框架,旨在优雅和简单。
  • Bootique - 针对可运行应用程序的最小观点框架。
  • Firefly - 用于快速开发高性能Web应用程序的异步框架。
  • Grails - Groovy框架,通过优于配置,不支持XML和支持mixin,提供高效的环境。
  • Jooby - 可扩展,快速和模块化的微框架,提供多种编程模型。
  • Ninja - 全栈Web框架。
  • Pippo - 小型,高度模块化,类似Sinatra的框架。
  • Play - CPU,内存,线程 基于Akka,它为Java和Scala中的高度可伸缩应用程序提供可预测的最小资源消耗。
  • PrimeFaces - 包含免费和商业/支持版本以及前端组件的JSF框架。
  • Ratpack - 一组库,可以促进快速,高效,可进化和经过良好测试的HTTP应用程序。
  • Takes - 基于真实面向对象编程和不变性概念构建的意见Web框架。
  • Vaadin - 基于GWT构建的事件驱动框架。在客户端使用Ajax的服务器端体系结构。

资源

令人敬畏的名单

与Java和JVM生态系统相关的令人敬畏的列表。