总体上,从技术角度来说,我认为今年应该会非常平静,这一点我会在下面每一节中解释。但是,从非技术的角度来说,我认为开发者和用户们需要在部署 Java 应用程序方面做出一些抉择。接下来,我们就来一起探讨一下。
嵌入式 Java
我并没有看到这个领域有什么变化。Oracle 完全放弃了在该领域的开发,已经不再提供支持非常流行的 ARM 架构的嵌入式应用程序的二进制文件了。
但是,我预测今年嵌入式应用程序中的 Java 应用将会增长。主要原因有三个:
许多其他公司依然在为嵌入式应用程序提供 JDK 的二进制文件。显然,我所在的 Azul 就是这些公司之一,我们能够为 ARM 处理器提供 Java(因此你可以继续在树莓派上使用 Java),也提供 PowerPC 和 MIPS 的 Java。目前的版本是 JDK 8,但很快就会发布 JDK 11。
摩尔定律的现实意味着,JVM 的内存需求(需要几个Mb的内存)已经不再被认为是额外的开销。
Java Platform Module System 提供了一种方式,为应用程序构建自定义 Java 运行时,从而只包含应用程序需要的那些模块,而不是包含所有核心类库。这可以很容易地将 Java 的空间需求从几百兆降低至几十兆。这解决了在嵌入式环境中使用 JavaSE 的一个主要顾虑。
Java ME
我觉得已经可以说,Java ME 已经死了。虽然去年 Java ME 工作组还做过一些工作将其移植到 JCP 下,但这项工作会在三月份停止。似乎 V2COM 是唯一一家对这个方向有兴趣的公司,他们应该是在与 Eclipse 基金会合作这个项目。
我对于今年的预测是,Java ME 不会再有任何开发,也不会有任何真正的应用再使用它。我都怀疑我在 2020 年的预测中是否还会提及它了.
Java EE(现在是 Jakarta EE)
2018 年是企业级 Java 统合的一年,必要的知识产权、代码和测试都从 Oracle 移交给了 Eclipse 基金会。
Eclipse 基金会现在在努力制定标准流程的细节方面,从而替代一直使用至今的 JCP 的流程。因此,这个领域我认为不会有任何重要的开发。一个可能的例外就是微服务和 MicroProfile。考虑到这种架构方式的流行,我认为 Java 在这个领域会出现很多进展。
Java SE(Core Java)
我认为,去年年初我们本应有两个 Java 的主要版本。考虑到 OpenJDK 项目的发布预定版,我甚至都不需要水晶球就能预测!好消息是,这个流程非常顺利。Java SE 10 和 11 都如期发布了,必要的 JSR 也同时被创建、审查并得到了通过。伴随这一点,JCP 已经完成了 JSR 过程(通过 JSR 387),因此整个流程变得更简单。
今年,我预言会有至少两个主要版本,JDK 12 和 JDK 13。同样,这并不意味着我有诺斯特拉达姆士(法国预言家)那种能力。JDK 12 已经蓄势待发,我也被邀请加入 Java SE 13 的专家小组,其他方面的工作也都在进行。
从技术的角度来看,我认为两个发布都是发展性的,而不是革命性的。JDK 12 带有一个全新的语言预览功能,即 switch 表达式。Raw string literals 也被计划加到 JDK 12 中,但由于最佳实现方式还需要进一步讨论,因此被撤下了。同样,这也证明了新的发布流程很有效。这个流程不会加入尚未完成的功能,而是将其延后到下一个版本。我的预测是,这个功能即使在 JDK 13 中也无法做好。JDK 13 中我能看到的大多数改变都是幕后工作,因为该版本计划了更流行的功能,如 Valhalla 和 Loom。
Java Community Process(Java 社区过程,JCP)
我认为今年应该是 JCP 确立的一年。我代表 Azul 参加了大部分的 JCP 执行委员会(EC),所以我觉得我在这方面很有发言权。现在 Java ME 已经不存在,企业级 Java 已经移动到了 Eclipse 基金会,因此 JCP 中剩下的唯一重要的就是 Java SE 了。还有几个其他的 JSR 过程,但从 Java 平台整体来说这些过程并不重要。而且,在 Java SE 中,大部分本来由专家小组负责但工作都以 JDK 增强提案(JDK Enhancement Proposal,JEP)的形式移交给了 OpenJDK 社区。
不幸的是,这并没有留给 JCP 多少工作。执行委员会已经将面对面会议的次数从每年三次减少到了两次。我认为,在 JavaOne(或Oracle Code One或其他任何名字)开始之前,会议的次数会减少为一次。
JCP 对于 Java SE 依然至关重要,因为它提供了核心 Java 平台的正式规则——TCK,从而人们能够验证 Java 二进制文件是否遵循标准,而且更为重要的是,能给予那些提供替代版 Java 二进制发布的公司(如 Azul)以合适的知识产权。
我认为,我们会在 JCP 中看到更多变化,更多的公司会直接参与进来。
JDK 二进制
说完 Java 的技术方面,接下来讨论今年最大的变动——Java 的分发方式,以及更为重要的更新方式。本月晚些时候我们将发布 JDK 8 和 JDK 11 的最后一个公开更新。尽管 JDK 11 是个长期支持发布(LTS),但这只是你使用 Oracle JDK 的情况,因为它已经采用了不同的授权方式。这意味着,你依然可以在开发和测试中免费使用 Oracle JDK,但无法在产品中免费试用。如果你想从 Oracle 获得免费的、能用于产品的二进制,就要获得 Oracle OpenJDK 二进制(从 jdk.java.net)。所有这些发布都不提供长期支持。
我的预测是,到今年年底,绝大部分 Java 用户都会放弃使用 Oracle JDK。一些组织(显然,Azul 也在其中)会提供 OpenJDK 的构建,同时提供多种形式的支持,包括从当前发布移植布丁等。
如果你还没有考虑今年该用哪个 Java 版本,那现在就该下决定了。从下个月开始,如果安全布丁对你来说很重要(它们的确很重要),你就得决定怎样获取它们了。
结论
总的来说,我的预测为:在技术方面,2019 年将是寂静的一年,但也是重要的一年,因为人们需要选择使用哪个版本的 JDK。
你做好准备迎接 2019 年的 Java 了吗?
这里是程序员秘密聚集地,各位还在架构师的道路上挣扎的小伙伴们速来
加QQ群:611481448
网友评论