前言
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
2export 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
3FROM 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
2docker build -t project1-image -f Dockerfile1 .
docker run -d -p 8080:8080 project1-image1
2docker build -t project2-image -f Dockerfile2 .
docker run -d -p 8081:8081 project2-image
注意事项:
- 环境变量和路径:确保每个项目的环境变量和路径配置正确。
- 端口冲突:确保每个项目使用不同的端口。
- 资源管理:考虑服务器的资源(如内存、CPU)是否足够支持同时运行多个项目。
通过以上方法,你可以在同一台服务器上同时运行使用不同 JDK 版本的项目,实现灵活的版本管理。