阿里巴巴的 26 款超神 Java 开源项目
JVM & JDK
TaobaoJVM - 淘宝定制虚拟机
TaobaoJVM 基于 OpenJDK HotSpot VM,是国内第一个优化、定制且开源的服务器版 Java 虚拟机。目前已经在淘宝、天猫上线,全部替换了 Oracle 官方 JVM 版本,在性能和功能上都初步体现了它的价值。
SOFAArk - 轻量级 Java 类隔离容器
SOFAArk 是一款基于 Java 实现的轻量级类隔离容器,由蚂蚁金服公司开源;主要为应用程序提供类隔离和依赖包隔离的能力;基于 Fat Jar 技术,应用可以被打包成一个自包含可运行的 Fat Jar,应用既可以是简单的单模块 Java 应用,也可以是 Spring Boot 应用。
JVM-Sandbox - 动态非侵入 AOP 解决方案
JVM-Sandbox,JVM 沙箱容器,一种基于 JVM 的非侵入式运行期 AOP 解决方案。
分布式 & 微服务
Dubbo - Java RPC 框架
Apache Dubbo 是阿里巴巴的一款高性能、轻量级的开源 Java RPC 框架,它提供了三大核心能力:面向接口的远程方法调用、智能容错和负载均衡,以及服务自动注册和发现。
Dragonfly - P2P 文件分发系统
Dragonfly(蜻蜓) 是阿里自研的 P2P 文件分发系统,用于解决大规模文件分发场景下分发耗时、成功率低、带宽浪费等难题。大幅提升发布部署、数据预热、大规模容器镜像分发等业务能力。开源版的 Dragonfly 可用于 P2P 文件分发、容器镜像分发、局部限速、磁盘容量预检等。它支持多种容器技术,对容器本身无需做任何改造,镜像分发比 Natvie 方式提速可高达 57 倍,Registry 网络出流量降低 99.5% 以上。
Sentinel - 高可用流量管理框架
Sentinel 是面向微服务的轻量级流量控制框架,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。只要通过 Sentinel API 定义的代码,就是资源,能够被 Sentinel 保护起来。大部分情况下,可以使用方法签名、URL,甚至服务名称作为资源名来标示资源。
SOFATracer - 分布式链路追踪中间件
SOFATracer 是一个用于分布式系统调用跟踪的组件,通过统一的 TraceId 将调用链路中的各种网络调用情况以日志的方式记录下来,以达到透视化网络调用的目的。这些日志可用于故障的快速发现、服务治理等。
Nacos - 动态服务发现、配置和服务管理平台
Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您实现动态服务发现、服务配置管理、服务及流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以 “服务” 为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。
SOFABoot - 基于 Spring Boot 的开发框架
SOFABoot 是蚂蚁金服开源的基于 Spring Boot 的开发框架,它在 Spring Boot 的基础上,提供了诸如 Readiness Check、类隔离、日志空间隔离等等能力。在增强了 Spring Boot 的同时,SOFABoot 提供了让用户可以在 Spring Boot 中非常方便地使用 SOFAStack 相关中间件的能力。
OpenMessaging - 面向云的分布式消息领域标准
OpenMessaging 是由阿里巴巴发起,与雅虎、滴滴出行、Streamlio 公司共同参与创立,旨在创立厂商无关、平台无关的分布式消息及流处理领域的应用开发标准。
SOFALookout - 基于多维度 Metrics 的系统度量和监控中间件
Lookout 是一个利用多维度的 Metrics 对目标系统进行度量和监控的项目。Lookout 的多维度 Metrics 参考 Metrics 2.0 标准。Lookout 项目分为客户端部分与服务器端部分。客户端是一个 Java 的类库,可以将它植入您的应用代码中采集 Metrics 信息。服务端代码部分,将于下一版本提供。通过 Lookout 的服务,可以对 Metrics 数据进行收集、加工、存储和查询等处理,另外结合 Grafana 可以做数据可视化展示。
Spring Cloud Alibaba - 分布式应用服务开发的一站式解决方案
Spring Cloud Alibaba 致力于提供分布式应用服务开发的一站式解决方案。此项目包含开发分布式应用服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。依托 Spring Cloud Alibaba,您只需要添加一些注解和少量配置,就可以将 Spring Cloud 应用接入阿里分布式应用解决方案,通过阿里中间件来迅速搭建分布式应用系统。
数据库
TDDL - 分布式数据层
TDDL 是一个基于集中式配置的 JDBC DataSource 实现,具有主备,读写分离,动态数据库配置等功能。
Seata - 分布式事务解决方案
Seata 一种用于微服务架构的高性能、易用的分布式事务解决方案。
Druid - 为监控而生的数据库连接池
Druid 是一个 JDBC 组件。
- SQL 执行日志
- 数据库密码加密
- 监控数据库访问性能
- 提供了一个高效、功能强大、可扩展性好的数据库连接池
CobarClient - 轻量级分布式数据访问层
Cobar Client 是一个轻量级分布式数据访问框架 (DDAL),基于 iBatis (已更名为 MyBatis) 和 Spring 框架实现。
大数据
JStorm - 企业级流式计算引擎
JStorm 是参考 Apache Storm 实现的实时流式计算框架,在网络 IO、线程模型、资源调度、可用性及稳定性上做了持续改进,已被越来越多企业使用。JStorm 可以看作是 Storm 的 Java 增强版本,除了内核用纯 Java 实现之外,还包括了 Thrift、Python、Facet UI。从架构上看,其本质是一个基于 Zookeeper 的分布式调度系统。
网络通信
SOFABolt - 基于 Netty 的网络通信框架
SOFABolt 是蚂蚁金融服务集团开发的一套基于 Netty 实现的网络通信框架。为了让 Java 程序员能将更多的精力放在基于网络通信的业务逻辑实现上,而不是过多的纠结于网络底层 NIO 的实现以及处理难以调试的网络问题,Netty 应运而生。为了让中间件开发者能将更多的精力放在产品功能特性实现上,而不是重复地一遍遍制造通信框架的轮子,SOFABolt 应运而生。
JSON 处理
fastjson - Java 的 JSON 处理器
fastjson 是一个性能很好的 Java 语言实现的 JSON 解析器和生成器,来自阿里巴巴的工程师开发。主要特点:
零依赖
:没有依赖其它任何类库除了 JDK快速
: 比其它任何基于 Java 的解析器和生成器更快,包括 Jackson强大
:支持普通 JDK 类包括任意 Java Bean、Collection、Map、Date 或 Enum
其他开源项目
Apns4j - Apple 推送服务
Apns4j 是 Apple Push Notification Service 的 Java 实现。
P3C - Java 代码规约扫描插件
P3c 项目包含三部分:PMD 实现、IntelliJ IDEA 插件、Eclipse 插件。
Arthas - 开源 Java 诊断工具
Arthas(阿尔萨斯) 是阿里巴巴开源的 Java 诊断工具,深受开发者喜爱。Arthas 采用命令行交互模式,同时提供丰富的 Tab 自动补全功能,进一步方便进行问题的定位和诊断。
Tedis - Redis 的 Java 客户端
Tedis 是一个 Redis 的 Java 客户端。Tedis 的目标是打造一个可在生产环境直接使用的高可用 Redis 解决方案。
SimpleImage - Java 图片处理类库
SimpleImage 是阿里巴巴的一个 Java 图片处理的类库,可以实现图片缩略、水印等处理。
EasyExcel - Java 解析 Excel 工具
EasyExcel 是一款优秀的 Excel 工具库。Java 解析、生成 Excel 比较有名的框架有 Apache POI、JXL,但它们都存在一个严重的问题就是非常的耗内存。POI 有一套 SAX 模式的 API 可以一定程度的解决一些内存溢出的问题,但 POI 还是有一些缺陷,比如 07 版 Excel 解压缩以及解压后存储都是在内存中完成的,内存消耗依然很大。EasyExcel 重写了 POI 对 07 版 Excel 的解析,能够将原本一个 3M 的 Excel 用 POI SAX 依然需要 100M 左右内存降低到 KB 级别,并且再大的 Excel 都不会出现内存溢出,03 版依赖 POI 的 SAX 模式。在上层做了模型转换的封装,让使用者更加简单方便。
vlayout - LayoutManager 定制化布局方案
vlayout 是一个针对 RecyclerView 的 LayoutManager 扩展,主要提供一整套布局方案和布局间的组件复用的问题。