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

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下发布。

由Ricardo Villar在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

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

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

相关文章

华为oj----iNOC产品部-杨辉三角的变形 .

此题提供三种方法,第一种,一开始就能想到的,设置一个足够大的数组存储生成的杨辉三角,然后进行判断就行,此方法参见:华为oj iNOC产品部-杨辉三角的变形 另一种方法是采用递归: 三角形的每行的个数为2*n-1,n…

java 短路判断_java中和的区别(|和|同理)

在java的基础面试题中肯定有这个问题:&和&&的区别?这个问题很好回答,核心思想就是一个不短路一个短路的问题。首先说下&,1、它可以表示二进制中的位运算分析:二元操作符,操作两个二进制数据…

不属于计算机完成科学特点的是,2020年9月网络教育统考计算机应用基础模拟题试卷4...

2020年9月网络教育统考计算机应用基础模拟题试卷4一、单选题1.______是第四代计算机的典型代表。A.微型机B.超小型机C.巨型机D.大中型机答案:A2.个人计算机又称PC机,这种计算机属于______。A.微型计算机B.小型计算机C.超级计算机D.巨型计算机答案&#x…

苹果13系统锁屏延迟_iPhone 11 锁屏出现延迟是怎么回事?

正常情况下,按下 iPhone 电源键,屏幕会立即息灭,有不少用户反馈按下锁屏键后,会有片刻的延迟才能关屏,虽然延迟并不是很长,但会给人造成“卡顿”的假象。很多人把原因归结为 iOS 13 系统,其实并…

html中img引入git动画,用Github五万颗星的css动画库, 为网页增添趣味性

css动画可以做到什么程度?Github上有一个非常优秀的动画项目, 足足有5万颗星!在线效果展示:animate整个项目只有一个css文件, 使用方法也非常简单, 只要给相应的元素添加class属性即可通过悬浮产生动画的小DemoAnimate的动画展示body, html{margin: 0;padding: 0;}#title{marg…

JQuery------鼠标双击时,不选中div里面的文字

如图&#xff1a;(去掉选中文字的蓝色背景色) 代码: //方法一:<div class"test" onselectstart"return false" >文字</div> //方法二: .test{-moz-user-select:none;-webkit-user-select: none; -ms-user-select: none; } 转载于:h…

限制ul显示高度_HP Envy 34寸超宽曲屏 显示器评测

先上结论&#xff1a;这是我目前不换显卡的前提下&#xff0c;能买到最好的显示器。估计在今后很长时间&#xff0c;它也算是一个相当好的显示器。如果你对显示器要求比较高&#xff0c;那么买这个显示器应该没错。显示器的指标如下&#xff1a;对角线34寸。基本就和27的16&…

linux wenj 立即生效_【新书连载】测试工程师核心开发技术(3)—远程登录Linux系统...

1.3.3 在线帮助命令下面对常用的在线帮助命令进行介绍。1&#xff0e;man命令man命令的作用是查看联机手册&#xff0c;命令格式如下。man [选项] 命令名称man后面的参数的含义如表1-1所示。表1-1 man后面的参数的含义输入man数字命令/函数即可以查到相关的命令和函数。若man…

利用Python进行简单的图像识别(验证码)

这是一个最简单的图像识别&#xff0c;将图片加载后直接利用Python的一个识别引擎进行识别将图片中的数字通过 pytesseract.image_to_string(image)识别后将结果存入到本地的txt文件中1 #-*-encoding:utf-8-*-2 import pytesseract3 from PIL import Image4 5 class GetImageDa…

北京人文计算机学院,北京人文大学计算机信息工程学院举行元旦晚会

2011年12月28日晚上8时许&#xff0c;北京人文大学第一阶梯教室座无虚席&#xff0c;计算机信息工程学院“2011年元旦晚会”在这里隆重举行。计算机信息工程学院副院长林月珍、喻新和&#xff0c;团委书记李四辈老师&#xff0c;学生处副处长肖淑芬老师&#xff0c;学生处副处长…

teamcity_TeamCity工件:HTTP,Ant,Gradle和Maven

teamcity您可以通过几种方式检索TeamCity工件&#xff1f; 我说有很多选择 &#xff01; 如果您使用的是Java构建工具&#xff0c;那么可以使用简单的HTTP请求&#xff0c;Ant Ivy&#xff0c;Gradle和Maven下载和使用TeamCity构建配置产生的二进制文件。 怎么样&#xff1f; …

arcgis双标准纬线等角圆锥投影_世界地图是怎么制作出来的,各投影算法的来历...

今天小编带大家了解一下下&#xff0c;目前通用的世界地图是怎样作出来的。一、通用的世界地图版本——“墨卡托投影”16世纪早期&#xff0c;正值大航海时代&#xff0c;航海家们发现很难将他们的航线画在图上&#xff0c;如何将球面上的一部分绘制在平面上&#xff0c;用直线…

计算机的iscsi配置,PC端的iSCSI参数设置方法

PC端的iSCSI参数设置方法上面介绍完NAS端的设置&#xff0c;接下来再来给大家介绍一下PC端的iSCSI设置&#xff0c;主要是实现在PC端上连接使用NAS上的iSCSI存储空间&#xff0c;这里我们以Windows 7 SP1系统为例(Windows8上的设置基本与之类似)。1.首先打开控制面板&#xff0…

纸筒制作机器人_5个万圣节小手工,带孩子一起动手制作,简单又有趣!

在西方国家&#xff0c;除了圣诞节&#xff0c;最受期待的节日莫过于是十月底的万圣节了&#xff0c;提起这个节日&#xff0c;这五大元素可以说是不错的体现&#xff1a;搞怪的南瓜、可爱的蜘蛛、萌萌哒蝙蝠、点睛之笔的蜡烛&#xff0c;以及可以用来迎客的门饰。今天我们就来…

原理c++_浅谈C/S和B/S架构的工作原理及优缺点

C/S架构一、C/S架构及其背景C/S架构是一种比较早的软件架构&#xff0c;主要应用于局域网内。在这之前经历了集中计算模式&#xff0c;随着计算机网络的进步与发展&#xff0c;尤其是可视化工具的应用&#xff0c;出现过两层C/S和三层C/S架构&#xff0c;不过一直很流行也比较经…

java笔记之线程方式1启动线程

* 需求&#xff1a;我们要实现多线程的程序。 * 如何实现呢? * 由于线程是依赖进程而存在的&#xff0c;所以我们应该先创建一个进程出来。 * 而进程是由系统创建的&#xff0c;所以我们应该去调用系统功能创建一个进程。 * Java是不能直接调用系统功能的&#xff0c;所…

全国职业院校技能大赛软件测试题目,我院荣获2017年全国职业院校技能大赛软件测试赛项一等奖...

6月6日&#xff0c;2017年全国职业院校技能大赛“软件测试”赛项在河南许昌落下帷幕&#xff0c;共有来自全国29个省市(自治区)的87支代表队261名选手参加比赛。由我院计算机系陈爽、张冬雪、侯博睿等三名同学组成的北京市第二代表队荣获大赛一等奖(第五名)。王红霞、温绍洁荣获…

ntp如何确认与服务器偏差_CentOS 8 启用 NTP 服务

NTP 服务是什么和为什么我们需要在我们的服务器启用 NTP 服务&#xff1f;可能很多人都不是非常了解&#xff0c;简单来说就是我们希望我们服务器的时间是准确的没有偏差的。这个的意义在数据插入和你程序取得计算机时间的时候是准确的。比如说在 java 中如果 new date() 将会获…

JavaFX上手--第1天

1.第一个JavaFX Application JavaFX 使用Java来制作可视化图形&#xff0c;可以做动画和3D效果&#xff0c;JavaFX从JDK中直接使用。 package application;import javafx.application.Application; import javafx.stage.Stage; import javafx.scene.Scene; import javafx.scene…

机制 linux_从一道面试题谈linux下fork的运行机制

今天一位朋友去一个不错的外企面试linux开发职位&#xff0c;面试官出了一个如下的题目&#xff1a;给出如下C程序&#xff0c;在linux下使用gcc编译&#xff1a;#include "stdio.h"#include "sys/types.h"#include "unistd.h"int main(){pid_t …