Apache jclouds 介绍与选型指南
Apache jclouds(终版 2.7.0)已于 2025 年退役并移入 Apache Attic:讲清这个多云 Java SDK 的 ComputeService/BlobStore 架构、版本节奏与归档制品获取路径,并给出与 Apache Libcloud、Terraform/OpenTofu、云厂商原生 SDK、Apache OpenDAL 的替代选型对比。
Apache jclouds 介绍与选型指南
目标:基于官方来源讲清 Apache jclouds 的项目定位、核心架构、版本演进与 2025 年退役的现状,并面向新项目给出以替代品为主的量化选型对比。本文为认知篇,全部论断基于 Apache Attic 官方页面、GitHub Releases、Maven Central 与项目官网联网溯源(查询日期 2026-10-19),不做本地安装实测。
一、信息基准
本章先给齐本文所有版本号与状态判断的溯源基准,后续各章的数字均以此为准。
- 查询日期:2026-10-19(本文所有版本号、星标数、发布日期均在该日联网核验)。
- 基准版本:2.7.0(项目最后稳定版,GitHub 仓库
apache/jclouds最新发布标签rel/jclouds-2.7.0,标签时间 2025-01-22;Maven Central 上org.apache.jclouds:jclouds-allblobstore最新版本同为 2.7.0)。 - 维护方:原为 Apache 软件基金会(ASF)顶级项目;项目状态:已退役——2025 年 6 月 18 日董事会决议退役,2025 年 8 月完成向 Apache Attic 的迁移(来源:https://attic.apache.org/projects/jclouds.html )。Attic 只提供只读托管,不做开发、不发版、不修缺陷。
- 许可:Apache License 2.0(ASF 项目标准许可,代码仓库随附 LICENSE 文件)。
- 发行形态:纯 Java 库(嵌入式 SDK,无独立守护进程),通过 Maven 坐标
org.apache.jclouds.*发布于 Maven Central;历史发行包归档于 https://archive.apache.org/dist/jclouds/ 。 - 版本依据:
- Attic 项目页(退役时间线、归档资源清单):https://attic.apache.org/projects/jclouds.html
- GitHub Releases Atom 流(各版本标签与日期):https://github.com/apache/jclouds/releases.atom
- master 分支提交 Atom 流(最后活动时间):https://github.com/apache/jclouds/commits/master.atom
- Maven Central 版本核验:https://central.sonatype.com/ (
org.apache.jclouds:jclouds-allblobstore) - 项目官网(退役前快照,仍在线只读):https://jclouds.apache.org/
二、软件概述
2.1 项目定位与现状
Apache jclouds 是一个面向 Java 平台的多云工具包(multi-cloud toolkit),目标是让同一份应用代码可以跨多家云提供商创建与管理资源:它抽象出统一的计算(ComputeService)与对象存储(BlobStore)接口,底层对接 AWS、Azure、Google、OpenStack、Rackspace 等数十个 provider,同时保留调用各云特有 API 的能力(来源:官网 https://jclouds.apache.org/ ,查询日期 2026-10-19)。
必须先讲清的现状:项目已整体退役。 Apache Attic 官方项目页明确记录:jclouds 于 2013 年 10 月成为 ASF 顶级项目,2025 年 6 月董事会决议退役,2025 年 8 月完成进入 Attic 的迁移(来源:https://attic.apache.org/projects/jclouds.html ,查询日期 2026-10-19)。进入 Attic 后项目官网与代码仓库保持只读在线,但社区不再修复缺陷、不再发布任何新版本。因此本文标题不带版本号——2.7.0 只是"最后稳定版",不代表仍在维护。
2.2 版本节奏(截至退役)
GitHub Releases Atom 流显示其后期版本节奏明显放缓(来源:https://github.com/apache/jclouds/releases.atom ,查询日期 2026-10-19):
| 版本 | 发布标签时间 | 间隔 |
|---|---|---|
| 2.3.0 | 2021-02-28 | — |
| 2.4.0 | 2021-09-04 | 约 6 个月 |
| 2.5.0 | 2022-03-20 | 约 6.5 个月 |
| 2.6.0 | 2024-03-03 | 约 23.5 个月 |
| 2.7.0(终版) | 2025-01-22 | 约 10.5 个月 |
版本间隔从约半年一路拉长到近两年;master 分支最后一次提交为 2025-04-28(来源:https://github.com/apache/jclouds/commits/master.atom ),此后再无活动,与次月启动的退役决议相互印证。选型视角下,这是一个"社区力量不足以维持发版节奏→进入 Attic"的典型案例。
三、核心架构
jclouds 的架构是"可移植抽象视图 + provider 适配器"的分层模型,以下依据官网首页与 provider 清单页归纳(来源:https://jclouds.apache.org/ 与 https://jclouds.apache.org/reference/providers/ ,查询日期 2026-10-19)。
3.1 三类可移植视图
- ComputeService:计算资源的可移植接口,覆盖创建节点、按操作系统族/内存/开放端口构建模板(Template)、执行启动脚本等生命周期操作,让用户"在任何云上以相同方式 provisioning 基础设施"。
- BlobStore:对象存储的可移植接口,统一容器(bucket/container)与对象(blob)的创建、读写、列举,屏蔽各对象存储服务的 API 差异。
- LoadBalancer(Beta):负载均衡的可移植抽象,定义后端节点加入负载均衡器的通用操作。
3.2 provider 与 API 适配层
每个 provider 是一个独立 Maven 构件(组 ID 为 org.apache.jclouds.provider,实验性能力在 org.apache.jclouds.labs),provider 清单页按 ComputeService / BlobStore / LoadBalancer 分类列出各云的适配构件与 ISO 3166 地域编码,如 AWS(aws-ec2)、CloudSigma 等。同一朵云还可只对接"裸 API"(如 aws-s3),不经过可移植视图直接使用云原生语义。用户通过 ContextBuilder 指定 provider 名、凭证、端点与模块,构建出对应视图的上下文。
3.3 部署形态
jclouds 是纯嵌入式 SDK:没有服务端进程、没有管理界面,以普通 jar 依赖随应用进程运行。这个形态决定了它适合"应用内直连云 API"的编程场景,而不是平台化运维场景。
四、关键特性
以下特性依据官网首页与 provider 清单页归纳(查询日期 2026-10-19):
- 可移植计算与存储抽象:同一套代码适配多家云的虚拟机创建与对象存储读写,降低多云绑定成本。
- 广泛的 provider 覆盖:清单页列出 AWS、Azure、Google、OpenStack、Rackspace 等数十个 provider/API 构件(退役前快照,能力以 2.7.0 为止,不再新增)。
- 可移植 + 原生双通道:可移植视图之外保留各云专属 API 构件,特殊能力不必绕过抽象层。
- 纯库、零依赖部署:无守护进程、无平台组件,作为普通 Maven 依赖嵌入 JVM 应用。
- 统一的凭证与端点模型:
ContextBuilder五段链路(provider、credentials、endpoint、overrides、modules)统一各云的接入差异。
💡 说明:上述特性均以"最后稳定版 2.7.0"为基准。项目进入 Attic 后,新云地域、新 API 版本不会再被适配,provider 覆盖面会随时间持续"老化",这是选型时最需评估的风险。
五、快速上手
前提认知:项目已退役,本节仅描述"如何获取与引用归档制品",不存在官方推荐的新部署路径。 两条获取途径均经联网核验(查询日期 2026-10-19):
途径 A:Maven Central(最常用)
jclouds 各构件仍在 Maven Central 上可解析(退役不清除既有坐标),例如引入全部对象存储 provider 的聚合构件:
<dependency>
<groupId>org.apache.jclouds</groupId>
<artifactId>jclouds-allblobstore</artifactId>
<version>2.7.0</version>
</dependency>
版本依据:Maven Central 上 org.apache.jclouds:jclouds-allblobstore 当前最新为 2.7.0(来源:https://central.sonatype.com/ ,查询日期 2026-10-19)。
途径 B:Apache 归档发行目录
历史源码/二进制发行包归档于 https://archive.apache.org/dist/jclouds/(来源:Attic 项目页资源清单,查询日期 2026-10-19)。
最小代码示例(转述自官网首页示例,来源:https://jclouds.apache.org/ )
// 对象存储:以 AWS S3 为例
BlobStore blobStore = ContextBuilder.newBuilder("aws-s3")
.credentials("identity", "credential")
.buildView(BlobStoreContext.class)
.getBlobStore();
blobStore.createContainerInLocation(location, "container-name");
// 计算:以 AWS EC2 为例
ComputeService compute = ContextBuilder.newBuilder("aws-ec2")
.credentials("identity", "credential")
.buildView(ComputeServiceContext.class)
.getComputeService();
Template template = compute.templateBuilder()
.osFamily(OsFamily.UBUNTU)
.minRam(2048)
.options(inboundPorts(22, 80))
.build();
compute.createNodesInGroup("jclouds", 1, template);
⚠️ 注意:以上代码仅为官方示例的转述,用于说明 API 形态。退役项目不存在版本更新与安全修复,生产系统引用 2.7.0 前务必自行做安全评估;新项目请直接看第六、七章。
六、适用场景与限制
明确结论:不建议任何新项目采用 jclouds。 理由与场景边界如下:
- 已退役(2025-08 入 Attic):Attic 定位即"项目生命周期终点"的托管组织,明确不做缺陷修复、不做新版本发布(来源:https://attic.apache.org/ )。
- 存量系统仍在使用 2.7.0 时:建议冻结版本、制定迁移计划。可继续运行的场景仅限——多云抽象需求已被 2.7.0 覆盖、且所在云 API 未再演进的老旧依赖;一旦所用云宣布 API 旧版本下线,jclouds 侧不会有任何适配。
- 新项目对应需求的替代路径:
- Java/Python 代码内的多云编程抽象 → Apache Libcloud(Python)或云厂商原生 SDK 组合;
- 资源编排与 IaC → Terraform(注意许可)或开源分支 OpenTofu;
- 多后端对象存储访问(jclouds BlobStore 的现代替代)→ Apache OpenDAL(Attic 页官方点名推荐:"For users of BlobStore, Apache OpenDAL provides one data access layer for all storage backends, which serves similar functionality",来源:https://attic.apache.org/projects/jclouds.html )。
七、同类选型对比
以替代品为主的量化对比(全部数据联网实查,查询日期 2026-10-19;星标数取自 shields.io GitHub badges,版本取自各官方 Releases):
| 项目 | 形态/语言 | 许可 | 最新版本(查询日期口径) | GitHub Stars | 版本节奏 | 定位差异 |
|---|---|---|---|---|---|---|
| Apache jclouds(已退役) | Java 嵌入式 SDK | Apache-2.0 | 2.7.0(2025-01-22,终版) | 214 | 已停止(2013-10 成为 TLP,2025-08 入 Attic) | 应用内多云编程抽象(计算+对象存储);历史贡献者 229 人 |
| Apache Libcloud | Python 库 | Apache-2.0 | 3.9.1(2026-04-16) | 2.1k | 2023 年起放缓,2026 年恢复发版(3.8.0→3.9.0→3.9.1) | 最接近 jclouds 的 Python 等价物:统一计算/存储/DNS/负载均衡 API |
| Terraform | IaC 命令行工具 | BUSL-1.1(1.6.0 起;Change License MPL 2.0) | 稳定版 1.16.6(另有 1.17.0-rc2,2026-10-14) | 50k | 高频持续发版 | 声明式资源编排(HCL),面向"管理基础设施"而非"应用内调用" |
| OpenTofu | IaC 命令行工具 | Apache-2.0 | 1.13.1 | —(Linux 基金会旗下开源分支) | 跟随 Terraform 生态持续发版 | Terraform 的开源分支,规避 BUSL 许可顾虑 |
| Apache OpenDAL | 多语言数据访问层(Rust 核心) | Apache-2.0 | 0.59.5(2026-10-18) | 5.4k | 周级高频发版 | 统一存储访问层(40+ 存储后端),Attic 官方点名的 BlobStore 替代 |
| 云厂商原生 SDK(AWS SDK for Java、Azure SDK for Java、Google Cloud Java 等) | 各语言 SDK | 各厂商自有 | 持续发版 | — | 随云新能力同步更新 | 单云深度能力优先:新服务特性第一时间可用,但无跨云抽象 |
选型建议:
- 在 Java 应用里做多云对象存储/计算编程抽象(jclouds 的原定位)→ 优先评估云厂商原生 SDK 组合(各云能力最全),确需单一抽象层再看 Libcloud(Python 栈)或 OpenDAL(存储访问,Java 绑定可用);
- 追求"声明式描述、计划-应用"的基础设施管理 → Terraform(注意 1.6+ 为 BUSL-1.1,转售/竞品托管受限)或 OpenTofu(Apache-2.0);
- 存量 jclouds 系统 → 短期冻结 2.7.0 风险自担,中期按"存储归 OpenDAL、编排归 Terraform/OpenTofu、单云编程归原生 SDK"拆解迁移。
八、参考链接
- Apache Attic 项目页(退役时间线与资源归档):https://attic.apache.org/projects/jclouds.html
- Apache Attic 说明(Attic 职责边界):https://attic.apache.org/
- GitHub Releases(版本标签记录):https://github.com/apache/jclouds/releases
- master 分支提交流(最后活动 2025-04-28):https://github.com/apache/jclouds/commits/master.atom
- Provider 清单页(退役前快照):https://jclouds.apache.org/reference/providers/
- 项目官网(只读快照):https://jclouds.apache.org/
- 历史发行包归档:https://archive.apache.org/dist/jclouds/
- Maven Central:https://central.sonatype.com/
- Apache Libcloud:https://libcloud.apache.org/
- Terraform 代码仓库与 LICENSE:https://github.com/hashicorp/terraform
- OpenTofu:https://opentofu.org/
- Apache OpenDAL:https://opendal.apache.org/