更新日志
[0.14.0] - 2026-09-05
修复
- 下载停滞看门狗:修复 JDK 下载在连接停滞(对端不断开但不再传数据)时无限挂起——距最后一次收到数据超 30 秒即中断本次尝试并自动重试(断点续传,已下载部分不丢),重试时显式打印提示。
新增
jvm doctor3 项新检查(11 → 14 项):配置文件语法(config.toml 坏语法显式报 ✗)/.tmp-extract-*解压半成品残留(--fix自动清理)/ 下载缓存占用汇报(附jvm cache clean释放提示)。jvm available查询结果本地缓存(10 分钟有效):二次查询不再实时打全部发行版 API,大幅提速;分组形态按distro@major增量复用;-r/--refresh强制绕过缓存直查。jvm update --all:一条命令升级全部落后的(发行版, 大版本)组——与outdated同源检查,汇总计划后一次确认,某组失败不阻断其余,末尾给出汇总(有失败时非零退出)。- Tab 补全覆盖扩展:
exec补本地已装版本(仅--之前的版本槽)、available补-a/-m选项、doctor补--fix/-y、init/completion补powershell/bash参数。
[0.13.0] - 2026-09-05
新增
- 新发行版
temurin-ea(Temurin 早期访问版):跟踪尚未 GA 的大版本预览构建(如jvm install temurin-ea@28),EA 大版本列表实时从 Adoptium API 归并、随上游滚动;下载直连 GitHub release 资产(镜像不同步 EA 构建)。 - 新发行版
graalvm(Oracle GraalVM,CPU LTS 线 21/25):jvm install graalvm@21;直连 Oracle 官方 CDN,SHA256 走官方.sha256旁路校验;官方无 Windows ARM64 构建,arch=aarch64下会明确提示并建议改用 temurin / microsoft。 - 本地 zip 包安装:
jvm install <distro@版本> <zip文件路径>——内网/代理环境手动下载后纳管,不访问网络、不做远程校验,安装后目录命名与远程安装一致,各命令照常工作。 - 下载缓存:安装包 zip 以
{distro}-{版本}.zip留存~/.jvm/cache/,卸载后重装同版本直接复用(命中前先校验完整性,损坏自动删除重下);新命令jvm cache查看条目与占用、jvm cache clean清空。 - 配置
install_dir键(环境变量JVM_INSTALL_DIR同效):把 JDK 数据目录(versions/)重定向到其他盘;控制面(config.toml、current junction、注册表)留在~/.jvm不动。
[0.12.0] - 2026-09-05
新增
jvm update <[distro@]大版本> [-y]:patch 升级一步到位——安装该大版本最新 patch →(正在使用该组版本时)自动切换 current → 清理组内全部旧 patch 目录(被占用的跳过并提示)。jvm upgrade仍只负责 jvm 自身更新,两者语义分离。jvm home:打印当前 JAVA_HOME 路径(单行无装饰),供 CI 脚本 / IDE 配置直接引用。
修复
- Tab 补全的子命令列表补齐
outdated/exec(引入补全时即遗漏),并新增update/home补全;jvm update <TAB>补本地已装版本的distro@大版本形式。
变更
- 补全块引入版本 token 并纳入启动自举的版本化重写:补全内容变更后老用户下次运行 jvm 自动刷新 profile,无需手动
jvm completion --install。
[0.11.0] - 2026-08-16
新增
jvm exec <[distro@]版本> -- <命令>:用指定版本在子进程环境里执行命令,不动全局 current junction(如jvm exec 17 -- mvn test)。无版本号时读.jvmrc再退到当前版本;批处理(mvn / gradlew 等.cmd/.bat)自动经cmd.exe分发,子进程退出码原样传播。jvm outdated:检查已装版本 patch 更新,按(发行版, 大版本)分组并发查询,列出可升级行与升级命令。jvm doctor --fix:诊断报告后自动修复失败项——目录 / current 链接重建 / JAVA_HOME / shell 集成 / 用户 PATH 补全;注册表 PATH 里的旧 JDK 残留逐条确认后移除(-y跳过)。新增第 10 项检查「用户 PATH」。.jvmrc目录自动切换:shell 集成 v2 在.jvmrc变化时自动执行jvm use --auto——cd 进含.jvmrc的目录自动切到该版本,cd 出去恢复切换前的手动版本。默认开启,autoswitch = false(或JVM_AUTOSWITCH=0)关闭;老用户升级 jvm 后自动获得新钩子。
[0.10.0] - 2026-08-13
新增
- 项目级版本固定
.jvmrc:jvm pin [版本]写入当前目录的.jvmrc,jvm use无参数时从当前目录逐级向上查找并读取(与 .nvmrc / .ruby-version 一致,支持 monorepo 子目录),团队成员无需各自记版本号。 - 新增
make test-race竞态检测,CI 每次 push / PR 额外跑go test -race。
[0.9.0] - 2026-08-11
新增
- 新增 Azul Zulu (
zulu@) 与 BellSoft Liberica (liberica@) 两个发行版 provider:两者均支持 Windows x64 / ARM64。Zulu 走 Azul Metadata API 两步查询取官方 SHA256;Liberica 走 BellSoft Product Discovery API + 官方 SHA1。至此 jvm 覆盖五大主流 OpenJDK 发行版。 - 下载校验层支持多算法:
Asset契约由SHA256改为Checksum+ChecksumAlgo(默认 sha256),各 provider 按发行版官方提供的哈希校验(Liberica 用 SHA1,其余 SHA256)。
[0.8.0] - 2026-08-10
新增
- jvm 自身发行 Windows ARM64 版本:
jvm-windows-arm64-setup.exe与jvm-windows-arm64.zip(安装向导界面为 x86 模拟运行,释放出的 jvm.exe 是 ARM64 原生);一键安装脚本自动识别 x64 / ARM64。 - ARM64 版 jvm 默认下载 ARM64 (aarch64) 版 JDK(此前默认 x64,需手动配置)。
- Microsoft Build of OpenJDK 支持下载 Windows ARM64 构建(11/17/21/25 全部 LTS)。
arch配置接受别名:amd64→x64、arm64→aarch64。
变更
- Provider 层新增
Configurable可选接口与统一配置分发:新增发行版适配器实现接口即自动接入目标架构/镜像配置。 arch=aarch64时使用 Corretto 会明确报错并建议改用 Temurin / Microsoft(Corretto 官方没有 Windows ARM64 构建;此前会静默下载 x64 版靠系统模拟运行)。
[0.7.0] - 2026-08-08
新增
- 启动时静默检查 jvm 新版本(24 小时节流):距上次检查超 24h 才查 GitHub Release,落后时提示运行
jvm upgrade,网络失败永不阻断主命令。 - JDK 下载支持瞬时错误重试(3 次指数退避)与 HTTP Range 断点续传:下载中断后下次
jvm install从断点继续,无需重下完整 zip。 jvm doctor新增三项诊断:java 版本:实跑java -version,排除”文件存在但二进制损坏/缺 DLL”。版本目录完整性:扫描~/.jvm/versions/各目录是否均有bin/java.exe,标记解压中断的半成品。注册表 PATH 残留:检查用户 PATH 里是否有非 current/bin 的旧 JDK 路径。
变更
- 导出
junction.MajorOf供 doctor 复用,避免版本目录名解析逻辑重复。 app包新增CompareVersions/LatestGitHubTag共享基础设施,供更新检查使用(不引入新依赖)。
[0.6.1] - 2026-08-08
修复
- shell 集成与 Tab 补全在 Documents 目录被重定向时完全不生效:profile 路径改用
KnownFolderPath(FOLDERID_Documents),与 PowerShell 实际查找的$PROFILE永远一致。
[0.6.0] - 2026-08-08
新增
- PowerShell 5.1/7+ 与 Git Bash 的 Tab 智能补全(
jvm <TAB>子命令、jvm use <TAB>本地已装版本等),静默自举注入,零配置。 jvm doctor新增 Tab 补全状态检测项。
修复
- profile 标记块替换只替换首个标记的问题;重复块循环移除;profile 脚本改为纯 ASCII,避免 PowerShell 5.1 中文系统上 GBK 解码损坏。
更早版本请见仓库 CHANGELOG.md 与 Releases 页面。