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 を使用できます。 ただし、REST API は、必要に応じていつでも Java コードから直接使用できます。
  • Azure ライブラリのソース コードは、GitHub リポジトリにあります。 オープンソース プロジェクトとして、皆さんの参加を歓迎します。
  • 現在、認証プロトコル、ログ、トレース、トランスポート プロトコル、バッファーされた応答、再試行などの一般的なクラウド パターンを共有するために、Azure SDK for Java のライブラリを更新しています。
    • この共有機能は、azure-core ライブラリに含まれています。
  • ライブラリに適用されるガイドラインの詳細については、「Java Azure SDK 設計ガイドライン」を参照してください。

Azure SDK for Java でサポートされているプラットフォーム

Azure SDK for Java には Java 8 以降のサポートが含まれていますが、開発者は、開発時および実稼働環境へのリリース時には常に最新の Java 長期サポート (LTS) リリースを使用することをお勧めします。 最新の LTS リリースを使用すると、バグの修正、パフォーマンスの向上、セキュリティ修正など、Java 内の最新の機能強化を確実に利用できます。 また、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 クライアント ライブラリは、クライアントのインスタンスの作成を担当する Java builder クラスを提供する場合と同じ API 設計パターンに従います。 このパターンでは、クライアントの定義およびインスタンス化をその操作から分離することで、クライアントが不変であることを可能にし、その結果、使用しやすくなります。 さらに、すべてのクライアント ライブラリは、次のいくつかの重要なパターンに従います。

  • 同期と非同期の両方の API をサポートするクライアント ライブラリでは、これらの API を別個のクラスで提供する必要があります。 つまり、たとえば、同期 API の KeyVaultClient と非同期 API の KeyVaultAsyncClient が存在する場合などです。

  • 同期と非同期の両方の API を構築する役割を担う 1 つのビルダー クラスがあります。 ビルダーには、同期クライアント クラスに似た、Builder を含む名前が付けられます。 たとえば、KeyVaultClientBuilder のようにします。 このビルダーには、必要に応じてクライアント インスタンスを作成するための buildClient() および buildAsyncClient() メソッドが用意されています。

これらの規則により、Client で終わるすべてのクラスは不変であり、Azure サービスとやりとりするための操作を提供します。 ClientBuilder で終わるすべてのクラスは、特定のクライアントの種類のインスタンスを構成および作成するための操作を提供します。

クライアント ライブラリの例

次のコード例は、同期キー コンテナー 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 portal または Azure CLI で行うのと同じタスクを実行する構成またはデプロイのスクリプトを作成することができます。

すべての Azure Java 管理ライブラリには、サービス API として *Manager クラスが用意されています。たとえば、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 の概要を理解したので、ライブラリを使用するときに生産性を向上させる多くの横断的な概念について詳しく調べることができます。 次の記事は、適切な出発点になります。