Apache jclouds 介绍与选型指南

Apache jclouds(终版 2.7.0)已于 2025 年退役并移入 Apache Attic:讲清这个多云 Java SDK 的 ComputeService/BlobStore 架构、版本节奏与归档制品获取路径,并给出与 Apache Libcloud、Terraform/OpenTofu、云厂商原生 SDK、Apache OpenDAL 的替代选型对比。

Apache jcloudsjcloudsApacheJava云计算2026/10/19

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/ 。
  • 版本依据:

二、软件概述

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.02021-02-28—
2.4.02021-09-04约 6 个月
2.5.02022-03-20约 6.5 个月
2.6.02024-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 嵌入式 SDKApache-2.02.7.0(2025-01-22,终版)214已停止(2013-10 成为 TLP,2025-08 入 Attic)应用内多云编程抽象(计算+对象存储);历史贡献者 229 人
Apache LibcloudPython 库Apache-2.03.9.1(2026-04-16)2.1k2023 年起放缓,2026 年恢复发版(3.8.0→3.9.0→3.9.1)最接近 jclouds 的 Python 等价物:统一计算/存储/DNS/负载均衡 API
TerraformIaC 命令行工具BUSL-1.1(1.6.0 起;Change License MPL 2.0)稳定版 1.16.6(另有 1.17.0-rc2,2026-10-14)50k高频持续发版声明式资源编排(HCL),面向"管理基础设施"而非"应用内调用"
OpenTofuIaC 命令行工具Apache-2.01.13.1—(Linux 基金会旗下开源分支)跟随 Terraform 生态持续发版Terraform 的开源分支,规避 BUSL 许可顾虑
Apache OpenDAL多语言数据访问层(Rust 核心)Apache-2.00.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"拆解迁移。

八、参考链接