Blow Up by Black Swan

JAVAーJupyter labでJavaを使えるようにする

仕事でJavaライクな言語を使う必要があり、Javaの学習を始めることにしました。手を動かして覚えていく派ですが、コンパイルして動かすのはめんどくさそうなので、私が信頼するJupyterで使えるよう環境設定しました。今回は、このJupyerでJavaを使えるようにする環境設定方法について実際に行った方法をまとめました。

一人でも多くの方の参考になりましたら幸いです。

はじめに

今回の実行環境は以下になります。

OS: Mac OSX
Jupyter: 1.0.0
jupyterlab: 0.35.4
python: 3.7.3

環境構築フローは、次のようになります。

  1. HomebrewでJavaのインストール
  2. Java用のJupyterカーネルをインストール

1. Javaのインストール

まずはJavaをインストールします。今回はOpen JDK11をHomebrewを使ってインストールしました。Homebrewのインストール方法はインターネットでたくさん出ているので、そちらを参考にして頂ければと思います。また、Javaのインストール方法については下記サイトを参考にしています。

まずはJavaをインストールします。

~$ brew cask install java11

インストールが完了したら、パスを通します。 ※私がzshを使っているので”.zprofile”ファイルに記述していますが、bashであれば”.bash_profile”ファイルに書き込んでください。

~$ vim .zprofile

# 記述内容
export JAVA_HOME=`/usr/libexec/java_home -v 11`
PATH=${JAVA_HOME}/bin:${PATH}

これでJavaのインストールと設定が完了しました。JavaとJavaのコンパイルツールJavacのバージョンを確認します。

~$ java -version
openjdk version "11.0.2" 2019-01-15
OpenJDK Runtime Environment 18.9 (build 11.0.2+9)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.2+9, mixed mode)

~$ javac -version
javac 11.0.2

Java11がインストールされ、パスが通っていることも確認できました。これでJavaのインストールは完了です。

2. JupyterにJavaカーネルをインストール

次は、Jupyterにjavaカーネルをインストールし、Javaを使えるようにします。参考にしたのは、Javaカーネルの公式gitリポジトリになります。

まずは、Javaカーネルをダウンロードします。今回は、保存フォルダは他のカーネルを真似て、”~/.ijava”フォルダに指定しています。

~$ git clone https://github.com/SpencerPark/IJava.git .ijava
Cloning into '.ijava'...
remote: Enumerating objects: 88, done.
remote: Counting objects: 100% (88/88), done.
remote: Compressing objects: 100% (41/41), done.
remote: Total 821 (delta 23), reused 75 (delta 17), pack-reused 733
Receiving objects: 100% (821/821), 462.49 KiB | 656.00 KiB/s, done.
Resolving deltas: 100% (304/304), done.

ダウンロードしたフォルダに移ります。

~$ cd .ijava

次にインストールを行います。下記コマンドは、上記の公式githubリポジトリに記載されいるもので、カーネルをインストールし、ビルドしている作業のようですが詳細はよくわかりません。。。

~/.ijava $ chmod u+x gradlew && ./gradlew installKernel

Downloading https://services.gradle.org/distributions/gradle-4.8.1-bin.zip
........................................................................
Unzipping /Users/hoge/.gradle/wrapper/dists/gradle-4.8.1-bin/e8p42vx1m7a3mz9ydmjagn6wn/gradle-4.8.1-bin.zip to /Users/hoge/.gradle/wrapper/dists/gradle-4.8.1-bin/e8p42vx1m7a3mz9ydmjagn6wn
Set executable permissions for: /Users/hoge/.gradle/wrapper/dists/gradle-4.8.1-bin/e8p42vx1m7a3mz9ydmjagn6wn/gradle-4.8.1/bin/gradle

(省略)

Download https://repo.maven.apache.org/maven2/org/apache/commons/commons-lang3/3.8.1/commons-lang3-3.8.1.jar
Download https://repo.maven.apache.org/maven2/org/apache/maven/maven-model-builder/3.6.0/maven-model-builder-3.6.0.jar

> Task :compileJava
注意:/Users/hoge/.ijava/src/main/java/io/github/spencerpark/ijava/magics/dependencies/Maven.javaは推奨されないAPIを使用またはオーバーライドしています。

Deprecated Gradle features were used in this build, making it incompatible with Gradle 5.0.
See https://docs.gradle.org/4.8.1/userguide/command_line_interface.html#sec:command_line_warnings

BUILD SUCCESSFUL in 1m 44s
4 actionable tasks: 4 executed

とこんな感じでインストールが完了しました。Javaカーネルがインストールされたかを確認するには次のコマンドを実行します。

~/.ijava $ jupyter kernelspec list

Available kernels:
java /Users/hoge/Library/Jupyter/kernels/java
python3 /usr/local/share/jupyter/kernels/python3

3. Jupyterで実際にJavaを使ってみる

それでは実際にJupyterでJavaを使ってみます。私は普段からjupyter labを愛用していますので、ここでもJupyter labを使って使用方法を試してみます。まずターミナルからjupyter labを呼び出します。

~$ jupyter lab

Jupyter labを起動すると次のような画面が表示され、notebookとコンソールにJavaの表記が出現します。

jupyter-java1

なお、私はJavaScriptも使えるようにしていますが、JavaScriptを使用できる方法については下記記事でまとめていますので、興味があればご覧頂ければと思います。

実際にJavaを使ってみます。

jupyter-java2

Javaのコードが無事実行できました。これで環境構築成功です。

最後に

以上がJupyterでJavaを使えるようにする方法です。JavaScriptに比べれ圧倒的に簡単でひっかるところも少なく構築できました。これを活用してJavaの勉強を進めようと思います。読んでいただきありがとうございました。この記事が参考になりましたら幸いです。