jdk nashorn_JDK 11 – Java EE和CORBA模块以及Nashorn JavaScript引擎的终结。 还剩下什么?

JDK 11标志着Java EE和CORBA模块的终结,同时Nashorn JavaScript引擎也被弃用。这个版本引入了飞行记录器、Epsilon无操作垃圾收集器等新特性,为开发人员提供了更强大的性能和故障排除工具。此外,还讨论了Java 11中的其他变化和影响,包括对局部变量的新var语法和低开销堆分析。
摘要由CSDN通过智能技术生成

jdk nashorn

“更轻松”的JDK 11:我们要告别Java EE和CORBA模块以及Nashorn JavaScript引擎

首先传来的消息 ,我们正在告别的Java EE和CORBA组件,那么很明显,JDK 11代表的不仅仅是对Java EE模块的路的尽头 -这也是为JavaFX在路的尽头-种,因为它现在可以作为独立的模块使用,并且与JDK分离。 仅仅几个月后,我们发现狩猎季节还没有结束,而最新的受害者是Nashorn JavaScript Engine ,该引擎首次并入JDK 8 [并于2014年3月发布]。

有了所有这些“Spring大扫除”,人们不禁会怀疑:下一个是谁? 我们的影响者也许会有所作为,但不要让我们惊讶。

在本系列访谈的第一部分中,我们邀请了一些Java影响者讨论新的六个月节奏和释放疲劳的危险。 现在是时候讨论他们最喜欢的Java 11特性,并评估已经被砍掉(或已弃用)的所有内容。

认识有影响力的人

Markus Eisele( @ myfear )是Lightbend的开发者倡导总监和Java冠军。

Jessica Kerr( @ jessitron )是Atomist的首席工程师。

Guillaume Laforge( @ glaforge )是Google Cloud Platform的开发倡导者,Apache Software Foundation的Apache Groovy PMC主席和Java Champion。

Lukas Eder( @ lukaseder )是Data Geekery GmbH的创始人兼研发负责人,该公司是jOOQ背后的公司和Java冠军。

Josh Long( @ starbuxman )是Pivotal的Spring Developer Advocate。 他是5本书和3本畅销视频培训的作者。 他还是Java冠军。

Eberhard Wolff( @ ewolff )是INNOQ的研究员和软件架构师。

Martin Thompson( @ mjpt777 )是一名顾问,培训师和教练,专门设计高性能和低延迟的系统。 他还是Java冠军。

昆汀·亚当(Quentin Adam)( @ waxzce )是Clever Cloud的首席执行官。

马库斯·埃塞勒: 两件截然不同的事情。 我不能只选一个。

首先也是最重要的是将飞行记录器(JEP 328)与现在开源的任务控制系统结合在一起; 这将为需要性能和故障排除帮助的开发人员带来很多力量。

我的第二个选择是JEP 318:Epsilon垃圾收集器。 当涉及由许多超短期服务组成的分布式系统时,这将非常有效。

杰西卡·科尔(Jessica Kerr): 我被无人值守的垃圾收集器Epsilon逗了。 随着Flight Recorder和堆采样的出现,JVM变得更加自省和可测试。 无操作垃圾收集器使人们可以发现自己的延迟问题,这与GC暂停无关。 它还允许短期运行的程序免除GC的持续成本。

在容器化的世界中,“关闭JVM”并不是灾难:Kubernetes将重新启动它。

我认为此版本对语言的更改没有太大意义。

Guillaume Laforge: 最明显的功能当然是用于声明局部变量的新var语法。

我一直很喜欢在Apache Groovy中使用“ def”语法,因此我也很高兴在Java中也有类似的东西。 确保始终使用易于理解和理解的变量名,并且能够仅使用“ var”来声明变量会很棒。

Lukas Eder: JEP 330 :“推出单文件源代码程序”。 这似乎只是很小的变化,但是对于新手来说,学习Java就像jshell一样,具有巨大的价值。

我喜欢使日常工作更轻松的小事情。 当然,对于大型项目来说,存在Amber和Valhalla项目真是太好了。 但是,小事情可以帮助人们进行日常工作。 我是否提到过我对JEP 326感到非常兴奋?  

Josh Long: Raw String文字为我提供了多行字符串和支持它们的方法,例如`repeat()`和`stripLeading()`。 这是文本处理的理想选择。

还请参见: Nashorn JavaScript Engine不推荐使用:“这可能再次增加Rhino的重要性”

Eberhard Wolff: 我认为Flight Recorder和低开销的堆分析可能很 有趣。 更多的操作功能和对 JVM的 更好可见性 非常有用。 通常,这些功能会被忽略,因为它们 不会更改语言,因此与开发人员的相关性较低。 但是,我认为 此版本 对语言的更改没有那么大的意义 。

Martin Thompson: 我几乎没有看到Java 9和10的采用,因此我将11视为发布了这三个版本的版本。 对该平台进行了许多改进,可以在将来的版本中进行重要更改,例如可以使G1写入屏障更加高效并消除撤销偏向锁的恐惧的线程检查点。

如果要选择一个功能,那就是VarHandles,这是朝着消除并发代码中不需要使用sun.misc.Unsafe的方向迈出的一大步。 在使用VarHandles之前,如果不使用Unsafe,Java中将无法使用某些并发算法。 很少有开发人员需要使用这些功能,但是许多开发人员都使用基于它们构建的库。

Quentin Adam:说到Java 11作为平台,最令人兴奋的功能是ZGC (新的低延迟和并发垃圾收集器)。 它将解决诸如Hadoop,Hbase和Kafka之类的大数据软件的巨大负载和大规模安装方面的许多问题。 当此类软件承受重负载,从而大量使用Heap时,它们会极大地依赖于GC。 它将为所有大数据市场上的JVM领域释放新的性能水平和功能。

它还表明,JVM仍在GC研究和创新中处于领先地位。 在此基础上,除了Epsilon之外,无操作GC(GC不会执行任何操作,对于诸如CLI命令之类的短暂程序非常有用,而且速度更快)显示了Java平台上GC的模块化。

说到Java 11作为一种语言,lambda中用于局部变量的新语法确实很棒,它允许使用隐式类型,这使得lambda的读取变得更加容易,并且将推动在Java中更多地使用它,这是一件好事。

还剩下

Markus Eisele: 我称其为自然发展。 我们所有人都非常希望核心运行时足够小,以便可以在各种设备上运行,并且启动速度非常快。 发行版大小也必须减小,以使其更易于嵌入JDK。

如果OpenJDK专注于挂钩和基础工作(例如,Flight Recorder API +外部任务控制工具),则生态系统可以更轻松地发展和扩展,超出OpenJDK本身的能力范围。

杰西卡·克尔(Jessica Kerr): 在宣布弃用Nashorn之前,我们曾经使用过它,而现在我们在生产环境中运行Node –这种情况可以帮助我们更加欣赏Java和JVM的专业知识。 将JDK与其他生态系统(如JavaScript)的移动速度分离开来是有意义的。

像微服务一样,这是发行计划的分离,从而使JVM更具灵活性。

纪尧姆·拉福格(Guillaume Laforge): 看到纳斯霍恩(Nashorn)的加入,我实际上不一定很高兴,因为这是在Java应用程序中添加内置脚本的好方法。 就是这样,并且无论如何添加其他替代语言解决方案(例如Apache Groovy)都非常容易。 但这听起来很实用。

为什么我们曾经将JavaScript引擎绑定到JDK中?

我认为也应删除Corba,这是个好主意,因为这些天来在野外已经很少见到它的用法了。

也许最终,应该将AWT / Swing API移到JDK之外,但我有点担心它的影响,特别是如果它变得无法维护,那么我们将无法再为客户端提供漂亮的UI工具包端应用程序(例如IDE)(例如,我在考虑使用Eclipse IDEA之类的工具,如果Swing不再捆绑销售,更糟糕的是无法维护,会发生什么情况?)

卢卡斯·埃德(Lukas Eder): Swing,AWT。 令人惊讶的是,一个主要用于“无头”服务器端程序的平台包含大量可用的大型桌面应用程序库。

另外,如果可以将java.desktop模块的某些部分重构为它们自己的模块,那就太好了。 我很想看到一个java.beans模块,其中包含所有与JavaBeans相关的东西,这些东西在java.desktop之外都有很好的用途。 我相信Spring人们也会对此表示赞赏。

还请参见: JAX Magazine发行了:Java的发展趋势

Josh Long: 好问题! 我没有想太多。 我不经常使用AWT / Swing。 所以,也许他们? 但是,那些人会从孤立地提取和开发中受益吗? 我不确定…

现在,我很高兴CORBA模块不见了。

Eberhard Wolff:我不确定从JDK中删除模块有多重要。 最后,这只是意味着JDK的下载量要大一些。 使用 Java 9中 的 模块概念,开发人员已经可以删除不需要的模块 并构建自定义JDK。 当然,Oracle 删除这些模块 可能很有意义, 以便它们可以使用更重要的功能。

马丁·汤普森: 还剩斧头吗? 有趣的问题。 更好的是,为什么我们曾经将JavaScript引擎绑定到JDK中?

昆汀·亚当(Quentin Adam):这是个好消息。 JDK模块化(Jigsaw项目)的路很长很复杂,但是终于到了! 下一步是使用它,并开始将JDK的一部分移至模块,并从完成的所有辛苦工作中受益。 这将有助于删除旧的东西,并将它们移动到模块,服务器上不需要的图形内容,客户端上不需要的服务器内容……并且它将允许创建新模块以更轻松地扩展JDK的功能。

下周,我们将重点探讨Java 11的重要性(以及是否可以说服开发人员说放下Java 8是“安全的”)以及Nashorn JavaScript引擎的终结(令人震惊?!)

如果您想与Java推动者和摇动者见面,请于10月在伦敦加入我们。

JDK 11的17个功能

为了刷新您的记忆,JDK 11包含以下功能

引入nests ,这是一种与Java编程语言中嵌套类型的现有概念一致的访问控制上下文。 嵌套允许类在逻辑上属于同一代码实体,但被编译为不同的类文件,可以访问彼此的私有成员,而无需编译器插入可访问性增强的桥接方法。

309:

扩展Java类文件格式以支持新的常量池形式CONSTANT_Dynamic 。 加载CONSTANT_Dynamic会将创建委托委派给bootstrap方法,就像将调用动态调用站点链接到bootstrap方法一样。

315:

改进现有的字符串和数组内部函数,并在AArch64处理器上为java.lang.Math sin,cos和log函数实现新的内部函数。

318:

开发一个可以处理内存分配但不实现任何实际内存回收机制的GC。 一旦可用的Java堆耗尽,JVM将关闭。

320:

从Java SE平台和JDK中删除Java EE和CORBA模块。 这些模块已在Java SE 9弃用,并声明要在将来的版本中删除它们。

321:

通过JEP 110标准化JDK 9中引入的,在JDK 10中更新的已孵化的 HTTP客户端API。

323:

在声明隐式类型的lambda表达式的形式参数时,允许使用var

324:

RFC 7748中所述,使用Curve25519和Curve448实现密钥协议。

327:

升级现有平台API以支持Unicode标准 10.0版

328:

提供低开销的数据收集框架,以对Java应用程序和HotSpot JVM进行故障排除。

329:

实现RFC 7539中指定的ChaCha20和ChaCha20-Poly1305密码。 ChaCha20是一种相对较新的流密码,可以代替较旧的,不安全的RC4流密码。

330:

增强Java启动器以运行作为Java源代码的单个文件提供的程序,包括通过“ shebang”文件和相关技术从脚本内部使用该程序。

331:

提供一种可通过JVMTI访问的Java堆分配采样的低开销方法。

332:

实现传输层安全性(TLS)协议的1.3版。

333:

Z垃圾收集器(也称为ZGC)是可伸缩的低延迟垃圾收集器。

335:

弃用Nashorn JavaScript脚本引擎和API,以及jjs工具,以在将来的发行版中删除它们。

336:

java.util.jar弃用pack200unpack200工具以及Pack200 API。

翻译自: https://jaxenter.com/java-influencers-series-part-2-148371.html

jdk nashorn

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值