请问大伙,jdk 向下兼容吗?
目前需求为需要使用 15,但老项目都是 8,有没有可能导致老项目无法运行?
MacOS 是否有其他的更好的解决方案?
1
AoEiuV020 2021-05-06 17:19:22 +08:00
可能性是肯定有的,基本只能遇到问题再想办法吧,
话说我前阵子用 androidStudio 就出现高版本 jdk 启动情况会在打开 xml 文件时莫名崩溃,jdk8 就正常, 这么大个软件都有这种兼容性问题,自己项目应该没法完全杜绝,只能靠测试了, |
2
NealCCC 2021-05-06 17:21:57 +08:00
装多个 JDK,不同的项目用不同的 JDK
|
3
yitingbai 2021-05-06 17:28:15 +08:00
jdk 是我见过兼容性最强的项目了, 升级到 15, 几乎只要很小的改动就可以了, 只要编译能通过, 一般都没有问题.
|
4
manami 2021-05-06 17:31:58 +08:00
看用哪个厂商的 jdk,open jdk 、oracle jdk 、ibm jdk 等什么的各搞一套
|
5
tinyuu 2021-05-06 17:45:37 +08:00
1. 向下兼容,兼容性非常好, 但是可能也许还是要稍微改一点的。
2. 推荐多个 jdk 不同项目用自己版本的, 不然编译完 生产环境的 jdk8 运行不了 15 的程序。 |
6
PolarBears 2021-05-06 17:55:08 +08:00
搭车问一下除了版本兼容问题还会有 x86\x64 的兼容性问题吗?我这接手了一个很古老的应用系统,是跑在 Weblogic9 上用 jdk 1.5.0_22,由于是用 32 位的,所以现在跑久了会 OOM,自己试过测试换过 64 位似乎能正常运行,但最终还是没敢换上去.
|
7
Kaciras 2021-05-06 18:02:18 +08:00
JDK 兼容性挺好的,一般都可以升级。
倒是一些库特别是跟字节码相关的兼容性很差。 |
8
546L5LiK6ZOt 2021-05-06 18:03:50 +08:00
不是 100% 向下兼容的。一些低版本的反射在高版本使用会报错,高版本对反射限制严格一点。
|
9
gam2046 2021-05-06 18:43:14 +08:00
一般来说,向下兼容是不错的,不过不同版本的 JDK,不同厂家的 JDK 可能对一些细节实现略有不同。
比如 new File("sample.txt")这种使用了当前工作路径的,有可能行为会不太一致,这玩意还是要多测试,大问题是不太有的,小毛病就看造化了。 |
10
billlee 2021-05-06 20:26:10 +08:00
公开接口是向下兼容的,但架不住很多代码用反射调用私有接口
|
11
billlee 2021-05-06 20:27:41 +08:00
@PolarBear x86 和 amd64 应该不会有问题。我这里是 amd64 和 arm64 一起维护,没遇到过兼容问题
|
12
sagaxu 2021-05-06 23:52:33 +08:00
8 到 11 都不一定能运行的起来,8 到 15 怕是要扯到蛋
|
14
iwishing 2021-05-07 11:16:03 +08:00
在做容器化的时候遇到过一个问题。项目开发是用 jdk8 开发的,我做镜像的时候偷懒用了 openJDK16,之前一直没事,后来突然容器起不来了,报 reflection error 。换了 openJDK8 重新打镜像就好了。纯编译环境问题。
|
15
GM 2021-05-07 11:56:33 +08:00
从 8-15 版本跨度太大了,建议谨慎。
虽说 Java 理论上兼容性很好,但是实际上,项目会用到一大堆第三方依赖库,这一大堆依赖里很容易就会出现使用了 jdk8 以下版本才有的接口,所以经常碰到用不了的情况。 |
16
interim 2021-05-07 13:15:05 +08:00
IDEA 高版本可以安装不同版本的 JDK,不同项目选不同版本就好了。
一直在用 JDK11 跑 JDK8 的项目,目前没遇到问题。 |
17
huifer 2021-05-07 14:30:45 +08:00
新老项目隔离部署,linux 多 java 环境很方便处理,docker 也是,本机开发可以自己选择 JDK
|
19
Loku 2021-05-11 17:54:22 +08:00
跨度太大了,我的是 openJDK8 升到 openJDK11 只有部分过时方法需要修改。稳定运行,openJDK11 是 LTS 版适合使用在生产环境。
|
20
MineDog 2021-05-16 17:32:08 +08:00
因为 java 模块化的关系,有几个包需要自己引入了吧
|
21
yiyiniu 2023-11-30 15:28:04 +08:00
[b1.png]( https://postimg.cc/hfCsCwP7)
|
22
yiyiniu 2023-11-30 15:29:05 +08:00
[SCM 工具.png]( https://i.postimg.cc/htnYGWkM/b1.png) 这个可以切换不同 JDK 环境变量,建议大家看看。
|
23
yiyiniu 2023-11-30 15:34:42 +08:00
JDK 版本切换:无需安装 JDK 的各个版本,通过一键切换环境变量即可实现不同版本的切换。https://jp.v2ex.com/t/992876
|