IK.AM


Dev > MachineLearning > Jupyter > Java

JupyterでJava Kernelを使うメモ

Created on Fri Sep 01 2023 • Last Updated on Fri Sep 01 2023N/A Views

🏷️ Java | Python | Jupyter | Machine Learning

インタラクティブなコンピューティング環境を提供するJupyter。普通はPythonで使うと思うが、Javaでも使えたのでメモ。

jshellが使える必要があります。以下のJavaバージョンで試している。

$ java -version
java version "17.0.7" 2023-04-18 LTS
Java(TM) SE Runtime Environment Oracle GraalVM 17.0.7+8.1 (build 17.0.7+8-LTS-jvmci-23.0-b12)
Java HotSpot(TM) 64-Bit Server VM Oracle GraalVM 17.0.7+8.1 (build 17.0.7+8-LTS-jvmci-23.0-b12, mixed mode, sharing)

$ java --list-modules | grep "jdk.jshell"
jdk.jshell@17.0.7

Pythonのセットアップ

Pythonに関しては門外漢なので、セットアップ方法があっているかわからない

pyenvのインストール

brew install xz
brew install pyenv

echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(pyenv init -)"' >> ~/.zshrc

source ~/.zshrc

pyenv install 3.11.5

以降、~/jupyterlab-javaで作業する

mkdir -p ~/jupyterlab-java
cd ~/jupyterlab-java
pyenv local 3.11.5

venvで環境作成

python3 -m venv .venv
source .venv/bin/activate

jupyterのインストール

pip3 install jupyter

Java kernelのインストール

git clone https://github.com/frankfliu/IJava.git
cd IJava
./gradlew -q installKernel
cd ..

Kernel一覧を確認

$ jupyter kernelspec list
0.00s - Debugger warning: It seems that frozen modules are being used, which may
0.00s - make the debugger miss breakpoints. Please pass -Xfrozen_modules=off
0.00s - to python to disable frozen modules.
0.00s - Note: Debugging will proceed. Set PYDEVD_DISABLE_FILE_VALIDATION=1 to disable this validation.
Available kernels:
  python3    /Users/tmaki/jupyterlab-java/.venv/share/jupyter/kernels/python3
  java       /Users/tmaki/Library/Jupyter/kernels/java

Jupyter Lab立ち上げ

jupyter lab

Java Notebookを選択

image

Javaコードがかけて実行もインタラクティブにできる。

image

Recordでクラス定義

image

Maven Repositoryからライブラリをダウンロード可能。

https://github.com/SpencerPark/IJava/blob/master/docs/magics.md#addmavendependencies

image

TABキーで補完が効く。

image

グラフも一応描ける

image

↑で使ったipynbファイルはこちら


Jupyterといえば機械学習というとこで、 JDLTribuo を試す予定。

Colaboratoryでも使いたかったが、Javaランタイムへの接続が"接続中"のままうまくいかない。使えている事例もあるみたいだが...

Found a mistake? Update the entry.