Oracle提供のJavaのJDKの有償化に伴ってAmazon Correttoを使ってみた

Oracle提供のJavaのJDKの有償化に伴ってAmazon Correttoを使ってみた

はじめに

みなさんこんにちは。時の流れは速いもので、気づいたら平成が終わって令和が始まり、10日もあったゴールデンウィークもあっというまに終わってしまいました。

平成が終わる前にOracle提供のJava JDKの無償での提供も終わってしまったようですが、それに代わりAmazon Correttoという代替手段を無事導入することができましたので記事にしてみました。

2019年4月16日から、Oracle提供のJavaのJDKが有償化された

弊社のこちらのサービスのVagrantの開発環境を新規でセットアップしようとしたところ、以前は問題がなかった部分でエラーが発生し、もともと使っていたOracleのJava 8のJDKのダウンロードリンクが404を返していることがわかりました。

確認すると、これまでOracleによって商用も含めて無償で提供されていたJava 8のJDKが2019年4月16日以降OracleのOTNライセンスの取得を必須とするようになり、これに伴いJava JDKの商用での利用は有償化となり、これまでと提供方法が大きく変わったことでこれまで利用可能だったダウロードリンクも利用できなくなっているようでした。

そこでオープンソースのJavaのOpenJDK 8への切り替え、またはAmazonによるOpenJDK 8のディストリビューションであるAmazon Corretto 8への切り替えという選択肢が考えられましたが、今回の対応ではAmazonによるLTSが提供されているAmazon Correttoを使用することにしました。

Amazon Correttoとは

https://aws.amazon.com/jp/corretto/

Amazon CorrettoはAmazonが提供するLTS(Long term support)付きの無償のOpenJDKのディストリビューションです。OpenJDKとの大きな違いは、Amazonによるパフォーマンスの向上とセキュリティの問題に対する不具合の修正などを含むサポート(少なくともCorretto 8 の場合は 2023 年 6 月まで)を用意しているLTS付きのものであるということです。

ドキュメントによると、OpenJDKにはまだ統合されていないAmazonが提供するパッチを含み、特にパフォーマンスと安定化の向上のためのパッチに焦点を当てているとのことで、すでにAmazonの内部で使用されている数千のサービスでCorrettoが使用されているそうで、これらのことを考えるとOpenJDKよりもパフォーマンスや安全性に期待できると言えそうです。

以下の公式FAQに詳しく内容が記載されていますが、こちらのFAQの内容とCorrettoのGithubレポジトリの内容を見る限りですとAmazon自身でのパッチの提供もしているようでした。

https://aws.amazon.com/corretto/faqs/
https://github.com/corretto/corretto-8

また、プラットフォームに関してもDocumentによると以下のものへの対応がされているようです。

  • Linux
  • Windows
  • macOS
  • Docker

Vagrant + Ansible + Ubuntuの環境でのAmazon Correttoの導入の方法

今回Java8が必要になった弊社のサービスでのVagrant + Ansible + Ubuntuの環境でAmazon Correttoを導入しましたので、具体的にどのようなコードで導入したのかを共有します。

環境構築時に実行されるAnsibleのタスクで、もともとOracle JDKでJava8をインストールしていた部分を以下のような流れで書き換えました。

  1. Oracle JDKがインストールされているかチェック
  2. (インストールされていたら)Oracle JDKをアンインストール
  3. java-commonのパッケージをインストール
  4. Amazon Correttoがインストールされているかチェック
  5. (インストールされていなかったら)Amazon Correttoをインストール

「java-commonのパッケージのインストールする」と「Amazon Correttoをインストール 」という部分ですが、以下のCorrettoのドキュメントのLinuxにおける導入ガイドにしたがっています。
https://docs.aws.amazon.com/corretto/latest/corretto-8-ug/generic-linux-install.html

Java 8導入部分のAnsibleのコード

# 1. Oracle JDKがインストールされているかチェック 
- name: Check if Oracle JDK is installed
  shell: dpkg-query -l oracle-java8-installer
  register: oracle_jdk_installed
  failed_when: no
  tags: java

# 2. (インストールされていたら)Oracle JDKをアンインストール
- name: Uninstall Oracle JDK
  apt:
    pkg: oracle-java8-installer
    state: absent
    purge: yes
    force: yes
  when: oracle_jdk_installed.rc == 0 # 0 = installed, 1 = not installedなので、installedのときだけ削除している。
  tags: java

# 3. java-commonのパッケージをインストール 
- apt: name=java-common
  tags: java

# 4. Amazon Correttoがインストールされているかチェック 
- name: Check if Amazon Corretto is installed
  command: dpkg-query -W java-1.8.0-amazon-corretto-jdk
  register: corretto_installed
  failed_when: corretto_installed.rc > 1
  tags: java

# 5. (インストールされていなかったら)Amazon Correttoをインストール 
- name: Install Amazon Corretto
  apt:
    deb: https://d3pxv6yz143wms.cloudfront.net/8.212.04.1/java-1.8.0-amazon-corretto-jdk_8.212.04-1_amd64.deb
  when: corretto_installed.rc == 1 # 0 = installed, 1 = not installedなので、not installedのときだけインストールしている。
  tags: java

まとめ

OpenJDKとは異なりJavaの最新バージョンのJava 12に対応したバージョンなどは出ていないようで、まだ予定もないようです。しかし、既存のJava 8またはJava 11環境でOracleの提供するJava JDKが有償化になってしまったことで切り替えの必要がある人にとっては優れた代替手段となりそうなAmazon Correttoでした。皆様も是非お試しください。

we are hiring

優秀な技術者と一緒に、好きな場所で働きませんか

株式会社もばらぶでは、優秀で意欲に溢れる方を常に求めています。働く場所は自由、働く時間も柔軟に選択可能です。

現在、以下の職種を募集中です。ご興味のある方は、リンク先をご参照下さい。