Jabba

バージョン管理JavaJDKクロスプラットフォームGoCLI

GitHub概要

shyiko/jabba

(cross-platform) Java Version Manager

スター3,226
ウォッチ26
フォーク214
作成日:2016年3月24日
言語:Go
ライセンス:-

トピックス

なし

スター履歴

shyiko/jabba Star History
データ取得日時: 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_HOMEPATH環境変数を動的に更新します。セマンティックバージョニングシステムを採用し、バージョン範囲指定(例:>=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"