使用用于 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 库,以共享常见的云模式,例如身份验证协议、日志记录、跟踪、传输协议、缓冲响应和重试。
  • 有关我们适用于库的准则的详细信息,请参阅 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 CLI所能完成的相同任务。

所有 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 团队联系

后续步骤

了解适用于 Java 的 Azure SDK 后,可以深入探讨许多跨领域概念,以便在使用库时提高工作效率。 以下文章可作为良好的起点: