JavaRush /Java 博客 /Random-ZH /2022 年 Java 趋势:JDK 18 和 19、Project Loom 和 Data mesh

2022 年 Java 趋势:JDK 18 和 19、Project Loom 和 Data mesh

已在 Random-ZH 群组中发布
嗯,2022 年已经开始了。当大多数人还在喝着香槟和 Olivier 过新年的时候,我们将谈论 Java 世界的趋势。也许这会帮助你分析你的职业生涯,学习新技术,或者制定来年的发展计划。 2022 年 Java 趋势:JDK 18 和 19、Project Loom 和 Data mesh - 1Java 语言专家兼讲师 Andrey Rodionov 以及 EPAM 的解决方案架构师和 Devoxx 乌克兰项目委员会负责人 Oleg Tsal-Tsalko 谈到了 2022 年和不久的将来 Java 的前景。

2022年Java的前景如何?

2022 年 Java 趋势:JDK 18 和 19、Project Loom 和 Data mesh - 2今年我们预计会发布接下来的两个版本:JDK 18(三月)和 JDK 19(九月)。对于 JDK 18 中的大多数 Java 开发人员来说,可能感兴趣的可能是:
  • 内置简单Web服务器,不支持servlet容器,可用于快速原型设计和测试,类似于Python、Ruby、PHP中的类似迷你Web服务器。
  • 模式匹配不断改进。
至于 JDK 19,已经有一个 Early-Access Build,但仍没有计划包含哪些内容的正式列表。我相信 JDK 19 至少会包含 Project Loom 的第一个稳定原型,该原型的规范草案最近已经出现,其最新版本基于 JDK 19。我们将在下面更详细地讨论 Project Loom。

对于哪些领域,Java 仍然是唯一的解决方案?在哪些领域它更可取?

安德烈·罗季奥诺夫:

幸运的是,我们不能说在任何领域都没有 Java 的替代品,但我们可以将 Java 视为开发企业应用程序、后端和微服务的黄金手段。还值得注意的是,来自不同供应商(Oracle 除外)的不同 JDK 发行版的数量不断增加:Amazon、Microsoft、Alibaba、Red Hat、Bellsoft(由圣彼得堡 Oracle 开发中心的人员创建)等。完整的发行版集可在此处获取。 2022 年 Java 趋势:JDK 18 和 19、Project Loom 和 Data mesh - 3总是有替代方案,但 Java 在企业开发的后端找到了最大的用处。大多数大公司都选择 Java 来构建大型且复杂的系统。原因是相同的:市场上的开发人员和专业知识的数量、庞大的生态系统和强大的 JVM 平台。

与 Java 相比,其他 jvm 语言(尤其是 Kotlin)的前景如何?

安德烈·罗季奥诺夫:

要了解哪些 JVM 语言流行,只需打开 Spring、Micronaut、Vert.x 的文档,看看给出了哪些语言的代码示例 - Java 和 Kotlin 会很常见。不能说有大量项目转向 Kotlin,但它在后端的受欢迎程度持续增长,许多框架正在尝试将其纳入其生态系统。至于Scala,正在发布新版本,并进一步积极用于ML、数据处理以及函数式编程范式更方便的领域。

奥列格·察尔-察尔科:

其他 JVM 语言也很有吸引力,现在一个项目使用多种编程语言是很正常的。在我看来,新奇的JVM语言无法取代Java的原因如下:
  • 它们并没有酷到每个人都会接受并转而使用它们。
  • 它们与Java在同一段中使用。
  • Java 一点一点地汲取了其他语言的精华,并变得更好。

Java 质量会因为发布间隔缩短而下降吗?

奥列格·察尔-察尔科:

我想不是。至少现在我可以从频繁的发布中发现更多积极的事情。我们发现新的炫酷功能出现得更加频繁。现在,您不必等待 5 年才能看到该语言中出现新内容。当然,现在您不应该期待像 Java 8 这样宏伟的版本,因为现在的功能都以小迭代的形式出现。

新版本的 Java 中是否有对开发人员特别重要的功能?

奥列格·察尔-察尔科:

Java 的最新版本引入了一些有趣的功能,例如模式匹配、密封类和记录。我建议看看他们的能力。当然,最重要和最令人期待的功能是在 Project Loom 和 Project Valhalla 中计划的,但我认为这些项目中的功能也将逐步发布。

Spring框架:它会继续扩展其生态系统以满足多样化的需求吗?

安德烈·罗季奥诺夫:

至于 Spring Framework,其开发重点是支持 Spring Cloud 的各种功能以及将 Spring Boot 编译为本机二进制文件的能力 - Spring Native 项目,计划在未来成为 Spring Core 的一部分。在这方面,由于积极使用反射和动态代码生成,Spring 落后于 Micronaut 和 Quarkus。关于 Spring Framework 6,我建议您观看报告Spring 6 and Beyond What's new in Spring Framework 6? 来自小丑会议(来自 Oleg Dokuka 和 Alexey Nesterov)。关键是过渡到 JDK 17、通过 setter 放弃 XML 配置和 Autowire、进一步开发 Kotlin 支持和 Spring Fu 项目。

奥列格·察尔-察尔科:

Spring作为时下最流行的Java FW,并不想放弃手掌。我相信开发团队会尽最大努力进行Spring开发。春天填补了越来越多的空白。例如,Spring 通过其 Project Reactor 在响应式流/响应式编程领域做了很多工作。现在他们正在推广 RSoket 协议,看起来也很有前途。

告诉我们 Loom 项目:它的用途是什么,它解决什么问题?

安德烈·罗季奥诺夫:

Loom 项目可能是最有趣的创新,它可能成为整个 JVM 平台和 JVM 之上的所有语言的新结构转变。Loom 项目可能不会对普通开发人员产生太大影响,但它肯定会影响整个生态系统、库、框架和其他使用多线程的 JVM 语言。Project Loom 引入了一种新的线程抽象 - 虚拟线程(类似于协程)。如果以前 Java 线程直接绑定到操作系统 (OS) 线程,并且 Java 中新线程的创建会导致新操作系统线程的创建,那么使用虚拟线程,这种一对一的关系就会被打破。创建新的虚拟线程时,不会创建新的操作系统线程,并且将重用其中一个所谓的载体线程(类似于操作系统线程池)来执行直接计算。因此,多个虚拟线程可以在一个操作系统线程之上运行。对于计算任务来说,这种虚拟线程模型并没有提供任何优势,反而会降低计算速度,但是对于阻塞操作,例如处理 HTTP 请求、等待来自数据库或微服务的响应,这种模型将是显着优势。事实是,在当前的线程模型中,Java 线程上的阻塞/等待会导致操作系统线程空闲——这会浪费资源,并且需要创建更多操作系统线程。在虚拟线程模型中,在虚拟线程上阻塞/等待将导致该虚拟线程所在的承载线程被释放,并在其上运行另一个虚拟线程。这样,操作系统线程将得到更优化的使用,并且执行类似任务所需的线程更少。因此,库、框架和 JVM 语言的制造商必须针对虚拟线程调整其代码。因此,对他们来说,一个大的重写即将到来:)除了虚拟线程模型之外,还计划引入一个新的API来简化线程编排——所谓的结构化并发。例如,现在,结构化并发在 Kotlin 协程和 Scala ZIO 中得到了积极的应用。不幸的是,JDK 版本甚至 Project Loom 的发布年份仍然未知。当被问及发布日期时,Java 平台的首席架构师 Brian Goetz 用一句富有哲理的话回答:“它将准备就绪,什么时候准备好。” 因此,我们正在等待并可以尝试Loom 项目的实验版本

奥列格·察尔-察尔科:

Loom 是一个大型伞式项目,其中 OpenJDK 和 Oracle 团队致力于 Java 和 JVM 的并发创新:虚拟线程、纤程和延续。这些功能很可能会逐步发布。目前只有早期访问版本支持虚拟线程。具体来说虚拟线程,其主要目标是通过使用数百万个与常规平台线程语义相同的轻量级线程来简化 Java 中的多线程开发模型。在底层,这些线程将在 ForkJoinPool 内部进行管理,并由平台线程重用。

在全球趋势——微服务、云架构、区块链、人工智能——的世界里,对Java的发展有何预测?

安德烈·罗季奥诺夫:

如果我们谈论全球趋势,它们并没有太大变化。和以前一样,主要趋势仍然是 Kubernetes 及其周围的服务网格形式的基础设施。数据网格作为管理分布式数据源和存储的一种抽象 也越来越受欢迎。
评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION