前言

作为一个 Java 开发者,你是否经常遇到这些场景:

  • 公司老项目用的 JDK 8,新项目用的 JDK 21,每次都要手动改 JAVA_HOME,改完还要重启 IDEA
  • 想试试不同厂商的 OpenJDK(Temurin、Corretto、Dragonwell),结果每个都要去官网下载、解压、配置
  • 在国内下载 JDK,速度慢到怀疑人生,翻墙又不稳定
  • Maven 和 Gradle 的代理配置要分开设置,配置文件找半天

之前用过的 sdkmanjenv 等工具或多或少都有点问题——有的依赖 shell、Windows 下体验差,有的不支持多镜像加速,有的配置太复杂。直到发现了 jgo 这个项目,四个字:相见恨晚


快速跳转 -> 快速上手


项目简介

jgo 是一个用 Go 语言编写的 Java 版本管理器(JDK Version Manager),功能类似于 Node.js 的 nvm 或 Python 的 pyenv,专为 Java 开发者设计。

  • GitHub 链接:查看仓库
  • 开源协议:MIT
  • 支持平台:Windows / Linux / macOS,x64 / arm64

与其他工具对比

特性 jgo sdkman jenv Windows 手动配置
Windows 原生支持 ❌(依赖 bash)
多源 JDK 4个主流源 较少 需自行添加 手动下载
镜像加速 内置可插件化 手动操作
环境变量自动修改 ✅ 系统级 ✅ shell 级 ✅ shell 级 ✅ 手动
Gradle/Maven 集成
本地 JDK 导入 手动解压
代理管理(全局+临时) 各自配置

核心功能一览

1. 多源 JDK 下载,一键安装

jgo 对接了四个主流 OpenJDK 发行版:

厂商 发行版 特点
Alibaba Dragonwell 阿里云优化,兼容性好
Amazon Corretto AWS 出品,长期支持
Azul Zulu 版本覆盖广,商业支持
Eclipse Temurin (Adoptium) 前身是 AdoptOpenJDK,社区活跃

安装 JDK 21 只需要一行命令:

jgo install 21

它会列出所有源的可用版本,交互选择后自动下载、解压、配置。再也不用去官网找下载链接了。

jgo install 演示

2. 一键切换 JDK 版本

这个功能是最常用的。jgo use 会直接修改系统级的 JAVA_HOMEPATH 环境变量,切换后立刻生效:

jgo use 21                  # 切换到 JDK 21(版本号匹配)
jgo use Corretto-17         # 精确名称匹配
jgo use                     # 交互式选择

看着输出结果,亮哥只想说一句:比手动改环境变量不知道快了多少倍。

3. 镜像加速,告别龟速下载

国内开发者最头疼的事之一就是下载速度。jgo 内置了 镜像插件系统,当前已支持清华 TUNA 镜像对 Temurin 源的加速:

jgo mirror Temurin tsinghua   # 开启清华镜像
jgo mirror                    # 查看当前镜像配置
jgo mirror Temurin none       # 关闭镜像

4. 构建工具统一管理

jgo 不光管 JDK,还能统一管理 Gradle 和 Maven 的代理和路径:

# Gradle 代理配置
jgo gradle proxy http://127.0.0.1:7890
jgo proxy user:pass@host:port   # 带认证的代理

# Maven 代理配置
jgo maven proxy http://127.0.0.1:7890

# 查看/设置 gradle/maven 路径
jgo gradle path ~/.gradle
jgo maven path /opt/maven

代理配置会自动写入 ~/.gradle/gradle.properties~/.m2/settings.xml,省去了手动编辑配置文件的麻烦。

5. 本地 JDK 导入

如果你已经有 JDK 安装包(ziptar.gz),也可以通过 jgo add 快速导入:

jgo add ./downloads/openjdk-21_linux-x64_bin.tar.gz

工具会自动检测版本号,提示你输入一个易于识别的目录名。

6. 源连通性测试

不知道哪个源下载快?sourcetest 帮你测:

jgo sourcetest

它会对所有已配置的 JDK 源(和镜像)发起 HTTP 请求,返回每个源的响应时间和状态,帮你选择最快的下载通道。


快速上手指南

安装

方式一:下载

  1. Github releases页 下载你所用的版本
  2. 解压
  3. 把它放进 Path

方式二:从源码编译

git clone https://github.com/yourname/jgo.git
cd jgo
make build        # 输出到 bin/jgo

配置流程

刚安装完,建议按这个顺序配一下:

# 1. 查看默认存储位置
jgo root                          # 默认 ~/.jgo/jdks

# 2. 如果需要改位置
jgo root /opt/my-jdks

# 3. 配置代理(如果公司网络需要)
jgo proxy http://proxy.company.com:8080

# 4. 开启国内镜像(可选,强烈建议)
jgo mirror Temurin tsinghua

# 5. 测试一下连通性
jgo sourcetest

# 6. 安装 JDK
jgo install 21

整个配置过程不到两分钟,比手动配环境变量舒服多了。

日常高频用法

jgo list                    # 查看已安装的 JDK
jgo list available          # 查看所有可下载的版本
jgo use Temurin-21          # 切换版本

技术亮点

从源码角度看,jgo 的设计有几个值得关注的地方:

  1. Provider 层抽象:每个 JDK 源(Alibaba、Amazon、Azul、Eclipse)都实现 Provider 接口,统一了查询列表和下载链接的方式,新增源只需要加一个文件。

  2. Mirror 插件机制:通过接口 + init() 自注册实现了插件化,不需要修改主逻辑就能扩展镜像源。插件模式在 Go 项目中值得学习。

  3. 跨平台环境变量操作internal/env/ 下针对 Windows 和其他平台分别实现,Windows 通过注册表设置系统级环境变量,Unix 通过 shell 配置文件。

  4. 零外部依赖:编译出来的二进制只有 jgo 本身,不需要安装任何运行时或依赖库。


总结

jgo 解决的痛点很明确——让 Java 开发者不再在 JDK 版本切换和配置上浪费时间。它的优势在于:

  • 纯 Go 编写,跨平台体验一致,Windows 用户友好
  • 命令简单直观,学习成本极低
  • 4 个主流 JDK 源 + 镜像插件,覆盖国内下载场景
  • Gradle / Maven 集成是差异化亮点,市面上没几个工具做这个

项目本身代码结构也很干净,适合 Go 新手读一读源码,理解 CLI 工具和多源适配器的设计模式。

如果你深受 JDK 版本管理的折磨,去 GitHub 上搜一下 jgo,试试看。用了回不来的那种。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐