--- title: JupyterでJava Kernelを使うメモ tags: ["Java", "Python", "Jupyter", "Machine Learning"] categories: ["Dev", "MachineLearning", "Jupyter", "Java"] date: 2023-09-01T03:31:01Z updated: 2023-09-01T03:39:04Z --- インタラクティブなコンピューティング環境を提供する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ファイルは[こちら](https://gist.github.com/making/4708e293f75a6f4d0d9dfaa14d8b6580) --- Jupyterといえば機械学習というとこで、 [JDL](https://github.com/deepjavalibrary/djl) や [Tribuo](https://tribuo.org/) を試す予定。 > Colaboratoryでも使いたかったが、Javaランタイムへの接続が"接続中"のままうまくいかない。使えている事例もあるみたいだが...