前言
SpringBoot3已经要求是JDK17了,概括起来主要有下⾯⼏个主要原因:
- JDK 17 是 LTS (⻓期⽀持版),可以免费商⽤到 2029 年。⽽且将前⾯⼏个过渡版(JDK 9-JDK 16)去其糟粕,取其精华的版本;
- JDK 17 性能提升不少,⽐如重写了底层 NIO,⾄少提升 10% 起步;
- ⼤多数第三⽅框架和库都已经⽀持,不会有什么⼤坑;
要不要更换JDK17?
如果是新项目可以考虑使用JDK17,如果项目已经有很多功能服务了,不建议换。
安装
下载JDK17
https://www.oracle.com/java/technologies/downloads/#java17-linux
 
 
我这里是服务器之间复制
| 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 | export JAVA_HOME=/usr/java/jdk-17 | 
配置立即生效
| 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。
具体步骤:
- 安装多个 JDK 版本: - 安装 JDK 1.8 和 JDK 17。 
- 为每个项目配置独立的 JDK: - 在启动项目的脚本中指定使用的 JDK 版本。 - 例如: - 使用 JDK 1.8 启动项目: - 1 
 2- export JAVA_HOME=/path/to/jdk1.8 
 $JAVA_HOME/bin/java -jar project1.jar
   使用 JDK 17 启动项目:
   1
2export JAVA_HOME=/path/to/jdk17
$JAVA_HOME/bin/java -jar project2.jar
- 使用不同的端口: - 确保每个项目使用不同的端口,以避免端口冲突。 
使用容器化技术
另一种方式是使用容器化技术(如 Docker)来隔离每个项目的运行环境。
具体步骤:
- 创建 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
3FROM openjdk:17-jdk-alpine
COPY ./project2.jar /app/project2.jar
CMD ["java", "-jar", "/app/project2.jar"]
- 构建和运行容器: - 构建镜像并运行容器: - 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 版本的项目,实现灵活的版本管理。