UbuntuにJavaをインストール

目次

UbuntuにJavaをインストールする手順をメモしました。

OSは"Ubuntu 20.04.2"です。

どのJavaをインストールするか

JavaにはJava実行環境であるJRE(Java Runtime Environment)と、開発環境のJDK(Java Development Kit)があり、開発環境(JDK)には実行環境(JRE)も含まれます。 ここでは開発環境のうちGPLライセンスで配布されているOpenJDKをインストールします。

2021年5月22日現在、OpenJDKのページhttps://openjdk.java.net/を見るとJDK 16が最新のようなのでこれを使用します。

JDK16をインストールする

aptコマンドでインストールします。 “openjdk-16"で検索してみると以下のようなパッケージを見つけました。

$ apt --names-only search 'openjdk-16'
ソート中... 完了
全文検索... 完了  
openjdk-16-dbg/focal-updates,focal-security 16.0.1+9-1~20.04 amd64
  Java runtime based on OpenJDK (debugging symbols)

openjdk-16-demo/focal-updates,focal-security 16.0.1+9-1~20.04 amd64
  Java runtime based on OpenJDK (demos and examples)

openjdk-16-doc/focal-updates,focal-updates,focal-security,focal-security 16.0.1+9-1~20.04 all
  OpenJDK Development Kit (JDK) documentation

openjdk-16-jdk/focal-updates,focal-security 16.0.1+9-1~20.04 amd64
  OpenJDK Development Kit (JDK)

openjdk-16-jdk-headless/focal-updates,focal-security 16.0.1+9-1~20.04 amd64
  OpenJDK Development Kit (JDK) (headless)

openjdk-16-jre/focal-updates,focal-security 16.0.1+9-1~20.04 amd64
  OpenJDK Java runtime, using Hotspot JIT

openjdk-16-jre-headless/focal-updates,focal-security 16.0.1+9-1~20.04 amd64
  OpenJDK Java runtime, using Hotspot JIT (headless)

openjdk-16-jre-zero/focal-updates,focal-security 16.0.1+9-1~20.04 amd64
  Alternative JVM for OpenJDK, using Zero

openjdk-16-source/focal-updates,focal-updates,focal-security,focal-security 16.0.1+9-1~20.04 all
  OpenJDK Development Kit (JDK) source files

openjdk-16-jdkにheadlessと付いているものはサーバー向けで、GUIなどの機能が省略されているようです。 とりあえずopenjdk-16-jdkをインストールします。

$ sudo apt update
$ sudo apt install openjdk-16-jdk

JREのバージョンを確認します。

$ java -version
openjdk version "16.0.1" 2021-04-20
OpenJDK Runtime Environment (build 16.0.1+9-Ubuntu-120.04)
OpenJDK 64-Bit Server VM (build 16.0.1+9-Ubuntu-120.04, mixed mode, sharing)

JDKのバージョンを確認します。

$ javac -version
javac 16.0.1

環境変数を設定する

Javaアプリケーションによって使われる環境変数を設定します。

JAVA_HOMEはJDKをインストールしたフォルダを設定します。 update-alternativesコマンドで確認することができます。

$ sudo update-alternatives --config java
リンクグループ java に 1 つの alternative のみがあります (/usr/bin/java が提供):
/usr/lib/jvm/java-16-openjdk-amd64/bin/java
設定は行いません。

環境変数を設定するファイルは、共通して定義する場合は”/etc/environment"に、ユーザーごとに定義する場合は"~/.bashrc"に定義します。 パスの"/bin/java"は含めずにファイルに保存します。

今回は"/etc/environment"ファイルの最後に以下の1行を追加しました。

JAVA_HOME="/usr/lib/jvm/java-16-openjdk-amd64"

現在のセッションに変更を反映させます。

$ source /etc/environment

Javaファイルをコンパイルする

さっそくJavaソースファイルをコンパイルして実行してみます。 以下のように"Main.java"ファイルを作成します。

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

// 現在日時を出力する
public class Main {
  public static void main(String[] args) throws Exception {
    LocalDateTime dt = LocalDateTime.now();
    DateTimeFormatter fm =
      DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH時mm分ss秒SSSミリ秒 E曜日");
    String ima = fm.format(dt);
    System.out.print("現在日時:");
    System.out.println(ima);
  }
}

javacでコンパイルするとMain.classファイルが出力されます。

$ javac Main.java
$ ls -l
合計 40
-rw-rw-r-- 1 izumi izumi   860  5月 23 15:33 Main.class <<< javaコンパイル結果
-rw-rw-r-- 1 izumi izumi   491  5月 23 15:33 Main.java <<< Javaソースファイル

出力されたclassファイルはjavaコマンドで実行することができます。

$ java Main
現在日時:2021年05月23日 15時34分35秒572ミリ秒 日曜日