🌴

Java環境構築(Adoptium(旧:AdoptOpenJDK))

2022/05/05に公開

概要

Javaの概要とその環境構築と、最後にサンプルのファイル実行について個人の備忘録としてまとめていきます。(2022年5月5日現在)
具体的にはOpenJDKの一つであるAdoptium(旧:AdoptOpenJDK)についてみていきます。

参考
https://adoptium.net/

Javaアプリケーションの実行環境

Javaアプリケーションを実行するにはJDK(Java Development Kit)と呼ばれるJavaアプリケーションの実行に必要なソフトウェアをまとめた一式が必要です。

項目 内容
Java SE などJavaの最もスタンダードなAPIを集めたEditionです。他には家電などの組み込みやモバイルアプリ開発用のJava MEやエンタープライズ用のJava EEがあります。
JVM Java Virtual Machineの略で、Javaプログラムをコンパイルして生成されたJavaクラスファイルを各OSで実行可能な形式に変換して動かすためのプログラムです。
JRE Java Runtime Environmentの略でJava APIとJVMを含むJava実行環境用のソフトウェアです。
JDK Java Development Kitの略で、JREとJavaプログラム用のコンパイラとデバッガなど開発や実行に必要な一式をまとめたソフトウェアです。


JDK概要


Javaプログラムの変換フロー

参考
https://www.javadrive.jp/start/install/index5.html
https://www.javadrive.jp/start/install/index6.html

Adoptium

前述のJDKはOpenJDKという形でOracleやコミュニティで開発されています。

https://openjdk.java.net/

そのOpenJDKを元にコミュニティが開発しているのがAdoptiumになります。前身のAdaoptOpenJDKはOpenJDKが複数のプラットフォームに対してオープンで再現性のあるビルドおよびテストシステムの欠如に対してそれを補う目的で開発され、その後プロジェクトの成長に伴い、Eclipse Foundationに移管されました。

https://blog.adoptopenjdk.net/2020/06/adoptopenjdk-to-join-the-eclipse-foundation/

旧AdaoptOpenJDKのサイトは維持されたままなので少し戸惑いましたが、FAQページにリダイレクトさせずあえて旧サイトを残している理由が記載されていました。

  • まだ一部のユーザーがAdaoptOpenJDKから移行中のため、ユーザーが混乱しないようにと以前のUIを残している
  • そしてまだ一部のバージョンではAdoptium上でダウンロードできないため、旧サイトを残している

https://adoptium.net/docs/faq/

Eclipse Temurinについて

Adoptiumのダウンロードサイトを訪れると分かりますが、ダウンロードリンクの名前がEclipse Temurinと表示されています。

OpenJ9 builds(JVM)について

Adoptiumへの移管に伴い、JVMに関してはEclipse OpenJ9のサポートは継続せず、IBM Semeruで引き継がれるようになりました。

Eclipse Temurinのインストール

今回はインストーラーを使ったAdoptiumのダウンロードについてみていきます。
その他に、Package manager、Archive files, Container imagesを使った方式があります。

参考
https://adoptium.net/installation/

Adoptiumの公式ダウンロードサイトにアクセスして、次のようにダウンロード環境とJavaバージョンを指定してダウンロードします。


Adoptium公式ダウンロードサイト

Javaの実行

最後にJavaのプログラムを実行してみます。Oracleの公式チュートリアルを参考に、次のようなような内容のファイルを作成します。

HelloWorldApp.java
/**
 * The HelloWorldApp class implements an application that
 * simply prints "Hello World!" to standard output.
 */
class HelloWorldApp {
    public static void main(String[] args) {
        System.out.println("Hello World!"); // Display the string.
    }
}

このファイルはjavacコマンドによりJavaクラスファイルにコンパイルします。

$ javac HelloWorldApp.java

最後に、javaコマンドによりファイルを実行します。

$ java HelloWorldApp

するとプログラムに指定の内容通り、次のような実行結果をターミナル上に出力できます。

Hello World!

HelloWorldAppの内容

Hello Worldアプリケーションは三つの主要なコンポーネントからなります。

  1. ソースコードコンポーネント
  2. HellowWorldApp class定義
  3. mainメソッド

ソースコードコンポーネント

ソースコードコンポーネントは前述でみたファイルHelloWorldApp.javaの内容全体になります。
コメントは次のように3種類のタイプで記述できます。

/* text */
The compiler ignores everything from /* to */.
/** documentation */
This indicates a documentation comment (doc comment, for short). The compiler ignores this kind of comment, just like it ignores comments that use /* and */. The javadoc tool uses doc comments when preparing automatically generated documentation. For more information on javadoc, see the Javadoc™ tool documentation .
// text
The compiler ignores everything from // to the end of the line.

HellowWorldApp class定義

Javaのクラスはclassキーワードを使用して次のように定義できます。

class name {
    . . .
}

チュートリアルではクラス名がHelloWorldAppになっています。

mainメソッド

Javaでは、それぞれのアプリケーションごとに次のようなシグネチャを持つmain メソッドを含む必要があります。

public static void main(String[] args)
  • mainメソッドはアプリケーションのエントリーポイントになります。
  • mainメソッドは1つの引数(Stringの配列)を受け取ります
    • 次のようにファイル実行時にコマンドライン引数として指定することができます
      $ java MyApp arg1 arg2
      

参考
https://docs.oracle.com/javase/tutorial/getStarted/application/index.html

Discussion