java –cp_Java 14 –“感觉就像Java的早期。”

java –cp

JAXenter:您认为Java 14中最重要的新功能是什么?

Heinz Kabutz博士:几个月前,Brian Goetz在Java Champion邮件列表上抱怨说,他们没有获得有关其预览功能的足够反馈。 结果,我决定从现在开始始终在Java的最新预览版上运行JavaSpecialists.eu网站。 如果您现在浏览该网站,则会在顶部看到“在Java 14-ea + 29-1384上运行(预览)”。 为此,需要做一些工作。 除了我的master分支外,我还有其他三个Java 14功能分支:java14-preview,jep359(记录)和jep368(文本块)。 我通常在master上工作,但随后将其他三个分支重新设置。

您可能会想起JavaSpecialists.eu只是一个爱好网站,如果失败了,它不会带来太大的风险。 不是这样 是我的面包和黄油。 这是您现在阅读此书的主要原因。 没有它,您将永远不会听说过海因茨·卡布茨。 我绝对负担不起。 因此,我一直在进行监视,以验证一切仍然正常。

在Java 14的所有功能中,我最喜欢记录(JEP 359)

但是,一个有趣的新功能是AbstractQueuedSynchronizer内部的ConditionNode现在也是ManagedBlocker。 这意味着ReentrantLock的Condition可以与ForkJoinPool很好地配合,从而可以并行播放流。 LinkedBlockingQueue基于ReentrantLock,因此也可以很好地协作。 我写了有关可能性的文章 ,提出了修复LinkedBlockingQueue的技巧。 使用Java 14,我们可以立即使用它。

JAXenter:您认为Java 14中缺少什么功能?

Heinz Kabutz博士:所以我正忙着写一本有关Java动态代理的书。 我很多年前写了德语版本,但这是一个完整的重写。 浪费最多时间的是Java平台模块系统(JPMS)。 我们花了几天时间尝试使Maven,IntelliJ和JPMS一起工作。 最终,我们在Java倡导者Simone Bordet和Robert Scholte的帮助下进行了管理。 到了2020年,Java 9功能在工具链中仍然无法正常工作。

JAXenter:具有“ JEP 358:有用的NullPointerExceptions ”之类的功能,Java是否正在接近像Kotlin这样的“现代”语言?

我喜欢查找新功能并进行尝试。 感觉有点像Java的早期,那时我们看到大笔收益定期发生。

Heinz Kabutz博士: “现代”是好的。 像Kotlin这样的语言所面临的挑战是,它们还需要支持较早的JVM。 Kotlin上还没有很多不错的新Java性能增强功能。 例如,已对String进行了全面检查,以使我们可以快速添加+。 但是,Kotlin生成的字节码仍然是Java 8的字节码。
我喜欢Kotlin如何避免可怕的NullPointerException。 不幸的是,“ Helpful NullPointerExceptions”与此相差甚远。 相反,它们只是显示一些有关null的更多信息,而不是完全避免NullPointerException的可能性。

还请参见:

JAXenter:您对Java 15有什么希望/偏好,Java 15将于今年晚些时候发布?

Heinz Kabutz博士:他们要尽快完成记录。 整个概念似乎经过深思熟虑,甚至序列化的工作方式也很聪明。

JAXenter:总的来说,您对六个月的发布周期中Java的加速有何看法?

到了2020年,Java 9功能在工具链中仍然无法正常工作。

Heinz Kabutz博士:有点混乱,很难记住哪些功能属于哪个版本。 大多数公司仍使用Java8。那些前进的公司正在使用Java11。只有极少数的公司勇敢(或愚蠢)足以在最新的最新JVM上运行。

也就是说,我很喜欢查找​​新功能并进行尝试。 感觉有点像Java的早期,那时我们看到大笔收益定期发生。

JAXenter:您的Extreme Java Camp是关于Java 8流和lambda的使用,除其他外,您是否可以与读者分享任何最佳实践?

Heinz Kabutz博士:如果使用正确,流可以使代码更容易理解。 在我们的研讨会中,我们重构类以使用流。 花了一天的时间在“可丢弃的代码”上做完之后,我们对使用流的位置和时间有了一个很好的了解。

还请参见:

对于那些一直不使用lambda的人来说,这是一个最高提示:使用匿名内部类编写代码,然后在IDE中使用重构将其半自动转换为lambda。 完成100次之后,它变得很容易,我们可以直接编写lambda。

JAXenter:您还会教人们有关Java线程的知识。 他们为什么如此重要?

Heinz Kabutz博士:曾经运行过的每段Java代码都在一个线程中执行。 我们绝对需要了解什么是线程以及如何使用它们,以便我们避免在项目中造成伤害的陷阱。 例如,昨天我正在为我在Java中的Dynamic Proxies上创建的一门新课程编写练习。 在运行它的同时,我们发现它有时会产生意外的NullPointerException。 它并没有一直发生。 这似乎很像比赛条件。 但是,使用单线程运行它时也会发生。 使用我们课程中的技术,我Swift缩小了范围。 这确实是一个竞争条件,但是在JVM垃圾收集器线程和我的应用程序之间。 添加锁将无济于事。 了解要查找的内容以及如何诊断问题可以避免许多小时的沮丧。

非常感谢!

翻译自: https://jaxenter.com/java-14-interview-kabutz-169860.html

java –cp

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值