JDK 9 –给圣诞老人的信?

众所周知,冬天(尤其是圣诞节前的时间)是做梦的合适时机,希望有一个梦想似乎可以触摸的时刻。 当孩子们和大人在纸上或在对圣诞老人的虚构或真实信件中写下自己的梦想的那一刻,希望他们的梦想将成为现实。 这很引人注目,因为甚至在12月的第一天,OpenJDK背后的人们在发布更新的JEP列表时也表达了对Java的愿望。 等一下,不要激动,只是还没有......因为我们知道苦涩,他们将有可能成为现实的地方在2016年年初或至少是这样的计划,历史向我们展示了什么坚持一个计划手段。

当然,上述列表中包含JEP,并不意味着最终版本将包含JEP,因为JEP 流程图清楚地说明了这一点,但是为了避免寒冬,我们将遍历列表并提供一个JEP。简要说明每个项目的预期目的是什么。

免责声明: JEP列表是一个移动的目标,因为本文发布后,该列表至少更改了一次。

那些幸运的不是那么好的人,似乎圣诞老人惩罚了您,并且您很高兴使用Java的进程api,并且当然满足了他的限制。 在JDK 7中进行了更改之后,当前的JEP进一步改进了该API,并使我们能够:

  • 获取当前Java虚拟机的pid(或等效值)以及使用现有API创建的进程的pid
  • 获取/设置当前Java虚拟机的进程名称以及使用现有API创建的进程(如果可能)
  • 枚举系统上的Java虚拟机和进程。 有关每个进程的信息可能包括其pid,名称,状态以及可能的资源使用情况
  • 处理流程树,特别是一些破坏流程树的方法
  • 处理数百个子流程,也许复用输出或错误流,以避免为每个子流程创建线程

我不了解您,但我肯定可以找到至少两个可以充分利用其中某些功能的场景,所以请稍等。

前几天,我有幸与Peter Lawrey一起参加性能研讨会,而Java性能调优的经验法则之一是:应用程序的并发最少,性能更高。 有了这项改进,性能调整的规则可能需要找到另一个经验法则,因为使用此JEP实施的目标是在Java中使用监视器的延迟。 更准确地说,目标是:

  • 字段重新排序和缓存行对齐
  • 加快PlatformEvent::unpark()
  • 快速Java监视器输入操作
  • 快速Java监视器退出操作
  • 快速Java监视器notify / notifyAll操作
  • 自适应旋转改进和SPARC上的SpinPause

标题说明了一切。 如果您使用的是企业应用程序,则必须至少处理一次或两次gc日志,并且我想在查看信息量及其显示方式时至少要引起注意(如果不是全部)。 好吧,如果您足够“幸运”,那么您可能会在JVM版本之间进行迁移,然后当您意识到为先前版本构建的解析器遇到了与当前版本有关的问题时,肯定希望/需要再引起两个注意。 JVM日志记录。 我想我可以继续说明为什么不好,但是让我们集中精力进行改进,因此希望在下一个发行版中,我们有理由抱怨说,情况会好一些。

gc日志记录似乎试图与我们可能也会使用的其他日志记录框架(如log4j)保持一致。 因此,从所记录的信息的严重性(错误,警告,信息,调试,跟踪)的角度来看,它将在不同级别上工作,其性能目标是错误和警告不会对生产环境产生任何性能影响,适合生产环境的信息,而调试和跟踪没有任何性能要求。 默认日志行如下所示:

[gc][info][6.456s] Old collection complete

为了确保灵活性,日志记录机制将可通过JVM参数进行调整,目的是对它们采用统一的方法。 为了向后兼容,将尽可能将现有的JVM标志映射到新标志。

To be as suitable as possible for realtime applications, the logging can be manipulated through jcmd command or MBeans.

该JEP唯一可能也是最大的缺点是,它的目标只是提供日志记录机制,并不一定意味着日志也会有所改进。 为了拥有美丽的原木,我们梦想也许我们需要再等一会。

您可能知道,Java平台使用JIT编译器来确保编写的应用程序的最佳运行。 现有的两个直接称为C1和C2的编译器分别对应于client(-client选项)和服务器端应用程序(-server选项)。 该JEP的明确目标是提高这些编译器的可管理性:

  • 对JVM编译器(C1和C2)的细粒度和方法上下文相关的控制。
  • 在运行时更改JVM编译器控制选项的能力。
  • 性能不会下降。

JVM的性能似乎是将来的Java版本的目标,因为当前的JEP旨在优化代码缓存。 目标是:

  • 单独的非方法,概要文件和非概要文件代码
  • 由于专门的迭代器跳过了非方法代码,因此扫描时间更短
  • 缩短一些编译密集型基准测试的执行时间
  • 更好地控制JVM内存占用
  • 减少高度优化的代码的碎片
  • 改进代码局部性,因为很可能会及时关闭相同类型的代码
    • 更好的iTLB和iCache行为
  • 为将来的扩展奠定基础
    • 改进了对异构代码的管理;

从我的角度来看,前两个已声明的目标非常令人兴奋,有了这两个目标,只需跳过非方法区域,即在整个JVM运行时中应该存在的区域,可以大大提高代码缓存的扫描时间。

这种改进的出现并不令人惊讶,但对我而言,它并没有在JDK中出现更令人惊讶,因为JSON取代XML成为了Web的“通用语言”,不仅适用于响应式JS前端-end,但也用于构造NoSQL数据库中的数据。 该JEP声明的目标是:

  • JSON RFC7159的解析和生成。
  • 功能满足使用JSON的Java开发人员的需求。
  • 解析API,允许选择解析令牌流,事件(包括文档层次结构上下文)流或JSON文档和数据流的不可变树表示视图。
  • 紧凑的概要文件和Java ME的有用API子集。
  • 使用构建器风格的API进行不可变的价值树构造。
  • JSON数据流输出和JSON“文字”的生成器样式API。
  • 转换器API,将现有的值树作为输入并生成新的值树作为结果。

同样,其目的是与JSR 353保持一致。 即使未来的JSON与现有的库相比功能有限,它也具有集成和使用JDK 8中新添加的功能(如流和lambda)的竞争优势。

sjavac是已经著名的javac的包装,该包装旨在在编译大型项目时提高性能。 与当前阶段一样,该项目存在稳定性和可移植性问题,主要目标是修复给定的问题,并使其有可能成为JDK项目的默认构建工具。 扩展的目标是使该工具可用于除JDK以外的项目,并可能与现有工具链集成。

朝着项目拼图的实施方向迈出的第一步,旨在将源代码重新组织为模块,从而增强了用于模块构建和尊重模块边界的构建工具。

该JEP的目标是促进使大型代码库清除掉棉绒警告。 使用@SuppressWarnings批注无法抑制导入时的过时警告,这与在代码中使用过时的成员不同。 在像JDK这样的大型代码库中,通常必须在一段时间内支持不赞成使用的功能,并且如果故意和禁止使用不赞成使用的构造,则仅导入不赞成使用的构造并不能作为警告消息的依据。

由于JDK 9的午餐日期是2016年初,因此该JEP非常适合一年中的那个时候以及相应的琐事:Spring大扫除。 它的主要目标是至少在平台的基本软件包下,在javac的lint选项(-Xlint:all)下进行干净的编译。

从JDK 7开始,ProjectCoin的目标是在Java语言中引入一些语法糖,以在成熟的平台上引入一些新功能。 即使它没有对语言的性能进行任何改进,它也提高了代码的可读性,因此,在我看来,它为软件项目的最重要资产之一带来了加分,在我看来,这是一个更具可读性的代码库。

该JEP针对四个变化:

  1. 在私有实例方法上允许@SafeVargs 。
  2. 允许在try-with-resources语句中将有效最终变量用作资源 。
  3. 如果推断类型的参数类型是可表示的,则允许菱形具有内部类 。
  4. 从Java SE 8开始,从合法标识符名称集中删除下划线。

随着Java 8发行版中弃用的JVM标志的删除,Spring清理工作继续进行,因此,在9发行版中,不再支持以下选项:

DefNew + CMS       : -XX:-UseParNewGC -XX:+UseConcMarkSweepGC
ParNew + SerialOld : -XX:+UseParNewGCParNew + iCMS      : -XX:+CMSIncrementalMode -XX:+UseConcMarkSweepGC
ParNew + iCMS      : -XincgcDefNew + iCMS      : -XX:+CMSIncrementalMode -XX:+UseConcMarkSweepGC -XX:-UseParNewGC
CMS foreground     : -XX:+UseCMSCompactAtFullCollection
CMS foreground     : -XX:+CMSFullGCsBeforeCompactionCMS foreground     : -XX:+UseCMSCollectionPassing

该JEP旨在Fix javac来正确接受和拒绝程序,而不管import语句的顺序如何,并extendsimplements子句。

已经设计了越来越多的使用UDP传输的应用层协议,特别是诸如会话初始协议(SIP)和电子游戏协议之类的协议使安全性问题比以往任何时候都高,尤其是因为TLS仅可用于诸如TCP之类的可靠协议上。 当前的JEP打算通过定义用于数据报传输层安全性(DTLS)版本1.0( RFC 4347 )和1.2( RFC 6347 )的API来填补这一空白。

作为JEP 201的后续步骤,旨在重组JDK和运行时环境以容纳模块并提高性能,安全性和可维护性。 定义一个新的URI方案,以命名运行时映像中存储的模块,类和资源,而无需透露映像的内部结构或格式。 根据需要修改现有规格以适应这些更改。

随着HTML标准版本达到版本5,JDK的javadoc页面也需要跟上步伐,因此需要从HTML 4.01升级。

在JRE启动时,删除请求的功能(通过使用-version :),该功能不是正在启动的JRE的JRE版本。 删除将逐步进行:版本9中将发出警告,而Java 10可能会引发错误。

这是为JDK 9准备的增强功能列表的当前形式,老实说,当我初次查看它时,我有些沮丧,但是在阅读了更多内容后,我感到非常兴奋,因为Java似乎尚未开始进行另一次冒险,他们需要获得的所有帮助。 因此,如果您想参与进来(请做!),java advent系列的后续博客文章将向您介绍如何参与。 想象一下它就像环上的同伴船,但是冒险的目标是建造Java而不破坏环……弗罗多先生可能是谁?

翻译自: https://www.javacodegeeks.com/2014/12/jdk-9-a-letter-to-santa.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/361161.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

周三的工作 张孝祖

今天的任务是主面板master嘿嘿 上头有几个按钮,登录登出,个人信息,注册注销等,他们是根据用户是否等率决定的 具体代码如下 using System; using System.Collections.Generic; using System.Linq; using System.Web; using System…

H5本地存储

在以前,我们想要存储一些数据,并且只是在前端使用,服务端并不会使用,我们只能存在cookie里,但是cookie会跟随请求头在客户端和服务端之间来回传递,而且cookie还有一些缺点,H5提供了webStorage的…

在哪里可以运行EJB?

EJB不仅为Java EE应用服务器而建。 他们还可以执行在的Java EE Web Profile的容器或简单的Java SE环境(Java SE的啊- !E!ASY 的J ava 乙是指合同)。 EJB Lite 仅支持完整的EJB规范提供的功能的子集所必需的-相同功能的轻量级版本…

sql查询结果字段名与字段值倒过来了

数据库为sybase, sql如下: 1 select substring(LRRJG,1,7) as SSQJ, 2 sum(case when RWDL_BH 01 then 1 else 0 end) AS A, 3 sum(case when RWDL_BH 01 and XBHSJG ! null then 1 else 0 end) AS B 4 from ZYH_DBRW_LRNSRRW 5 where LR_DBRW_ID ! null and DR …

Promise实战AJAX封装

一、利用Promise的知识,对最开始的ajax的例子进行一个简单的封装: var url xxx; // 封装一个get请求的方法 function request(url){return new Promise(function(resolve,reject){var XHR new XMLHttpRequest();XHR.open(GET,url,true);XHR.send();XHR…

重新设计Hamcrest

我在Hamcrest库上做了几篇文章 ,我确实很喜欢使用它,但是我希望对其进行一些更改。 我了解他们做出的大多数设计决策,但我认为其中一些确实不值得。 介绍Litecrest 我对库所做的大多数更改都有助于减轻Hamcrest的负担,因为我觉得…

CSS 垂直居中

1、使用绝对定位垂直居中 绝对对位原理:元素在过度受限情况下,将margin设置为auto,浏览器会重算margin的值,过度受限指的是同时设置top/bottom与height或者left/right与width。 .absolute_center{/*display:none;*/position:absol…

Java EE拦截器

历史 我认为重要的是要看一下Java EE中的Interceptor的发展,因为它是从EJB特定的项目开始的,后来又演变成一个单独的规范,现在可供其他Java EE规范扩展,这一事实很简单。 版本1.0 拦截器最初是在EJB 3.0 ( Java EE 5的…

New Begin

已经研究生三年级了, 最近也找好了工作,应该要开始自己的程序人生了。 虽然说写程序也写了很一段时间了, 决定现在开始在cnblogs这个,记录下自己的学习轨迹。开始维护自己的blogs。转载于:https://www.cnblogs.com/binzeehale/ar…

[ExtJs6] 环境搭建及创建项目

1. 环境搭建 sencha cmd 和 extjs6 sdk.sencha cmd: https://www.sencha.com/products/extjs/cmd-download/extjs6: https://www.sencha.com/sencha cmd 安装过程将其加入系统的环境变量path中。export PATH${PATH}:/Users/shuanggai/bin/Sencha/Cmd/6.2.2.36把改语句添加到 ~/…

通过Spring Integration和RabbitMQ获得高可用性的AMQP支持的消息通道

Spring Integration消息通道默认情况下将消息存储在内存中。 这是因为内存速度快,易于实现,并且不会增加网络成本。 但是,在某些情况下,这可能会引起问题,因为如果应用程序崩溃或服务器意外关闭,所有消息都…

有机会多熟悉下开源框架

Struts2,Spring,Hibernate等开源框架的使用转载于:https://www.cnblogs.com/yqskj/archive/2012/11/05/2756085.html

vue之node.js的简单介绍

一、什么是node.js? 它是可以运行JavaScript的服务平台,可以吧它当做一门后端程序,只是它的开发语言是JavaScript 二、安装 1、node.js的特性: - 非阻塞IO模型- 时间驱动 2、运用的场景: - 高并发低业务- 实时场景- 聊…

Java 8 StringJoiner

在Java 8发行版中,最受关注的是Lamda,新的Date API和Nashorn Javascript引擎。 在这些阴影下,有较小但有趣的变化。 其中之一是StringJoiner的引入。 StringJoiner是用于分隔字符或字符串列表的实用程序。 您可能会认出以下代码: …

设置TextView为下划线的样式

1 tvUserTel.setText(Html.fromHtml("<u>"usertel"</u>")); 2 tvUserTel.setTextColor(Color.BLUE);//设置为蓝色 转载于:https://www.cnblogs.com/Tristan2012/archive/2012/11/06/2757239.html

jQuery之jQuery扩展和事件

一、jQuery事件 常用事件 blur([[data],fn]) 失去焦点 focus([[data],fn]) 获取焦点&#xff08; 搜索框例子&#xff09; change([[data],fn]) 当select下拉框中的元素发生改变的时候触发change事件(select例子) click([[data],fn]) 点击 dblclick([[data],fn])…

JavaFX列表示例

这是使用JavaFX构建的示例列表应用程序。 该应用程序是待办事项列表。 此应用程序具有添加&#xff0c;更新和删除列表中项目的功能。 列表数据存储在HSQLDB关系数据库中。 该应用程序使用JDBC&#xff08;Java数据库连接&#xff09;API访问数据库。 该应用程序打包为可执行JA…

flex弹性布局操练2

上一个是练习的1个内元素的&#xff0c;这次练习两个元素的。 ul.box1 {list-style:none;background-color:black;display:flex;justify-content:space-between;/*水平轴的位置,默认是flex-start就是第一种情况*/align-items:center;/*垂直轴的位置*/width:100px;height:100px;…

CDI 2.0更新

CDI 2.0是Java EE平台的上下文和依赖项注入的下一个版本&#xff0c;并且是Java EE 8中包含的候选对象。 自2014年9月以来&#xff0c;它一直在开发中&#xff0c;并且发展Swift&#xff01; CDI 2.0的主要目标 与Java SE 8对齐&#xff08;当然&#xff01;&#xff09; 支持…

一段js实现复制文本内容到剪切板

<script type"text/javascript"> function copyUrl2(){var Url2document.getElementById("biao1").innerText;var oInput document.createElement(input);oInput.value Url2;document.body.appendChild(oInput);oInput.select(); // 选择对象docum…