Java 9的JDK中值得期待的:不仅是模块化

【译者注】在本文中,作者介绍了即将在9.21发布的Java 9新特性,除了最重要的模块化以外,还涉及到编译,工具,协议,缓存等新特点,也提及了在此次版本中移除的功能,供Java爱好者阅读和参考。

以下为译文:

在多次延期后,Java
9将于9月21日以Java开发工具包9的形式出现,这是自2014年3月以来,Java标准版的第一次重大升级。官方列出了JDK
9的大约90个新特性,模块化是最主要的一个。将Java重新配置成模块化格式,这项任务已经持续了多年,但在编译、代码缓存和JavaScript部署等领域也会有其他改进。

JDK 9的Java平台模块系统

Java 9最宝贵的特性,即模块化——以Java平台模块系统的形式——旨在将JDK分为运行、编译或构建时的一组模块。模块化被称为“可传递”的变化,这可以更好地理解跨模块的依赖关系。

Java
9的模块化方面包括应用程序打包、模块化JDK以及将源代码重新组织到模块中。在构建时,构建系统将强化编译模块并加强模块边界。JDK和Java运行环境(JRE)的镜像将被重构,以此来处理模块。同时,JavaFX
UI控件和CSS API也将被模块化。

JDK 9将支持许多配置,可伸缩性、安全性和应用程序性能也会得到改进。将Java简化为小型设备是模块化工作的关键。Java平台模块系统,是 Jigsaw项目 的一个组件,也将被实现。

通过模块化,开发人员能够更好地为Java SE(标准版)和EE(企业版)构建和维护大型应用程序。但Oracle、IBM、Red
Hat和其他公司关于如何在平台上做出彻底改变的问题上存在分歧。该模块系统在5月曾被否定,但在6月进行了第二次投票后,才获得批准。

关于模块化是否会对Java开发人员有着很大的好处,还存在争议,一些专家表示赞成,而另一些专家则不赞同。但不管怎样,Oracle一直在努力实现模块化平台。

为了实现模块化,已经多次延迟了Java 9的发布,因为Oracle一直在尝试更简单地迁移到Java 9,并且计划允许对类路径上的代码进行非法的反向访问,同时JRE会使用它来搜索类和资源文件。此功能将在Java 9之后被禁用。

在Java 9的JDK中编译

Java 9为编译代码提供了几种新功能,其中最主要的功能是提前编译。这个功能仍然处于实验阶段,此功能允许在虚拟机启动之前将Java类编译为本机代码。该特性旨在提高小型和大型应用程序的启动时间,同时对峰值性能几乎没有影响。

即时(JIT)编译器速度很快,但是Java程序已经变得如此之大,以至于JIT需要很长时间才能完全启动,这使得一些Java方法无法编译,性能也越来越弱。提前进行编译是为了解决这些问题。

但Java技术供应商Excelsior的市场总监Dmitry Leskov担心,这种时间上的编译技术还不够成熟,并希望Oracle能在Java 10后再推出更可靠的版本。

Java 9还实现了Oracle智能编译部署的第二阶段。这个特性包括改进javac工具的稳定性和可移植性,以便在JVM(Java虚拟机)能默认使用它。该工具也将被推广,因此它可以用于JDK之外的大型项目。

另一个新的实验,编译特性是java级别的JVM编译器接口(JVMCI)。这个接口允许用Java编写的编译器被JVM用作动态编译器。JVMCI的API提供了访问VM结构、安装编译代码和插入JVM编译系统的机制。

用Java编写的JVM编译器应该需要一个高质量的编译器,它比用C或c++编写的现有编译器更容易维护和改进。另外,现有支持Java编译器的项目有 Graal 和 Metropolis 。

新的编译器控制功能旨在控制JVM编译器的细粒度和方法依赖,让开发人员在运行时更改编译器控制选项,而又不会造成性能下降。该工具还可以为JVM编译器错误提供工作区。

Java 9的JDK还将更新javac编译器,这样它就可以编译Java 9程序,以运行在一些Java的旧版本上。

Java 9实现了REPL

Java 9将会有一个read-eval-print loop(REPL)工具——这是Java的另一个长期目标,经过多年的Kulia项目开发之后,在这个版本中它将变得真实。

Java 9的REPL被称为jShell,它交互式地评估声明语句和表达式。开发人员只需输入一些代码,就可以在编译之前获得对程序的反馈。

命令行工具的功能包括结束标签和自动添加所需的终端分号。jShell API允许在IDE和其他工具中使用jShell功能,尽管工具本身并不是IDE。

人们认为,缺乏REPL工具是院校越来越不愿授课Java的一个原因(Python和Scala等语言早就有REPL了)。Scala语言的创始人Martin Odersky质疑Java的REPL的实用性,他说Java是面向语句的,而REPL是面向表达式的。

JDK 9中实行代码缓存分段

JDK 9允许将代码缓存分成几个部分,以提高性能,并允许扩展(比如细粒度的锁)。由于专门的迭代器会跳过非方法代码,所以扫描时间需要被提高。分离非方法、异形和非异形码,提高一些基准测试的执行时间。

Java 9支持更多的标准

Java 9增加了对几个标准的支持。

新的HTTP/2 client
API实现了HTTP/2协议,同时升级到Web的核心HTTP协议和WebSocket协议,基于浏览器的交互式通信。新的API可以替代HttpURLConnection
API,HttpURLConnection API的问题是它包含已经失效的协议predating
HTTP/1,这个太抽象,很难使用。但是,在JDK 9发布时,新的HTTP/2 API仍然处于beta测试阶段。

JDK 9还增加了对 HTML5 的支持。Javadoc API文档工具功能已经被增强,可以生成HTML5标记。

Java 9还将支持Unicode 8.0编码标准,该标准增加了8000个字符、10个模块和6个脚本。

对于安全性,Java 9为DTLS(数据包传输层安全性协议)添加了一个API。该协议的设计目的是防止在client/server通信中出现窃.听、篡改和消息伪造,这将为客户端和服务器模式提供一个安全模式。

JDK 9获得了更多的JavaScript支持(Nashorn项目)

Nashorn项目
是为了能让JavaScript在Java上进行高性能且轻量级的运行,这是在Rhino项目后的Netscape开始进行的。Nashorn项目负责在Java应用程序中嵌入JavaScript。其实在JDK
8中已经为Java提供了一个JavaScript引擎。

JDK 9将包括一个用于ECMAScript语法树的解析器API。API将通过IDE和服务器框架实现ECMAScript代码分析,而不依赖于Nashorn项目的内部实现类。

Java 9弃用和移除了哪些功能

Java 9弃用和移除一些不再流行的特性。其中最主要的是Applet
API,它将被弃用。现在,安全浏览器已经取消了对Java浏览器插件的支持,因为这些已经过时了,HTML5的出现也加速了它们的灭亡。开发人员将转向到诸如Java
Web Start这样的替代方案,用于在浏览器中启动应用程序或者安装应用程序。同时,appletviewer工具也被弃用了。

Java 9将弃用Concurrent Mark Sweep (CMS)垃圾收集器,并在未来的版本中停止支持它。其目的是加速在HotSpot虚拟机中的其他垃圾收集器的开发。低暂停G1垃圾收集器将是CMS的长期替代品。

与此同时,JDK 8中被弃用的垃圾收集组合将在JDK 9中删除。这之中包括很少使用的组合,如增量CMS、ParNew + SerialOld和DefNew + CMS,因为它们增加了垃圾收集器代码库的额外复杂度。

Java 9还将对import语句进行省略Java警告,以帮助大型代码库清除lint警告。在这些代码库中,对被弃用的功能,还会支持一段时间,而且如果是有目的地要使用一个被弃用的构造,那么导入弃用的构造就不需要发出警告消息。

在启动时通过多个JRE(mJRE)特性选择JRE的功能也被弃用。这种功能很少被使用,因为这会使Java启动器的实现变得更加复杂,并且在JDK 5中首次出现时,它从未被完全地实现。

Oracle正在删除JVM TI(工具接口)hprof(堆分析)代理,它已被JVM取代。jhat工具也被删除了,它已经被高级的堆可视化工具和分析器淘汰了。

作者:Paul Krill

来源:51CTO

时间: 2024-12-30 17:16:21

Java 9的JDK中值得期待的:不仅是模块化的相关文章

java源码-为什么jdk中的类不能被重写啊?

问题描述 为什么jdk中的类不能被重写啊? 是jvm有什么保护措施吗?我的意思就是,假设:我自己写一个String类会和jdk中的冲突,也就报错,写不了,为什么呢?跪求 解决方案 这是Java的类加载机制决定的,Java使用的是委托父类加载,所有的Java类库都是由指定的类加载器加载的,即使你定义一个一模一样的String类,最终引用加载的仍然是Java类库的类.这就是Java防止篡改的原理. 解决方案二: 当然是这样,否则很可怕了.比如说你的程序中有一个加密的逻辑,有人编写一个恶意的插件程序,

Java Web Start学习,与JDK中keytool常用命令

Java Web Start(以下简称JWS)是SUN提供的一种通过Web来部署和发布Java 程序的新技术,它既可以用来发布Application,也可以用来发布Applet,它获去年全球Java技术最佳创意奖.它仅在第一次运行时下载程序,以后的事情,就全全交给JWS,包括版本的自动更新和维护.这是我们曾经梦寐以求的事情,程序运行在客户端(本地运行,当然有足够的速度),但不用去安装配置客户端,也不用去考虑版本升级后对客户端的维护,这就是JWS提供给我们的好处之一.OK,下面我们就来看看如何玩转

窝轮视点:中移动表现值得期待留意其认股证

2009年6月9日,恒生指数剧烈震荡,早盘在ADR造好的推动下高开近200点,唯高位遇压,盘中曾跌穿18000点重要关口:但投资者逢低捞货的意愿较强,恒指跌至17710点低位后探底回升,跌幅大幅收窄,最终险守18000点,全日收于18058点,跌幅为1.07%,大市成交719亿港元. 美股方面,周二延续高位窄幅振荡,严重缺乏方向,道琼斯指数仅跌0.02%.而ADR却是另一番景象,几乎全线上涨,汇丰控股和中国铝业表现最佳,较香港收市价高出逾2%,预计港股早盘有望跟随ADR造好高开逾百点.另外,内地

2016年大数据专家值得期待的8件事

随着经济的复苏,全行业又掀起了雇佣潮,企业更偏向技能娴熟的应聘者.当然,这在聘用大数据专家时也一样奏效.数据质量总监.软件工程师.平台软件工程师.数据库工程师.大数据平台工程师,安全分析师,分析师和信息系统开发管理工作这些职位都需要精通大数据.很明显,大数据在接下来的发展的中将变成"更大的"数据. 在此列举八件2016年大数据专家值得期待的事: 1. 收入增长 如果你有大数据的专业技能,说不定你可以拿到124000美元年薪,其中不包括奖金及其它补贴哦. 2. 美国西海岸和东海岸的从业者

CSS中值得记住的一些技巧

  这篇文章主要介绍了CSS中值得记住的一些技巧,文中介绍的这些属性在平时的应用中虽然不是经常能够见到,但非常有效率,需要的朋友可以参考下 Box-sizing 尽管box-sizing在CSS3中才被引入,其有一个值是border-box,让元素的高和宽包含了填充和边框. CSS Code复制内容到剪贴板 .div { width: 150px; height: 100px; border: 1px solid #ccc; box-sizing: border-box; } Chrome 31

Win9值得期待的十大特色功能

  根据最近多则媒体报道内容显示,微软即将推出最新一代操作系统Windows9.本月早些时候,有报道称微软将推出最新版本的操作系统,该款操作系统就目前所言被命名为Threshold,Threshold的发布日期可能在9月底或者10月初.另外一家媒体则爆料称微软计划在当地时间9月30日举行新闻发布会,在会上微软研发的最新版操作系统将同公众见面. 如今距离Windows 9首发的日期越来越近,许多个人消费者和企业消费者都对新的Windows操作系统有何特色功能和项目十分感兴趣.此前推出的Window

性能值得期待,AMD Ryzen 5/Ryzen 3处理器模拟测试

AMD在三月初发布了锐龙Ryzen 7处理器,强劲的性能与极佳的性价比受到了玩家大量的好评,市场的反应也相当火,三款产品卖得都相当好,不过首批的Ryzen 7毕竟是高端的八核,售价2499元起步受众还是比较少的,目前来说对Intel的影响有限,而下个月要发售锐龙 AMD Ryzen 5处理器才是直刺要害.想要看实时播报更快收到消息的网友,可以多留意下小超哥(weixin:9501417)朋友圈. 性能值得期待,AMD Ryzen 5/Ryzen 3处理器模拟测试 性能值得期待,AMD Ryzen

探班真视通新办公区装修 全LED照明展厅值得期待

真视通于2015年11月26日通过拍卖方式竞得位于北京市朝阳区裕民路12号1号楼11层的房产,总面积约3700余平米.经多方面的报批手续,新办公区装修工程于今年5月份正式开工,其中多媒体显示系统.视频会议系统.多媒体培训教室,数据中心等模块均由真视通自行规划设计,并进行项目实施. 最值得期待的就是由真视通技术中心设计的展厅,展示涵盖了大数据可视化系统.云视讯系统等真视通先进的技术解决方案和产品.乔迁后,欢迎行业专家.合作伙伴.客户来真视通同参观指导.  另外值得一提的是,新办公区照明全部采用LE

java-3DES JAVA实现。IDE中正常运行,jetty部署报错。tomcat部署却又能正常运行

问题描述 3DES JAVA实现.IDE中正常运行,jetty部署报错.tomcat部署却又能正常运行 都是在本机部署,使用相同的jdk 1.6.错误如下:java.security.NoSuchAlgorithmException: Cannot find any provider supporting DESede at javax.crypto.Cipher.getInstance(DashoA13*..) 该问题不知如何解决.... 望高人指点,感激涕零,不胜荣幸. 解决方案 ... .