jdk 9和jdk8_JDK 9是某些功能的终结

jdk 9和jdk8

几天前宣布JDK 9是Feature Complete! 进行切割的许多“功能”是附加功能,但有些是移除功能。 这篇文章介绍了一些从OpenJDK和/或Oracle JDK with 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,这些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。 Java DB包含在JDK中。” 从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工具”。 删除jhat的动机在JDK-8059039中进行了解释,“ 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) 始终提供一个简单的命令行分析工具,称为HPROF,用于堆和cpu分析。 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

jdk 9和jdk8

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

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

相关文章

二级java题型及分值_2016年全国计算机二级java语言程序设计考试大纲

2016年全国计算机二级java语言程序设计考试大纲2016年3月计算机考试即将在3月26日-29日进行&#xff0c;为了帮助大家顺利通过2016年计算机二级考试&#xff0c;下面百分网小编为大家带来2016年全国计算机二级java语言程序设计考试大纲&#xff0c;供大家参考学习&#xff0c;预…

linux系统下安装jdk教程

一、首先下载linux版本jdk jdk官网&#xff1a;http://www.oracle.com/technetwork/java/javase/downloads/index.html 根据自己的需求&#xff0c;下载不同版本的jdk 2.将下载好的jdk压缩包&#xff0c;通过ftp上传到linux系统的当前用户下&#xff0c;我当前登录的用户为r…

mqtt java_MQTT和Java入门

mqtt javaMQTT&#xff08;MQ遥测传输&#xff09;是一种轻量级的发布/订阅消息传递协议。 MQTT在物联网应用程序中得到了广泛使用&#xff0c;因为它被设计为在占用空间小的系统上运行在远程位置。 MQTT 3.1是OASIS标准&#xff0c;您可以在http://mqtt.org/上找到所有信息。…

iphone11什么时候上市_hd3手表高仿哪里买 什么时候上市?

hd3手表高仿哪里买 什么时候上市? 导读&#xff1a;hd3手表高仿哪里买zf的万国7日链高仿表怎么样&#xff1f;款式设计非常出色&#xff0c;很多手表的款式&#xff0c;依靠着该性价比的迅速提升来做出的有效转化&#xff0c;年轻人对于复刻表的选择&#xff0c;能拥有的这些细…

arcgis工具python源码_面向Arcgis的python脚本编程_数据

【实例简介】《面向ArcGIS的Python脚本编程》是一本指导ArcGIS for Desktop专业用户进行Python开发的指南。该书将教会您如何通过编写Python代码处理空间数据并在ArcGIS中自动化实现地理处理任务【实例截图】【核心代码】面向arcgis的python脚本编程数据└── 面向arcgis的pyt…

Windows 命令终端(CMD)程序员常用的命令

文章目录certutilcddirmd/mkdirrddelreplacechdir/cdattribhelptypemorefindstrrename/renset环境变量扩展echonetstattskilltasklisttaskkillnettreecopystartpauseprintverwinversysteminfowmiclogofftracertroute printtelnetftppingipconfigshutdown远程关机formatchkdskti…

驱动级的自动按键_空调遥控器特殊按键使用方法及注意事项

在上门维修过程中&#xff0c;用户常常由于遥控器使用不当&#xff0c;或者幵启了特定按键引起空调器的假性故障&#xff0c;这时需要进行电话解答或上门讲解&#xff0c;现对空调遥控器的特殊功能按键作简单介绍。示例遥控器型号为格力YAD0F,与KFR-23GW/ ( 23570 ) Aa-3挂式空…

净资产滚动率_净资产的结构

净资产滚动率Netty的包装结构很棒。 每个程序员都应该研究它。 每个系统都应该模仿它&#xff1b; 每个项目经理都应将其打印出来&#xff0c;拍在墙上&#xff0c;然后对开发人员说&#xff1a;“那样。” Netty是一个“ ...异步事件驱动的网络应用程序框架&#xff0c;用于…

freebsd nginx php mysql_FreeBSD 安装配置Nginx+PHP+APC+MySQL

在 FreeBSD 下安装软件的传统方法是用 ports 源码安装&#xff0c;不过使用 ports 源码编译安装太耗时(尤其是各种库依赖多、大的时候)&#xff0c;个人还是喜欢 pkg 这种软件包管理工具直接安装编译好的二进制软件包&#xff0c;不用自己编译&#xff0c;省时省力。FreeBSD 也…

python入门之类的基础语法-关于一些Python的一些基础语法训练

1&#xff1a;已知a和b元素 a "pyer" b "apple" 用字典和format方法实现&#xff1a;效果&#xff1a;my name is pyer, i love apple. 1、format的方法 c "mysql name is {0},i love {1}".format("pyer","apple") 用字典…

jdk 9和jdk8_JDK 9已完成功能!

jdk 9和jdk8今天的Mark Reinhold消息JDK 9已完成功能完善-现在该降级了 &#xff0c; 它宣布JDK 9的“总体功能集已冻结”。 OracleJava平台小组的首席架构师Reinhold补充说&#xff1a;“极不可能将任何进一步的JEP定向到该发行版。” 与该消息类似的文本也出现在JDK 9页面上 …

Java从键盘输入若干数_用java编程序:从键盘输入若干个整数,输出这些数中大于其平均值的数。...

展开全部引用1楼 christal yhy的答案,考虑到浮点数的存在,特在此基础上优化一下,代码如下:public static void main(String[] args) {Scanner scan new Scanner(System.in);System.out.println("请输入62616964757a686964616fe59b9ee7ad9431333262373933要输入的个数:&qu…

java多线程编程_阿里P8熬到秃头肝出来的:Java多线程+并发编程核心笔记

自学Java的时候&#xff0c;多线程和并发这一块可以说是最难掌握的部分了&#xff0c;很多小伙伴表示需要一些易于学习和上手的资料。所以今天这本「Java并发学习手册.pdf」就是一份集中学习多线程和并发的手册&#xff0c;PDF版&#xff0c;由RedSpider社区的五位大神撰写&…

内外网逻辑隔离物理隔离_隔离域逻辑

内外网逻辑隔离物理隔离在一个设计模式课程中&#xff0c;我对建模域逻辑进行了有趣的讨论。 具体来说&#xff0c;它是关于隔离域逻辑的 。 一个应用程序通常分为三个部分&#xff1a; 演示&#xff08;例如桌面GUI&#xff0c;浏览器&#xff0c;Web服务&#xff09; 域逻辑…

360安全浏览器兼容模式怎么设置_测试新手一定要知道:最实用的Web兼容性测试经验都在这...

在日常工作中&#xff0c;我们经常碰到网页不兼容的问题。我们之所以要做兼容性测试&#xff0c;目的在于保证待测试项目在不同的操作系统平台上正常运行。主要包括待测试项目能在同一操作系统平台的不同版本上正常运行&#xff1b;待测试项目能与相关的其他软件或系统的“和平…

Linux 的命令终端(CMD)的快捷键(Keyboard of MacBook)

文章目录常用移动光标编辑命令查找历史命令控制命令命令终端界面滚屏命令终端页签切换奇葩常用 快捷键说明Ctrl A光标跳到本行的行首Ctrl E光标跳到本行的行尾Ctrl U删除当前光标前面的所有文字&#xff08;还有剪切功能&#xff09;Ctrl K删除当前光标后面的所有文字&…

instanceof_您真的需要instanceof吗?

instanceof使用instanceof是一种代码味道。 我认为我们可能对此表示同意。 每当我看到这样的构造时&#xff0c;我都会确定出现了问题。 也许有人只是在进行更改时没有注意到问题&#xff1f; 也许有一个主意&#xff0c;但是它太复杂了&#xff0c;以至于需要太多的精力或时间…

HTML 中的节点、元素、标签、标记的区别

文章目录一、HTML 节点&#xff08;一&#xff09;节点的类型二、HTML 标签三、HTML 元素&#xff08;一&#xff09;HTML 元素属性&#xff08;二&#xff09;HTML 元素的嵌套一、HTML 节点 节点&#xff08;node&#xff09;是构成我们网页的最基本的组成部分&#xff0c;网…

java查题小程序_求助大神来写一个java的小程序,题目如下

货不多说直接代码public class car {private String car_number;private float car_price;private float rebate;//折扣public float getRebate() {return rebate;}public void setRebate(float rebate) {this.rebate rebate;}public String getCar_number() {return car_numb…

valhalla 插件_Valhalla项目的价值

valhalla 插件我对Valhalla项目的进度一直很感兴趣&#xff0c;但是Brian Goetz最近的信息“ Valhalla项目&#xff1a;目标 ”提高了我的兴趣。 我经常喜欢Goetz的作品&#xff0c;因为他结合了我最想成为技术作者的两个特征&#xff1a;他比他所写的内容更了解他所写的主题&a…