使用用于 Java 的 Azure SDK
开源 Azure SDK for Java 简化了 Java 应用程序代码中的 Azure 资源的预配、管理和使用。
重要详细信息
- Azure 库介绍如何通过在本地或云中运行的 Java 代码与 Azure 服务通信。
- 这些库支持 Java 8 及更高版本,并针对 Java 8 基线和最新的 Java“长期支持”版本进行测试。
- 这些库包括完整的 Java 模块支持,这意味着它们完全符合 Java 模块的要求,并导出要使用的所有相关包。
- 适用于 Java 的 Azure SDK 仅由与特定 Azure 服务相关的许多单个 Java 库组成。 “SDK”中没有其他工具。
- 有不同的“管理”和“客户端”库(有时称为“管理平面”和“数据平面”库)。 每个集都用于不同的目的,由不同类型的代码使用。 有关详细信息,请参阅本文后面的以下部分:
- 你可以在按 Azure 服务组织的 Azure for Java 参考中或按包名称组织的 Java API 浏览器中查找有关库的文档。
其他详细信息
- 基于基础 Azure REST API 构建的用于 Java 的 Azure SDK 库,允许通过熟悉的 Java 范例使用这些 API。 但是,如果愿意,始终可以直接从 Java 代码使用 REST API。
- 可以在 GitHub 存储库中找到 Azure 库的源代码。 作为开源项目,欢迎贡献!
- 我们目前正在更新用于 Java 的 Azure SDK 库,以共享常见的云模式,例如身份验证协议、日志记录、跟踪、传输协议、缓冲响应和重试。
- 此共享功能包含在azure-core 库中。
- 有关我们适用于库的准则的详细信息,请参阅 Java Azure SDK 设计指南。
适用于 Java 的 Azure SDK 支持的平台
Azure SDK for Java 附带了对 Java 8 和更高版本的支持,但我们建议开发人员始终在开发中使用最新的 Java 长期支持(LTS)版本,并在发布到生产环境时使用。 使用最新的 LTS 版本可确保 Java 中最新改进的可用性,包括 bug 修复、性能改进和安全修补程序。 此外,Azure SDK for Java 还包括对更高版本的 Java 的其他支持。 此附加支持可提高性能,并包括特定于 JDK 的增强功能,超出了受支持的 Java 8 基线。
适用于 Java 的 Azure SDK 在 Windows、Linux 和 macOS 上进行测试和支持。 它未在 JDK 支持的其他平台上进行测试,也不支持 Android 部署。 对于想要在 Android 设备上开发部署软件并使用 Azure 服务的开发人员,适用于 Android 的 Azure SDK 项目中提供了特定于 Android 的库。
通过客户端库连接到和使用 Azure 资源
客户端(或“数据平面”)库可帮助你编写 Java 应用程序代码以与已预配的服务进行交互。 客户端库仅适用于支持客户端 API 的服务。 你可以识别它们,因为它们的 Maven 组 ID 是 com.azure
。
所有 Azure Java 客户端库都遵循相同的 API 设计模式,提供负责创建客户端实例的 Java 生成器类。 此模式将客户端的定义和实例化与其操作分开,从而允许客户端不可变,因此更易于使用。 此外,所有客户端库都遵循一些重要的模式:
支持同步和异步 API 的客户端库必须在单独的类中提供这些 API。 例如,在这些情况下,同步 API 会对应
KeyVaultClient
,而异步 API 会对应KeyVaultAsyncClient
。有一个生成器类负责生成同步和异步 API。 生成器的名称与同步客户端类类似,并包含
Builder
。 例如,KeyVaultClientBuilder
。 此生成器具有buildClient()
和buildAsyncClient()
方法来根据需要创建客户端实例。
由于这些约定,以 Client
结尾的所有类都是不可变的,并提供与 Azure 服务交互的操作。 以 ClientBuilder
结尾的所有类都提供配置和创建特定客户端类型的实例的操作。
客户端库示例
以下代码示例演示如何创建同步 Key Vault KeyClient
:
KeyClient client = new KeyClientBuilder()
.endpoint(<your Key Vault URL>)
.credential(new DefaultAzureCredentialBuilder().build())
.buildClient();
以下代码示例演示如何创建异步密钥保管库 KeyAsyncClient
:
KeyAsyncClient client = new KeyClientBuilder()
.endpoint(<your Key Vault URL>)
.credential(new DefaultAzureCredentialBuilder().build())
.buildAsyncClient();
有关使用每个客户端库的详细信息,请参阅 SDK GitHub 存储库中库的项目目录中 README.md 文件。 还可以在 参考文档 和 Azure 示例中找到更多代码片段。
使用管理库预配和管理 Azure 资源
管理(或“管理平面”)库可帮助你通过 Java 应用程序代码创建、预配和其他管理 Azure 资源。 可以在 com.azure.resourcemanager
Maven 组 ID 中找到这些库。 所有 Azure 服务都有相应的管理库。
使用管理库,您可以编写配置和部署脚本,以便执行通过 Azure 门户
所有 Azure Java 管理库都提供一个 *Manager
类作为服务 API,例如,为 Azure 计算服务 ComputeManager
,或者为常用服务的聚合提供 AzureResourceManager
。
管理库示例
以下代码示例演示如何创建 ComputeManager
:
ComputeManager computeManager = ComputeManager
.authenticate(
new DefaultAzureCredentialBuilder().build(),
new AzureProfile(AzureEnvironment.AZURE));
以下代码示例演示如何预配新虚拟机:
VirtualMachine virtualMachine = computeManager.virtualMachines()
.define(<your virtual machine>)
.withRegion(Region.US_WEST)
.withExistingResourceGroup(<your resource group>)
.withNewPrimaryNetwork("10.0.0.0/28")
.withPrimaryPrivateIPAddressDynamic()
.withoutPrimaryPublicIPAddress()
.withPopularLinuxImage(KnownLinuxVirtualMachineImage.UBUNTU_SERVER_18_04_LTS)
.withRootUsername(<virtual-machine username>)
.withSsh(<virtual-machine SSH key>)
.create();
以下代码示例演示如何获取现有虚拟机:
VirtualMachine virtualMachine = computeManager.virtualMachines()
.getByResourceGroup(<your resource group>, <your virtual machine>);
以下代码示例演示如何更新虚拟机并添加新数据磁盘:
virtualMachine.update()
.withNewDataDisk(10)
.apply();
有关使用每个管理库的详细信息,请参阅 SDK GitHub 存储库中库项目目录中 README.md 文件。 还可以在 参考文档 和 Azure 示例中找到更多代码片段。
获取帮助并与 SDK 团队联系
- 请访问 Azure SDK for Java 文档。
- 在社区的 Stack Overflow上发布问题。
- 在 GitHub 存储库中提起针对 SDK 的问题。
- 在 Twitter 上提及 @AzureSDK。
后续步骤
了解适用于 Java 的 Azure SDK 后,可以深入探讨许多跨领域概念,以便在使用库时提高工作效率。 以下文章可作为良好的起点: