UbuntuのJavaを11にする
こんばんは、P1です。
9/25にJDK11が一般利用可能になりましたね!
自分のUbuntuは9のまま放置されていたので、11に更新した際のメモを残しておきます。
目次
- 公式サイトからJDKをダウンロードする
- apt install する
- update-alternatives --instal する
- update-alternatives --config する
- 使ってみる
公式サイトからJDKをダウンロードする
まずは公式サイトからJDKをダウンロードしてきましょう。
jdk-11_linux-x64_bin.deb
で大丈夫です!
Java SE Development Kit 11- - Downloads
apt install する
ダウンロードしたファイルのある場所に移動して
$ sudo apt install ./jdk-11_linux-x64_bin.deb
しましょう。
update-alternatives --instal する
Javaのバージョンを切り替えるためにupdate-alternatives
コマンドを使います。このコマンドはman update-alternatives
によると
update-alternatives は Debian の alternatives システムを構成するシンボリックリンクを生成・削除・管理したり、リンクの情報を表示したりするツールである。
同一の、あるいは類似の機能を持つ複数のプログラムを一つのシステムに同時にインストールし、共存させること ができる。
例えば多くのシステムでは、複数のテキストエディタを共存させている。これにより、システムのユー ザは好みに応じて別々のエディタを使うことができるようになる。しかしプログラムからすると、特に指定がな かったときにどのエディタを起動すれば良いのかという、なかなか難しい問題を抱えることになる。
Debian の alternatives システムは、この問題を解決するためのものである。互いに置き換え可能な機能を提供す る全てのファイルは、ファイルシステム中の「一般名 (generic name)」を共有する。その一般名が実際にどのファ イルを参照するかは、 alternatives システムとシステム管理者とが決定する。
例えば、テキストエディタであるed(1) と nvi(1) の両方がシステムにインストールされていたとすると、一般名である /usr/bin/editor は、デ フォルトでは /usr/bin/nvi を参照する。システム管理者はこれを上書きし、 /usr/bin/ed を参照させるようにす ることもできる。こうすると、その後明示的な設定がなければ、 alternatives システムはその設定を変更しな い。
とのこと。つまり同じjava
コマンドでもその参照先をJDK10とかJDK11とかに自由に切り替えできるコマンドってことですね!このコマンドの--install
を使用してまずは先ほどinstallしたJDK11を選択肢に追加します。
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk-11/bin/java 1091
基本はこんな感じでOKです。同じ感じでjavac
コマンドもやるなら
$ sudo update-alternatives --install /usr/bin/javadoc javadoc /usr/lib/jvm/jdk-11/bin/javacdoc 1091
こんな感じです。javadoc
やjshell
なども使用するなら忘れずに!
update-alternatives --config する
最後にupdate-alternatives の --configで実際の参照先の選択肢から選択を行います。
$ sudo update-alternatives --config java
して
こんな感じでJDK11が選択肢に出てきていればOKです。JDK11の番号を選択しましょう。
先ほど--install
したコマンドたちは全部切り替えましょう!
使ってみる
バージョンが切り替わっているか確認を。
こうなっていれば大丈夫だと思います。
あと新しい機能の例として、JDK11から単一のJavaファイルならコンパイルしないでも実行出来るようになったみたいです。
良い感じですね!Javaの勉強をするために小さなコードを書いて実行してを繰り返す時なんかは便利な気がします!
ただインタプリタみたいに逐次実行してるわけではないようです。詳しくはJEP 330: Launch Single-File Source-Code Programsに書いてあります!