zoukankan      html  css  js  c++  java
  • JDK 9 发布仅数月,为何在生产环境中却频遭嫌弃?

      千呼万唤始出来,在经历了整整一年的跳票之后,Java 9 终于在 9 月 21 日拨开云雾,露出真正的面目。对众多 Java 程序员来说,这一天无疑是一个重大的日子,首先 Java 开发者们再也不用羡慕别的自带 REPL 的语言了,不用为了试个 Java 功能而开个 Groovy shell;其次最主要的莫过于 Jigsaw 项目下颠覆性的 Java 模块化了,有了它,自己定制/裁剪 JDK 变得更直接。

      其中,整个 Java 的核心内容非 JDK 莫属,其包括了 Java 运行环境(Java Runtime Envirnment)、Java 工具和 Java 基础的类库。而无论什么样的 Java 应用服务器实质都是内置了某个版本的 JDK,因此掌握 JDK 是学好 Java 的第一步。

    JDK 9 主要特性

      对于最新发布的 Java 9,JDK 9 有哪些主要的特性呢?

    1、Jigsaw 项目:颠覆性的模块化 JDK

      Jigsaw 项目是为了模块化 Java 代码,并将 JRE 分成相互协作的组件。这个 JEP 是迈向 Jigsaw 四步中的第一步,它只是模块化 JDK 源代码,不会改变 JRE 和 JDK 的真实结构,从而使得编译系统能够模块编译并在构建时检查模块边界。

      这个项目原计划随 Java 8 发布,但因为推迟,所以被放到了 Java 9 中。Jigsaw 项目一旦完成,将允许开发者根据项目的需要自定义组件,从而减少 rt.jar 的大小;还可以做到使 Java 能够更加容易的应用到小型计算设备(如网络设备)中,同时也能够使得开发者更加容易地构建和维护这些类库。

    2、简化了的进程 API

      目前,Java 控制与管理系统进程的能力是有限的,为了获得操作系统的一些信息需要调用本地程序或者其他变通方案。然而,在 Java 9 中将会新增一些新的、直接明了的方法来处理进程 ID、名字和状态以及枚举多个 JVM 和进程等,从而扩展 Java 与操作系统的交互能力。

    3、 轻量级的 JSON API

      尽管目前有多种处理 JSON 的 Java 工具(如 Google 的 Gson、阿里巴巴的 FastJson、IBM 的 Json4J 等),但 JSON API 是 Java 语言的一部分,轻量并且运用了 Java 8 的新特性。JSON API将放在 java.util 包里一起发布,这样,开发者就可以直接使用 JDK 而无需再引入第三方 JSON 工具包了。

    4、 钱和货币的相关 API

      Java 9 引入了新的货币 API, 用来表示货币, 并支持币种之间的转换和各种复杂运算。

    5、 改善锁争用机制

      锁争用限制了许多 Java 多线程应用性能,新的锁争用机制改善了 Java 对象监视器的性能,并得到了多种基准测试的验证(如 Volano),这类测试可以估算 JVM 的极限吞吐量。实际中, 新的锁争用机制在 22 种不同的基准测试中都得到了出色的成绩。如果新的机制能在 Java 9 中得到应用的话, 应用程序的性能将会大大提升。

    6、代码分段缓存

      Java 9 的另一个性能提升来自于JIT(Just-in-time)编译器。当某段代码被大量重复执行的时候, 虚拟机会把这段代码编译成机器码(native code)并储存在代码缓存里面, 继而通过访问缓存中不同分段的代码来提升编译器的效率。代码分段缓存机制将会提升许多方面的性能,如当 JVM 进行垃圾回收扫描的时候,就可以直接跳过永驻代码,从而提升效率。

    7、智能 Java 编译工具

      智能 Java 编译工具(sjavac)的第一阶段始于 JEP139 这个项目, 用于在多核处理器情况下提升 JDK 的编译速度。如今,这个项目已经进入第二阶段即 JEP199, 其目的是改进 Java 编译工具,并取代目前 JDK 编译工具 javac,继而成为 Java 环境默认的通用的智能编译工具。

    JDK 9 下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk9-downloads-3848520.html

    为何期盼已久的 JDK 惨遭嫌弃?

    JDK 9 为何如此惨淡?下面我们将探索 JDK 9 很少在生产环境中被采用的根本原因:

    • 应用程序从 JDK 8 或更早版本迁移至 JDK 9 出现的不兼容变更情况的数量。尽管已经从标准 API 中移除的六种方法不会影响很多人,但是像停止 JVM 启动的命令行选项的数量将是一个障碍。

    • 内部 JDK API 封装的影响。同样,直接受此影响的开发者数量也不会很大,但间接受到影响的开发者数量则很多。因为大多数开发者在开发应用程序时使用了第三方库和框架,有很多这样的库和框架使用封装的 API。虽然大部分已经过测试并提供专门针对 JDK 9 的版本,但仍然有很多还没这样做。对于没有得到积极维护的库或框架来说,这无疑是一个会阻碍迁移至 JDK 9 的问题。

    • 受支持的寿命周期。甲骨文最近宣布将加快 JDK 的发布频率,改为每六个月发布一次。按照改进的发布计划,JDK 9 不是长期支持版本。在这个新方案下,JDK 9 将是以 JDK 8 为基础的第一个“功能”版本。而且由于公共的更新,开发者在决定要部署的 Java 版本时,需要记住一些东西。长期支持版本的更新将至少提供三年,而 JDK 8 的受支持周期更像是四年半。这些版本适用于喜欢稳定的企业,使其能够在单个版本上运行大型的应用程序。

  • 相关阅读:
    第十二章学习笔记
    UVa OJ 107 The Cat in the Hat (戴帽子的猫)
    UVa OJ 123 Searching Quickly (快速查找)
    UVa OJ 119 Greedy Gift Givers (贪婪的送礼者)
    UVa OJ 113 Power of Cryptography (密文的乘方)
    UVa OJ 112 Tree Summing (树的求和)
    UVa OJ 641 Do the Untwist (解密工作)
    UVa OJ 105 The Skyline Problem (地平线问题)
    UVa OJ 100 The 3n + 1 problem (3n + 1问题)
    UVa OJ 121 Pipe Fitters (装管子)
  • 原文地址:https://www.cnblogs.com/guoziyi/p/7986890.html
Copyright © 2011-2022 走看看