java zgc

JDK是一个不断变化的环境。 一些工具正在离开,其他工具正在到来,而幸运的工具则活着讲述着这个故事。

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

我们在采访系列的第二部分中谈到了这种“Spring大扫除”,但是现在该讨论一下关门和关门的时候了。 您能猜出我们在谈论什么技术吗?

不要错过这个Java影响者访谈系列的前三部分:

  • 第1部分:跟上现代世界:Java是否可以抛弃旧方法?
  • 第2部分:JDK 11 – Java EE和CORBA模块以及Nashorn JavaScript引擎的终结。 还剩下什么?
  • 第3部分:由于计划的长期支持,是否已确定JDK 11迁移?

认识有影响力的人

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

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的首席执行官。

Markus Eisele:很难将Nashorn与GraalVM进行比较。 首先,该缩写下有许多项目。 它是HotSpot的新JIT编译器,也是新的多语言虚拟机。 我个人认为这是重新思考Java和其他语言的编译器设计的机会。 通常,用Java重新创建更好的Java编译器具有很多优点。

另一方面,Nashorn被设计为JVM上JavaScript引擎。 我没有看到很多构建在其上的生产系统,对我来说,它一直是对Java 8引入的新invokedynamic调用站点的非常独特而完整的测试。

我的期望是,与运行在HotSpot之上的任何东西相比,GraalVM在运行JavaScript代码时将提供更好的结果。 可以肯定的是,社区有机会接管它,但我不确定是否值得。

我很悲伤地看到了GPL许可证,这使得它不可能由Apache基金会项目中使用,例如格拉尔去。

Guillaume Laforge: Nashorn和GraalVM是完全不同的两件事。 前者实际上是一种嵌入式语言,而后者是一种新的Java VM。

如前所述,对于Nashorn的替代产品,已经存在可以轻松添加到Java项目中的可变替代语言,例如Apache Groovy编程语言。

但是GraalVM绝对是一个有趣的项目,因为它承诺了简单的多语言集成故事。 但是,我对构建本机映像的功能更感兴趣,该功能使应用程序可以更快地启动,占用更少的磁盘和内存空间。

但是,我很遗憾看到Graal带有GPL许可证,例如,这使得Apache Foundation项目无法使用它。 我希望Oracle将许可证更改为Apache许可证之类的东西,以便更广泛地使用。

Lukas Eder:我绝对认为Nashorn和类似的引擎不属于JDK。 我不认为它们是独立的第三方项目(无论是由Oracle还是其他供应商提供)。

面对现实吧。 JAXB已添加到JDK,然后再次删除。 Rhino已添加到JDK,然后再次删除。 JavaDB / Derby已添加到JDK,并将再次删除。 JavaFX已添加到JDK,并将再次删除。 纳斯霍恩…

我认为JDK不应包含任何此类“第三方”工具。 人们不应该依赖那些工具作为JDK的一部分。

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

乔什·朗(Josh Long):我认为纳斯霍恩(Nashorn)应该让社区保持生机,但我不知道那样会维持下去。 无论如何,JavaScript都是最丰富的语言之一,但是Nashorn甚至没有在Oracle的带领下蓬勃发展。 开发语言很困难,并且取决于专业技能。 这不是公地的工作。 很少有人会像JRuby的Charles Nutter那样热心和才华横溢的人们为热爱这项工作而工作。

Graal是令人兴奋的地平线! 我正在尝试,他们正在突飞猛进。 我特别喜欢同一平台和本机图像构建器下的语言互操作。

如果Nashorn足够重要,它将保持活力。

Eberhard Wolff:淘汰Nashorn的JDK增强建议实际上询问了有多少开发人员正在使用Nashorn。 因此,似乎他们有理由相信Nashorn毕竟不那么受欢迎。 但是如果事实证明纳索恩实际上很受欢迎,他们愿意改变自己的理由。 我也不清楚为什么JavaScript实现应该成为JDK的一部分。 还有其他脚本语言可以作为第三方库使用,对于JavaScript也应该适用。 因此,我想如果Nashorn足够重要,它将保持活力。

我认为GraalVM是目前Java领域最重要的创新。 从一开始,Java就一直使用字节码。 如果需要,甚至可以更改此基本原理。 这种创新和灵活性而又不牺牲太多的向后兼容性,是Java在如此长的时间后仍然有用的原因。

Martin Thompson:我在服务器端并没有太多参与JavaScript。

昆汀·亚当(Quentin Adam): JDK中的模块是一件好事,将核心与非必需的东西分开很重要。 考虑到Java生态系统内部JavaScript语言,我们的愿景是将其用作脚本语言。 但是今天,该角色比Apache Groovy更为重要,并且当前在JVM之上使用JavaScript并不需要将其嵌入平台的核心。

作为一个技术项目,Nashorn是一款非常出色的软件,我非常喜欢它,甚至在几年前我甚至构建了服务器端JavaScript应用服务器并在其之上构建工具。 但是,随着时间的流逝,只有人们每天都需要它,它才会得到维护。

它可以使延迟对于Java应用程序来说不是问题吗?

Markus Eisele:一种有趣的方法。 Azul已经有很长一段时间收集大量堆垃圾了。 红帽有雪兰多。 随着ZGC进入OpenJDK,它将为需要此功能且无法在正常堆大小内工作的方案提供替代方案。

我的感觉是,很少有利基用例可以从中获利。 尤其是在微服务架构中,一切都与超快速的启动时间和较小的占用空间有关。 低延迟部分肯定会满足这些要求。

在Fosdem演示中 ,有些野外数字很有希望。

还请参见: ZGC:使Java成为更广泛的应用程序更具吸引力的平台

Guillaume Laforge:对于寿命短的应用程序(如小型微服务),它们应快速启动并仅持续几秒钟,我认为这是一个可喜的变化。

Java一直以来都有抱怨,因为它的启动时间很慢,而且某些GC周期会造成暂停,因此这肯定会有所帮助。

当然,不应将它用于长时间运行的应用程序,否则您将很快遇到内存问题。

多年来,有许多用例可用于此GC。

乔什·朗(Josh Long):什么不是爱? 多年来,有许多用例可用于此GC。 想到大数据和在线交易系统。 我们已经看到了有趣的发展,例如用于各种数据网格技术的堆外内存以及Azul的Java虚拟机在支持大堆方面的出色工作,这也许可以从ZGC中受益。

卢卡斯·埃德(Lukas Eder):我从事的行业不多,所以我无法发表评论。

埃伯哈德·沃尔夫(Eberhard Wolff):也许。 这无疑是一个重大转变,并且可能会消除Java的一个重大问题。 但是,垃圾回收非常棘手,通常必须在生产中进行调整。 因此,我宁愿等到我们对ZGC在生产中的实际工作方式以及缺点所在有更多的经验。

Martin Thompson:对于许多Java应用程序来说,垃圾回收是一个主要问题,但是许多Java开发人员并未意识到这一点。 在分布式系统中,与实际的网络故障相比,网络分区更有可能是由GC事件引起的。 我已经看到Azul Zing成功地用于消除垃圾收集问题,从而允许设计以显着的分配速率处理大型内存空间而没有问题。

还请参见: ZGC加入聚会:针对JDK 11的JEP 333

ZGC有可能成为Zing的不错替代品,但Zing Linux内核内存模块的性能将受到限制。 GC是一个看到良好进展的空间。 Java 10通过消除单线程完整GC的瓶颈消除了G1的主要问题之一,现在使用了并行算法,希望线程检查点可以提高写屏障成本。 我们还看到来自Red Hat和Epsilon No-Op垃圾收集器的Shenandoah的竞争越来越激烈,这提供了比较GC实施方案的基准。

它可以彻底解决延迟问题吗? 不,但这是向前迈出的一大步。

昆汀·亚当(Quentin Adam): ZGC是一款令人印象深刻的软件,给我留下了深刻的印象。 这将帮助JVM扩展许多繁重的工作负载,并继续统治大数据市场。 它可以彻底解决延迟问题吗? 不,但这是向前迈出的一大步。 但是,由于没有完美的工具可以满足从修理洗衣机到盖木结构房屋的各种需求,因此计算机科学可以使用多种工具来解决我们面临的问题。

有时,垃圾收集器是一个问题,由于GC总是会引入延迟,因此您需要使用一些非托管语言,例如Rust或C。由于Java平台已经具有广泛的使用前景,因此ZGC的兴趣在于随着需求的增长和硬件的进步,性能也随之提高。

下周,我们将讨论Java影响者希望在JDK 12中看到的功能,以及无服务器在Java未来中的作用。

如果您想与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-4-148837.html

java zgc

java zgc_现在该关注ZGC和昏暗的Nashorn的明星了:Java影响者参与其中相关推荐

  1. 是时候关注ZGC和昏暗的Nashorn的明星了:Java影响者参与其中

    JDK是一个不断变化的环境. 一些工具正在离开,其他工具正在到来,而幸运的工具则活着讲述着这个故事. 首先传来的消息 ,我们正在告别的Java EE和CORBA组件,那么很明显,JDK 11代表的不仅 ...

  2. 回顾 2017, Java 有哪些值得关注的重大变化?

    点击上方"CSDN",选择"置顶公众号" 关键时刻,第一时间送达! 在过去的一年中,Java 历经了许多变化.在今年年初,Java EE 处于一个不确定的状态, ...

  3. 基于 Java Spring Security 的关注微信公众号即登录的设计与实现 ya

    太长不看版本 本文通过一个实际的具有一定商业价值的项目,展示了 API 优先的开发方法.通过薅羊毛的方式,落地了 Free Arch 架构. 背景和价值 通过微信公众号积累粉丝并进行商业活动宣传,是新 ...

  4. java中override快捷键_【基础回溯1】面试又被 Java 基础难住了?推荐你看看这篇文章。...

    本文已经收录自 https://github.com/Snailclimb/JavaGuide  (59k+ Star):[Java学习+面试指南] 一份涵盖大部分Java程序员所需要掌握的核心知识. ...

  5. Java虚拟线程:一种低成本、轻量级、用户态的Java线程

    点击上方"朱小厮的博客",选择"设为星标" 后台回复"书",获取 后台回复"k8s",可领取k8s资料 OpenJDK在 ...

  6. java swing 动态生成表格_6 个曾经牛逼哄哄的 Java 技术,你用过吗?

    大家好啊,今天给大家分享下我的开发历程中,我知道的那些被淘汰的技术或者框架,有些我甚至都没有用过,但我知道它曾经风光过. 废话不多说,下面我要开始吹了-- 1.Swing 下面这个是用 swing 开 ...

  7. java数组有跨类建立对象_必会的 55 个 Java 性能优化细节!一网打尽!

    程序员的成长之路互联网/程序员/成长/职场 关注 阅读本文大概需要 10 分钟. 来源:https://yq.aliyun.com/articles/662001 在 Java 程序中,性能问题的大部 ...

  8. 面试官系统精讲Java源码及大厂真题 - 13 差异对比:集合在 Java 7 和 8 有何不同和改进

    13 差异对比:集合在 Java 7 和 8 有何不同和改进 更新时间:2019-09-19 09:39:16 时间像海绵里的水,只要你愿意挤,总还是有的. --鲁迅 引导语 Java 8 在 Jav ...

  9. 总是记不住java的IO流用法?用N个问题教你掌握java IO流

    本文分享自华为云社区<总是记不住java的IO流用法?用N个问题教你掌握java IO流>,原文作者:breakDraw . Java IO 体系看起来类很多,感觉很复杂,但其实是 IO ...

最新文章

  1. 在linux上MySQL的三种安装方式
  2. poj 3660 Cow Contest
  3. JS高级 - 面向对象5(继承,引用)
  4. python 语言教程(3)变量
  5. endnotex9如何导入caj中文文献_EndNote X9常用方法汇总
  6. C#图片处理之:最简单的柔化算法
  7. LSTM(长短期记忆网络)及其tensorflow代码应用
  8. python:数组和列表相互转化
  9. 安卓x5webview 加载网页 失败_#PY小贴士# 抓下来的网页为什么没有我要的内容?...
  10. SAP系统开发里程碑 2022 刘欣
  11. SQL Server 索引中的碎片和填充因子
  12. [css] css 3d 动画,跟随鼠标移动做球形旋转
  13. 在MacBook Pro上装Mac和Linux双系统
  14. Excel 行高列宽与图片像素的关系
  15. 如何在win10的windows Defender中添加信任文件,使其免遭误删除的厄运
  16. 关于项目部署在Tomcat中使用软连接之坑
  17. 跟偶一起做:击退眼睛疲劳的五大运动
  18. 使用face-api实现html前端摄像头人脸检测
  19. onMeasure()和onSizeChanged()
  20. %3chtml%3e%3c html,在JEditorPane中显示HTML的问题java

热门文章

  1. vue根据不同权限显示图片_vuex根据不同的用户权限展示不同的路由列表
  2. Python炫技操作:花式导包的八种方法
  3. linux系统的监控工具名称,Linux下几款系统监控工具介绍
  4. xsl是什么文件 html 样式表单,XSL 指扩展样式表语言
  5. 学生护眼台灯几瓦最好?2022精选光源稳定的学生护眼台灯
  6. 游戏盾的原理和功能是什么?
  7. 学习同学们的博客经验
  8. 百度腾讯QQ等网站注册自动提交表单源码2012最新
  9. 「找一找」考你眼力的时候到了!
  10. Unity制作简单拦截近防炮——如何预测打击目标