自打我认识 Java 开始,JVM 那为了让旧版本的 Class 文件无缝的运行在新的 JVM 上而不得搞的一些让人酸爽的设计就深入我心。虽说很酸爽,但是换来的兼容性还是不错的。搞的我一直以为,只要是 jar,都可以放在比编译它时更新的 JVM 上跑。然而我最近才突然无意中发现,jenkins 这个大家几乎都用过的东西。居然是不能向前兼容 JVM,其入口程序明确的会检测 classloader 的版本,发现版本比自己生成的版本高直接就罢工,跑去官方翻了翻,官网表示知道这是个问题,正在解决。而且看了官网的不少 issure。发现有这个问题的不止它一个,之前的 Jetty 也是这样的,不能支持再高版本 JVM 上跑,最近才解决。但是对于为啥他们会这样的原因,没找到解释,他们到底做了什么骚操作,又为啥要做这些。
最后,这样一来,JVM 的向前兼容性简直就是白设计了吗?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
https://www.v2ex.com/t/500383
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.