javaone_JavaOne 2015:为JDK 9做准备– blog @ CodeFX

javaone

JavaOne 2015看到了Project Jigsaw团队关于Java 9中的模块化的一系列讨论 。它们都是非常有趣的,并且充满了宝贵的信息,我敦促每个Java开发人员都注意它们。

除此之外,我想给社区一种搜索和引用它们的方法,因此我在这里总结一下:

  • 准备JDK 9
  • 模块化开发简介(即将出版)
  • 先进的模块化开发(即将推出)
  • 拼图项目的幕后花絮(即将上映)

我努力链接到尽可能多的外部资源,以使各个帖子简短。 播放图标将带您直接进入Oracle每天为每个房间在线播放的长达十小时的视频流中的相应点。 (很棒的格式,伙计们!)(到目前为止)他们不仅弄乱了声音,而且似乎还诉诸于低音量的单声道声音,因此请确保提高音量。

让我们开始为JDK 9做准备!

总览

  • 内容 :从JDK 8迁移到JDK 9时的期望
  • 演讲者 :艾伦·贝特曼
  • 链接 : 视频和幻灯片

背景

艾伦·贝特曼(Alan Bateman)通过提供一些背景信息来开始演讲。

JDK 9和项目拼图目标

快速回顾拼图的目标。 有关更多详细信息,请参阅我关于它们的文章 。

模块化景观

简要介绍了Jigsaw项目的各种Java规范请求 (JSR)和JDK增强建议 (JEP)。

兼容性

Bateman对JDK公开的API进行了分类:

  • 受支持并打算供外部使用:
    • JCP标准:java。*,javax。*
  • 不适用于外部使用:sun。*,rest com.sun。*,rest jdk。*

他指出,如果应用程序仅使用受支持的API并在Java N上运行,则它也应在Java N + 1上运行。 Java 9将利用此功能并更改/删除Java 8中内部或已弃用的API。

然后,他开始管理兼容性,并提到了约瑟夫·达西(Joseph Darcy)撰写的一本帖子,他建议阅读“兼容性的种类:源,二进制和行为” 。 它揭示了兼容性的各个方面,并因此扩展了Java的复杂性。

JDK 9中不兼容的更改

本讲的大部分内容涵盖了Java 9会引起的各种不兼容性。 我的有关Java 9如何破坏您的代码的文章在很大程度上覆盖了这一点。

封装JDK内部API

Bateman首先介绍有关内部API使用的一些数据。 可以在幻灯片16上找到详细信息,但要点是,仅经常使用几个API。

不在野外使用或仅用于方便的API是非关键的。 默认情况下,这些将封装在Java 9中。那些在实际使用中很难或不可能在JDK之外创建实现的应用被视为关键。 如果存在替代方案,它们也将被封装。

在Java 9中将弃用没有替代方法的关键API,并计划在10中删除它们。JEP260为此提出了以下API:

  • sun.misc.Unsafe
  • sun.misc。{Signal,SignalHandler}
  • 太阳杂色清洁剂
  • sun.reflect.Reflection :: getCallerClass
  • sun.reflect.ReflectionFactory

如果您错过了清单中的某些内容,请与拼图团队联系并为您的案件辩护(并提供数据支持)。

然后 ,他探讨了如何使用jdeps查找内部API的用法。 本部分还包含一些示例,这些示例说明了如果在JDK 9上运行有问题的代码(从此处开始)会发生什么,以及如何解决此类问题(从此处开始)。

删除API

很快 以下6种方法在Java 9中将不存在:

  • java.util.logging.LogManager :: addPropertyChangeListener
  • java.util.logging.LogManager :: removePropertyChangeListener
  • java.util.jar.Pack200.Packer :: addPropertyChangeListener
  • java.util.jar.Pack200.Packer :: removePropertyChangeListener
  • java.util.jar.Pack200.Unpacker :: addPropertyChangeListener
  • java.util.jar.Pack200.Unpacker :: removePropertyChangeListener

JDK / JRE二进制结构的更改

通过将JDK和JRE合并到一个通用结构中,一些现有的实践将停止工作。

Bateman描述了旧的运行时映像目录布局的一些问题,并介绍了新的外观。 幻灯片29和30将两种布局并列:

版权所有©2015,Oracle和/或其分支机构。版权所有。

版权所有©2015,Oracle和/或其分支机构。 版权所有。

从Java 7开始,有了一个API,无论物理布局如何,工具都可以与这些文件进行交互。 这也意味着版本N可以访问版本N + 1文件。

删除的机制

如前所述 , 认可的标准覆盖机制和扩展机制将被删除。 它们将由可升级模块取代。

其他变化

有关更改的完整列表,请参见JEP 261 (风险和假设部分)。 贝特曼列举了几个:

  • 应用程序和扩展类加载器不再是java.net.URLClassLoader的实例。
  • 命令行参数-Xbootclasspath和-Xbootclasspath / p被删除。
  • 系统属性sun.boot.class.path已删除。

Java 9中的非拼图不兼容性

Bateman还简短地解决了两个与Project Jigsaw不相关但将在Java 9中显示并可能破坏某些代码的问题:

  • 版本字符串架构会更改。 有关详细信息,请参见JEP 223-它也可以很好地比较当前和将来的版本字符串。
  • 下划线不再允许作为一个字符的标识符。
由Ricardo Villar在CC-BY-NC 2.0下发布。

发布时间由里卡多·比利亚尔下, CC-BY-NC 2.0 。

您可以为Java 9做哪些准备?

您可以执行几个准备步骤:

  • 检查代码是否使用jdeps的JDK内部API。
  • 检查可能对版本字符串架构更改敏感的代码。
  • 检查代码是否使用下划线作为标识符。
  • 如果您开发工具,则通常检查代码是否依赖于rt.jartools.jar或运行时映像布局。
  • 测试JDK 9 EA构建和Project Jigsaw EA构建。

确保将任何意外或过分有问题的发现报告给Jigsaw邮件列表 。

问题

有几个问题,我选择了两个最有趣的问题。

库如何针对Java 8和Java 9?

JEP 238将引入多版本的JAR,即可以包含特定Java版本的专用代码的JAR。

对Java 8的支持何时终止?

舞台上没人知道确切的答案,所以他们指出了oracle.com上Oracle更新策略的文档 。 当前答案是:不早于2017年9月。

翻译自: https://www.javacodegeeks.com/2016/01/javaone-2015-prepare-jdk-9-blogcodefx.html

javaone

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

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

相关文章

android wifi 通讯录,通过wifi和gmail从symbian手机中将名片夹(通讯录)导入到android手机 | 古意人...

使用背景与条件:最近入手了android手机defy,机器到手后兴奋过度,马上将原symbian手机诺基亚E50的sim卡和内存卡都转移到了defy上,捣鼓了一段时间的defy,突然想起要同步原诺基亚手机的名片夹到defy中(android中貌似称为…

oracle aq_通过Java 8流使用Oracle AQ

oracle aqOracle数据库最令人敬畏的功能之一是Oracle AQ:Oracle数据库高级队列 。 AQ API直接在数据库中实现了完整的事务性消息传递系统。 在数据库处于系统中心的经典体系结构中,使用AQ进行进程间通信时,多个应用程序(其中一些…

c语言建立多个有名管道,命名管道一个非常经典的题目

#include /*特别注意写管道时,设置打开管道文件的格式必须为可写*/#define FIFO_SERVER "myfifo"#define OPENMODE (O_WRONLY | O_NONBLOCK)int main(int argc, char **argv){int fd;int nwrite;/*打开管道文件,可写非阻塞*/if ((fd open(FIF…

jit 方法内联_JIT编译器,内联和转义分析

jit 方法内联即时(JIT) 即时(JIT)编译器是Java虚拟机的大脑。 JVM中对JIT编译器的影响最大。 一会儿,让我们退后一步,看看已编译和未编译语言的示例。 诸如Go,C和C 之类的语言之所以称为编译语…

nodejs android 推送,利用Nodejs怎么实现一个微信小程序消息推送功能

利用Nodejs怎么实现一个微信小程序消息推送功能发布时间:2021-01-20 13:55:29来源:亿速云阅读:92作者:Leah今天就跟大家聊聊有关利用Nodejs怎么实现一个微信小程序消息推送功能,可能很多人都不太了解,为了让…

kafka spark_您在2016年会做什么? Apache Spark,Kafka,Drill等

kafka spark让我们玩得开心。 这是新的一年的开始-我们正处于新事物的门槛上-因此让我们期待您在2016年可能会做的事情。现在我知道做出预测的风险,尤其是有记录的预测,但是我很高兴您能在一年后回访,看看我对2016年的预测是如何完成的。 您…

android ini文件格式,ini是什么格式的文件?ini文件怎么操作?

类型:Android平台大小:622KB语言:中文 评分:5.0标签:立即下载ini文件主要存放用户所做的选择以及系统的各种参数。用户可以通过修改INI文件,来改变应用程序和系统的很多配置。自定义一个文件,会成一个deskt…

android开发 apk文件,android开发中,将数据库文件与APK一起发布?

2015-11-11 回答可以将xx.db文件复制到eclipse android工程中的res\raw目录中。所有在res\raw目录中的文件不会被压缩,这样可以直接提取该目录中的文件。使用opendatabase方法来打开数据库文件,如果该文件不存在,系统会自动创建/sdcard/dicti…

jpa 关联实体的关联实体_JPA实体锁定模式的差异

jpa 关联实体的关联实体JPA本质上提供了两种锁定机制,以帮助同步对实体的访问。 两种机制都可以防止以下情况:两个事务在不知道的情况下相互覆盖数据。 通过实体锁定,我们通常希望通过2个并行事务来防止以下情况: 亚当的事务读取…

华为p6电信版 android 4.5,华为P6电信版系统应用apk补全教程 完整EMUI

现在要说的是华为P6电信版的系统应用apk补全教程,给你一个非阉割版的完整EMUI系统。大家应该都知道,电信定制版由于华为系统服务与电信的定制APP功能重叠,语音助手、云同步、云端备份、手机找回等系统应用apk全被“阉割”掉了,这几…

黑马ee在职进阶视频_进阶– Java EE 7前端5强

黑马ee在职进阶视频系列继续。 在初步概述和Arjan关于最重要的后端功能的文章之后 ,我现在非常高兴让Ed Burns( edburns )使用他最喜欢的Java EE 7前端功能完成本系列。 感谢Markus Eisele让我有机会在他非常受欢迎的博客上发表帖子。 我和M…

如何构建股票ChatGPT查询全球股票市场以及常用Prompt

Blog:4 ways to use ChatGPT Stock Chatbot for stock analysis of Global Stock Markets NASDAQ NYSE LSE HKEX TSE NSE HANGHAI SHENZHEN 地址:http://deepnlp.org/blog/chatgpt-stock-global-market 全球股票市场:NASDAQ 纳斯达克, NYSE…

web.xml.jsf_看一下即将发布的JSF 2.3 Push支持

web.xml.jsf如前几篇文章所述,下一版本的JavaServer Faces(Mojarra)已添加了许多增强功能。 JSF 2.3计划于2017年与Java EE 8一起发布,但是您现在可以通过从源代码构建或运行里程碑版本来获得JSF的一些增强功能和更新以用于测试目…

android视频教程那个讲的最好,最全的android视频教程推荐 android视频教程怎么学习效果好...

很多同学对android学习很感兴趣,都对此有这样的疑问:“最全的android视频教程推荐,android视频教程怎么学习效果好?”那这里android培训专家就给我们来具体讲解下。Android开发学习主要是学习Android平台下开发的基础知识以及项目编程的实用…

android size_t在哪个头文件,size_t

size_t 类型定义在cstddef头文件中,该文件是C标准库的头文件stddef.h的C版。它是一个与机器相关的unsigned类型,其大小足以保证存储内存中对象的大小。例如:bitset的size操作返回bitset对象中二进制位中1的个数,返回值类型是size_…

jqgrid mvc_将JQGrid与Spring MVC和Gson集成

jqgrid mvc我在一个单页面应用程序上工作,我想在使用Spring MVC的应用程序的一部分中使用网格功能。 自从我上次使用JQGrid以来已经有一段时间了,找到让我起床所需的信息有点困难。 在这篇文章中,我想整理所有信息并将其放入教程中&#xff0…

javadocs_不会吸引人的JavaDocs源样本

javadocsJavaDoc源代码嵌入很烂! 我喜欢JavaDoc,但年龄不理想。 当您使用其他工具(例如,在Microsoft世界中)时,嵌入式示例突然变得惊人,并且内置了“搜索”功能! 我们为什么不能拥…

html语义化有哪些优点,语义化的HTML结构到底有什么好处?

相信大家都知道html和css,知道html结构和css表现分离,知道html语义化,这些都是这几年的热门关键字。语义化的html在国内也是一两年前才开始被追捧的,看看现在群里谈论的html结构,关于html结构的面试题,语义…

vert.x 分布式锁_使用Vert.x进行响应式开发

vert.x 分布式锁最近,似乎我们正在听到有关Java的最新和最好的框架的消息。 Ninja , SparkJava和Play等工具; 但是每个人都固执己见,使您感到需要重新设计整个应用程序以利用它们的出色功能。 这就是为什么当我发现Vert.x时令我感到宽慰的原因…

c语言 char c1,c2; for (c1='0',C语言-5循环结构(PPT)复习课程.ppt

C语言-5循环结构(PPT)复习课程.ppt第五章 循环结构程序设计;课程引入;第五章 循环结构程序设计;5.1 while 语句;例1:求;1. do-while循环语句的形式 do 循环体 while(条件表达式); ;表达式0?;【例5.3】while和do-while循环的比较。;一般格式&a…