プログラマーのメモ書き

伊勢在住のプログラマーが気になることを気ままにメモったブログです

WSL に Java の開発環境を構築

WSL 上に java の開発環境を構築した際のメモです。

ubuntu のバージョンは 18.04.5 です。

以下を参考にしました。

Ubuntu 20.04にAptを使用してJavaをインストールする方法 | DigitalOcean

WSL へ JDK をインストール

java がないことを確認します。

mor@DESKTOP-H6IEJF9:~$ javac -version

Command 'javac' not found, but can be installed with:

sudo apt install default-jdk
sudo apt install openjdk-11-jdk-headless
sudo apt install ecj
sudo apt install openjdk-8-jdk-headless

mor@DESKTOP-H6IEJF9:~$ 

インストールします。

mor@DESKTOP-H6IEJF9:~$ sudo apt install default-jdk

インストールできたことを確認しておきます。

mor@DESKTOP-H6IEJF9:~$ java -version
openjdk version "11.0.11" 2021-04-20
OpenJDK Runtime Environment (build 11.0.11+9-Ubuntu-0ubuntu2.18.04)
OpenJDK 64-Bit Server VM (build 11.0.11+9-Ubuntu-0ubuntu2.18.04, mixed mode, sharing)
mor@DESKTOP-H6IEJF9:~$
mor@DESKTOP-H6IEJF9:~$ javac -version
javac 11.0.11
mor@DESKTOP-H6IEJF9:~$

問題ないですね。

環境変数を設定しておきます。.bachrc の最後に

export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64/bin/java

を追加します。

VSCode でリモート開発するので、VSCode 用の拡張機能 Java Extension Pack をインストールしておきます。

f:id:junichim:20210506164920p:plain

なお、インストール先は、 WSL 側になるので、その点ご注意ください。

OpenJDK などの用語について(2021/5/13 追記)

ふと、しばらく前に、 Java が有償化するとかなんだとかニュースがあったことを思い出しました。

ちょっと気になったので、改めて調べてみたところ Java そのものが有償化とかではなく、 Oracle が提供する OpenJDK バイナリのサポートが短期間(半年)になるよ、ということだったようです。商用だと、サポートのないものを使い続けるのはリスクがあるので、いろいろと話題になったんですね、きっと。

その際に、あれこれ用語が出てきたのですが、これがまあ、実にややこしい。自分なりの結論としては、下記記事が一番よくまとまっているという印象です。

qiita.com

上記の記事にも書いてありますが、

  • OpenJDK http://openjdk.java.net/ では実装(ソースコード)をまとめているが、バイナリを提供していない
  • jdk.java.net は Oracle が提供する OpenJDK のバイナリ
  • Oracle JDK は jdk.java.net とは別途提供される

というのを理解するとなんとなくわかるようになります。

そうなると、 Ubuntu で apt でインストールする JDK (openjdk-11-jdk) は Ubuntu (Canonical) が提供する OpenJDK のバイナリであり、 Android Studio に組み込まれている JDK は Google が提供する OpenJDK のバイナリ と考えればよさそうです。

こんな感じなので、サポート期間も OpenJDK バイナリのベンダー次第になるようです。 Ubuntu の openjdk-11 だと、 LTS 扱いになるようです。

Ubuntu 18.04 その327 - OpenJDK 11への移行とOpenJDK 8のサポートについて - kledgeb Announcing OpenJDK 11 packages in Ubuntu 18.04 LTS | Ubuntu

なかなかいろいろと大変ですね。

こちらも参考になりました。

これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本