はじめに

student, typing, keyboard


今回の記事では、Javaのプログラムを作る際に使用するAdoptOpenJDKについて紹介します。

AdoptOpenJDKのインストール手順から実際の使用方法などを掘り下げていくので、これから学習する方は参考にしてください。


JDKとは

office, home, glasses


AdoptOpenJDKの紹介をする前に、JDKについて解説します。

JDK(Java Development Kit)を一言で表すと、Javaのプログラムを作るときに必要な要素を詰め込んだものです。

日本語では「Java開発キット」と呼ばれ、Javaのプログラムを動かすときにも利用ができます。

JDKを「Javaのプログラムを作るときに必要な要素を詰め込んだもの」と紹介しました。

しかしながら「Javaのプログラムを動かすときに必要な要素を詰め込んだもの」も存在します。


JREとは

office, home office, creative


JDKと混同されやすい用語に、JREというものが存在します。

JRE(Java Runtime Environment)を一言で表すと、Javaのプログラムを動かすときに必要な要素を詰め込んだものです。

「Development Kit(開発キット)」の部分が「Runtime Environment(ランタイム環境)」に変化しています。

日本語で「Java実行環境」と呼ばれ、Javaのプログラムを動かすときにのみ利用が可能です。


JDKとJREの違い

geometric, design, computer


JREはJDKと混同されやすいですがJDKの要素にはJREの要素も含まれているため、ここではJDKをしっかりと理解しておけば問題ないでしょう。

またJREはJDKとは異なり、Javaのプログラムを作るときに必要な要素は含まれません。


OpenJDKとは

ship, shipwreck, adventure


OpenJDKとはJava用に実装されたオープンソースの総称です。

代表的なものとしては、以下のものが挙げられます。

たとえばAWS(Amazon Web Service)で使いやすい「Amazon Corretto」。

またMicrosoft Azure環境向けの「Zulu Enterprise」など、それぞれに特徴があります。

この記事では代表として「AdoptOpenJDK」について取り上げていますが、興味がある方は後述を確認してみてください。


AdoptOpenJDKとは

fantasy, background, sea


それではここからは、この記事のメインとなるAdoptOpenJDKについて紹介していきます。

AdoptOpenJDKを一言で表すと、AdoptOpenJDコミュニティが提供しているOpenJDKディストリビューション(配布形態)です。

提供元であるAdoptOpenJDKコミュニティにはIBMやMicrosoft・Slackなどが支援しているため、世界的にもAdoptOpenJDKへの信頼性は高いです。

その信頼性の高さから、Java11以降では標準搭載機能としてAdoptOpenJDKが導入されています。

AdoptOpenJDKの特徴として、Javaのソースコードを元に独自のバイナリを提供していることが挙げられます。


AdoptOpenJDKのダウンロード

books, bookshelf, library


AdoptOpenJDKのバイナリは以下のURLからダウンロードが可能です。

https://adoptopenjdk.net/index.html

遷移先のページでは「Prebuilt OpenJDK Binaries for Free!」という文字が表示されているはずです。

このページからAdoptOpenJDKのダウンロードをおこないますが、自分が使用しているOSごとにダウンロードするプロダクトが異なります。

基本的にはクライアントが使用しているOSを自動で判別し、適切なプロダクトがダウンロード出来るようなっています。

しかし稀に、自分が使っているOSとは異なるものが表示されている事があります。

その際は、画面の下側に表示されている「Other platforms」を選択してください。

選択すると、Windows・MacOS・Linuxなど任意のOSを選ぶことが出来ます。

OSだけでなくバージョンに関しても同様です。

画面に表示されているより古いバージョンをダウンロードしたい場合は「Other platforms」からダウンロードをおこないます。

「Choose a Version」は任意のバージョンを選びましょう。

特にこだわりがなければ最新バージョンをダウンロードすれば大丈夫です。

「Choose a JVM」も好きな方を選んで問題ありませんが、判断が出来ない場合は「HotSpot」を選択しておきましょう。

選択が終了したら、「Latest release」をクリックすると保存先を確認されます。

この後も使用するので分かりやすい場所を指定すると、AdoptOpenJDKのダウンロードが始まります。


JVMとは

library, books, education


「JVM(Java Virtual Machine)」は、Java専用の仮装マシンのことを指し、Javaのプログラムを実行するときに使用されるソフトウェアです。

Javaで記述されたプログラム(コード)を判別し、使用している環境で実行可能な形式にコードを変換してくれます。

今回使用するAdoptOpenJDKでは、「HotSpot」と「OpenJ9」の2種類のJVMを選択することができます。


AdoptOpenJDKのインストール

ダウンロードしたファイルをダブルクリックすると、インストーラーが起動します。

セットアップ画面が表示されたら、「次へ」で先に進みましょう。

「使用許諾契約書」が表示されますので、内容を確認した上で同意できるならチェックボックスにチェックをします。

チェックした後に「次へ」で先に進むと「カスタムセットアップ」が表示されます。

この画面では、以下のような設定をおこなうことが可能です。

  • 「参照」
  • 「Add to PATH」
  • 「Associate .jar」
  • 「Set JAVA_HOME variable」
  • 「JavaSoft(Oracle)registry keys」

「参照」ではインストール先の設定をおこなえます。

現在のインストール先は「参照」の左側に表示されているため、問題がなければそのままで問題ありません。

変更する場合は「参照」を押して「インストール先フォルダーの変更」から任意のフォルダを選択します。

設定が完了していれば、「参照」の左側に表示されているフォルダが変更されているはずです。

「Add to PATH」を有効にすると、PATHに必要なディレクトリを自動で追加することができます。

「Associate .jar」では、「.jar」を拡張子に持つファイルを起動する際にAdoptOpenJDKを自動で起動させることが可能です。

「Set JAVA_HOME variable」が有効の場合は、AdoptOpenJDKがインストールされたディレクトリを「JAVA_HOME」に設定します。

「JavaSoft(Oracle)registry keys」ではPowershellからjavaを呼び出すためのレジストリキーを追加できます。

基本的にはすべての設定を有効にしておきましょう。

インストール時にいずれかの設定が無効になっている場合、後から困ることがあります。

カスタムセットアップが完了したら最終確認画面が表示されるため、インストールをおこないましょう。


Powershell使用時の注意

Javaの起動にPowershellを使用している場合は、AdoptOpenJDKのインストール時に注意が必要です。

設定を正しくおこなっていなかったり、設定が正しくてもインストールがうまく出来ていないとJavaが起動できません。

代わりに以下のエラー文が表示されることがあります。

  1. 「Error: opening registry key ‘Software\JavaSoft\Java Runtime Environment’」
  2. 「Error: could not find java.dll」
  3. 「Error: Could not find Java SE Runtime Environment.」

その場合はレジストリに、以下のコードを記載する必要があります。

ただし「xx.x.x.x」の部分はインストールしたバージョン、「yyyyy」には選択したJVM、パスの部分は任意の保存先に変更してください。

  1. [HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft]
  2. [HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\JDK]
  3. “CurrentVersion”=“11”
  4. [HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\JDK\11]
  5. “JavaHome”=“C:\\Program Files\\AdoptOpenJDK\\jdk-xx.x.x.x-yyyyy\\”
  6. [HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\JDK\11.0.3.7]
  7. “JavaHome“=”C:\\Program Files\\AdoptOpenJDK\\jdk-xx.x.x.x-yyyyy\\”


セットアップの確認

reading, woman, girl


最後に、インストールがおこなえたことを確認しましょう。

使用しているOSがWindows・Linuxであればコマンドプロンプト、Macであればターミナルを開いてください。

起動が出来たら、以下のコマンドを実行します。

  1. 「java -version」

応答結果は、以下の様に返ってくれば成功です。

「xx」の部分は環境によって変化するので、自分の環境と一致しているか確認してください。

  1. 「openjdk version “xx.x.x” xxxx-xx-xx」
  2. 「OpenJDK Runtime Environment AdoptOpenJDK (build xx.x.x+xx)」
  3. 「OpenJDK xx-Bit Server VM AdoptOpenJDK(build xx.x.x+xx, mixed mode)」

 

さらに、以下のコマンドが実行できる事も確認しましょう。

  1. 「javac -version」

 

コマンド実施後は、バージョン情報が返ってくることを確認します。

  1. 「javac xx.x.x」

 

問題なくインストール出来ていることを確認できました。

AdoptOpenJDKのサポート

writing, notes, pen


AdoptOpenJDKはサポート体制が充実しています。

いざという時のためにサポート内容は多くあった方が良いです。

ここでは、AdoptOpenJDKのサポート内容について紹介していきましょう。


IBM Runtime for Business

IBMは、AdoptOpenJDKに対して「IBM Runtime for Business」というサポートを提供しています。

「IBM Runtime for Business」には以下のサポートをおこなっています。

    IBM Runtime for Businessのサポート内容

  • 24時間365日の日本語サポート(重要度1の内容に対して)
  • 製品の障害に対する調査やダンプの解析
  • 新規の障害に対するFixの個別提供
  • パッチの提供


その他サポート

先ほど紹介した「IBM Runtime for Business」以外にもサポートを提供しています。

AdoptOpenJDKで発生したトラブルだけではなく、他IBM製品でサポートを利用する際も追加料金なしでサポートをうけることが可能です。

    その他サポート内容

  • Websphere Application Server Liberty
  • IBM Cloud Pak for Applications

なお「IBM Cloud Pak」とはIBMが提供しているコンテナソリューションです。

「IBM Cloud Pak」は「コンテナ化されたIBMソフトウェア」と「運用コアサービス(コンテナ向けの共通管理基盤)」で構成されています。

「コンテナ化されたIBMソフトウェア」はセキュリティに準拠しています。

運用コアサービスと事前に統合されたIBMのミドルウェアと、オープンソース・コンポーネントを含んだパッケージです。

「運用コアサービス」はモニタリングやセキュリティアイデンティティの管理、レジストリの統合などをおこないます。


ヒープダンプの取得

poppy, only, isolated form


ここではAdoptOpenJDKを使用して、ヒープダンプのキャプチャをおこないます。

AdoptOpenJDKにはキャプチャツールが豊富にあるため、いくつかの方法を紹介しましょう。


jmapを使用する

jmap」は、実行中のメモリ状況を取得しするツールです。

取得した情報はプリントアウトをおこなうことも可能です。

「jmap」を使う際には「dump」のオプションを有効にする必要があります。

  1. 「jmap -dump:[live],format=b,file= 」

コマンド内の「live」でプリントアウトをおこなう範囲を指定しています。

また「format=b」ではダンプファイルの形式をバイナリ形式に指定することが可能です。


jcmdを使用する

jcmd」はJVMにコマンドを要求することで動作します。

「jcmd」を使用する際は、Javaプロセスを実行している環境と同じ環境で入力する必要があります。

  1. 「jcmd GC.heap__dump 」

なお「jmap」で生成されるダンプはバイナリ形式でしたが、「jcmd」で生成されるダンプもバイナリ形式です。


JVisualVMを使用する

JVisualVM」はヒープダンプの取得をおこなうより、グラフィカルユーザーインタフェースを備えたツールとして有名です。

Javaアプリケーションの監視やトラブルシューティングをおこなうことも出来ますが、「Heap Dump」のオプションを使うことで取得が出来ます。

  1. 「/uploads/dump-menu-cropped-1-100×68.png%20100w」

 

オプションで取得したヒープダンプは「基本情報」でパスを確認することが可能です。


主要なJDKの紹介

sea, beach, north sea


記事の最後に、AdoptOpenJDK以外のJDKについて簡単に紹介します。

それぞれの利点も挙げておくので、比較の参考にしてください。


Oracle JDK

Oracle JDKの特徴

  • 基本的に無料でライセンスを取得できる
  • エンドユーザーにとって慣れや安心感がある
  • 知名度が高く、ネットなどにも情報量が多い


Red Hat OpenJDK

Red Hat OpenJDKの特徴

  • Oracle JDKに続く知名度がある
  • RHELやCentOSで豊富な実績があり、IceadTeaで機能の拡張も出来る
  • Windows版もサポートされており、幅広い環境で使用可能


Amazon Corretto

Amazon Correttoの特徴

  • AWSやJava Fatherに強力なネームバリューがある
  • 日本語も含めて公式マニュアルが充実
  • 独自のバックポートがあり、ダウンストリーム(LTS)にも注力されている


まとめ

programming, developing, startup


Java環境は、これからますます進化を遂げていきます。

AdoptOpenJDKを正しく理解し、使用することで一線で活躍することも可能でしょう。

今回の記事を活かして、Java環境で活躍してもらえると幸いです。


SHIFTフリーランスは、SHIFTグループがプライムとして参画している独自案件をフリーランスエンジニア向けに紹介する唯一のプラットフォームサービスです。

エージェントによるサポートもありますので、ご利用を検討してみてはいかがでしょうか。