最近换了 M4 MacBook Air,从 Windows 转到 macOS。在 AI 时代,Mac 是更好的 vibe coding 平台。这篇文档记录了我完整配置 Java 开发环境的全过程,每一条命令都直接复制可用。

前言:为什么从 Windows 换到 Mac?

这次终于下定决心从 Windows 转到 macOS M4,主要原因是:

AI 时代的 vibe coding 需求

在 AI 辅助编程时代,开发者的角色正在转变——从"敲代码的人"变成"指挥 AI 写代码的人"。这种新的开发方式(Andrej Karpathy 称之为 Vibe Coding)需要:

  • 更流畅的终端体验:macOS 的 Unix 内核让 CLI 工具如鱼得水
  • 更好的 AI 工具支持:Claude Code、Cursor 等 AI IDE 在 macOS 上体验更佳
  • 更强的开发环境一致性:服务器和本地环境高度统一

当然,换了 M 系列芯片后,我也遇到了不少新问题:

  • 为什么 JDK 8 安装不上?
  • 为什么 Maven 老报 illegal instruction 错误?
  • 为什么依赖下载慢到怀疑人生?
  • 多个项目需要不同 JDK 版本怎么办?
  • Windows 上的环境变量配置和 Mac 完全不一样?

这些问题,本质上都是 Apple Silicon 架构迁移 + 平台切换带来的双重挑战。

x86_64(Intel) 到 arm64(Apple Silicon M4),Windows 到 macOS,看似只是换个电脑,实际踩坑无数。

但好消息是,只要用对工具和姿势,这些坑都能完美避开。

今天这份指南,将带你一步步搭建一个专业、高效、多版本共存的 Java 开发环境,为 AI 辅助编程打好基础。


为什么选择 SDKMAN + Homebrew 组合?

Windows vs Mac 的环境管理差异

在 Windows 上,你可能习惯了:

  • 手动下载安装包,下一步下一步安装
  • 在"系统属性"里配置环境变量
  • 修改 PATH 变量,重启终端生效

到了 macOS,这些方式依然可以,但不是最佳实践。macOS 有更优雅的方案:

传统方式的痛点

手动下载安装包

  • 需要自己配置 JAVA_HOME、PATH 等环境变量
  • 切换版本需要改配置文件,麻烦易错
  • 卸载清理不干净,容易留下残留

Homebrew 管理 JDK

  • 版本切换不够灵活
  • 容易和系统自带 Java 冲突

SDKMAN 的优势

SDKMAN (SDK Manager) 是一个专门用于管理并行版本 SDK 的工具,它的核心价值在于:

  • 一条命令安装/切换/卸载:无需手动配置环境变量
  • 多版本和平共处:JDK 8、17、21 随时切换
  • 项目级版本锁定:每个项目自动使用指定 JDK/Maven 版本
  • 支持丰富:JDK、Maven、Gradle、Kotlin、Scala 等 30+ 种工具

官方推荐安装方式:Homebrew 管理系统工具 + SDKMAN 管理 JDK/Maven

这是目前 macOS 上最优雅的 Java 开发环境管理方案。


第一步:安装 Homebrew(M4 芯片必经之路)

Homebrew 是 macOS 上最流行的包管理器,相当于 macOS 版的"应用商店"。

Windows 用户类比:就像 Chocolatey 或 winget,但 Homebrew 更成熟、生态更丰富。

M 系列芯片的默认安装路径是 /opt/homebrew(Intel 芯片是 /usr/local)。

1.1 安装 Homebrew

打开终端,执行官方安装命令:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

安装过程可能需要输入密码和确认,按照提示操作即可。

1.2 配置 PATH(非常关键)

Windows 用户注意:macOS 不需要你去"系统偏好设置"里点来点去,一条命令搞定。

M 系列 Homebrew 安装后不会自动添加到 PATH,需要手动配置:

echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"

1.3 验证安装

brew --version

能看到版本号输出,说明 Homebrew 安装成功。


第二步:安装 SDKMAN(JDK 版本管理神器)

SDKMAN 不通过 Homebrew 安装,官方推荐使用 curl 直接安装。

2.1 安装 SDKMAN

curl -s "https://get.sdkman.io" | bash

2.2 让当前终端生效

source "$HOME/.sdkman/bin/sdkman-init.sh"

2.3 验证安装

sdk version

看到版本信息输出,SDKMAN 就安装好了。


第三步:安装多版本 JDK(8/17/21 一个不少)

3.1 查看可安装的 JDK 列表

sdk list java

这个命令会列出所有可用的 JDK 版本和发行版。常见的发行版有:

发行版 特点 推荐场景
tem (Eclipse Temurin) 企业常用、稳定、TCK 认证 生产环境首选
zulu (Azul Zulu) 对 JDK 8 在 Apple Silicon 支持更好 M 芯片需要 JDK 8 时
graalce GraalVM 发行版,包含 Native Image 需要编译成可执行文件

3.2 安装 JDK 21(最新 LTS)

sdk install java 21.0.10-tem

3.3 安装 JDK 17(Spring Boot 3 常用)

sdk install java 17.0.18-tem

3.4 安装 JDK 8(老项目维护)

重要提醒:在 Apple Silicon 上,JDK 8 推荐使用 Zulu 发行版,因为 Temurin 的 JDK 8 对 ARM 支持有限。

sdk install java 8.0.482-zulu

3.5 设置默认 JDK 版本

如果你主要开发新项目,建议设置 JDK 21 为默认:

sdk default java 21.0.10-tem

3.6 查看当前 JDK 版本

sdk current java
java -version

两条命令都能看到当前使用的 JDK 版本。

3.7 临时切换 JDK 版本

开发老项目时,需要临时切换到 JDK 8:

sdk use java 8.0.482-zulu

注意sdk use 只对当前终端会话生效,关闭终端后恢复默认版本。

3.8 永久切换 JDK 版本

如果要把某个版本设为新的默认:

sdk default java 17.0.18-tem

3.9 查看已安装的所有 JDK

ls -1 ~/.sdkman/candidates/java

这个目录下的每个子文件夹代表一个已安装的 JDK 版本。


第四步:安装 Maven(依赖管理神器)

4.1 查看可安装的 Maven 版本

sdk list maven

建议选择 3.9.x 稳定版,避免使用 4.0.0-rc 这样的候选版,按q退出。

4.2 安装 Maven

sdk install maven 3.9.12
sdk default maven 3.9.12

4.3 验证 Maven 安装

mvn -v

能看到 Maven 版本和 Java 版本信息,说明安装成功。


第五步:配置项目自动切换 JDK(高级玩法)

这是 SDKMAN 最强大的功能之一:进入项目目录,自动切换到该项目指定的 JDK 和 Maven 版本。

5.1 开启自动环境切换

编辑 SDKMAN 配置:

sdk config

sdkman_auto_env=false 改为:

sdkman_auto_env=true

保存并退出,类似vim的操作。

5.2 为项目创建 .sdkmanrc 文件

在项目根目录创建一个 .sdkmanrc 文件,内容如下:

老项目(JDK 8 + Maven 3.9.12)

cat > .sdkmanrc << 'EOF'
java=8.0.482-zulu
maven=3.9.12
EOF

Spring Boot 3 项目(JDK 17)

cat > .sdkmanrc << 'EOF'
java=17.0.18-tem
maven=3.9.12
EOF

新项目(JDK 21)

cat > .sdkmanrc << 'EOF'
java=21.0.10-tem
maven=3.9.12
EOF

5.3 验证自动切换效果

进入项目目录后,执行:

sdk env

你会看到 SDKMAN 自动切换到项目指定的版本。

从此以后,不同项目之间无缝切换,再也不用手动改配置了。


第六步:配置 Maven 国内镜像(速度暴涨 10 倍)

Maven 默认从中央仓库下载依赖,在国内访问速度很慢。配置阿里云镜像后,下载速度可以从几十 KB/s 提升到几 MB/s。

6.1 创建 settings.xml

mkdir -p ~/.m2
nano ~/.m2/settings.xml

6.2 添加阿里云镜像

将以下内容复制到 settings.xml 文件中:

<settings>
  <mirrors>
    <mirror>
      <id>aliyun</id>
      <mirrorOf>central</mirrorOf>
      <name>Aliyun Central</name>
      <url>https://maven.aliyun.com/repository/central</url>
    </mirror>
  </mirrors>
</settings>

保存并退出(nano 编辑器:Ctrl+O 保存,Enter 确认,Ctrl+X 退出)。

注意mirrorOf=central 表示只代理中央仓库,这是最稳定的配置方式。不建议设置 mirrorOf=*,容易导致其他仓库的冲突。

6.3 验证镜像是否生效

mvn -X clean compile

在输出的日志中搜索 aliyun,如果看到类似这样的输出:

Using mirror aliyun (https://maven.aliyun.com/repository/central) for central

说明镜像配置成功生效。


第七步:修改 Maven 本地仓库路径(可选)

默认情况下,Maven 把依赖下载到 ~/.m2/repository 目录。如果你想自定义路径,可以按以下方式配置。

7.1 修改 settings.xml

nano ~/.m2/settings.xml

<settings> 标签内添加:

<localRepository>/Users/gfish/dev/maven-repository</localRepository>

完整示例(包含镜像和本地仓库):

<settings>
  <localRepository>/Users/gfish/dev/maven-repository</localRepository>

  <mirrors>
    <mirror>
      <id>aliyun</id>
      <mirrorOf>central</mirrorOf>
      <name>Aliyun Central</name>
      <url>https://maven.aliyun.com/repository/central</url>
    </mirror>
  </mirrors>
</settings>

记得把路径改为你自己的实际路径。

7.2 创建新目录

mkdir -p /Users/gfish/dev/maven-repository

7.3 迁移旧仓库(可选)

如果你不想重新下载依赖,可以迁移原有仓库:

mv ~/.m2/repository/* /Users/gfish/dev/maven-repository/

首次迁移建议用 cp -a 复制一份保底。

7.4 验证本地仓库配置

mvn help:evaluate -Dexpression=settings.localRepository -q -DforceStdout

输出为你配置的新路径,说明配置成功。


第八步:一键检查清单(建议收藏)

完成以上配置后,可以用以下命令快速验证所有环境:

8.1 Homebrew 检查

brew --version

8.2 SDKMAN 检查

sdk version

8.3 当前 JDK/Maven 版本

sdk current java
sdk current maven
java -version
mvn -v

8.4 已安装的 JDK/Maven 列表

ls -1 ~/.sdkman/candidates/java
ls -1 ~/.sdkman/candidates/maven

8.5 Maven 镜像验证(关键)

mvn -X clean compile | grep aliyun

8.6 本地仓库路径验证

mvn help:evaluate -Dexpression=settings.localRepository -q -DforceStdout

全部通过,你的 Java 开发环境就完美配置好了!


常见问题排查

问题 1:JDK 8 安装失败

现象sdk install java 8.x.x-tem 报错

原因:Temurin JDK 8 对 Apple Silicon 支持有限

解决方案:使用 Zulu 发行版

sdk install java 8.0.482-zulu

问题 2:Maven 报 illegal instruction

现象:执行 mvn 命令报 illegal instruction 错误

原因:使用的是老版本 Maven(3.3.9),不支持 Apple Silicon

解决方案:升级到 Maven 3.8.6+

sdk install maven 3.9.12

问题 3:Maven 依赖下载仍然很慢

检查清单

  1. 确认 settings.xml 中的镜像 URL 是 https://maven.aliyun.com/repository/central
  2. 确认 mirrorOf 设置为 central,不是 *
  3. 使用 mvn -X 查看日志,确认使用了 aliyun 镜像

问题 4:多个项目切换 JDK 麻烦

解决方案:为每个项目创建 .sdkmanrc 文件,并开启 sdkman_auto_env=true


标准环境结构一览

完成所有配置后,你的开发环境应该是这样的:

~/
├── .sdkman/
│   └── candidates/
│       ├── java/
│       │   ├── 8.0.482-zulu
│       │   ├── 17.0.18-tem
│       │   ├── 21.0.10-tem
│       │   └── current -> 21.0.10-tem
│       └── maven/
│           ├── 3.9.12
│           └── current -> 3.9.12
├── .m2/
│   ├── settings.xml
│   └── repository/ (或自定义路径)
└── .zprofile (包含 brew shellenv)

项目目录:

~/projects/my-spring-boot-app/
├── .sdkmanrc (指定项目使用的 JDK 版本)
├── pom.xml
└── src/

Vibe Coding 时代:为什么 Mac 更适合 AI 辅助开发?

配置完开发环境后,你可能会问:为什么费这么大劲从 Windows 转到 Mac?

在 AI 时代,Mac + macOS 对于 vibe coding 有几个天然优势:

1. Unix-first 的终端体验

macOS 的内核是 Darwin(基于 BSD),这意味着:

  • 所有 Linux 服务器的命令都能直接用
  • SSH、grep、awk、sed 等工具开箱即用
  • 不需要像 Windows 那样装 Git Bash 或 WSL

对于 vibe coding 的意义:当你用 Claude Code 这样的 AI CLI 工具时,它能直接操作你的系统,而不是在虚拟层里绕来绕去。

2. 更好的 AI 工具生态

目前主流的 AI 编程工具:

  • Claude Code:官方 CLI,macOS 原生支持最佳
  • Cursor:基于 VS Code,macOS 性能更好
  • GitHub Copilot:跨平台,但在 Unix 环境下更流畅

3. 环境一致性

开发环境 → 测试环境 → 生产环境,全都是 Unix/Linux。

Windows 用户痛点:本地 Windows,开发 WSL,测试 Linux,生产 Linux——每一层都有细微差异。

Mac 用户优势:本地 macOS = 远程 Linux,环境高度一致。

4. 终端多路复用神器

macOS + iTerm2 + tmux,可以:

  • 一个终端窗口,分屏连接多个服务器
  • 断网不丢会话
  • 远程开发像本地一样流畅

这对于 AI 辅助远程开发 是巨大的优势。


总结:花 30 分钟,节省未来无数小时

配置开发环境是件"一劳永逸"的事情。虽然花了 30 分钟,但未来你将获得:

  • 多版本 JDK 随时切换:老项目、新项目无缝切换
  • 项目级环境隔离:每个项目自动使用正确的 JDK 版本
  • 依赖下载速度提升:从几十 KB/s 到几 MB/s
  • 环境可复制:换电脑、入职新公司,快速复刻环境

这就是专业的开发体验。

更重要的是:你在 macOS 上搭建好了基础环境,接下来就可以体验真正的 vibe coding 了——用 Claude Code 这样的 AI 工具,让它帮你写代码、debug、重构,而你只需要负责"描述需求"和"做决策"。


推荐阅读

准备开始 Vibe Coding?

Claude Code 官方文档:
https://docs.anthropic.com/claude-code

使用 Claude Code 进行 Vibe Coding 最佳实践:
https://m.blog.csdn.net/jjhfen00/article/details/158045319

Java 环境相关资源

Eclipse Temurin 官网:
https://adoptium.net/temurin/releases/

Azul Zulu 官网:
https://www.azul.com/downloads/?package=jdk

SDKMAN 官网:
https://sdkman.io/

阿里云 Maven 公共仓库:
https://maven.aliyun.com/mvn/view


作者简介:一名从 Windows 转到 macOS M4 的 Java 开发者,正在探索 AI 时代的 vibe coding 新范式。

版权声明:本文原创,转载请注明出处。

互动话题:你从 Windows 转到 Mac 后遇到过哪些坑?欢迎在评论区分享!


欢迎关注公众号 FishTech Notes,一起交流使用心得!

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐