更好的Java。解释JDK的改进建议

更好的Java。解释JDK的改进建议

Java 是如何炼成的?让我们来看看为平台引入新功能的过程,以及即将到来的一些大型JDK增强项目。

  • Share on Facebook
  • Share on Twitter
  • Share on LinkedIn
  • Share on Reddit
  • Share by Email
  • Print resource

Matthew Tyson作者: Matthew Tyson

软件架构师,InfoWorld

思想库

不客气地说,Java被广泛使用和严重依赖。它是我们软件基础设施的一个主要部分。尽管对稳定性有很重的义务,但Java平台还是设法保持了对不断变化的环境的反应。使用Java的人的创造力是其中的一部分原因。Java的特点是有一个官方程序,在实现高度稳定的同时将变化纳入平台。

让我们来了解一下Java平台是如何被加强的。我们还将看看一些即将出现的最突出的新功能。

[还在InfoWorld上:JDK 19:Java 19的新功能]

JCP:Java社区进程

即使是长期从事Java开发的人,也可能对该平台的开发和维护方式不甚了解。在我们进入即将到来的大项目之前,让我们先了解一下Java流程是如何运作的。这里的主要启示是,它确实是一个开放的过程。如果你有贡献的愿望,这是可以做到的。与贡献者交谈,加入一个小组,提交一个建议,修复一个错误。

Java开发的根源是Java社区进程(JCP)。这是一种自我意识的基础性文件,它定义了如何将修改意见引入平台,同时也允许修改流程本身。JCP的最新版本是2.11,于2019年通过。

JCP正式确定了如何提出、审查和批准Java的新功能和变化(即技术规范),包括定义人们可以居住的各种角色。这些角色有助于为Java用户社区提供一个参与平台治理的场所。

JSR:Java规范请求

为了提出新功能和变化,JCP允许创建("发起")Java规范请求(JSR)。这是通过一个标准化的表格完成的。要进入该表格,你需要注册一个免费的JCP账户。

不出所料,该表格是一个实质性的、有气势的东西。毕竟,Java SE规范目前有852页,而这还只是标准版!不过,这也是流程的开始。

然而,这就是过程的开始。从这里开始,许多变化,不管是温和的还是其他的,都会进入我们每天使用的Java技术。

当一个JSR进来的时候,它就进入了JSR审查过程。这是一个多阶段的过程,在这个过程中,JSR 中提出的修改会被逐渐认真考虑、修改、苦恼,并最终被采纳或转入休眠状态。

JEP:JDK 增强建议

产生一个有前途的 JSR 的过程并不简单。有几个渠道可以将想法转化为 JSR。其中最突出的是JEP。许多对Java最雄心勃勃的改变(如lambdas)都起源于JEPs。这里有一个未废除的JEPs的列表。这是一份有趣的文件,可以在闲暇时浏览一下。

向世界交付新的JDK的过程本身就是一个JEP。这也是一个重要的社区事件;报道从这里开始。

JDK 项目

如果某项工作的范围足够大,就会被视为JDK 项目。这是对从文档到代码的各种工件的统称,通常包括一个或多个 JEPs。项目涉及一个或多个工作组。工作组专门负责 Java 平台的各个领域。一个项目通常有几个活跃的人担任作者的角色。

正在进行的主要 JDK 项目

OpenJDK 主页指出,主要的活跃项目是AmberLoomPanamaValhalla。让我们来了解一下每个项目的内容。

琥珀

Amber项目是一个小型项目的集合。它的目的是帮助引导这些项目完成成为实际功能的过程。所以它是一种孵化器。

Amber包括两个活跃的项目,九个已交付的项目,三个搁置的项目,以及一个已撤回的项目。

活跃的

已交付

待定

已撤消

你可以看到,最近的JDK中许多更有趣的功能,如记录和文本块,都是Amber的一部分。请关注Project Amber即将推出的语法增强功能,如开关的模式匹配。

Loom

Loom项目可能是当前项目中最雄心勃勃和影响深远的。 Loom的目标是重新架构JVM的整个线程模型。正如我所说,雄心勃勃。

Loom仍在进行中,其细节也在不断变化。基本的想法仍然是一样的:用更轻量级的东西取代传统的Java线程模型,它基本上是操作系统进程的一个包装。在实践中,这意味着在操作系统内核线程和JVM线程之间创建一个抽象层。在这个新的层中,Loom可以提供只有JVM可以协商的各种优化。

想一想在线程间共享资源的更智能的方法。应用一种叫做 "消除尾部调用 "的优化是可能被列入路线图的。

Loom还在研究如何通过延续来更干净、更明确地控制代码流。这是Java程序员将看到语法变化的地方。

在这里写过关于Loom的更多细节。

巴拿马

巴拿马项目的重点是提高JVM与非Java APIs的交互能力。这可能会让你想起JNI(Java Native Interface),它已经允许调用 "本地 "代码的能力,如编译的C或C++。巴拿马项目旨在改进JNI的方法(尤其是开发人员的体验),以至于JNI被取代。目标包括消除模板,提供一个ByteBuffer的替代品,以及引入一些可以使用的基础组件。

总的来说,Panama的目标是使所谓的FFI(外国函数接口)的调用更加习惯化。

巴拿马的一种衍生品是矢量API。这是为了提高Java与CPU的矢量支持互动的能力。(我们可以想象,这里的改进机会是在操作系统内部的混战中发现的)。

瓦尔哈拉

Valhalla项目的使命是 "用价值对象和用户定义的基元来增强Java对象模型,将面向对象编程的抽象性与简单基元的性能特征相结合"。

从某种意义上说,Valhalla正试图统一Java的类型,使之有可能以一种通用的方式处理基元和类。事实上,你将能够在基元上使用泛型。

价值类是一个允许引用的类,就像普通的类一样,但让所有成员变量成为最终变量。换句话说,它是 "浅层不可变的"。一个值类的声明将在class 关键字前面加上value 修改器。与新的用户定义的基元类型相比,值类可以 是空的。

用户定义的基元不能是空的,这就是使它们类似于基元的原因。 此外,它们不能有任何引用。本质上,它们是基元的自定义分组。primitive 类修改器将被引入以声明它们。

因此,我们看到了原始类型和自定义类型之间的一种衔接。作为这项工作的一部分,Java程序将能够将泛型应用于类和基元,同时获得它们的性能优势。

跟上JDK项目的步伐

甲骨文公司一直在向Java社区通报变化情况,特别是在许多工作接近完成时。这里这里是了解更多信息的好地方。

相关的。

Matthew Tyson是黑马集团的创始人他相信以人为本的技术。在不弹吉他的时候,Matt会去野外和哲学的腹地探险。自2007年以来,他一直为JavaWorld撰写文章。

关注

Copyright © 2022 IDG Communications, Inc.

如何选择一个低代码开发平台

猜你喜欢

转载自juejin.im/post/7127092005079154702