java14都快出来了,为什么还有那么多人执着于java8?

在成功升级到Java 9后,我们试图进一步升级到Java 10。然而,遇到了IntelliJ IDEA的一个bug,该IDE错误地理解了一个尚未生效的草案JEP182,导致编译器给出了不正确的结果,我们花费了大量时间才找到问题的根源。这表明即使在大型公司中,兼容性问题也可能在升级过程中出现。业界的许多工具不支持Java 9,F...
java14都快出来了,为什么还有那么多人执着于java8?
Java 9的发布在2017年9月,而到了2018年9月,我们的公司花了整整一年的时间才切换到Java 9,接着又花了三个月的时间升级到Java 11。对比之下,JetBrains似乎用了两年多的时间才将运行时升级到11版本,尽管两者代码规模相当,都是百万级别的。因此,我们可以得出,Java 9的许多奇特改动以及业界累积的库中不规范的使用方式导致了大部分项目被迫停留在Java 8上。

在迁移Java 9/11的过程中,我们遇到了许多问题。Java 9之前的版本号使用标准格式,例如1.8.0_213。然而,Java 9引入了JEP223,一个所谓的语义化版本号,例如9.0.0.4。这种变化虽然必要,但使得依赖旧版本号字符串的库受到困扰。一些广为人知的大库能够及时适应这种变化,但一些小型的、未经认证的库则常常在调用时抛出"非法版本号9.0.0.4"的错误,而且往往找不到人修复。

在Java 8之前,反射没有严格的限制,使得用户可以随意访问JVM的底层。这导致了诸多项目在升级Java 9时遇到了问题,例如调用私有API或者通过反射修改JVM初始化时的环境变量。这些操作在升级之前是无法预知的,就像是在升级路上埋设的地雷,使得升级过程变得异常复杂。

Java 9对反射添加了限制,但原计划在Java 9中全面限制反射的计划因影响过大而未能实施。其他一些操作,如通过反射调用私有API或使用Unsafe.defineClass,也在Java 11中被禁止。这些方法通常被大公司生产的有售后服务的库所使用,因此能够得到解决。然而,当将一个库从较旧版本升级到较新版本时,问题就出现了。一些小型库可能会出现找不到特定方法(如Unsafe.defineClass)的问题。

在成功升级到Java 9后,我们试图进一步升级到Java 10。然而,遇到了IntelliJ IDEA的一个bug,该IDE错误地理解了一个尚未生效的草案JEP182,导致编译器给出了不正确的结果,我们花费了大量时间才找到问题的根源。这表明即使在大型公司中,兼容性问题也可能在升级过程中出现。

业界的许多工具不支持Java 9,FindBugs就是其中的一个例子。幸运的是,SpotBugs承担了FindBugs的职责。对于小型库而言,这种情况尤其令人头疼,因为Java生态系统在过去十年中得到了迅速发展。使用了不规范库的项目可能需要花费几天时间进行调试和解决兼容性问题。

对于升级到Java 9/11,最关键的一点是确保代码有完善的自动化测试覆盖。这使得我们能够自信地说,升级已成功完成。然而,对于没有测试覆盖的旧代码,升级后的稳定性和可靠性就难以保证。因此,对于没有测试覆盖的项目,升级需要谨慎行事。

升级到Java 9/11并不是什么困难的任务,但需要投入大量时间和精力。对于成熟的公司来说,代码是辅助业务的手段而非目标,因此在没有明确利益保证的情况下,升级的意愿可能不会很强。总的来说,升级Java版本需要权衡时间、资源和潜在的收益,确保在进行升级时,项目的稳定性和可靠性得到充分保障。2024-11-02
mengvlog 阅读 8 次 更新于 2025-07-19 14:09:49 我来答关注问题0
  • 为了使用Java 14进行开发,开发者需要在IDEA中配置相应的JDK版本。这通常涉及到在IDEA的项目结构设置中关联本地安装的Java 14 JDK。IDEA的兼容性较好,通常能够很好地支持多个版本的Java JDK,开发者可以根据项目需求选择合适的版本。其他支持:除了Java开发,IntelliJ IDEA还支持多种其他编程语言和框架,如HT...

  •  深空见闻 IntelliJ IDEA 2020.1稳定版推送 支持 Java 14

    五、编辑器支持渲染 Javadocs 文档 编辑器新增渲染 Javadocs 文档的功能 六、禅模式(Zen mode)禅模式能消除可能的干扰并帮助开发者完全专注于代码上。本质上,这种新模式结合了免打扰模式和全屏模式,因此不必每次想要进入或退出它们时都启用或禁用这两种模式。要启用禅模式,请跳转至 View | Appearance...

  •  文暄生活科普 Java版本升级快,多个版本如何灵活切换和管理

    随着Java版本的快速升级,如Java8到Java14的频繁迭代,以及商业项目对新版本兼容性的需求,管理多个Java版本变得尤为重要。尤其是Oracle自Java11起的收费策略,促使开发者寻求开源选择,如OpenJDK。面对繁琐的环境配置和版本切换问题,如何高效管理Java版本成为开发者关注焦点。针对这一困境,已有几种解决方案...

  •  猪八戒网 java这个牌子的自行车怎么样(java自行车官网报价)

    4、折叠后高度有点大。我个人对它那个后叉倒没啥意见,比较大的不满在于不好装泥板和普通货架,另外也不能换V刹,碟刹出问题时没有退路。我觉得最理想的小轮车应该V刹碟刹都兼容,不能两全时选V刹。5、java14寸内三速折叠自行车骑行上下班不错的。折叠自行车---英文:foldingbicycle属于自行车的一个...

  •  四川源码时代科技有限公司 Java市场是否已经饱和?

    Java现在还是很香,招聘需求还是很旺,但是企业对于人才的要求也是越来越高。底层饱和,中高级人才稀缺,是当前大多数开发岗位的现状,无论是Java还是前端,都是如此。因此如果只是抱着挣快钱的想法来入行的,建议可以绕道了。不是真心想进入这行的,不是真正喜欢Java的,就不要轻易转行了。可能你听很多...

檬味博客在线解答立即免费咨询

Java相关话题

Copyright © 2023 WWW.MENGVLOG.COM - 檬味博客
返回顶部