【IT168 资讯】最近,Simon Ritter参加了一个应用程序迁移到JDK 9上的研讨会。他的着重点是在于,JDK 9中的更改可能导致现有应用程序停止工作,而没有没有考虑将应用程序从类路径移动到一组模块的细节问题。事实证明,即使不使用任何内部API(比如sun.misc.Unsafe类),也有很多小的改动可能导致应用程序不能在JDK 9上启动。
在研讨会期间,为了解他们将应用程序移植到JDK 9上所达到的阶段,Simon Ritter进行了一次民意调查,他参加过两次研讨会,一次是给EMEA的开发者,一次是给美洲的开发者。
他要问的问题是“你打算如何转到JDK 9?”结果如下图所示:
来自EMEA受众的结果
来自美洲受众的结果
综合结果
在受访者中有一些不真实的数据,因此样本量不到150,但Simon Ritte认为这个结果给出了一个JDK 9的采用情况。
他认为以下是JDK 9很少被采用的原因:
1. 从JDK 8或更早版本移动应用程序时发生的不兼容更改。尽管已经从标准API中移除的六种方法不会影响到很多人,但类似于命令行选项数量将阻止JVM启动的问题,都将成为迁移障碍。
2. 封装内部JDK API的效果。同样,不会很多的开发人员会直接受此影响,即便有影响,大都是也间接的(大多数开发人员在开发应用程序时使用第三方库和框架)。有大量可以使用封装的API的库和框架。尽管有很多已经测试并制定了特定的JDK 9版本可用,但仍然还有没这样做的。
3. 长期支持。最近发布了一个为期六个月的新JDK版本就意味着存在支持问题,开发人员在决定Java版本时需要牢记支持期。JDK 8被归类为所谓的长期支持(LTS)版本,而JDK 9不是LTS版本,这意味着只有在2018年3月发布下一个版本之前才会有公开更新。
Simon Ritte称,他最近谈到的大多数开发者都表示将继续使用JDK 8,直到发布下一个LTS。大家的共识似乎是JDK 9和10将被用来找出计算如何在它来临时转移到JDK 11。
Oracle的计划将使LTS版本之间的转换对开发人员来说更具挑战性。问题是公共更新不会出现重叠。当JDK 11发布时,它将包含可能会影响应用程序兼容性的新功能。由于JDK 8将不再有公开更新,因此新用户面临两种选择,要么支付商业支持合同,要么跳到下一个LTS版本上。