您的位置:网站首页 > Java软件 > 正文

关于 Java 9 你所需要知道的一切

类别:Java软件 日期:2017-9-29 1:48:01 人气: 来源:

  Java SE 9 搭载了模块化、REPL、编译器优化以及很多其他功能,一直以来 Java 的版本命名和发布周期也将发生重大变化。

  Java 9 -- 正式的名称是 Java 平台标准版版本号 9 - 终于发布了,Java 开发工具包(JDK) 也已经可供开发者下载。

  新版本增加了几个重要且富有争议的功能,同时它也是一直以来遵循 Java 版本命名规范和发布周期的最后一个版本。

  在 Java SE 8 发布将近三年后,Java SE 9 终于发布,它带来几个重大的架构变化,以及一系列的改进。

  基于 Jigsaw 项目,这个新的富有争议性的模块化能力肯定会引来最前沿 Java 开发者的兴趣和尝试,即使会有更保守的开发者决定等待模块化的成熟。

  模块化-以 Java 平台模块系统的形式-将 JDK 分成一组模块,可以在运行时,编译时或者构建时进行组合。模块化被称为一个“可传递”的更改,它支持对模块间依赖的理解。

  Java 9 的模块化能让开发者更容易的组合和复杂的应用程序。同时,它也使 Java 在改进安全和性能的同时能够更好的适配到更小的设备中。

  Java 9 的模块化包含应用打包,JDK 自身模块化,以及将源码重新组织成多个模块。构建系统在构建时编译模块和识别模块边界的能力也得到增强。JDK 和 Java 运行时(JRE)的镜像经过重构以处理模块化。另外,JavaFX UI 控件和 CSS APIs 现在也支持模块化方式访问。

  Java 9 支持很多配置,因此,可伸缩性,安全性和应用程序性能应该得到改善。让 Java 更容易适配到小型设备中是模块化的关键推动力。

  通过模块化,开发者将能够更好的使用 Java SE(标准版本) 和 Java EE(企业版本) 构建和函数库和大型应用。但在 Java 9 开发期间,Oracle,IBM,Red Hat 和其他公司关于如何在 Java 平台实施这样的重大改动有很大的分歧。模块化系统本身在五月份被否决,取得一定进展后,在六月份第二次投票中才获得批准。

  即使主要的 Java 供应商之间已经取得了一致,但关于模块化能给 Java 开发者带来多大好处,专家们褒贬不一。无论如何,Java 9 现在已经支持模块化了。

  为了更容易的将代码迁移到模块化的 Java 9,Java 9 允许开发者对类径中的代码进行非法的反射访问,这一能力被 JRE 用来搜索类和资源文件,当然,这个能力在 Java 9 之后将会禁用。

  Java 9 的升级带来了几个代码编译的新功能,其中最主要的是 AoT(ahead-of-time)编译。虽然仍处于试验阶段,但这个功能使得 Java 应用在被虚拟机启动之前能够先将 Java 类编译为原生代码。此功能旨在改进小型和大型应用程序的启动时间,同时对峰值性能的影响很小。

  JIT(Just-in-time)编译器速度很快,但是 Java 项目现在变得很大很复杂,因此 JIT 编译器需要花费较长时间才能热身完,而且有些 Java 方法还没法编译,性能方面也会下降。AoT 编译就是为了解决这些问题而生的。

  Java 9 同时还提供了 Oracle 智能编译部署的阶段二功能。这个功能包括改进了 `s javac` 工具的稳定性和可移植性,从而能够被 JVM 默认使用。这个工具也将会做得更通用,从而可以使用在除 JDK 之外的其他大型项目中。JDK 9 还更新了 `javac` 编译器以便能够将 java 9 代码编译运行在低版本 Java 中。

  另一个新的同时也是试验性的功能是 JVMCI(Java-level JVM Compiler Intece)。通过这个接口,用 Java 编写的编译器可以被 JVM 当作动态编译器使用。JVMCI 的 API 提供访问虚拟机结构,安装编译过的代码,以及插入 JVM 编译系统中的机制。

  使用 Java 编写的 JVM 编译器相比已有的用 C 或者 C++ 编写的编译器,能够在保持高质量的同时更容易和改进。因此,使用 Java 编写的编译器本身应该更容易和改进。其他使用 Java 编写编译器的尝试包含 Graal 项目和 Metropolis 项目。

  新的编译器控制能力旨在为 JVM 编译器提供细粒度和方法上下文相关的控制,让开发者在运行时不降低性能的前提下修改编译器控制选项。这个工具还支持为 JVM 编译器存在的 bug 提供解决方法。

  Java 9 的 REPL 名为 jShell,以交互式的方式对语句和表达式进行求值。开发者只需要输入一些代码,就可以在编译前获得对程序的反馈。

  命令行工具的功能包含 tab 自动补全和自动添加分号。jShell API 支持在 IDE 和其他工具中使用 jShell 功能,虽然这个工具本身不是 IDE。

  Java 的 Steam 让开发者能够快速运算,从而能够有效的利用数据并行计算。Java 8 提供的 Steam 能力能够利用多核架构实现声明式的数据处理。

  在 Java 9 中,Stream API 通过新增方法, 实现有的从 Stream 中添加或者移除元素,遍历 Stream 中的元素,以及通过扩展 Java SE API 集合实现从空值创建流的功能。

  JDK 9 支持将代码缓存分割成段,从而提高性能并实现扩展功能,例如细粒度锁。由于使用专门的迭代器忽略非方法代码,分离非方法,剖析和非剖析代码,结果扫描时间将得到改进。某些基准的执行时间也得到改进。

  HTTP/2 API 可以用来代替 HttpURLConnection API,后者存在一些缺点,包括当初是为现在已经失效的协议所设计,早于 HTTP/1,接口定义太抽象以及使用起来不容易。

  在 JDK 9 中,Javadoc 文档工具经过增强现在支持生成 HTML5 标记文档。Unicode 8.0 编码标准也得到支持,该标准新增 8000 个字符,10 个块和 6 个脚本。

  为了安全,Java 9 新增支持 DTLS(Datagram Transport Layer Security) 的 API。这个协议用来在客户端服务器通信中防止,,消息伪造等。客户端和服务端模式都提供了实现。

  Java 9 废弃或者移除了几个不常用的功能。其中最主要的是 Applet API,现在是标记为废弃的。随着对安全要求的提高,主流浏览器已经取消对 Java 浏览器插件的支持。HTML5 的出现也进一步加速了它的。开发者现在可以使用像 Java Web Start 这样的技术来代替 Applet,它可以实现从浏览器启动应用程序或者安装应用程序。

  Java 9 还废弃了并行标记扫描(CMS,Concurrent Mark Sweep)垃圾回收器,在未来的发布版本中将进一步停止支持。其目的是加速 HotSpot 虚拟机中其他垃圾回收器的发展。低暂停 G1(low-pause G1) 回收器将是 CMS 的长期替代品。

  同时,之前在 JDK 8 中废弃的垃圾收集组合在 JDK 9 中已经删除。这包括很少使用的组合,例如增量 CMS,ParNew + SerialOld,DefNew + CMS,这些给垃圾收集器的代码库增加了额外的复杂性。

  Java 9 也忽略了 Java 导入语句的,以有助于大型代码库维持更干净的 lint 。在这些代码库中,废弃的功能通常还需要继续使用一段时间,代码中导入废弃类或者方法,如果是开发者有意为之,并且通过注解这些信息,那么信息将不会显示出来。

  在 Java 9 中同时移除的还有通过 Multiple JRE(mJRE)功能在启动时选择 JRE 版本 的功能。这个功能很少使用,同时使 Java 启动器的实现复杂化,自从在 JDK 5 开始出现以来,一直没有完整的文档描述。

  Java 9 的带来了很多新功能。Oracle 最近透漏 Java 9 将是最后一个遵循 Java 名称命名规范和主版本发布周期的版本。

  从现在开始,Java 的计划发布周期是 6 个月,下一个 Java 的主版本将于 2018 年 3 月发布,命名为 Java 18.3,紧接着再过六个月将发布 Java 18.9。

  Java 新的发布周期也意味着 JDK 9 将不会被作为长期支持版本。相反,下一个长期支持发布版本是 Java 18.9。

  Java 更快的发布周期意味着开发者将不需要像以前一样为主要发布版本望眼欲穿。这也意味着开发者将可能跳过 Java 9 和它的不成熟的模块化功能,只需要再等待 6 个月就可以迎来新版本,这将有可能解决开发者的纠结,Simon Maple 这样说,他是 Java 工具供应商 ZeroTurnaround 的 Java 支持者。

  推荐:

  

关键词:下载java安装
0
0
0
0
0
0
0
0
下一篇:没有资料

相关阅读

网友评论 ()条 查看

姓名: 验证码: 看不清楚,换一个

推荐文章更多

热门图文更多

最新文章更多

关于联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助

郑重声明:本站资源来源网络 如果侵犯了你的利益请联系站长删除

CopyRight 2010-2012 技术支持 FXT All Rights Reserved