jdk 版本兼容性问题

2021 年 5 月 6 日
 JWilling

请问大伙,jdk 向下兼容吗?

目前需求为需要使用 15,但老项目都是 8,有没有可能导致老项目无法运行?

MacOS 是否有其他的更好的解决方案?

6321 次点击
所在节点    Java
23 条回复
AoEiuV020
2021 年 5 月 6 日
可能性是肯定有的,基本只能遇到问题再想办法吧,

话说我前阵子用 androidStudio 就出现高版本 jdk 启动情况会在打开 xml 文件时莫名崩溃,jdk8 就正常,
这么大个软件都有这种兼容性问题,自己项目应该没法完全杜绝,只能靠测试了,
NealCCC
2021 年 5 月 6 日
装多个 JDK,不同的项目用不同的 JDK
yitingbai
2021 年 5 月 6 日
jdk 是我见过兼容性最强的项目了, 升级到 15, 几乎只要很小的改动就可以了, 只要编译能通过, 一般都没有问题.
manami
2021 年 5 月 6 日
看用哪个厂商的 jdk,open jdk 、oracle jdk 、ibm jdk 等什么的各搞一套
tinyuu
2021 年 5 月 6 日
1. 向下兼容,兼容性非常好, 但是可能也许还是要稍微改一点的。
2. 推荐多个 jdk 不同项目用自己版本的, 不然编译完 生产环境的 jdk8 运行不了 15 的程序。
PolarBears
2021 年 5 月 6 日
搭车问一下除了版本兼容问题还会有 x86\x64 的兼容性问题吗?我这接手了一个很古老的应用系统,是跑在 Weblogic9 上用 jdk 1.5.0_22,由于是用 32 位的,所以现在跑久了会 OOM,自己试过测试换过 64 位似乎能正常运行,但最终还是没敢换上去.
Kaciras
2021 年 5 月 6 日
JDK 兼容性挺好的,一般都可以升级。

倒是一些库特别是跟字节码相关的兼容性很差。
546L5LiK6ZOt
2021 年 5 月 6 日
不是 100% 向下兼容的。一些低版本的反射在高版本使用会报错,高版本对反射限制严格一点。
gam2046
2021 年 5 月 6 日
一般来说,向下兼容是不错的,不过不同版本的 JDK,不同厂家的 JDK 可能对一些细节实现略有不同。
比如 new File("sample.txt")这种使用了当前工作路径的,有可能行为会不太一致,这玩意还是要多测试,大问题是不太有的,小毛病就看造化了。
billlee
2021 年 5 月 6 日
公开接口是向下兼容的,但架不住很多代码用反射调用私有接口
billlee
2021 年 5 月 6 日
@PolarBear x86 和 amd64 应该不会有问题。我这里是 amd64 和 arm64 一起维护,没遇到过兼容问题
sagaxu
2021 年 5 月 6 日
8 到 11 都不一定能运行的起来,8 到 15 怕是要扯到蛋
bthulu
2021 年 5 月 7 日
@billlee 这就是你们代码写得不合理了
iwishing
2021 年 5 月 7 日
在做容器化的时候遇到过一个问题。项目开发是用 jdk8 开发的,我做镜像的时候偷懒用了 openJDK16,之前一直没事,后来突然容器起不来了,报 reflection error 。换了 openJDK8 重新打镜像就好了。纯编译环境问题。
GM
2021 年 5 月 7 日
从 8-15 版本跨度太大了,建议谨慎。

虽说 Java 理论上兼容性很好,但是实际上,项目会用到一大堆第三方依赖库,这一大堆依赖里很容易就会出现使用了 jdk8 以下版本才有的接口,所以经常碰到用不了的情况。
interim
2021 年 5 月 7 日
IDEA 高版本可以安装不同版本的 JDK,不同项目选不同版本就好了。
一直在用 JDK11 跑 JDK8 的项目,目前没遇到问题。
huifer
2021 年 5 月 7 日
新老项目隔离部署,linux 多 java 环境很方便处理,docker 也是,本机开发可以自己选择 JDK
billlee
2021 年 5 月 7 日
@bthulu 不是我,很多库会有这样的行为
Loku
2021 年 5 月 11 日
跨度太大了,我的是 openJDK8 升到 openJDK11 只有部分过时方法需要修改。稳定运行,openJDK11 是 LTS 版适合使用在生产环境。
MineDog
2021 年 5 月 16 日
因为 java 模块化的关系,有几个包需要自己引入了吧

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/775217

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX