Java 10新特性解密

随着Java开发工具包(JDK)9的发布,大量的注意力都集中在Java的最新特性上,包括引入模块(通过集成项目Jigsaw)。尽管最近的很多关注都集中在这些强大的新功能上,但下一个版本的Java:JDK 10已经开始准备了。在本文中,我们将粗略地介绍一下JDK 10的主要特性,并探讨JDK 10中可能包含的一些特性。

请注意,本文中所包含的信息在写本文时是准确的。但是到发布时,JDK 10特性组预计将会增加。

新功能

与之前的JDK版本一样,对于即将到来的JDK 10也有一些主要特性。这些特性可以分为两个主要类别:(1)目标发布,(2)建议发布。前者表示某些特性已计划在JDK 10中发布,后一种类型表示这些特性还需要增加支持和成熟度。一旦条件允许,它就可以升级为一个目标发布状态。

目标发布

目前有两个主要功能针对JDK 10:

(1)局部变量类型推断,这将删除大部分对象实例化所需的冗长的包含手动类型信息
(2)整合源树source tree的JDK库,即不同的JDK库将被合并成一个单一的存储库。

1.局部变量类型推断

强类型编程语言有很多优点,包括在编译时发现类型错误,但是它们也引入了大量的样板代码,特别是在定义局部变量时。例如,当我们希望实例化一个对象时,我们被迫在赋值的左侧提供显式类型,并在赋值的右边提供实现类型,如下面的片段所示:

MyObject value = new MyObject();

但是,当这个过程重复出现大量任务时,对象实例化可能变得令人沮丧和乏味。许多最流行的强类型的编程语言,比如C++, C#以及Go,在定义过程中,提供一种局部变量类型推断的功能(例如C++提供了auto 关键字,C#提供var关键字)。但是,Java仍缺乏这样的功能,它要求开发人员显式声明变量的预期清单类型。为了解决这个问题,Java开发工具包(JDK)改进建议(JEP)286提出了一个上下文敏感的关键字var,允许局部变量被以下方式初始化:

var value = new MyObject();
var list = new ArrayList();

由于var关键字是上下文敏感的,它的使用有下面的规则定义:

代码使用var作为一个变量、方法或包名称时将不受影响;而使用var作为类或接口名称的代码将受到影响。

同样,类型推断将受到以下方式的约束:

推断类型将被限制在局部变量的初始化,增强的for循环索引,以及传统的for循环中声明;它(将)不用于方法形式、构造函数形式、方法返回类型、字段、捕获形式,或任何其他类型的变量声明。

考虑到所有的限制和细微差别,这个特性将有助于在开发人员创建的应用程序Java代码中减轻大量的单调无聊的动作,并简化JDK代码库。更多信息可以在官方的JEP 286规范中找到。

2.整合的JDK库

目前,有8个不同的Mercurial存储库用于存储包含JDK的大量源代码:(1)root,(2)corba,(3)hotspot,(4)jaxp,(5)jaxws,(6)JDK,(7)langtools,(8)nashorn。虽然过多的存储库提供了对组成JDK的各种组件并清晰分离,但管理多个存储库存在一些主要的缺点。

其中最重要的一点是,在JDK的两个不同部分,单个错误修复程序不能被原子跟踪。例如,如果一个bug修复需要对独立存储库中包含的系统的两个部分进行更改,那么必须提交两个提交:每个存储库中一个。这种不连续性很容易地降低项目和源代码管理工具的可跟踪性和复杂性。

为了解决这个问题,JEP 296建议将所有现有存储库合并到一个Mercurial存储库中。这种合并的一个次生效应是,这个单一的Mercurial存储库比现有的8个存储库要更容易的被镜像(作为一个Git存储库)。虽然在这个整合过程中,外部开发人员有一些阻力,但是JDK开发团队似乎已经致力于使这一更改成为JDK 10的一部分。有关更多信息,请参见JEP 296,并提议整合由Michael Redlich发布的JDK 10 OpenJDK Mercurial存储库声明。

建议发布

除了两个目标特性之外,JDK 10目前还有三个建议,其中两个主要是对JDK的垃圾收集器部分进行升级,另一个侧重于对JDK的本地线程功能进行升级。

1.清理垃圾收集接口

在当前的JDK结构中,组成垃圾收集器(GC)实现的组件分散在代码库的各个部分。尽管这些惯例对于使用GC计划的JDK开发者比较熟悉,但对新的开发人员来说,对于特定GC的源代码,或者创建一个新的GC常常会感到困惑。更重要的是,随着Java modules的出现,我们希望在构建过程中排除不需要的GC,但是GC接口的当前横切结构排除了这种增强。

JEP 304被设计为解决此问题的方案,并建议整合并清理GC接口,以便更容易地实现新的GC,并更好地维护现有的GC。本建议完成后,GC执行将负责提供以下内容:

  • heap,CollectedHeap的子类
  • barrier set,BarrierSet的子类,它实现了运行时的各种障碍
  • 一个CollectorPolicy的实现
  • GCInterpreterSupport的实现,它实现了解释器的GC的各种障碍(使用汇编指令)
  • GCC1Support的实现,它为C1编译器实现了GC的各种障碍
  • GCC2Support的实现,它为C2编译器实现了GC的各种障碍
  • 最终GC特定参数的初始化
  • 设置MemoryService、相关的内存池、内存管理器等。

有关这些更改的更多信息,请参见JEP 304规范;有关Java GC的更多信息,请参阅Oracle提供的垃圾收集器基础指南。

2.G1垃圾收集器并行化

随着JDK 9的发布,Garbage-First(G1)GC取代了Parallel Collector作为默认GC。为了减少JDK 9之外的JDK版本中垃圾收集的影响,G1收集器将被并行化(以匹配并行收集器的特征)。虽然目前还没有关于这个并行化的实现细节的信息,但是可以在JEP 307规范中找到关于此更改的更多细节。有关GC实现的更多信息,请参阅Oracle的G1指南和并行收集器指南。

3.项目线程局部握手

当前,停止Java线程是一个“全部或没有”的过程,需要一个Java虚拟机(JVM)的安全点,以使一个线程停止。为了让单独的线程停止,JEP 312提议将回调包含到线程中。这一更改受到了限制,因为它显著地提高了现有JVM功能的性能开销,并且改变了到达JVM全局安全点的现有时间语义。有关这个建议的更多信息,请参阅JEP 312的Thread-Local Handshake OpenJDK讨论。

结论

尽管JDK 9对于许多Java开发人员非常新鲜,但它的发展并没有停止。特别是,JDK 10承诺为局部变量实例化引入类型推断机制,并将现有的JDK存储库合并到一个Mercurial存储库中。此外,在更成熟和更支持的情况下,JDK 10还可能包括一些重要的升级到GC接口和默认的GC实现,以及升级到JVM中单个线程的可寻址能力。虽然JDK 10的发布在未来仍然相对较远,而且包含的特性很可能会增加,但它已经承诺将大量的内容带入其中,并且很可能成为Java时间轴上的一个重要里程碑。

原文链接:What’s Planned for JDK 10?(责编/魏伟)

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

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

相关文章

html清楚css的影响,08、清除浮动的影响.html

Document.box{width:500px;background-color: darkcyan;}.box1{width:200px;height:600px;background-color: darkorchid;margin-top:200px;}.box2{width:200px;height:200px;background-color: darksalmon;clear:both;/* clear:left; 清除左浮动的影响。clear:right; 清除右浮…

智慧气象机器_智慧电缆隧道火热建设中 传感器+机器人成标配

智慧城市是指利用各种信息技术或创新概念,将城市的系统和服务打通、集成,以提升资源运用的效率,优化城市管理和服务,以及改善市民生活质量。它把新一代信息技术充分运用在城市中各行各业基于知识社会下一代创新(创新2.0)的城市信息…

继续教育统考英语计算机监考严吗,网络教育统考监考严吗

网络教育统考监考严吗?其实这个问题只要是好好复习考试的考生来说都是没有多大的问题的,但是可能对于很多人来说更没有时间复习,那么我们就来聊聊网络教育统考监考难不难以,及网络教育作弊的几率高不高的问题。网络教育统考监考严吗网络教育…

不服来战,看Kotlin如何完爆Java

前言:Kotlin因支持谷歌和简化Android开发而声名鹊起。看看它如何解决Java的许多痛点。 Why Kotlin? 如果我今天被问到如何区别开发Android应用程序与其他领域开发时,我会毫不犹豫地回答,以原生方式在不同硬件上执行相同应用程序可能会是其…

算法代码中的循环矩阵在哪体现_「Machine Learning 学习小结」| 向量在梯度下降算法当中的应用...

写在前面:在之前的文章当中提到过,学习梯度下降算法,可能需要一点点线性代数的知识。在本篇文章当中,我们的讨论就涉及到了向量。笔者也曾提到,不妨把向量看成对数据进行批量操作的一种工具,这样可能对我们…

计算机用户 图片存储位置,手机相册在哪个文件夹,详细教您手机图片存放在哪里...

现在使用手机的用户是越来越多了,手机质量都非常好,因此才会受到许多人的褒奖。不过有用户却遇到了,用手机拍摄了照片或者用手机截图,手机连上电脑后,却在电脑上找不到图片,怎么办,下面&#xf…

揭秘京东文件系统JFS的前世今生,支持双11每秒约10万个对象同时读写

背景 作为一家大规模的自营式电商企业,京东需要存储海量的非结构化数据:商品图片、订单文本、仓库流转记录、App客户端文件、日志文件、内部文档等。对于存储这些数据,之前并没有统一的解决方案,都是各个业务线自行解决——MySQL …

计算机的复数英语怎么读,英语的复数怎么读

目录1.土豆的复数英语怎么读1.英语中的月份的复数 怎么读 读音? months 最后两个辅音,是否可以省略一个。2.在清辅音后,读/s/,如books, 在浊辅音和元音后,读/z/,如dogs,boys 当然。3.名词复数词尾的读音:1)…

java map清除值为null的元素_Java中的集合框架大总结

直接上图:从上面的集合框架图可以看到:Java集合框架主要包括两种类型的容器,一种是集合(Collection),存储一个元素集合;另一种是图(Map),存储键/值对映射。Collection接口又有两个子接口,List和…

土木转计算机 但计算机学院不好,土木妹子转计算机,较高三维水科研,求指导!...

2016-12-15velvetvalley个人情况当前阶段大四本科院校某中流985,top30本科专业土木,辅修计算机GPA土木91.6/100,10/111;计算机88.4/100,1/23GRE/GMAT3284语言成绩109目标专业计算机科学计划留学年份:2017秋季个人背景:一个水国创,…

十位值得关注的Java顶级专家

网上有太多的声称Java大牛的大V,到底哪些值得关注,本文也许可以帮助你。 如果你是Java开发者,关注几位经验丰富的Java大牛,并随时了解他们的关注焦点对于自己肯定是非常有好处的。然而,今天在网络上,有太多…

关于计算机软件系统分类能够匹配的有,以下关于计算机软件系统分类能够匹配的有:...

摘要:关于够匹比低高强钢筋筋的极限度钢大强度应变拉伸。统分变异系数主观权是一种法赋赋权法。关于够匹对第的说确的物流法正三方是(。...关于够匹比低高强钢筋筋的极限度钢大强度应变拉伸。最大区边压应缘力在受压,计算机软件系破坏截面梁正适筋受弯时…

开关 关闭_无论用什么品牌手机,这个开关要关闭,以免耗电又卡顿,抓紧试试...

各位观众老爷大家好,给大家鞠个躬,每天给大家分享实用的生活小妙招。现在我们的工作生活中已经离不开手机,平时用久了手机卡顿不流畅,耗电也会随之增加,其实有可能是没有把这几个开关关闭,今天和大家分享一…

卷积神经网络中十大拍案叫绝的操作

来源 | 知乎作者 | Professor hoCNN从2012年的AlexNet发展至今,科学家们发明出各种各样的CNN模型,一个比一个深,一个比一个准确,一个比一个轻量。我下面会对近几年一些具有变革性的工作进行简单盘点,从这些充满革新性的…

事业单位计算机初级考试科目一模拟试题,广东教师资格考试之科目一模拟题

教师资格考试的竞争越来越激烈,为了能够在考试中脱颖而出少不了平日里的练习积累!那就让我们一起开始练习吧!1.某学生家长给张老师发微信红包,想让张老师平日里对自家孩子多多费心,张老师拒绝了。张老师的做法( )。A.不正确,无法取…

提高代码可读性的10个技巧

在本文中,作者从注释,缩进,代码分组,命名方式等方面,介绍了10个提高代码可读性的技巧,供读者学习和借鉴。 以下为译文:如果你的代码很容易阅读,这也会帮助你调试自己的程序&#xff…

内蒙古一级计算机考试时间2015,2017年内蒙古计算机一级考试报名时间

2017年内蒙古计算机一级考试报名时间一级分为DOS版和Windows版,考核应试者计算机基本知识和使用微机系统的初步能力,那么,2017年内蒙古计算机一级考试报名时间是什么时候?一起来看看:2017年内蒙古计算机一级考试报名时…

去掉数组最后一个元素_leetcode 34. 在排序数组中查找元素的第一个和最后一个位置每天刷一道leetcode算法系列!...

作者:reed,一个热爱技术的斜杠青年,程序员面试联合创始人前文回顾:leetcode1. 两数之和--每天刷一道leetcode系列!leetcode2. 两数相加--每天刷一道leetcode系列!leetcode3. 无重复字符的最长子串--每天刷一…

6个月清洗近千亿条微信支付交易记录,他们要搞什么大事情?

本文转载自腾讯技术工程官方号背景:2013年8月,微信红包上线。2014年春节微信红包引爆社交支付。2015年春晚红包摇一摇,推动微信红包在全国迅速普及。此后,每逢节假日或特殊日子,人们都会自主的兴起发红包,使…

计算机原理 信息化教学设计,小学数学信息化教学设计

一、信息化教学设计的理论基础现在,建构主义倡导的“发现式教学”成为一种重要的教学策略,但笔者认识并不是所有的教学内容都适合于运用发现式教学,奥苏贝尔的“接受式”教学仍然是一种最经济、便捷和有效的教学方式。它既是对现代教学的一种…