JEP 12 [“预览语言和VM功能”]在其主页上描述如下:
预览语言或VM功能是Java SE平台的一项新功能,该功能已完全指定,完全实现但不是永久性的。 JDK功能发布中提供了该功能,以根据实际使用情况激发开发人员反馈。 这可能会导致它在将来的Java SE平台中永久存在。
顾名思义, JEP 325 [“ Switch Expressions(Preview)”]是“ 预览功能” 。 这样,JEP 325为使用JEP 12概述的过程预览新的语言功能提供了早期可见性。
OpenJDK jdk-dev邮件列表上的最新消息提供了JEP 325在帮助Java开发人员理解JEP 12和“预览功能”过程的意义上的有用证据。 关于开关表达式的“预览功能”性质的讨论(JEP 325)始于Mark Reinhold 于8月27日写的关于JEP 325的信息,“此处提出的几项反对意见并不是新的,因为已经提出并回答了反对意见。 amber-dev和amber-spec-experts列表。 因此,我已将此JEP定位于JDK12。” 该消息导致了更多有关对当前提议的“ switch expression ”语言实现提出异议的反馈消息。
为了回应某些对话(特别是担心一旦从JDK中包含最初的实现就无法更改它),Reinhold在8月28日的一条消息中写道:
…预览语言功能的重点是在不完全致力于当前设计的情况下邀请进一步的反馈,因此人们当然会使用它(我们希望!)。 但是,他们极不可能在生产中使用它,因为必须在编译时和运行时都在命令行上显式启用预览功能。 因此,我们可以根据新信息随意修改此设计,然后再将其刻入语言的基石。
JEP 12中讨论了当前为显式启用预览功能以进行编译时和运行时而提出的标志。 如目前所阐述的那样,预览功能的编译需要在命令行--release
javac编译器的两个标志: --enable-preview
--release
--enable-preview
和--release
。 同一文档显示了一个标记,需要在运行时将其传递给java启动器以启用预览功能: --enable-preview
enable --enable-preview
。
JEP 325已经在邮件列表上进行了重要的讨论,我在以前的博客文章“ Switch Expressions Coming Java? ”和“ 通过引入switch表达式来增强Java switch语句 。” 但是,讨论主要在amber-dev和amber-spec-experts邮件列表上进行,因此Brian Goetz提供了先前讨论要点的摘要以及做出与“ switch expressions”预览语言功能相关的决定的原因。 Goetz在此总结中总结了有关开关表达式的预览性质的这一陈述。
预览机制将使我们能够从实际使用中收集有关功能的反馈,而不是从没有任何理论上得出理论依据,并有可能在保证最终发布之前调整规格。 因此,如果由于实际经验而出现任何新问题,我们很高兴听到有关它们的消息。
在另一封(稍后)消息中 ,Goetz提供了更多与“预览功能”概念相关的背景细节。 他写了:
预览语言功能仍需要作为永久功能完成,并且级别与“完成”相同。 不同之处在于,我们有一个(较短的)“宽限期”,在此期间,我们有机会纠正已经泄漏到正常流程之外的严重错误,而不必支付不兼容罚金。 有了新的节奏,我希望大多数非平凡的语言功能都将通过“预览”机制进行。 这并不意味着它们是实验性的,或者质量较低,或者没有考虑太多。 但是,有时候确实会发生,只有在更广泛的受众尝试了这些东西之后,我们才发现意外的交互作用,为此,Preview提供了一个简短的窗口,可以纠正这些问题,如果它们能尽早发现。
Switch Expressions(JEP 325)提供了一个尝试JEP 12中概述的“预览语言功能”概念的机会。这一功能受到很多人的关注,也引起了人们的广泛关注,这使得它成为一个有趣的功能。将JEP 12进行测试。 当开发人员使用现在针对JDK 12的JEP 325的预览实现时,看到该功能的实际使用如何增强和削弱当前实现的论点会很有趣。
翻译自: https://www.javacodegeeks.com/2018/08/jdk-language-feature-switch-expressions.html