查看原文
其他

JAVA白学了

脚本之家 2022-09-23

The following article is from 程序员巴士 Author 七十一

 关注
“脚本之家
”,与百万开发者在一起
来源 | 程序员巴士(ID:tech-bus)
如若转载请联系原公众号

JAVA白学了

后端开发这么久了,以下Java 框架、库和软件你都了解吗?

Bean的映射

  • dOOv - 为类型安全的域模型验证和映射提供流畅的 API。它使用注释、代码生成和类型安全的 DSL 来使 bean 验证和映射变得快速而简单。
  • JMapper - 使用字节码操作进行闪电般的快速映射。支持注解和 API 或 XML 配置。
  • MapStruct - 基于约定优于配置的方法,简化不同 bean 类型之间的映射的代码生成器。
  • ModelMapper - 自动将对象相互映射的智能对象映射库。
  • Orika - JavaBean 映射框架,它递归地将数据从一个对象复制到另一个对象。
  • reMap - 基于 Lambda 和方法句柄的映射,如果对象具有不同的名称,则需要代码而不是注释。
  • Selma - 基于注释处理器的 bean 映射器。

代码构建

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

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

IDE

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

  • Eclipse - 建立了支持大量插件和语言的开源项目。
  • intelliJ IDEA-支持多种 JVM 语言并为 Android 开发提供良好的选择。商业版面向企业部门。
  • jGRASP - 创建用于提供与调试器结合使用的软件可视化,例如控制结构图、UML 类图和对象查看器。
  • NetBeans - 提供从数据库访问到 HTML5 的多个 Java SE 和 EE 功能的集成。
  • Recaf - 字节码编辑器。
  • Visual Studio Code - 通过使用来自内部市场的扩展,通过简单、现代的工作流程为轻量级项目提供 Java 支持。

操作字节码

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

  • ASM - 通用的低级字节码操作和分析。
  • Byte Buddy - 使用流畅的 API 进一步简化字节码生成。
  • bytecode-viewer -Java 8 Jar 和 Android APK 逆向工程套件。(仅限 GPL-3.0)
  • Byteman - 在运行时通过 DSL(规则)操作字节码;主要用于测试/故障排除。(LGPL-2.1 或更高版本)
  • cglib - 字节码生成库。
  • Javassist - 尝试简化字节码编辑。
  • Mixin - 使用真正的 Java 代码在运行时操作字节码。
  • Perses - 根据混沌工程原理在字节码级别动态注入故障/延迟。

JVM和JDK

JVM/JDK 的当前实现。

  • Adopt Open JDK - 社区驱动的 OpenJDK 构建,包括 HotSpot 和 OpenJ9。
  • Avian - 具有 JIT、AOT 模式和 iOS 端口的 JVM。
  • Corretto - Amazon 的 OpenJDK 的免费、多平台、生产就绪分发。(仅 GPL-2.0 WITH Classpath-exception-2.0)
  • Dragonwell8 - OpenJDK 的下游版本,针对在线电子商务、金融、物流应用进行了优化。
  • Graal - 多语言可嵌入 JVM。(仅 GPL-2.0 WITH Classpath-exception-2.0)
  • Liberica JDK - 从 OpenJDK 构建,经过全面测试并通过了 JCK。(仅 GPL-2.0 WITH Classpath-exception-2.0)
  • OpenJ9 - 高性能、企业级、灵活许可、开放治理的跨平台 JVM,扩展和增强了 Eclipse OMR 和 OpenJDK 项目的运行时技术组件。
  • Open JDK - Open  JDK 社区主页。(仅 GPL-2.0 WITH Classpath-exception-2.0)
  • ParparVM - 适用于 iOS 的具有非阻塞、并发 GC 的 VM。(仅 GPL-2.0 WITH Classpath-exception-2.0)
  • RedHat Open JDK - RedHat 的 OpenJDK 发行版。(仅 GPL-2.0 WITH Classpath-exception-2.0)
  • SAP Machine - SAP 的免费、经过严格测试和 JCK 验证的 OpenJDK 友好分支。(仅 GPL-2.0 WITH Classpath-exception-2.0)
  • Zulu - OpenJDK 为 Windows、Linux 和 macOS 构建。(仅 GPL-2.0 WITH Classpath-exception-2.0)

内省

有助于使 Java 内省和反射 API 更容易和更快地使用的库。

  • ClassGraph - ClassGraph(以前称为 FastClasspathScanner)是一个超快速、超轻量级、并行化的类路径扫描器和模块扫描器,适用于 Java、Scala、Kotlin 和其他 JVM 语言。
  • jOOR - jOOR 代表 jOOR 面向对象反射。它是 java.lang.reflect 包的简单包装器。
  • Mirror - 创建 Mirror 是为了解决一个简单的问题,通常命名为 ReflectionUtil,几乎所有依赖反射来完成高级任务的项目都使用它。
  • Objenesis - 允许在没有默认构造函数的情况下进行动态实例化,例如具有必需参数、副作用或抛出异常的构造函数。
  • ReflectASM - ReflectASM 是一个非常小的 Java 库,它通过使用代码生成来提供高性能反射。
  • Reflections - Reflections 扫描你的类路径,索引元数据,允许你在运行时查询它,并且可以为你的项目中的许多模块保存和收集这些信息。

消息队列

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

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

微服务

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

  • ActiveRPC - 用于复杂的高负载分布式应用程序和类似 Memcached 的解决方案的轻量级和快速库。
  • Apollo - 用于编写可组合微服务的库。
  • Armeria - 建立在 Java 8、Netty、HTTP/2、Thrift 和 gRPC 之上的异步 RPC/REST 客户端/服务器库。
  • consul-api -Consul API 的客户端:分布式、高可用性和数据中心感知的注册/发现服务。
  • Eureka - 基于 REST 的服务注册表,用于弹性负载平衡和故障转移。
  • Helidon - 两种编写微服务的方法:功能反应式和作为 MicroProfile 的实现。
  • Micronaut - 现代全栈框架,专注于模块化、最小内存占用和启动时间。
  • Nacos - 用于构建云原生应用程序的动态服务发现、配置和服务管理平台。
  • Quarkus - 为 HotSpot 和 Graal VM 量身定制的 Kubernetes 堆栈。
  • Sentinel - 流控制组件,可实现微服务的可靠性、弹性和监控。

日志记录

记录应用程序行为的库。

  • Apache Log4j 2 - 使用强大的插件和配置架构完成重写。
  • Graylog - 适用于扩展角色和权限管理的开源聚合器。(仅限 GPL-3.0)
  • Kibana - 分析和可视化日志文件。有些功能需要付费。
  • Logback - 强大的日志库,通过 Groovy 提供有趣的配置选项。
  • Logbook - 用于 HTTP 请求和响应日志记录的可扩展开源库。
  • Logstash - 用于管理日志文件的工具。
  • p6spy - 为所有 JDBC 事务启用日志记录,而无需更改代码。
  • SLF4J - 抽象层/简单的日志记录外观。
  • tinylog - 具有静态记录器类的轻量级记录框架。
  • OpenTracing Toolbox - 建立在 OpenTracing 之上并为现有仪器提供扩展和插件的库的集合。

作业调度

用于调度后台作业的库。

  • JobRunr - 作业调度库,它利用 lambdas 进行即发即弃、延迟和重复作业。使用乐观锁定保证单个调度程序实例的执行。具有持久性、最小依赖性和可嵌入的特性。
  • Quartz - 功能丰富的开源作业调度库,几乎可以集成到任何 Java 应用程序中。
  • Sundial - 轻量级框架,用于简单地定义作业、定义触发器和启动调度程序。
  • Wisp - 具有最小占用空间和简单 API 的简单库。
  • db-scheduler - 持久且对集群友好的调度程序。
  • easy-batch - 使用简单的处理管道设置批处理作业。记录从数据源按顺序读取,在管道中处理并批量写入数据接收器。
  • shedlock - 确保您的计划任务最多同时执行一次。如果一个任务正在一个节点上执行,它会获取一个锁,以防止从另一个节点或线程执行相同的任务。

JSON

用于对 Java 对象进行 JSON 序列化和反序列化的库。

  • DSL-JSON - 具有高级编译时数据绑定的 JSON 库。
  • Genson - 功能强大且易于使用的 Java 到 JSON 转换库。
  • Gson - 将对象序列化为 JSON,反之亦然。即时使用的良好性能。
  • HikariJSON - 高性能 JSON 解析器,比 Jackson 快 2 倍。
  • jackson-modules-java8 - 一组用于 Java 8 数据类型和功能的 Jackson 模块。
  • Jackson-datatype-money - 开源 Jackson 模块,支持 JavaMoney 数据类型的 JSON 序列化和反序列化。
  • 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。
  • fastjson - 非常快的处理器,没有额外的依赖和完整的数据绑定。
  • Jolt - JSON 到 JSON 的转换工具。
  • JsonPath - 使用类似 XPATH 的语法从 JSON 中提取数据。
  • JsonSurfer - 专用于处理大而复杂的 JSON 数据的流式 JsonPath 处理器。

监控

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

  • Automon - 将 AOP 的强大功能与监控和/或日志工具相结合。
  • Failsafe Actuator - 在 Spring-Boot 环境中对故障安全断路器的开箱即用监控。
  • Glowroot - 开源 Java APM。
  • inspectIT - 通过可以动态更改的挂钩捕获详细的运行时信息。它支持通过 OpenTracing API 对多个系统进行跟踪,并且可以将数据与最终用户监控相关联。
  • JavaMelody - 性能监控和分析。
  • Jaeger 客户端- Jaeger 客户端。
  • jmxtrans - 连接到多个 JVM 并通过 JMX 查询它们的属性。它的查询语言基于 JSON,它允许非 Java 程序员访问 JVM 属性。支持不同的输出写入,包括 Graphite、Ganglia 和 StatsD。
  • Jolokia - 基于 REST 的 JMX。
  • 指标- 通过 JMX 或 HTTP 公开指标并将它们发送到数据库。
  • nudge4j - 通过字节码注入从 Java 8 浏览器远程开发者控制台。
  • Pinpoint - 开源 APM 工具。
  • Prometheus - 提供多维数据模型、DSL、自治服务器节点等等。
  • Stagemonitor - JVM 应用程序的开源性能监控和事务跟踪。
  • Sysmon - 用于 Java VM 的轻量级平台监控工具。
  • zipkin - 分布式跟踪系统,它收集解决微服务架构中的延迟问题所需的时间数据。

网络

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

  • Commons-networking - 服务器发送事件 (SSE) 的客户端。
  • Comsat - 将标准 Java Web 相关 API 与 Quasar 光纤和参与者集成。
  • Dubbo - 高性能 RPC 框架。
  • 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 - 用于构建高性能网络应用程序的框架。
  • Drift - 易于使用、基于注释的库,用于创建 Thrift 客户端和可序列化类型。
  • ServiceTalk - 基于 Netty 构建的框架,具有针对特定协议量身定制的 API,并支持多种编程范式。
  • sshj - 以编程方式使用 SSH、SCP 或 SFTP。
  • TLS Channel - 通过 SSLEngine 实现 ByteChannel 接口,实现易于使用(类似套接字)的 TLS。
  • Undertow - 基于 NIO 提供阻塞和非阻塞 API 的 Web 服务器。在 WildFly 中用作网络层。(仅限 LGPL-2.1)
  • urnlib - 表示、解析和编码 URN,如 RFC 2141 中所示。(仅限 GPL-3.0)

安全

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

  • Apache Shiro - 执行身份验证、授权、加密和会话管理。
  • Bouncy Castle - 通用加密库和 JCA 提供程序,提供广泛的功能,从基本帮助程序到 PGP/SMIME 操作。
  • Cryptomator - 云中文件的多平台、透明、客户端加密。(仅限 GPL-3.0)
  • Hdiv - 运行时应用程序,可抵御 OWASP 前 10 名中包含的应用程序安全风险,包括 SQL 注入、跨站点脚本、跨站点请求伪造、数据篡改和暴力攻击。
  • jjwt - 适用于 Java 和 Android 的 JSON Web 令牌。
  • jwt-java - 使用流畅的 API 轻松创建和解析 JSON Web 令牌并创建自定义的 JWT 验证器。
  • Jwks RSA - JSON Web 密钥集解析器。
  • Kalium - 网络和密码学 (NaCl) 库的绑定。
  • Keycloak - 用于浏览器应用程序和 RESTful Web 服务的集成 SSO 和 IDM。
  • Keywhiz - 用于分发和管理机密的系统。
  • Nbvcxz - 高级密码强度估计。
  • OACC - 提供基于权限的授权服务。
  • OTP-Java - 根据 RFC 4226 (HOTP) 和 RFC 6238 (TOTP) 的一次性密码生成器库。
  • pac4j - 安全引擎。
  • Password4j - 用户友好的密码库,支持 Argon2、Bcrypt、Scrypt、PBKDF2 和各种其他密码散列函数。
  • SecurityBuilder - 适用于 JCA 和 JSSE 类的 Fluent Builder API,尤其是 X.509 证书。
  • SSLContext-Kickstart - 用于使用 SSL/TLS 配置 HTTP 客户端的高级 SSL 上下文构建器。
  • Themis - 多平台高级加密库提供易于使用的加密来保护敏感数据:具有前向保密的安全消息传递、安全数据存储 (AES256GCM);适合构建端到端加密应用程序。
  • Tink - 为常见的加密任务提供简单且防误用的 API。

序列化

高效处理序列化的库。

  • 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 服务器。
  • WildFly - 以前称为 JBoss,由 Red Hat 开发,具有广泛的 Java EE 支持。(仅限 LGPL-2.1)

测试相关

模拟以帮助测试单个独立单元的工具。

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

相关优质的书籍

核心 Java 第 I 卷——基础 

核心 Java 第 II 卷——高级特性 

Effective Java(第 3 版) 

Java 并发实践 Thinking In Java

参考:https://github.com/akullpp/awesome-java


程序员专属卫衣

商品直购链接 👇

  推荐阅读:

终于!我找到程序员爱穿卫衣的原因了!!!

Java 18 刚刚发布

太顺手了!Java开发中那些非常好用的工具

Java 中如何加密配置文件中的数据库账号和密码?

推荐:4 款专属极客卫衣,程序员秒懂!

每日打卡赢积分兑换书籍入口

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存