跳到主要内容Linux JDK 安装与配置指南:多版本部署方案 | 极客日志Javajava
Linux JDK 安装与配置指南:多版本部署方案
详细介绍在 Linux 系统中安装和配置 JDK 的多种方法,涵盖 APT/YUM 包管理器安装及手动部署方案。内容包括 OpenJDK 与 Oracle JDK 的选择建议、环境变量配置、多版本管理与切换、JVM 性能优化参数设置以及常见故障排查技巧,旨在帮助开发者和运维人员快速搭建稳定可靠的 Java 运行环境。
GRACE Grace33 浏览 前言
Java 作为企业级应用的主流开发语言,在 Linux 环境中安装配置 JDK(Java Development Kit)是每个后端开发者、运维工程师的必备技能。本文将详细对比 OpenJDK 与 Oracle JDK,提供 APT/YUM 包管理、手动安装、多版本管理三种主流安装方案,涵盖环境变量配置、版本切换、性能调优等实战技巧,助你快速搭建稳定的 Java 运行环境。
一、安装前准备:选择合适的 JDK
1. 版本选择建议
| 版本 | 类型 | 特点 | 适用场景 |
|---|
| OpenJDK 11 | 开源免费 | LTS 长期支持,企业主流 | 生产环境首选 |
| OpenJDK 17 | 开源免费 | 最新 LTS 版本,性能优化 | 新项目开发 |
| OpenJDK 8 | 开源免费 | 经典稳定,生态成熟 | 旧系统维护 |
| Oracle JDK | 商业授权 | 官方版本,功能完整 | 商业项目 |
2. 系统环境检查
cat /etc/os-release
uname -m
java -version 2>/dev/null || echo "未安装 Java"
which java
sudo apt remove --purge openjdk-*
sudo yum remove java-*
二、方法一:APT 包管理器安装(Ubuntu/Debian)
1. 安装 OpenJDK 11(推荐生产环境)
sudo apt update
sudo apt install openjdk-11-jdk -y
apt install openjdk-11-jdk openjdk-11-source -y
sudo
2. 安装 OpenJDK 17(最新 LTS)
sudo apt install openjdk-17-jdk -y
sudo add-apt-repository ppa:openjdk-r/ppa -y
sudo apt update
sudo apt install openjdk-17-jdk -y
3. 安装 OpenJDK 8(兼容旧项目)
sudo apt install openjdk-8-jdk -y
sudo add-apt-repository ppa:openjdk-r/ppa -y
sudo apt update
sudo apt install openjdk-8-jdk -y
4. 安装 Oracle JDK(需官网同意协议)
sudo add-apt-repository ppa:linuxuprising/java -y
sudo apt update
sudo apt install oracle-java17-installer -y
三、方法二:YUM/DNF 包管理器安装(CentOS/RHEL)
1. CentOS 8/RHEL 8 安装 OpenJDK
dnf search openjdk
sudo dnf install java-11-openjdk java-11-openjdk-devel -y
sudo dnf install java-17-openjdk java-17-openjdk-devel -y
sudo dnf install java-1.8.0-openjdk java-1.8.0-openjdk-devel -y
2. CentOS 7 安装 OpenJDK
sudo yum install epel-release -y
sudo yum install java-11-openjdk java-11-openjdk-devel -y
sudo yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel -y
3. 安装 Oracle JDK(CentOS)
wget https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.rpm
sudo rpm -ivh jdk-17_linux-x64_bin.rpm
sudo yum localinstall jdk-17_linux-x64_bin.rpm
四、方法三:手动安装(任意 Linux 发行版)
1. 下载 JDK 安装包
sudo mkdir -p /usr/lib/jvm
cd /usr/lib/jvm
wget https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.8%2B7/OpenJDK17U-jdk_x64_linux_hotspot_17.0.8_7.tar.gz
2. 解压与安装
sudo tar -xzf OpenJDK17U-jdk_x64_linux_hotspot_17.0.8_7.tar.gz
sudo mv jdk-17.0.8+7 jdk-17
sudo chown -R root:root /usr/lib/jvm/jdk-17
3. 配置环境变量
sudo nano /etc/profile
export JAVA_HOME=/usr/lib/jvm/jdk-17
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/jre:$JAVA_HOME/lib
export PATH=$JRE_HOME/lib:$PATH
export PATH=$JAVA_HOME/bin:$PATH
source /etc/profile
echo 'export JAVA_HOME=/usr/lib/jvm/jdk-17' >> ~/.bashrc
echo 'export PATH=$JAVA_HOME/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
4. 配置替代系统(update-alternatives)
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk-17/bin/java 1
sudo update-alternatives --config java
sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk-17/bin/javac 1
sudo update-alternatives --config javac
sudo update-alternatives --install /usr/bin/jar jar /usr/lib/jvm/jdk-17/bin/jar 1
五、多版本 JDK 管理与切换
1. 查看已安装的 JDK 版本
sudo update-alternatives --display java
ls -la /usr/lib/jvm/
java -version
which java
2. 切换默认 JDK 版本
sudo update-alternatives --config java
3. 临时切换版本(仅当前会话)
export JAVA_HOME=/usr/lib/jvm/jdk-11
export PATH=$JAVA_HOME/bin:$PATH
java -version
六、环境变量配置详解
1. JAVA_HOME 标准配置
echo $JAVA_HOME
if [ -z "$JAVA_HOME" ]; then
JAVA_PATH=$(which java)
if [ -n "$JAVA_PATH" ]; then
export JAVA_HOME=$(dirname $(dirname $(readlink -f $JAVA_PATH)))
fi
fi
2. 完整环境变量配置示例
export JAVA_8_HOME=/usr/lib/jvm/jdk-8
export JAVA_11_HOME=/usr/lib/jvm/jdk-11
export JAVA_17_HOME=/usr/lib/jvm/jdk-17
export JAVA_HOME=$JAVA_11_HOME
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_OPTS="-Xms512m -Xmx2g -XX:+UseG1GC -Dfile.encoding=UTF-8"
3. 配置生效检查
source ~/.bashrc
source /etc/profile
echo $JAVA_HOME
echo $PATH | grep java
七、验证安装与测试
1. 基础验证命令
java -version
javac -version
which java
which javac
which jar
2. 编写测试程序
cat > HelloWorld.java << 'EOF'
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Java 安装成功!");
System.out.println("Java 版本:" + System.getProperty("java.version"));
System.out.println("JAVA_HOME:" + System.getProperty("java.home"));
}
}
EOF
javac HelloWorld.java
java HelloWorld
3. 高级验证
java -XshowSettings:properties -version 2>&1 | grep -A 10 "java.home"
java -XX:+PrintFlagsFinal -version 2>&1 | grep -i heapsize
$JAVA_HOME/bin/java -version
八、性能优化配置
1. JVM 内存参数调整
export JAVA_OPTS="-Xms4g -Xmx6g -XX:MaxMetaspaceSize=512m -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:ParallelGCThreads=4 -XX:ConcGCThreads=2"
export JAVA_OPTS="-Xms512m -Xmx2g -XX:+UseParallelGC"
JAVA_OPTS="$JAVA_OPTS -server -Xmx2048m -Xms1024m -XX:MaxPermSize=256m"
2. 设置默认字符集
export JAVA_TOOL_OPTIONS="-Dfile.encoding=UTF-8"
export JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8"
3. 时区配置
export JAVA_OPTS="$JAVA_OPTS -Duser.timezone=Asia/Shanghai"
九、故障排除指南
1. 常见错误解决
sudo chmod -R 755 /usr/lib/jvm/jdk-*/
2. 环境变量调试
env | grep -i java
type java
which -a java
ls -la /usr/bin/java
ls -la /etc/alternatives/java
3. 多版本冲突解决
sudo update-alternatives --remove-all java
sudo update-alternatives --remove-all javac
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk-11/bin/java 1
sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk-11/bin/javac 1
十、生产环境最佳实践
1. 安装验证清单
- 基础检查:
java -version 正确显示版本
javac -version 编译器正常
echo $JAVA_HOME 路径正确
- 环境配置:
- PATH 包含
$JAVA_HOME/bin
- JAVA_HOME 指向正确 JDK 目录
- update-alternatives 配置正确
- 权限与安全:
- JDK 目录权限为 755
- 使用专用用户运行 Java 应用
- 定期更新安全补丁
2. 自动化安装脚本示例
#!/bin/bash
JDK_VERSION="11"
INSTALL_DIR="/opt/jdk"
echo "开始安装 OpenJDK ${JDK_VERSION}…"
if [ -f /etc/debian_version ]; then
sudo apt update
sudo apt install openjdk-${JDK_VERSION}-jdk -y
elif [ -f /etc/redhat-release ]; then
sudo yum install java-${JDK_VERSION}-openjdk-devel -y
else
echo "不支持的系统,请手动安装"
exit 1
fi
echo "export JAVA_HOME=/usr/lib/jvm/java-${JDK_VERSION}-openjdk-amd64" >> ~/.bashrc
echo "export PATH=$JAVA_HOME/bin:$PATH" >> ~/.bashrc
source ~/.bashrc
echo "安装完成!"
java -version
3. 监控与维护
jps -l
jstat -gc 1000
jmap -dump:live,format=b,file=heap.bin
jstack > thread_dump.txt
安装方法选择建议
- 快速选择指南:
- 新手/开发环境 → 包管理器安装(apt install openjdk-11-jdk)
- 生产环境 → 手动安装 + 环境变量配置
- 多项目开发 → 多版本管理(SDKMAN 或手动配置)
- 容器环境 → 使用官方 Docker 镜像(docker pull openjdk:11-jdk)
版本选择建议
- 企业生产:OpenJDK 11 LTS(稳定优先)
- 新项目开发:OpenJDK 17 LTS(功能最新)
- 旧系统维护:OpenJDK 8(兼容性优先)
- 商业项目:Oracle JDK(官方支持)
性能优化提示
- 根据应用类型调整 JVM 内存参数
- 启用合适的垃圾收集器(G1GC 推荐)
- 设置正确的字符集和时区
- 定期更新 JDK 安全补丁
最后提醒
- 生产环境务必使用 LTS 版本
- 配置完成后验证 java -version
- 定期备份环境变量配置
- 使用工具监控 JVM 运行状态
相关免费在线工具
- Keycode 信息
查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online
- Escape 与 Native 编解码
JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online
- JavaScript / HTML 格式化
使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online
- JavaScript 压缩与混淆
Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online
- Base64 字符串编码/解码
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
- Base64 文件转换器
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online