直接给结论:首选 Ubuntu 20.04/22.04 LTS 或 CentOS Stream 8/9(如果公司允许),或者直接使用 Docker 容器环境。
对于新手来说,纠结“预装 JDK 的系统镜像”其实是一个伪命题。在现在的开发工作流中,操作系统本身是否自带 JDK 并不重要,重要的是你是否掌握了如何在一个干净的 Linux 系统上快速、标准地配置 Java 环境。
下面我从实际工作场景、避坑指南和具体建议三个维度来拆解这个问题。
1. 为什么不建议依赖“预装 JDK”的镜像?
很多云厂商(阿里云、腾讯云、华为云等)提供了一些“一键部署”或“应用镜像”,里面确实可能预装了 JDK + Tomcat + MySQL。看起来省心,但对新手有三大害处:
- 黑盒问题:你不知道它装的 JDK 版本是多少(可能是老旧的 OpenJDK 8 甚至更老),路径在哪里,环境变量怎么配的。一旦报错,你很难排查是代码问题还是环境配置问题。
- 权限与清理困难:预装的环境往往混杂了各种测试包、日志文件,且权限管理混乱。当你需要升级 JDK 版本时,手动卸载预装版往往会留下残留配置,导致后续安装新版本的冲突。
- 脱离生产一致性:国内大多数生产环境使用的是标准的纯净版 Linux(如 CentOS 7/8, Ubuntu 18/20/22)。如果你在开发机上用了一个特制的“全家桶”镜像,到了生产环境发现连
java -version都调不通,这种心理落差会严重打击新手信心。
2. 新手应该选什么系统?
作为 Java 后端开发,你的主要战场是 Linux。以下是三种主流选择及其适用场景:
A. Ubuntu Server LTS (推荐指数:⭐⭐⭐⭐⭐)
- 理由:社区资源最丰富,文档最多,错误信息最容易搜到解决方案。
apt包管理器体验极佳。 - 适合人群:个人开发者、初创团队、希望快速上手且不介意稍微多一点学习成本的新手。
- 注意:Ubuntu 默认源里的 JDK 版本通常较新(如 OpenJDK 11/17),但为了稳定,建议通过官方 PPA 或 SDKMAN 安装特定版本,而不是直接用
apt install default-jdk。
B. CentOS Stream / Rocky Linux / AlmaLinux (推荐指数:⭐⭐⭐⭐)
- 理由:国内企业级服务器占有率最高。虽然 CentOS 8 已停止维护,但 CentOS Stream 或其替代品(Rocky/Alma)依然是企业标配。学会在 RHEL 系系统上配置环境,是你进入大厂的必修课。
- 适合人群:目标明确指向大型互联网公司、传统XX机构后端岗位的新手。
- 注意:
yum/dnf命令需要适应,网络配置有时需要手动调整(尤其是云服务器)。
C. Windows + WSL2 (推荐指数:⭐⭐⭐)
- 理由:如果你实在离不开 Windows 的开发工具链(IDEA 在 Windows 上的插件生态确实好),WSL2 是目前最佳折中方案。它本质上运行的是一个轻量级的 Linux 内核。
- 适合人群:不想折腾双系统、对 Linux 命令行极度抗拒、但必须使用 IntelliJ IDEA 深度功能的新手。
- 注意:性能损耗存在(尤其在 I/O 密集型操作时),且文件系统跨平台访问慢。不建议用于高并发压力测试或大规模数据构建。
3. 正确的姿势:不要“预装”,要“管理”
真正的高手从不关心系统镜像里有没有 JDK,他们关心的是如何优雅地切换和管理多个 JDK 版本。这是你从“新手”进阶为“熟手”的关键一步。
强烈建议你掌握以下两种工具之一,无论你在哪个系统镜像上:
方案一:SDKMAN! (Universal & Recommended)
这是目前 Java 圈最流行的版本管理工具,支持 Linux/macOS。
# 安装 SDKMAN
curl -s "https://get.sdkman.io" | bash
source "$HOME/.sdkman/bin/sdkman-init.sh"
# 安装任意版本 JDK
sdk install java 17.0.8-tem
sdk install java 8.0.392-zulu
# 切换版本
sdk use java 17.0.8-tem
优点:零侵入系统环境,随时切换,项目隔离。
方案二:Maven Wrapper + 本地解压
如果你在公司内网受限,无法使用 SDKMAN,那就采用最原始但最可靠的方式:
- 下载对应版本的 JDK Tarball(如 Adoptium/Temurin)。
- 解压到
/opt/java/jdk-17。 - 在
/etc/profile.d/java.sh中设置JAVA_HOME和PATH。 - 配合 Maven Wrapper (
mvnw) 使用,确保团队成员用的 JDK 版本一致。
4. 终极建议:Docker 才是王道
如果你是在做 Web 开发,请忘记“在服务器上装 JDK”这件事。
现代 Java 开发的标准实践是:
- 本地开发:使用 Docker Compose 启动一个包含 JDK 的容器,或者直接在宿主机用 SDKMAN 管理 JDK。
- 部署:将应用打包成 Docker 镜像,里面固定好 JDK 版本(如
eclipse-temurin:17-jre)。 - 优势:彻底解决“在我机器上是好的”这一经典难题。无论底层系统是 Ubuntu 还是 CentOS,只要支持 Docker,Java 环境就完全一致。
总结行动清单
- 买/创建云服务器时:选择 Ubuntu 22.04 LTS 或 CentOS Stream 8 的纯净版镜像。不要选任何带“Java环境”、“Tomcat”字样的应用镜像。
- 连接服务器后:
- 如果是 Ubuntu:优先尝试安装
SDKMAN!。 - 如果是 CentOS:手动下载 Temurin JDK 并配置环境变量。
- 如果是 Ubuntu:优先尝试安装
- 长期规划:尽快熟悉 Docker,将 Java 运行环境容器化。这才是符合当前云计算趋势的正确打开方式。
记住,工具只是手段,理解环境变量的本质、进程的生命周期以及容器化的思想,比纠结选哪个镜像重要得多。
云技术博客