CentOS安装JDK17

前言

SpringBoot3已经要求是JDK17了,概括起来主要有下⾯⼏个主要原因:

  1. JDK 17 是 LTS (⻓期⽀持版),可以免费商⽤到 2029 年。⽽且将前⾯⼏个过渡版(JDK 9-JDK 16)去其糟粕,取其精华的版本;
  2. JDK 17 性能提升不少,⽐如重写了底层 NIO,⾄少提升 10% 起步;
  3. ⼤多数第三⽅框架和库都已经⽀持,不会有什么⼤坑;

要不要更换JDK17?

如果是新项目可以考虑使用JDK17,如果项目已经有很多功能服务了,不建议换。

安装

下载JDK17

https://www.oracle.com/java/technologies/downloads/#java17-linux

image-20241123150114524

我这里是服务器之间复制

1
scp /root/jdk-17_linux-x64_bin.rpm root@111.111.111.111:/root/jdk-17_linux-x64_bin.rpm

安装

1
yum -y install jdk-17_linux-x64_bin.rpm

验证

1
java -version

配置

查看JAVA_HOME

1
echo $JAVA_HOME

为空的话要配置java-home 否则无法配置Tomcat为服务

打开文件/etc/profile

1
vi /etc/profile

profile文件末尾加入:

1
2
export JAVA_HOME=/usr/java/jdk-17 
export PATH=$JAVA_HOME/bin:$PATH

配置立即生效

1
source /etc/profile

Jar注册服务

https://www.psvmc.cn/article/2019-06-06-linux-jar.html

多环境共存

一个服务器上能同时运行JDK1.8和JDK17的项目吗?

是的,你可以在同一台服务器上同时运行使用 JDK 1.8 和 JDK 17 的项目。

实现这一点主要有两种方式:

运行脚本设置环境

每个项目可以在不同的 JVM 进程中运行,这些进程可以分别使用不同版本的 JDK。

具体步骤:

  1. 安装多个 JDK 版本

    安装 JDK 1.8 和 JDK 17。

  2. 为每个项目配置独立的 JDK

    在启动项目的脚本中指定使用的 JDK 版本。

    例如:

    使用 JDK 1.8 启动项目:

    1
    2
    export JAVA_HOME=/path/to/jdk1.8
    $JAVA_HOME/bin/java -jar project1.jar

使用 JDK 17 启动项目:

1
2
export JAVA_HOME=/path/to/jdk17
$JAVA_HOME/bin/java -jar project2.jar

  1. 使用不同的端口

    确保每个项目使用不同的端口,以避免端口冲突。

使用容器化技术

另一种方式是使用容器化技术(如 Docker)来隔离每个项目的运行环境。

具体步骤:

  1. 创建 Dockerfile

    为每个项目创建一个 Dockerfile,指定使用的 JDK 版本。例如:

    使用 JDK 1.8 的项目:

    1
    2
    3
    FROM openjdk:8-jdk-alpine
    COPY ./project1.jar /app/project1.jar
    CMD ["java", "-jar", "/app/project1.jar"]

使用 JDK 17 的项目:

1
2
3
FROM openjdk:17-jdk-alpine
COPY ./project2.jar /app/project2.jar
CMD ["java", "-jar", "/app/project2.jar"]

  1. 构建和运行容器

    构建镜像并运行容器:

    1
    2
    docker build -t project1-image -f Dockerfile1 .
    docker run -d -p 8080:8080 project1-image
    1
    2
    docker build -t project2-image -f Dockerfile2 .
    docker run -d -p 8081:8081 project2-image

注意事项:

  • 环境变量和路径:确保每个项目的环境变量和路径配置正确。
  • 端口冲突:确保每个项目使用不同的端口。
  • 资源管理:考虑服务器的资源(如内存、CPU)是否足够支持同时运行多个项目。

通过以上方法,你可以在同一台服务器上同时运行使用不同 JDK 版本的项目,实现灵活的版本管理。