国外的优秀开源项目没啥好说的,支持国产,今天重点聊聊国内优秀的 Java 开源项目。在国内开源项目做得最好的莫非于阿里巴巴了,今天特地给大家整理了阿里的 11 个神级项目。最后还有一个 java 全开源的 saas 新零售小程序系统,研究微信生态的技术爱好者可以关注一下,有很多值得学习的地方。
不看会后悔喔!
这些开源项目中的绝大多数,我都在实际工作中用过,或者有同事用过。确实挺不错,挺有价值的,现在推荐给大家。
Druid 自称是 Java 语言中最好的数据库连接池,它能够提供强大的监控和扩展功能。监控后台如下图所示:
Druid 的主要优点如下:
github 地址: https://github.com/alibaba/druid maven 中央仓库: https://mvnrepository.com/artifact/com.alibaba/druid
配置 maven 依赖:
com.alibaba
druid
${druid-version}
fastjson 是阿里巴巴的开源 JSON 解析库,它可以解析 JSON 格式的字符串,支持将 Java Bean 序列化为 JSON 字符串,也可以从 JSON 字符串反序列化到 JavaBean。
fastjson 的主要优点如下:
//序列化
String text = JSON.toJSONString(obj);
//反序列化
VO vo = JSON.parseObject("{...}", VO.class);
github 地址: https://github.com/alibaba/fastjson maven 中央仓库: https://mvnrepository.com/artifact/com.alibaba/fastjson
配置 maven 依赖:
com.alibaba
fastjson
1.2.76
Apache Dubbo 是一款微服务开发框架,它提供了 RPC 通信 与 微服务治理 两大关键能力。这意味着,使用 Dubbo 开发的微服务,将具备相互之间的远程发现与通信能力, 同时利用 Dubbo 提供的丰富服务治理能力,可以实现诸如服务发现、负载均衡、流量调度等服务治理诉求。
同时 Dubbo 是高度可扩展的,用户几乎可以在任意功能点去定制自己的实现,以改变框架的默认行为来满足自己的业务需求。它目前已交给 Apache 管理和维护。
架构图如下:
Dubbo 的主要优点如下:
github 地址: https://github.com/apache/dubbo maven 中央仓库: https://mvnrepository.com/artifact/com.alibaba/dubbo/
配置 maven 依赖:
3.0.3
org.apache.dubbo
dubbo
${dubbo.version}
org.apache.dubbo
dubbo-dependencies-zookeeper
${dubbo.version}
pom
Apache RocketMQ 是一个分布式消息和流媒体平台,具有低延迟、高性能和可靠性、万亿级容量和灵活的可扩展性。
它提供了多种功能:
rocketmq 后台管理界面:
github 地址: https://github.com/apache/rocketmq maven 中央仓库: https://mvnrepository.com/artifact/org.apache.rocketmq/rocketmq-spring-boot-starter
rocketmq 包含:服务端和客户端,在我们的项目中主要关注客户端的代码即可。
配置 maven 依赖:
org.apache.rocketmq
rocketmq-client
4.3.0
Arthas 是 Alibaba 开源的 Java 诊断工具,深受开发者喜爱。
当你遇到以下类似问题而束手无策时,Arthas 可以帮助你解决:
分析代码消耗时间:
Arthas 支持 JDK 6+,能够运行在多种操作系统上,比如:Linux/Mac/Windows,采用命令行交互模式,同时提供丰富的 Tab 自动补全功能,进一步方便进行问题的定位和诊断。
github 地址: https://alibaba.github.io/arthas/ maven 中央仓库: https://mvnrepository.com/artifact/com.taobao.arthas/arthas-spring-boot-starter
在目标机器执行如下命令即可启动 arthas:
curl -O https://arthas.aliyun.com/arthas-boot.jar
java -jar arthas-boot.jar
Nacos 是一个易于使用的平台,专为动态服务发现和配置以及服务管理而设计。它可以帮助您轻松构建云原生应用程序和微服务平台。
服务是 Nacos 的一等公民。Nacos 支持几乎所有类型的服务,例如 Dubbo/gRPC 服务、Spring Cloud RESTFul 服务或 Kubernetes 服务。
Nacos 提供了四大功能。
Nacos 地图:
Nacos 生态图:
github 地址: https://github.com/alibaba/nacos maven 中央仓库: https://mvnrepository.com/artifact/com.alibaba.cloud/spring-cloud-starter-alibaba-nacos-discovery
Java 解析、生成 Excel 比较有名的框架有 Apache poi、jxl。但他们都存在一个严重的问题就是非常的耗内存,poi 有一套 SAX 模式的 API 可以一定程度的解决一些内存溢出的问题,但 POI 还是有一些缺陷,比如 07 版 Excel 解压缩以及解压后存储都是在内存中完成的,内存消耗依然很大。
easyexcel 重写了 poi 对 07 版 Excel 的解析,一个 3M 的 excel 用 POI sax 解析依然需要 100M 左右内存,改用 easyexcel 可以降低到几 M,并且再大的 excel 也不会出现内存溢出;03 版依赖 POI 的 sax 模式,在上层做了模型转换的封装,让使用者更加简单方便。
64M 内存 1 分钟内读取 75M (46W 行 25 列) 的 Excel
github 地址: https://github.com/alibaba/easyexcel maven 中央仓库: https://mvnrepository.com/artifact/com.alibaba/easyexcel
配置 maven 依赖:
com.alibaba
easyexcel
2.2.6
随着分布式系统变得越来越流行,服务之间的可靠性变得比以往任何时候都更加重要。
Sentinel 以 “流量” 为切入点,在流量控制、 流量整形、熔断、系统自适应保护等多个领域开展工作,保障微服务的可靠性和弹性。
Sentinel 具有以下特点:
功能概述:
生态系统景观:
github 地址: https://github.com/alibaba/Sentinel maven 中央仓库: https://mvnrepository.com/artifact/com.alibaba.csp/sentinel-core
配置 maven 依赖:
com.alibaba.csp
sentinel-core
1.8.2
阿里巴巴 B2B 公司,因为业务的特性,卖家主要集中在国内,买家主要集中在国外,所以衍生出了杭州和美国异地机房的需求,同时为了提升用户体验,整个机房的架构为双 A,两边均可写,由此诞生了 otter 这样一个产品。
otter 第一版本可追溯到 04~05 年,此次外部开源的版本为第 4 版,开发时间从 2011 年 7 月份一直持续到现在,目前阿里巴巴 B2B 内部的本地 / 异地机房的同步需求基本全上了 otte4。
目前同步规模:
otter 能解决什么?
工作原理图:
单机房复制示意图:
异地机房复制示意图:
github 地址: https://github.com/alibaba/otter maven 中央仓库: https://mvnrepository.com/artifact/com.alibaba.otter/canal.client
P3C 插件呈现了阿里巴巴 Java 编码指南,它整合了阿里巴巴集团技术团队多年来的最佳编程实践。由于我们鼓励重用和更好地理解彼此的程序,因此大量 Java 编程团队对跨项目的代码质量提出了苛刻的要求。
阿里巴巴过去见过很多编程问题。例如,有缺陷的数据库表结构和索引设计可能会导致软件架构缺陷和性能风险。另一个例子是混乱的代码结构难以维护。此外,未经身份验证的易受攻击的代码容易受到黑客的攻击。为了解决这些问题,我们为阿里巴巴的 Java 开发人员编写了这份文档。
更多信息请参考阿里巴巴 Java 编码指南:
该项目由 3 部分组成:
四十九条规则是基于 PMD 实现的,更多详细信息请参考 P3C-PMD 文档。IDE 插件(IDEA 和 Eclipse)中实现的四个规则如下:
使用 p3c 插件的效果:
最新版阿里巴巴 Java 开发手册下载地址:https://github.com/alibaba/p3c/blob/master/Java 开发手册(嵩山版).pdf
github 地址: https://github.com/alibaba/p3c/tree/master/idea-plugin
Spring Cloud Alibaba 为分布式应用开发提供一站式解决方案。它包含开发分布式应用程序所需的所有组件,使您可以轻松地使用 Spring Cloud 开发应用程序。
使用 Spring Cloud Alibaba,您只需添加一些注解和少量配置,即可将 Spring Cloud 应用连接到阿里巴巴的分布式解决方案,并通过阿里巴巴中间件构建分布式应用系统。
主要功能如下:
主要包含如下组件:
github 地址: https://github.com/alibaba/spring-cloud-alibaba
配置 maven 依赖:
com.alibaba.cloud
spring-cloud-alibaba-dependencies
2.2.6.RELEASE
pom
import
weiit-saas 是一款 Java 开源项目,属于 weiit 团队自研产品,意在通过技术封装,让企业无需代码开发,帮助企业一键生成小程序、公众号,让企业拥有独立品牌的自营商城。
基于 layui 前后端分离的企业级架构
兼容 spring cloud netflix & spring cloud alibaba
优化 Spring Security 内部实现,实现 API 调用的统一出口和权限认证授权中心
提供完善的企业微服务流量监控,日志监控能力
提供完善的压力测试方案
提供完善的灰度发布方案
提供完善的微服务部署方案
主要特点如下:
gitee 地址: weiit-saas: 是一款Java开源项目,属于weiit团队自研产品,意在通过技术封装,让企业无需代码开发,帮助企业一键生成小程序、公众号,让企业拥有独立品牌的自营商城。
好了,今天的分享就到这里,喜欢研究技术的朋友赶紧行动起来吧!