Hello Wor.log

IT系大学生4人による備忘録のようなもの

UbuntuのJavaを11にする

こんばんは、P1です。

9/25にJDK11が一般利用可能になりましたね!
自分のUbuntuは9のまま放置されていたので、11に更新した際のメモを残しておきます。

目次

公式サイトから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

こんな感じです。javadocjshellなども使用するなら忘れずに!

update-alternatives --config する

最後にupdate-alternatives の --configで実際の参照先の選択肢から選択を行います。

$ sudo update-alternatives --config java

して f:id:cppx:20181005134113p:plain こんな感じでJDK11が選択肢に出てきていればOKです。JDK11の番号を選択しましょう。 先ほど--installしたコマンドたちは全部切り替えましょう!

使ってみる

バージョンが切り替わっているか確認を。
f:id:cppx:20181005135243p:plain
こうなっていれば大丈夫だと思います。

あと新しい機能の例として、JDK11から単一のJavaファイルならコンパイルしないでも実行出来るようになったみたいです。
f:id:cppx:20181005135934p:plain
良い感じですね!Javaの勉強をするために小さなコードを書いて実行してを繰り返す時なんかは便利な気がします!
ただインタプリタみたいに逐次実行してるわけではないようです。詳しくはJEP 330: Launch Single-File Source-Code Programsに書いてあります!