使用 Azure SDK for Java

开源 Azure SDK for Java 简化了通过 Java 应用程序代码预配、管理和使用 Azure 资源的过程。

重要详细信息

  • Azure 库可用于从本地或云中运行的 Java 代码与 Azure 服务进行通信。
  • 这些库支持 Java 8 及更高版本,并针对 Java 8 基线和最新的 Java“长期支持”版本进行了测试。
  • 这些库包括完整的 Java 模块支持,这意味着它们完全符合 Java 模块的要求并可以导出所有相关的包以供使用。
  • Azure SDK for Java 仅由许多与特定 Azure 服务相关的单个 Java 库组成。 该“SDK”中没有其他工具。
  • 有不同的“管理”库和“客户端”库(有时称为“管理平面”库和“数据平面”库)。 每一组的库都有不同的用途,由不同类型的代码使用。 有关详细信息,请参阅本文后面的以下部分:
  • 可在 Azure for Java 参考(按 Azure 服务进行组织)或 Java API 浏览器(按包名称进行组织)中找到这些库的文档。

其他详细信息

  • Azure SDK for Java 库基于底层 Azure REST API 生成,让你能够通过熟悉的 Java 范例使用这些 API。 不过,如果需要,始终可以直接通过 Java 代码使用 REST API。
  • 可在 GitHub 存储库中找到这些 Azure 库的源代码。 作为一个开源项目,你的贡献会受到欢迎!
  • 我们目前正在更新 Azure SDK for Java 库,以共享常见的云模式,如身份验证协议、日志记录、跟踪、传输协议、缓冲响应和重试。
  • 有关应用于库的准则的详细信息,请参阅 Java Azure SDK 设计准则

Azure SDK for Java 支持的平台

Azure SDK for Java 附带有对 Java 8 及更高版本的支持,但建议开发人员在开发期间和在发布到生产环境时,始终使用最新的 Java 长期支持 (LTS) 版本。 使用最新的 LTS 版本确保了可使用 Java 中的最新改进,包括 bug 修复、性能改进和安全修复。 此外,Azure SDK for Java 包含对 Java 更高版本的额外支持。 这种附加支持可提高性能,并包含超出受支持的 Java 8 基线之外的 JDK 特定增强功能。

Azure SDK for Java 已在 Windows、Linux 和 macOS 上经过测试且受到支持。 它没有在 JDK 支持的其他平台上进行测试,也不支持 Android 部署。 如果开发人员想要开发软件以在 Android 设备上进行部署并使用 Azure 服务,可在 Azure SDK for Android 项目中获取 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();

以下代码示例演示如何创建异步 Key Vault KeyAsyncClient

KeyAsyncClient client = new KeyClientBuilder()
        .endpoint(<your Key Vault URL>)
        .credential(new DefaultAzureCredentialBuilder().build())
        .buildAsyncClient();

有关如何使用每个客户端库的详细信息,请参阅 README.md 文件(位于 SDK GitHub 存储库的库项目目录中)。 也可在参考文档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();

有关如何使用每个管理库的详细信息,请参阅 README.md 文件(位于 SDK GitHub 存储库的库项目目录中)。 也可在参考文档Azure 示例中找到更多代码片段。

获取帮助并与 SDK 团队联系

后续步骤

现在,你已了解 Azure SDK for Java 的概念,接下来可以深入了解许多旨在帮助你提高使用库时的工作效率的跨领域概念。 以下文章提供了良好的起点: