开发人员最渴望获得的Java 9功能是什么?

这篇文章最初发表在Takipi博客上 -Java和Scala异常分析和性能监控。

当我们要求Java社区分享他们对Java 9的想法时,我们几乎无法想象我们会收到的最佳评论与Java没有任何关系:“要取笑Microsoft,他们应该跳过Java 9并继续前进。直接到Java 10”,John Doe写道。 因此,无论您在哪里,都感谢匿名评论员。

超过350个Java开发人员参与了该项目,这使我们对开发人员在下一版本中真正希望看到的功能有了一个很好的概述。 我们确实看到了一些通常的嫌疑人,但我们还是很惊讶地看到其中一些功能在列表顶部。

还请参见: Oracle宣布了更多的Java 9新功能!

然后,我们邀请3位JCP专家分享他们希望在下一个版本中看到最多的功能,以更好地了解实际版本的发行方式。

开发人员最渴望获得的Java 9功能是什么?

对每个功能感兴趣的响应百分比。

几乎50%的开发人员提到Jigsaw项目是Java 9最令人期待的功能
从Java 8推迟到Java 9, Jigsaw承诺将JRE分解为可互操作的组件并引入新的模块系统,这使每个人都感到兴奋。

46%的开发人员希望使用标准化的Java方法来处理JSON
令人惊讶的是,处理JSON的本机Java方法与Jigsaw具有相同的兴趣。 但这是否会改变为此目的依赖外部库的习惯? 我们必须等待即将到来的2016 Java版本才能找到答案。

HTTP 2是Java 9中必不可少的
尽管新标准尚未最终确定,但只有几个月的时间,开发人员期望Java提供全面的支持 353位受访者中有103位同意。

语言更改和工具使开发人员比内部JVM更改更感兴趣
我们看到,对大多数开发人员而言,对可见性影响较小的变更虽然引起了性能改进,但对它们的兴趣却较小。

开发人员最渴望获得的Java 9功能是什么?

对每个更改感兴趣的响应百分比

除了Java 9之外,我们还为您的JDK编制了一份计划内的(虚构的)变更清单,以了解它们如何引起您的兴趣。

Valhalla项目是Java 9以外的拼图,排在前3位
引起最大兴趣的是Valhalla项目 ,该项目探索了由Brian Goetz领导的高级Java VM和可能的语言功能。 绝对是史诗。

48%的开发人员认为,值类型是Valhalla最令人期待的功能
Regeneric Generics和Generic Specialization是第二名,而Enhanced Volatiles是我们要求的功能中最不期望的功能之一。

苏门答腊项目是Valhalla的亚军-将Java引入GPU
苏门答腊的承诺是使Java应用程序能够利用图形处理单元(GPU)和加速处理单元(APU)。

操作员超载获得34%的支持,排在第5位
我们随机的虚构特征表现不佳,但这就是为什么我们也问您有关您的想法的原因。

那么,为什么我们不删除分号呢?

为了了解您对未来还有哪些其他功能,我们要求您放开任何限制,只说出您希望使用Java的东西。 问卷调查和reddit以后有190条评论,这些是您建议的最重要和最有趣的功能:

没有更多样板代码
常见的抱怨是Java类包含大量的样板代码。 提出了两个旨在解决这个确切问题的项目来解决这个问题: Lombok项目Reinier ZwitserlootRoel Spliker启动 ,以及Google与Gregory Kick和Christian Gruber 共同发起的 Auto项目 Scala的案例课程也被提及两次。

将属性引入Java
向吸气者和安装者说再见。

支持多行字符串
此处查看Stephen Colebourne对此分析。

删除分号
坦白地说,这只是建议,以便发表评论,但毕竟这是最受欢迎的选择之一! 删除空值也被建议了几次(编辑: 可能是为什么,谢谢reddit)

猫王算子?
这个小家伙出现了几次。 一个二元运算符,如果不为null,则会导致左侧的值;否则,将评估并返回右侧的值。 斯蒂芬Colebourne对参与推动这一个

增强类重新定义– JEP 159
这是我们针对的一个非常有趣的Java增强建议,想象一下在应用程序仍在运行而无需重新启动它的情况下进行热交换类。 心神。

其他建议包括命名参数尾调用优化 ,类型推断改进以及添加Val,Var甚至For Each语句。

专家对此有何评论?

为了增加见解,我们求助于Java执行委员会成员:Gil Tene和Werner Keil,以及伦敦Java社区成员Richard Warburton。 这是他们对Java未来的期望。

您最想看到哪些功能(一种或多种功能)进入Java 9?

Warburton: “针对Java 8中的流API提出了许多与lambda相关的功能,但这些功能并未节省时间。 它已经是一个不错的API,但是我想花一些时间和投资来为其赋予它应有的光泽。 例如:

并行流控制:目前,对并行流使用CPU资源的方式的控制非常有限。 暴露必要的钩子是一个棘手的问题,但是会带来很多好处。

缺少的方法:在流处理框架的上下文中,有许多方法很有意义。 例如takeWhile,dropUntil,zip和prefixSum都是对Stream API最终用户有价值的东西。 这些都是在谈论Java 8以支持我的书时被问到的。 还可能是时候重新评估现有的API,以查看是否有更大的余地来添加采用lambda表达式的方法变体。

性能调优:尽管在lambda和stream框架的整体体系结构中已经考虑了很多想法,但是在性能调优方面似乎仍然有很多悬而未决的成果。 一些流API源,例如BufferedReader.lines(),其实现效果不佳,并且有改进的潜在空间。”

Tene: “在Java SE 9中,我非常希望看到一些社区主导的(而不是Oracle主导的)功能融入平台。 Oracle在开发和领导该平台方面已经做过(并将继续做)出色的工作,但是要使OpenJDK和Java SE平台显示出真正的社区驱动行为,我们确实需要证明社区的贡献,而不仅仅是注释和本地化的错误修复。 我认为这是散步的问题。

关于交谈和行走,这些天来我正在使用Java SE 9进行的主要工作是当前在org.ObjectLayout包(请参阅http://objectlayout.org )中捕获的与对象布局相关的工作。 通过可以通过各种org.ObjectLayout类表达的新对象关系,我相信惯用的Java数据结构最终可以与C风格语言中类似的平面数据布局数据结构的访问速度相匹配。”

Werner: “模块化(代号Jigsaw)必须最终在Java 9中正确完成。其他一些功能有些多余。 如果由于适当的模块化而您可以仅安装应用程序所需的JSON,Rich UI(Swing vs. JavaFX)或Date / Time API,那么这当然会减轻负担。 我们听说过,对于Java SE 9来说,不太可能解开到目前为止扔入8个中的3个Date / Time API(java.util.Date,java.util.concurrent.TimeUnit与java.time.temporal.TemporalUnit),等等。 SE Java社区不会摆脱这种冗余。

同样由于JDK或Java EE中的“旧版”代码(仅采用java.sql.Date等),由于它们的整体封闭和过度设计的设计,因此不太可能利用“新”代码。 可以完全避免使用JavaFX及其日期/时间子系统,而从Java ME来看,现有的java.util.Date是唯一真正的平台中立的工具,它具有Java的“只要编写一次即可在任何地方运行”的承诺。 所有其他都是利基解决方案。”

有没有机会看到Java 9(JSR 363)中

Werner: “目前没有JEP,我们更喜欢Oracle的JDK团队立即获得Jigsaw。 在Java的模块化程度更高的未来中,如果包含JSR(如“计量单位”或“货币”等),则将变得无关紧要。 作为“功能模块”,可以将它们添加到自定义配置文件中。 因此,根据拼图可能从那里领导的位置,我们看到“传感器网络”或“ IoT”配置文件在363发挥作用的可能性很大。

对JSR 363感兴趣的项目是“ Valhalla”,主要是其“价值类型”提案。 像Scala这样的语言现在已经提供了一段时间。 Java计划不做详细介绍,但是会计划将类似的内容纳入Java9。但是,基于JSR 363,度量单位的值类型可以是一个单独的模块,也可以是(可能不在Java 10之前)一个甚至可以选择的模块。在Java安装过程中。

与其他JSR不同,JSR 363的嵌入式特性使其非常小巧且模块化。 因此,它的目标Java ME至少与SE一样多,这就是为什么“ JDK集成”对其重要性不如在ME 8或9下正常工作的原因。”

Java / Scala开发人员? Takipi在代码中检测到所有异常和错误,并告诉您它们为什么发生。 只需1分钟即可安装: 尝试Takipi

翻译自: https://jaxenter.com/java-9-features-developers-yearning-112783.html