Jabba
GitHub概要
スター3,226
ウォッチ26
フォーク214
作成日:2016年3月24日
言語:Go
ライセンス:-
トピックス
なし
スター履歴
データ取得日時: 2025/7/20 02:59
言語バージョン管理ツール
Jabba
概要
Jabbaは、クロスプラットフォーム対応のJavaバージョン管理ツールです。Go言語で実装されており、Windows、macOS、Linuxで動作します。nvmにインスパイアされた設計で、複数のJDKバージョンを簡単にインストール・切り替えができます。100以上のJDKディストリビューションをサポートし、プロジェクトごとに.jabbarcファイルでバージョンを指定できるため、チーム開発に最適です。
詳細
主な特徴
- 完全なクロスプラットフォーム対応: Windows、macOS、Linux(x86/x64/ARM)で動作
- 豊富なJDKサポート: Oracle、OpenJDK、Amazon Corretto、Azul Zulu、GraalVM等100以上
- .jabbarcファイル: プロジェクト固有のJavaバージョンを自動設定
- エイリアス機能: よく使うバージョンに短縮名を設定
- リンク機能: 既存のシステムJDKをJabbaで管理
- 高速動作: Go実装による軽量で高速な動作
サポートするJDKディストリビューション
- Oracle JDK / Server JRE
- Adopt OpenJDK (Hotspot / Eclipse OpenJ9)
- Amazon Corretto
- Azul Zulu OpenJDK
- BellSoft Liberica JDK
- SAP SapMachine
- GraalVM CE
- IBM SDK Java Technology Edition
- OpenJDK
- OpenJDK with Shenandoah GC
アーキテクチャ
Jabbaは~/.jabbaディレクトリにJDKをダウンロード・展開し、シェル統合によりJAVA_HOMEとPATH環境変数を動的に更新します。セマンティックバージョニングシステムを採用し、バージョン範囲指定(例:>=1.8.0 <1.9.0)や短縮記法(例:~1.8.73)をサポートしています。
メリット・デメリット
メリット
- Windows完全サポート: PowerShellでネイティブ動作(WSL不要)
- 軽量・高速: Go言語実装によりメモリ使用量が少ない
- 直感的なコマンド: nvmユーザーに親しみやすい設計
- 柔軟なバージョン指定: セマンティックバージョニング対応
- Docker統合: Dockerfileでの使用が簡単
- カスタムURL対応: 任意のJDKアーカイブをインストール可能
デメリット
- JVM限定: Node.jsやPythonなど他言語は管理できない
- コミュニティ規模: SDKMAN!と比較してユーザーベースが小さい
- プラグインシステムなし: 拡張機能の追加が困難
- 更新頻度: メンテナンスが不定期
- ドキュメント: 公式ドキュメントが限定的
参考ページ
書き方の例
インストール
# Linux/macOS
curl -sL https://github.com/shyiko/jabba/raw/master/install.sh | bash && . ~/.jabba/jabba.sh
# macOS(Homebrew使用)
brew install jabba
# Windows(PowerShell・管理者権限で実行)
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
Invoke-Expression (
Invoke-WebRequest https://github.com/shyiko/jabba/raw/master/install.ps1 -UseBasicParsing
).Content
# シェル設定をスキップする場合
curl -sL https://github.com/shyiko/jabba/raw/master/install.sh | bash -s -- --skip-rc && . ~/.jabba/jabba.sh
# インストール確認
jabba --version
基本的な使い方
# 利用可能なJavaバージョンの一覧表示
jabba ls-remote
# 最新版のインストール
jabba install [email protected]
jabba install [email protected]
# 特定ディストリビューションのインストール
jabba install [email protected] # Azul Zulu
jabba install [email protected] # Amazon Corretto
jabba install [email protected] # GraalVM
jabba install [email protected] # BellSoft Liberica
# Oracle JDKのインストール
jabba install oracle@21
# インストール済みバージョンの確認
jabba ls
バージョンの切り替え
# 一時的な切り替え(現在のシェルのみ)
jabba use openjdk@21
jabba use [email protected]
# 現在使用中のバージョン確認
jabba current
# 特定のコマンドを別バージョンで実行
jabba use adopt@11 -- java -version
jabba use zulu@8 -- javac MyApp.java
エイリアスとリンクの管理
# エイリアスの作成
jabba alias default openjdk@21
jabba alias lts [email protected]
jabba alias java8 [email protected]
# エイリアスの使用
jabba use default
jabba use lts
# エイリアスの削除
jabba unalias java8
# システムJDKのリンク
jabba link system@17 /usr/lib/jvm/java-17-openjdk
jabba link custom@21 /opt/jdk-21
# リンクの使用
jabba use system@17
# リンクの削除
jabba unlink custom@21
プロジェクト固有の設定(.jabbarc)
# プロジェクトディレクトリに移動
cd /path/to/my-project
# .jabbarcファイルの作成(シンプルな形式)
echo "[email protected]" > .jabbarc
# YAML形式での作成
cat > .jabbarc << EOF
jdk: [email protected]
EOF
# バージョン範囲の指定
cat > .jabbarc << EOF
jdk: ">=11 <17"
EOF
# .jabbarcに基づいてインストール・使用
jabba install
jabba use
# 現在のバージョンを.jabbarcに保存
jabba current > .jabbarc
カスタムURLからのインストール
# カスタムURLからインストール
jabba install custom@11 https://example.com/jdk-11.tar.gz
# ローカルファイルからインストール
jabba install local@17 file:///path/to/jdk-17.zip
# 特定のアーキテクチャ用
jabba install adopt@11-linux-arm64 \
https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.21%2B9/OpenJDK11U-jdk_aarch64_linux_hotspot_11.0.21_9.tar.gz
環境変数とパス管理
# JAVA_HOMEの確認
echo $JAVA_HOME
# インストールパスの確認
jabba which openjdk@21
jabba which default # エイリアスも使用可能
# 環境のリセット(元の状態に戻す)
jabba deactivate
CI/CD環境での使用
# GitHub Actions例
- name: Setup Jabba
run: |
curl -sL https://github.com/shyiko/jabba/raw/master/install.sh | bash
echo "$HOME/.jabba/bin" >> $GITHUB_PATH
- name: Install Java
run: |
source ~/.jabba/jabba.sh
jabba install [email protected]
jabba use [email protected]
# GitLab CI例
before_script:
- curl -sL https://github.com/shyiko/jabba/raw/master/install.sh | bash
- source ~/.jabba/jabba.sh
- jabba install
- jabba use
Dockerでの使用
# Dockerfile例
FROM ubuntu:22.04
# Jabbaのインストール
RUN apt-get update && apt-get install -y curl
RUN curl -sL https://github.com/shyiko/jabba/raw/master/install.sh | \
JABBA_COMMAND="install [email protected] -o /jdk" bash
# 環境変数の設定
ENV JAVA_HOME /jdk
ENV PATH $JAVA_HOME/bin:$PATH
# 別の方法:マルチステージビルド
FROM buildpack-deps:bullseye-curl AS jabba
RUN curl -sL https://github.com/shyiko/jabba/raw/master/install.sh | \
JABBA_COMMAND="install openjdk@21 -o /jdk" bash
FROM ubuntu:22.04
COPY --from=jabba /jdk /opt/java
ENV JAVA_HOME=/opt/java
ENV PATH=$JAVA_HOME/bin:$PATH
アンインストールとトラブルシューティング
# 特定バージョンのアンインストール
jabba uninstall openjdk@17
jabba uninstall [email protected]
# キャッシュのクリア
rm -rf ~/.jabba/cache
# ログの詳細表示
JABBA_DEBUG=1 jabba install openjdk@21
# Jabba自体のアンインストール
rm -rf ~/.jabba
# ~/.bashrc、~/.zshrc等から以下の行を削除:
# [ -s "$JABBA_HOME/jabba.sh" ] && source "$JABBA_HOME/jabba.sh"