AzureにおけるJDKの話

# はじめに

この記事は、[Java開発者のためのAzure入門 - Qiita](https://qiita.com/official-events/22637c675c61a797a24f) のエントリ記事です。Azureの様々なサービスは、Javaに対応しているので、少しずつ紹介していこう思います。

一発目はAzureを取り巻くJavaの状況についてツラツラと書いて行きたいと思います。

# Microsoft AzureにおけるJava

この記事を書いていたら状況が変化したので一部書き直していますが、現時点でMicrosoftやAzure が関連するJavaには以下の2つがあります

* Microsoft Build of OpenJDK （執筆時点でPreview）
* Azul Zulu Enterprise builds of OpenJDK

前者は、2021/4/6に発表されたばかりであり、現在プレビューです。後者は2018年頃にAzure上で長期サポートするJDKとしてZulu Systemと提携したものです。ですので、今後状況が変化していく可能性があることにご注意を。

## Microsoft Build of OpenJDK

ついさきほどリリースされた記事です。OpenJDKをマイクロソフトがビルドし提供していくことが発表されPreview版のダウンロード版もできるようになりました。

[Announcing Preview of Microsoft Build of OpenJDK | Java at Microsoft](https://devblogs.microsoft.com/java/announcing-preview-of-microsoft-build-of-openjdk/)

ダウンロードは、https://www.microsoft.com/openjdk から可能です。

提供されているのはJava11のみで、プラットフォームとしては、以下の通りです。

* Linux x64
* macOS x64
* Windows x64
* Windows AArch64 / ARM64

先ほどの記事を要約すると以下のような感じです。

* オープンソース
* 無償で利用できるLTS ディストリビューション
* Azure 内のサービスに展開され、 140,000 JVM以上は Microsoft Buildになっている（Zuluはどこ行った？）
* 今後 Azure全体で、Microsoft Build を展開していく機会を模索していく

細かいニュアンスは原文をあたっていただくとして、新しいJDKの選択肢が増えたことは良いことですが、現在SaaSサービス（WebAppsだとかFunctions）に展開されているJDKがZuluからも置き換わっていくのかとか、Zuluとの関係性に注視していきたいと思います。

ちなみにブラウザから利用できるCloud Shell からJavaのバージョンを確認してみたら、Microsoft Build に変わっていました。

```sh
moris@Azure:~$ java -version
openjdk version "11.0.9" 2020-10-20
OpenJDK Runtime Environment Microsoft.13779 (build 11.0.9+8-20200922)
OpenJDK 64-Bit Server VM Microsoft.13779 (build 11.0.9+8-20200922, mixed mode)
```

## Azul Zulu Enterprise builds of OpenJDK

Zulu Sysutemが展開するOpenJDKの1つです。最初はこちらだけを紹介しようと思っていたのですが、状況が変わってしまいそうです。そして、ここでの内容がいつまで正しいかも分らないのでご注意を。

当時の発表記事は以下にあります。

[Microsoft と Azul Systems による Azure での無料 Java LTS のサポート | Azure のブログと更新プログラム | Microsoft Azure](https://azure.microsoft.com/ja-jp/blog/microsoft-and-azul-systems-bring-free-java-lts-support-to-azure/)

以下は、WebAppsにSSHで接続してJavaのバージョンを確認したものです。現時点では、Zuluのものが使われています。

```sh
1276bdf423ac:/home# java -version
Picked up JAVA_TOOL_OPTIONS: -Xmx1346M -Djava.net.preferIPv4Stack=true
openjdk version "11.0.7" 2020-04-14 LTS
OpenJDK Runtime Environment 20.4-(Zulu-11.39+15-linux-musl-x64)-Microsoft-Azure-restricted (build 11.0.7+10-LTS)
OpenJDK 64-Bit Server VM 20.4-(Zulu-11.39+15-linux-musl-x64)-Microsoft-Azure-restricted (build 11.0.7+10-LTS, mixed mode, sharing)
```

要約は以下の通りです。

* Java7/8/11 のLTSをAzure上で無償提供
* サブスクリプション料金を払うことなく、セキュリティアップデート、バグ修正などを入手可能（SaaSなら勝手に更新される）
* SaaS以外のVM（仮想マシン）でJavaを利用するときも、使うことができる。
* Azure向けに開発している場合、Windows/macOS/Linuxのクライアント側での開発環境に利用できる。

ダウンロードは、[Download Java for Azure - New - Azul](https://www.azul.com/downloads/azure-only/zulu/?version=java-8-lts&architecture=x86-64-bit&package=jdk) からできます。

さらに細かいはなしは、Docsに纏まっていますので、そちらを参照してください。

* [Azure 開発のための Java JDK と長期サポート | Microsoft Docs](https://docs.microsoft.com/ja-jp/java/azure/jdk/?view=azure-java-stable)
* [Azure 開発のための Java JDK と中期および長期サポート | Microsoft Docs](https://docs.microsoft.com/ja-jp/azure/developer/java/fundamentals/java-jdk-long-term-support)
* [Azure および Azure Stack 用の Azul Zulu JDK をインストールする | Microsoft Docs](https://docs.microsoft.com/ja-jp/azure/developer/java/fundamentals/java-jdk-install)

# まとめ

最初はZuluを紹介してさらっと終わるつもりでしたが、状況が変わってきましたので、今後 Microsoft Build が、どのように展開されていくか注視していきたいともいます。 開発環境でもZulu使えて便利だね、って感じのまとめ予定が狂ってしまいました。