LoginSignup
1
0

asdf-javaのJAVA_HOME切替スクリプトがzshの遅延に影響していた

Last updated at Posted at 2024-05-06

TL;DR

  • zshのプロンプト表示に遅延が発生していた
  • 原因:asdf-javaが提供する、JAVA_HOME切替スクリプトがprecmdフックにより毎回動いていたため
  • asdfが直接の原因ではないが、これをきっかけにmiseに移行した

環境

  • macOS 13.1
  • zsh 5.9 (x86_64-apple-darwin21.3.0)
  • asdf 0.11.0
  • asdf-java
  • mise 2024.5.2 macos-x64

asdfとは

複数のツールのバージョンを管理してくれるCLI

プロジェクトごとに.tool-versionsを置いてあげるといちいち違うプロジェクトのためにバージョンを切り替えなくて済む

$ cd a_directory && node -v
# node version written in a_directory/.tool-versions
$ cd ../other_directory && node -v
# node version written in other_directory/.tool-versions

そして、asdfのプラグインの一つであるasdf-javaでJavaのバージョン管理をしていた

現象

プロンプトが表示されるのに遅延がある なんだ〜?
terminal.gif

原因

asdf-javaが提供するset-java-home.zshがprecmdで実行されるように登録されていた。つまり、プロンプトを表示する直前に毎回このスクリプトが走るようになっていた

issueも上がっていたので、辿ってみると...

try rtx, it updates JAVA_HOME without any need for set-java-home.zsh and doesn't have any meaningful performance impact.

じゃあそうしますか!^

※rtxはmiseの前身の名前で、NVIDIAのグラフィックボードRTXと混同するから改名しただけらしい(法的にではなく、単にググラビリティの問題とのこと https://mise.jdx.dev/rtx.html)

asdfからmiseに移行

asdf-javaが提供する1スクリプトを改善すれば済む話なのでasdf本体には関係ないのだが、issueコメントに誘われmiseに移行してみる

Quickstartからインストール

新たに管理するプラグインはconfig.tomlが生成されて管理されるらしい
既存の.tool-versionsにも対応しているのが嬉しい

$ mise list
Plugin  Version                 Config Source              Requested             
java    adoptopenjdk-8.0.312+7  ~/.tool-versions           adoptopenjdk-8.0.312+7
java    17.0.2                                                                   
jq      1.6                     ~/.tool-versions           1.6                   
node    20.11.1                                                                  
node    20.12.2                 ~/.config/mise/config.toml 20

フックの登録無しでJAVA_HOMEも変わってる。嬉しい

$ cd a_directory && echo $JAVA_HOME
/Users/macaroni/.local/share/mise/installs/java/adoptopenjdk-8.0.312+7
$ cd ../other_directory && echo $JAVA_HOME                      
/Users/macaroni/.local/share/mise/installs/java/17.0.2

たぶんここら辺とかかな・・・

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0