JDK 9是某些功能的终结

几天前宣布JDK 9是Feature Complete! 进行剪切的许多“功能”都是添加项,但有些是删除项。 这篇文章介绍了从OpenJDK和/或Oracle的JDK Java 9中删除的一些项目。

JEP 220 (“模块化运行时图像”)的一部分是删除了Java认可标准覆盖机制 (“意味着可以将实现认可标准或独立技术的更高版本的类和接口合并到Java平台中”)和删除了支持可选包的扩展机制 (“允许Java虚拟机(VM)使用可选扩展的类,其方式与VM使用Java平台中的类的方式几乎相同)”。 可升级模块旨在替代JDK 9中认可的标准替代机制。关于扩展机制,JEP 220指出:“扩展机制是在1998年发布的JDK 1.2中引入的,但是在现代,我们几乎没有证据使用。” Erik Costlow的计划安全删除未充分使用的“认可扩展”目录提供了更多有关这些删除以及如何检测它们是否会影响特定Java应用程序的背景。

rt.jar和tools.jar

JEP 220还删除了众所周知且经常引用的JAR rt.jartools.jar 。 JEP 220解释说:“以前存储在lib/rt.jarlib/tools.jarlib/dt.jar和其他各种内部jar文件中的类和资源文件现在将以特定于实现的更有效格式存储lib目录中的文件。 这些文件的格式将不指定,如有更改,恕不另行通知。” 有关删除这些JAR的其他详细信息以及这些删除的预期效果,可以在Java 9中找到,它们完全改变了JDK目录的布局并删除了tools.jar , Java 9和Jigsaw如何破坏您的代码以及为JDK 9做准备 。 没有人认为这是广泛宣传 ,这些API的目的不是外用,但“一些流行的库使用不规范,不稳定,不支持的API是JDK的内部实现细节,而且从来没有在外部使用。”

“大多数”内部API(但不是

编写JEP 260 (“封装大多数内部API”)是为了“在[ JDK 9 ]中默认使大多数JDK内部API无法访问,但是保留一些关键的,广泛使用的内部API,直到所有或大多数支持的替代品都存在为止。功能。” Mark Reinhold的消息“ 在JDK 9中封装内部API”(sun.misc.Unsafe等)详细描述了这样做的动机。 在消除内部 (和臭名昭著 )API sun.misc.Unsafe 引起轩然大波之后,这种方法是一种折衷方案。 JEP 260文档详细讨论了哪些内部API将在JDK 9中保持可访问性,并解释说某些内部API将在JDK 9中弃用,并在以后的某个时间完全删除。 “建议在JDK 9中保持访问的关键内部API”包括sun.misc.Unsafesun.misc.Signalsun.misc.SignalHandler

Java数据库

Oracle的Don Smith 在JDK 9中推迟到Derby的帖子中写道:“ Java DB仅仅是Apache Derby开源数据库的重新命名发行版。 它包含与Apache Derby相同的二进制文件。 从JDK 9开始,不再计划将其包含在Oracle JDK下载的'db'目录中。 展望JDK 9的开发人员应计划出于同一目的独立获取和捆绑Apache Derby。” 在撰写本文时, Oracle Java DB页面指出:“ Java DB是Oracle支持的Apache Derby开源数据库发行版。 它通过JDBC和Java EE API支持标准的ANSI / ISO SQL。 JDK中包含Java DB。” 从JDK 9开始将不再是这种情况。

自JDK 8起已弃用垃圾收集器选项

如OpenJDK页面JDK 9 Outreach的“已删除”部分和JEP 214中所述 , JDK 8中不推荐使用的“很少使用”垃圾收集选项组合现在已被完全删除(这意味着包含这些选项组合将阻止JVM而不是简单地显示警告消息)。 以下是要删除的垃圾收集选项的组合:

DefNew + CMS -XX:-UseParNewGC -XX:+UseConcMarkSweepGC
ParNew + SerialOld -XX:+UseParNewGC
ParNew + iCMS -Xincgc
ParNew + iCMS -XX:+CMSIncrementalMode -XX:+UseConcMarkSweepGC
DefNew + iCMS -XX:+CMSIncrementalMode -XX:+UseConcMarkSweepGC -XX:-UseParNewGC
CMS前景 -XX:+UseCMSCompactAtFullCollection
CMS前景 -XX:+CMSFullGCsBeforeCompaction
CMS前景 -XX:+UseCMSCollectionPassing

贾特

JEP 241被称为“删除jhat工具”,其简洁的“摘要”为“删除过时的jhat工具”。 在JDK-8059039中解释了删除jhat的动机,“ jhat是在JDK 6中基于java.net HAT项目添加的 。 jhat是一个实验性的,不受支持的且过时的工具。 优质的堆可视化器和分析器现已问世多年。” jhat替代jhat包括Eclipse Memory Analyzer Tool(MAT)和VisualVM 。 OpenJDK JDK 9 Outreach文档中也记录了此删除操作,并且在文章OpenJDK 9:没有HPROF和jhat的生活中提到了此删除操作 。

Java虚拟机工具接口hprof代理

JEP 240从JDK中删除了JVM TI hprof代理。 关于HPROF的JDK 8技术说明:堆/ CPU分析工具指出(我已经强调了 ),“ Java 2平台标准版(J2SE) 始终为堆和cpu分析提供了一个简单的命令行分析工具HPROF。 HPROF实际上是一个JVM本机代理程序库,它在JVM启动时通过命令行选项动态加载,并成为JVM进程的一部分。” 如用于删除它的JDK-8046661中所述,还有其他一些可用于生成“ hprof格式的堆转储”的方法,包括jmap -dump和jcmd <pid> GC.heap_dump 。 JDK 9扩展页面上也对此进行了引用,并在文章OpenJDK 9:没有HPROF的生活和jhat中对此进行了讨论 。

虚拟机

Oracle的Aurelio Garcia-Ribeyro 在JDK 9和更高版本的Visual VM中写道:“从JDK 9开始,Visual VM将不包括在Oracle JDK中”,并补充说:“希望将Visual VM与Oracle JDK 9或更高版本一起使用的开发人员。以后可以从Visual VM开源项目站点获取它。 这似乎与Oracle先前决定将NetBeans捐赠给Apache Software Foundation (VisualVM 基于NetBeans Platform )有关。 代替删除的jhat工具和HPROF代理,要使用的主要工具之一也需要单独下载以与JDK 9一起使用。

AppleScript引擎

AppleScript引擎代码随JDK 9一起删除,并且此删除记录在OpenJDK页面JDK 9 Outreach的“已删除”部分中。

来自RMI的HTTP代理

RDK的HTTP代理已在JDK 8中弃用,并且已从JDK 9中删除 。 这在“ JDK 9扩展”页面上被调用。

java.corba和EE模块的默认分辨率

JDK 9中仍然可以使用java.corba和其他EE模块,但是默认情况下它们不再可见 。 六个模块“默认情况下将不可见”是java.activation , java.annotations.common , java.corba (不推荐使用), java.transaction , java.xml.bind和java.xml.ws。 JEP 261对此进行了更详细的描述,并解释说:“默认情况下,类路径上的代码不会解析定义Java EE API或Java EE应用程序主要感兴趣的API的模块。” 它称此更改为“有意的选择,如果不是很痛苦的话”,旨在“避免与在某些相同程序包中定义类型的流行库产生不必要的冲突”,并“使现有应用程序服务器更容易迁移到JDK 9”。

JEP 182的“摘要”(“淘汰javac -source和-target选项的政策”)指出:“为减少javac的维护成本,该JEP定义了-target旧的-source-target选项的策略。 在JDK 8中,将不赞成使用1.5或更早版本的源或目标,而在JDK 9中,将删除对1.5或更早版本的源或目标的支持。 在JDK 9及以后的版本中,javac将使用受支持的源和目标选项的“一加三后退”策略。 根据这一政策, javac仍然能够识别和处理所有以前的JDK的类文件,可以追溯到JDK 1.0.2生成的版​​本45.3的类文件,该版本于1996年首次发布。

根据JEP 182中概述的策略,JDK 9通过JDK-8011044 “删除了对1.5及更早版本的源和目标选项的支持”。 Joe Darcy在交付时描述了此更改,“ javac命令不再支持低于6 / 1.6的-source-target选项。 但是, javac仍然可以读取较旧的类文件。 可以将较早版本的源代码移植到较新的源代码级别。 为了生成旧版本可用的类文件,可以使用以前版本中的javac 。”

其他拆除

OpenJDK JDK 9扩展页面的“已删除”部分简要引用了我在本文中讨论的一些项目,还引用了我在本文中未提及的从JDK 9中删除的一些项目:

  • JEP 231 (“删除启动时JRE版本选择”):“删除在JRE启动时请求不是JRE版本的JRE版本的能力。”
  • JDK-8037739 :“在JDK 9时间范围内删除对java.awt.peer和java.awt.dnd.peer包的API引用”
  • JDK-8029806 :“删除打包程序/解包程序的addPropertyChangeListener和removePropertyListener方法”
  • JDK-8029805 :“删除LogManager addPropertyChangeListener和removePropertyChangeListener方法”
  • JDK-8029904 :““删除com.sun.security.auth.callback.DialogCallbackHandler”
  • JDK-7067728 :“从默认的java.policy中删除stopThread RuntimePermission”
  • JDK-8134808 :“从java.desktop中删除对序列化小程序的支持”

结论

由于对JDK 所做的更改以支持模块化( JEP 200 ),因此许多从JDK 9中删除的项目也将被删除。 因为有更好的替代支持,或者因为JDK以前包含的产品现在希望单独下载,所以其他项目也被删除。

翻译自: https://www.javacodegeeks.com/2017/01/jdk-9-end-road-features.html

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

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

相关文章

一种table超出高度自动出滚动条的解决方案

参考链接&#xff1a; http://www.cnblogs.com/xiaoafei1991/archive/2015/09/30/4781592.html转载于:https://www.cnblogs.com/ziyoublog/p/10870048.html

最近邻插值、双线性插值、双三次插值

1.最近邻插值 越是简单的模型越适合用来举例子&#xff0c;我们就举个简单的图像&#xff1a;3X3 的256级灰度图&#xff0c;也就是高为3个象素&#xff0c;宽也是3个象素的图像&#xff0c;每个象素的取值可以是 0&#xff0d;255&#xff0c;代表该像素的亮度&#xff0c;25…

java map转json字符串_Java-Gso-json字符串解析-php后台返回字段类型可能为字符串(/空字符串)或者对象的情况...

其实本来android前端定义的对象类型是对象&#xff0c;如果后台没有值的情况下&#xff0c;理论上给null&#xff0c;如果是数组给[]或者null都可以的。这样Gson再解析转换的时候就不会出问题&#xff01;但是最近重构发现后台如果没有字段值给的是""空字符串&#x…

oracle中时间加减一年的写法

select add_months(date2019-5-15,-12) from dual; -- 2018-5-15 通过add_months(x,y)函数,在给定的时间x固定的月份y select date2019-5-15 interval -1 year from dual; --2018-5-15 通过interval函数&#xff0c;这个用来表示一段时间间隔,有固定的格式,这里用来加一年&a…

'fopen' This function or variable may be unsafe

1>...error C4996: fopen: This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. 1> 正在生成代码... 生成: 成功 0 个&#xff0c;失败 1 个&#xff0c;最…

python3捕获异常_python中异常捕获方法详解

在Python中处理异常使用的是try-except代码块&#xff0c;try-except代码块放入让python执行的操作&#xff0c;同时告诉python程序如果发生了异常该怎么办&#xff0c;try-except这个功能其实很多入门书籍中都放到了高级篇幅里&#xff0c;在入门的时候一般不会讲这个使用&…

自定义java线程池_我的Java自定义线程池执行器

自定义java线程池ThreadPoolExecutor是Java并发api添加的一项功能&#xff0c;可以有效地维护和重用线程&#xff0c;因此我们的程序不必担心创建和销毁线程&#xff0c;也不必关注核心功能。 我创建了一个自定义线程池执行程序&#xff0c;以更好地了解线程池执行程序的工作方…

es6方法过滤掉两个数组中对象id值相等的项

let arr1[{id:1,name:张三},{id:2,name:李四}] let arr2[{id:1,name:张三},{id:3,name:王五},{id:44,name:王柳},{id:45,name:王琦},] let addarr2.filter(item>!arr1.some(ele>ele.iditem.id)) console.log(add) const arr1 [{ id: 1, name: 网 }, { id: 2, name: 二位…

大尾和小尾

字节存放有大尾和小尾之分。如果对应数据的高字节存放在低地址就是大尾&#xff0c;反之&#xff0c;高字节存放在高地址的就是小尾。 比如 short int a 0x1234 大尾存放时&#xff1a; 偏移地址 存放内容 0x0000 0x12 0x0001 0x34 小尾存放&#xff1a; 偏移…

jedis使用_Redis的三个框架:Jedis,Redisson,Lettuce

Jedis api 在线网址&#xff1a;http://tool.oschina.net/uploads/apidocs/redis/clients/jedis/Jedis.htmlredisson 官网地址&#xff1a;https://redisson.org/redisson git项目地址&#xff1a;https://github.com/redisson/redissonlettuce 官网地址&#xff1a;https://le…

端到端BPM(带有DMN标记)

下周的红帽峰会即将成为有史以来最好的峰会之一&#xff01; 而且&#xff0c;如果您是Drools或jBPM的狂热者&#xff0c;您会很忙 &#xff1a;Signavio和Red Hat之间的合作伙伴关系是我们为您准备的另一个顶级演讲。 邓肯道尔&#xff08;Duncan Doyle&#xff09;和汤姆德贝…

pycharm写python字典_pythonpycharm安装基础语法

1.python安装安装python3&#xff0c;建议安装python3.7&#xff0c;不要安装python2安装时需要注意的地方&#xff1a;安装完成后&#xff0c;验证python是否安装成功&#xff0c;在cmd下输入python&#xff0c;出现python的版本则表明安装成功验证pip是否安装成功&#xff0c…

模板库 | 销售管理类报表,邀您提反馈

“葡萄城报表模板库是一款免费的报表制作、学习和参考工具&#xff0c;包含了超过 200 张高质量报表模板&#xff0c;涵盖了 16 大行业和 50 多种报表类型&#xff0c;为 30 余万报表开发者提供价值参考。” 近期&#xff0c;葡萄城推出了“寻找真正的报表大师”活动&#xff0…

矩阵的逆、伪逆

1、矩阵的逆 定义&#xff1a; 设A是数域上的一个n阶方阵&#xff0c;若在相同数域上存在另一个n阶矩阵B&#xff0c;使得&#xff1a; ABBAI。 则我们称B是A的逆矩阵&#xff0c;而A则被称为可逆矩阵。 可逆条件&#xff1a; A是可逆矩阵的充分必要条件是&#xff0c;即可…

PLSQL登录报错ORA-12154

https://blog.csdn.net/naomi_qing/article/details/79583453 转载于:https://www.cnblogs.com/2016-cxp/p/10878952.html

python将dataframe导出为csv_python将dataframe转换为csv,为每列导出一个格式独特的文本文件...

我正在Win7 64位上使用Python2.7.7和熊猫。我的输入数据最初是以空格分隔的&#xff0c;右对齐的。我现在有数据作为熊猫数据帧&#xff0c;我导出为一个csv。我想写一个空格分隔的右对齐文本文件。列有字符串、int和float。我试图用这个来格式化其中一个列&#xff1a;df_fg[M…

jax-rs/jersey_在Oracle Cloud上的Prime-UI,JAX-RS和Jersey和Gson

jax-rs/jersey如今&#xff0c;Oracle云无处不在。 最初&#xff0c;拉里&#xff08;Larry&#xff09;否认在很长一段时间内都需要云&#xff0c;并且在去年的开放世界&#xff08;Open World&#xff09;之后就发布了一些非常早的公告&#xff0c;而且可用性很差&#xff0c…

OpenCV copyMakeBorder()来拓展边界

使用OpenCV提供的函数copyMakeBorder()来拓展边界&#xff0c;其原型如下 void copyMakeBorder( InputArray src, OutputArray dst,int top, int bottom, int left, int right, int borderType,const Scalar& value Scalar())​ src&#xff1a;输入的数组。 dst&…

Flutter-现有iOS工程引入Flutter

前言 Flutter 是一个很有潜力的框架&#xff0c;但是目前使用Flutter的APP并不算很多&#xff0c;相关资料并不丰富&#xff0c;介绍现有工程引入Flutter的相关文章也比较少。项目从零开始&#xff0c;引入Flutter操作比较简单&#xff0c;但是现有工程引入Flutter 需要费很多精…

python有什么隐藏功能_Python的隐藏功能

文章目录Python编程语言的鲜为人知的但有用的功能是什么&#xff1f;尝试限制Python核心的答案。每个答案的一个功能给出一个功能的例子和简短描述&#xff0c;而不仅仅是文档的链接。使用标题作为第一行标记该功能。Quick links to answers:Chaining comparison operators:>…