琥珀ai

Java 10于上周发布,但我们仍在剖析其最重要的功能(*咳嗽*本地变量类型推断*咳嗽*)。

我们与11位Java专家讨论了他们最喜欢的功能和Java 10的“独特销售主张”,并且我们了解到,即使Java 10并不是那么特别,人们还是对局部变量类型推断(JEP 286)感到非常兴奋,它可以增强Java一种语言,用于将类型推断扩展为带有初始化程序的局部变量的声明。

我们还没有介绍的一件事就是会议室里的大象,即Java SE支持路线图



Java AI 生成代码_jdk

资料来源:Oracle Java SE支持路线图



从该表中可以看出,Java SE 9和10是短期发行版。 因此,鼓励用户在可用时过渡到下一个版本。

回到我们的采访系列!



认识我们的Java专家




Java AI 生成代码_编程语言_02

Donald Smith是Oracle产品管理的高级总监。




Java AI 生成代码_jdk_03

Greg Luck是Hazelcast的首席执行官/首席技术官。




Java AI 生成代码_编程语言_04

Simon Ritter是Azul Systems的副CTO。




Java AI 生成代码_python_05

Lukas Eder是Data Geekery GmbH的创始人兼研发主管,该公司是jOOQ和Java Champion背后的公司。




Java AI 生成代码_Java AI 生成代码_06

Trisha Gee是JetBrains的一名开发倡导者,是伦敦Java社区的重要成员和Java冠军。




Java AI 生成代码_Java AI 生成代码_07

Markus Eisele是Lightbend的开发人员倡导主管和Java冠军。




Java AI 生成代码_python_08

Marcus Biel是一名软件工匠,JCP成员和CleanCode宣传员。




Java AI 生成代码_Java AI 生成代码_09

Wayne Citrin博士是JNBridge,LLC的CTO和联合创始人。




Java AI 生成代码_编程语言_10

David Heffelfinger是Java冠军和Jakarta EE顾问兼讲师。




Java AI 生成代码_jdk_11

Nicolai Parlog是一名开发人员(主要是#Java),CodeFX的博客作者,作家,YouTuber和培训师。




Java AI 生成代码_编程语言_12

Richard Gall是Packt的传播经理。



唐纳德·史密斯(Donald Smith): 经过将近20年和9个主要版本,Java生态系统已习惯于“主要”版本难以适应且具有挑战性,这主要是因为同时引入了大量功能。 Java 10标志着一个新时代的开始,从Java 9到Java 10应该几乎与从8u20到8u40一样容易。

新的发布周期使我们能够以更合理的速度引入新功能,并专注于社区的真正需求。

使用Java 9(以及相应的Java 10),Oracle对Java版本的支持路线图已更改。

Greg Luck: 那是Java的生产版本。

Simon Ritter: 我认为人们会将JDK 10看作是点发布而不是完整发布。 这是错误的,因为JDK 10已经完成了完整的Java Specification Request(JSR)过程。

我最近写了一个博客 ,重点介绍了JDK 10中的109个新功能,因此并不是那么容易。

卢卡斯·埃德(Lukas Eder): 我想不起来。

Trisha Gee: 我不确定这是一个误解,甚至是缺乏了解,但是有可能很多人没有意识到Java 9(以及Java 10)对 Oracle 版本 的支持路线 已经改变。 只有某些版本会提供长期支持(例如Java 8,Java 11),介于两者之间的版本将不会获得Oracle的持续支持。 相反,我们鼓励我们移至下一个版本。

Markus Eisele: 我相信许多开发人员仍在等待Amber和Valhalla项目。 主要版本的颠簸可能仍暗示着其中包含一些更大的变更单。 显然不是这样。

Wayne Citrin: 这是一个主要版本。 在几乎所有其他软件产品中,这样的升级都是次要版本或单点发行。 为什么我们不能将其称为Java 9.1?

David Heffelfinger: 从一开始,新的Java版本就一直是一个重大事件,具有大量的新功能,这一次,由于Java只是更改为6个月的发布节奏,所以这个新的Java版本仅具有一些新功能。

根据以前的Java版本一直产生的嗡嗡声,有些人可能会期望有许多新功能,而实际上Java 10是对Java 9的相当小的更新。

还请参见: Java 10终于来了! 仔细了解新功能

Nicolai Parlog: 从Java 9到Java 10的步伐完全可以与从8到9的步伐相提并论。 Java 9改变了很多事情,尤其是在幕后,并且是很长时间以来(甚至可能是)最具挑战性的版本。 相比之下,更新到Java 10就像从9.0.1升级到9.0.4。

唯一的障碍是增加了字节码级别(每个新发行版都会发生),这对于某些字节码分析工具(例如ASM)以及依赖于它们的项目可能是个问题。

理查德·加尔(Richard Gall): 我不知道。 在Java 9之后,现在对Java 10的宣传并不多。

唐纳德·史密斯(Donald Smith): 再次,我将介绍我的内部Deprecator博士,并说我希望我们可以通过将Java EE和CORBA模块与Java 10分开来减少JDK的占用空间,但是可惜的是,它针对Java 11。

格雷格·勒克: 我会补充:

  • 值类型 (Valhalla项目)和不可变数组
  • 集合API 中的 各种 default 方法
  • 通用 enum

西蒙·里特(Simon Ritter): 我认为没有什么要改变的。 我个人的感觉是Java是一个很棒的平台。 我喜欢Brian Goetz和Mark Reinhold之类的人小心地添加新功能,而又不进行任何大的更改以阻止Java像Java一样的方式。

我希望我们可以通过将Java EE和CORBA模块与Java 10分开来减少JDK的占用空间。

卢卡斯·埃德(Lukas Eder): 好吧,我很想拥有Amber和Valhalla项目的所有令人兴奋的功能,但是他们需要花费更多的时间才能正确。

Trisha Gee: 我不确定我会替换那里的任何东西。

有些功能并没有直接影响我编写代码的方式(例如, 将JDK Forest整合到一个存储库中 ),但是我假设像这样的内务处理活动可以帮助团队更快或更轻松地开发语言(或两者!)。 ),这最终将使我作为Java开发人员受益。

Markus Eisele: 我想不到一个。

Marcus Biel: 好吧,我个人认为,删除一些功能并修改过去的错误决定比添加新功能更为重要。 但是,如果要成为一项新功能,我想进行模式匹配。

韦恩·西特琳(Wayne Citrin): 我发现没有任何新功能不好或被误导了,因此没有我特别不喜欢或不想替换的功能。

还请参见: 开发人员仍在使用Java8。这对于Java 10的采用意味着什么?

David Heffelfinger: Java 10的大多数新功能都是JDK的内部功能。 尽管我没有任何具体建议或示例,但也许其中的“幕后”功能之一已被面向用户的功能所替代。

Nicolai Parlog: 我真的很期待原始专业化(即List<int> )和值类型,但是它们仍然在起作用 。 同时, 琥珀项目将使我们保持警惕。 不过,它们会在完成后显示出来,而且我也不想早日拥有它们,因此我不在一厢情愿的想法阵营中。

理查德·加尔(Richard Gall): 没事。 开发中有重要的功能,例如纤维,价值类型等。 在大型Java道路上,拥有var并删除一些旧的不赞成使用的类是一件小事。

在我们的访谈系列的第三部分(还有三篇)中,我们询问受访者是否已经迁移到Java 9,以及他们是否计划迁移到Java 10。

Java 10的12个JEPS

只是为了刷新您的记忆,Java 10包括通过JDK增强建议(JEPS)定义的12个新增强

  1. (JEP 286)局部变量类型推断:增强了Java语言,以将类型推断扩展到具有初始化程序的局部变量的声明。 它将var引入Java,这在其他语言中很常见。
  2. (JEP 296)将JDK目录林整合到一个存储库中:将JDK目录林的众多存储库合并到一个存储库中,以简化和简化开发。
  3. (JEP 204)车库收集器接口:通过引入干净的垃圾收集器(GC)接口,改进了不同垃圾收集器的源代码隔离。
  4. (JEP 307)用于G1的并行完整GC:通过使完整GC并行来提高G1最坏情况的延迟。
  5. (JEP 301)应用程序数据类共享:为了改善启动和占用空间,此JEP扩展了现有的类数据共享(“ CDS”)功能,以允许将应用程序类放置在共享档案中。
  6. (JEP 312)线程本地握手:介绍一种在不执行全局VM安全点的情况下在线程上执行回调的方法。 使停止单个线程而不是仅停止所有线程或不停止一个线程既可行又便宜。
  7. (JEP 313)删除本机头生成器工具:从JDK中删除javah工具,因为它已被javac中的高级功能所取代。
  8. (JEP 314)其他Unicode语言标签扩展:增强了java.util.Locale和相关API,以实现BCP 47语言标签的其他Unicode扩展。
  9. (JEP 316)在备用存储设备上的堆分配:使HotSpot VM可以在用户指定的备用存储设备(例如NV-DIMM)上分配Java对象堆。
  10. (JEP 317)基于实验Java的JIT编译器:使基于Java的JIT编译器Graal可用作Linux / x64平台上的实验JIT编译器。
  11. (JEP 319)根证书:在JDK中提供一组默认的根证书颁发机构(CA)证书。
  12. (JEP 322)基于时间的发行版本:针对当前和将来的基于时间的发行模型,修订了Java SE平台和JDK的版本字符串方案以及相关的版本信息。

翻译自: https://jaxenter.com/java-10-interview-series-part-2-142766.html

琥珀ai