java 移植性 兼容性等
JAXenter:您认为Java 14中最重要的新功能是什么?
我的建议是首先投入到LTS版本。
马库斯·冈瑟 (MarkusGünther) :我个人的重点是介绍唱片概念(JEP 359)。 记录仍然是Java 14中的预览功能,您必须显式激活该功能才能使用它。 但是它们在逻辑上适合已建立的Java类型系统,并具有巨大的潜力。 在当前版本中,这意味着您不再需要为简单的数据保留类编写过多的样板代码。 相反,您可以以记录的形式封装所有相关属性,并让编译器生成有用的默认构造函数,用于读取和写入属性的访问方法,用于equals和hashCode的协定等。
乍一看,您可以看到记录为进一步有趣的功能铺平了道路:例如,记录可以以解构模式的形式与模式匹配( JEP草稿:开关的模式匹配(预览) )完美配合。 记录绝对是一个值得关注的概念。
还请参见:
JAXenter:您认为Java 14中缺少什么功能?
MarkusGünther:这与Java 14没有明确的关系,但是我仍然错过了将局部变量声明为val
不可变的可能性(自Java 10开始,可变变量类似于var
)。
JAXenter:您的客户会立即更新吗?还是不值得?
一段时间以来,一直存在使用其他编程语言中的优良特性的趋势。
MarkusGünther:我的客户大部分仍在使用Java8。有时,即使是在为未开发项目选择技术时,我也会注意到这一点:有些抓住机遇并改用Java 11,另一些继续使用Java 8。 在后一组中,通常在进行应用程序设计时不会考虑将来的迁移(例如,使用JPMS进行模块化)。 对于基于Java 8且具有整体结构的较旧系统,如果尚未将整体严格划分为功能模块,则迁移并不容易。
必须在某个时候进行这项投资,但据我所知,客户会回避它,特别是在现有项目中。 如果不是这样的话,那么我的建议是首先投入到LTS版本(Java 11),然后(如果成本/收益合理)则适应较短的发布周期。
JAXenter:立即在生产中使用新的Java版本会带来什么困难?
MarkusGünther:即使发布的功能集基于其功能集具有相当进化的特征,但升级后应用程序的行为在生产环境中可能会有所不同。 因此,升级期间有意义的回归和兼容性测试至关重要。
JAXenter:具有“ JEP 358:有用的NullPointerExceptions ”之类的功能,Java是否正在接近像Kotlin这样的“现代”语言?
MarkusGünther:一段时间以来,一直存在使用其他编程语言中的优良特性的趋势。 尤其是Scala表明,对象函数编程模型无疑具有其优势,并且肯定会成为lambda表达式进入Java 8语言的事实的孵化器。
使用Java 14,这种趋势一直在继续-无论灵感来自何处-并通过添加JEP 305(实例匹配的模式匹配(预览),JEP 359(记录),JEP 361(开关表达式)来缩小与其他编程语言的差距。 )和JEP 368(文本块)。
还请参见:
JAXenter:您对Java 15有什么希望/偏好,Java 15将于今年晚些时候发布?
我很高兴看到切换模式匹配的进展。
MarkusGünther:我很高兴看到切换模式匹配的进展,该功能目前仍处于JEP草案状态。 特别是,与Java 14中引入的记录的合理组合会影响我们将来制定Java代码的方式(认为是解构模式)。 但是,就我所希望看到的那样,对于Java 15来说,此功能的可用性是相当不现实的,Java 15将于今年晚些时候发布。
JAXenter:总的来说,您对六个月的发布周期中Java的加速有何看法?
MarkusGünther:我很伤心。 一方面,加速的发布周期可以及时发布重要功能。 这给了我们使用充满活力的现代语言的感觉,对此我们深表感谢。 另一方面,我一直注意到非LTS版本通常不发挥重要作用。
翻译自: https://jaxenter.com/java-14-interview-guenther-170133.html
java 移植性 兼容性等