GraalVM 的特性和未来发现前景

在本文中,我们将研究 GraalVM 的演变和前景,以了解为什么您会从将该技术集成到生产中中受益。

GraalVM,顾名思义,通过提高 Java 应用程序的性能,同时使高效、无缝的多语言编程成为现实,代表了现代云原生开发的圣杯。但这些说法背后究竟隐藏着什么?在本文中,我们将研究该平台的演变和前景,以了解为什么您会从将该技术集成到生产中受益。我们还将总结 GraalVM 许可的关键方面,包括 Oracle 于 2023 年推出的新许可证。

GraalVM 对 Java 开发的好处

GraalVM 是一个基于 Java HotSpot VM 的平台,用 Java 实现。它包括 Java 开发工具包 (JDK)、高级即时编译器、提前编译器以及用于向项目添加编程语言的工具。其目标是加速基于 JVM 的应用程序并为多语言编程提供基础。该技术为 Java 开发人员带来的好处可概括如下:

  • 与传统的 HotSpot C1/C2 编译器相比,纯粹用 Java 编写的增强型 JIT 编译器提高了应用程序的性能。

  • AOT 编译(本机映像)允许将基于 JVM 的应用程序转换为几乎即时启动的本机映像,从而消除了 Java 程序臭名昭著的预热。

  • Truffle 框架和 Sulong(LLVM 解释器)可以将 JavaScript、Python 和 C/C++ 等非 JVM 语言无缝集成到应用程序中。

Native Image 有助于优化内存占用并提供即时启动,这对于某些用例(例如Lambda 函数)至关重要。但即使应用程序很难迁移到 Native Image,程序员仍然可以使用 GraalVM 来提高吞吐量并将其微服务提升到一个新的水平,其中每个服务都使用各种编程语言的功能来执行特定任务。

最新版本中 GraalVM 的显着改进

GraalVM 是一项快速发展的技术。自 2019 年首次发布以来,GraalVM CE 引入了数十项功能和数百项增强功能。这些变化涉及 Native Image 技术和语言框架。在一篇文章中不可能列出所有这些内容,因此下面只是对 Native Image 和 Java 所做的一些改进,展示了最新版本中的项目进展:

  • Native Image 现在作为 GraalVM(适用于 JDK 20)的一部分提供,因此无需使用 gu install native-image 命令安装它。

  • 支持的平台和系统配置的扩展:该技术适用于 Linux 和 macOS 的 x64 和 AArch64 以及 Windows 的 x64。Docker 容器镜像也可在 GitHub 上获取,以支持基于容器的开发。

  • Java 开发人员现在可以使用 GraalVM Reachability Metadata Repository,其中包含默认情况下尚不支持 GraalVM Native Image 的最流行 Java 库和框架的元数据。该存储库使用户能够最大限度地减少运行时的错误。 

  • 内存消耗正在不断改进。例如,基本 GraalVM 二进制文件的大小在版本 22.2.0 中减少了 42%。2023 年 6 月版本拥有更好的本机映像构建过程的内存占用,降低了内存不足错误的风险并更有效地使用可用资源。

  • 添加了对 AWT 和 Swing 工具包的支持,用于开发 GUI 应用程序。

此外,GraalVM 始终基于最新的 OpenJDK 版本,并包含错误修复和安全补丁,因此建议关注季度 CPU 版本,以确保开发环境安全。

并行GC集成

GraalVM 目前在社区版中使用 SerialGC 和 EpsilonGC。Oracle GraalVM 还附带 G1GC(以下部分提供了有关这些版本的更多信息)。SerialGC 在一个线程中工作,并冻结所有应用程序线程,直到完成收集,从而增加延迟。为了减少暂停时间,决定将ParallelGC 实现为 GraalVM CE(https://github.com/oracle/graal/pull/6349)。新的收集器基于 SerialGC 代码,但利用多个线程来并行化其工作。 

新的 ParallelGC 默认情况下每个 CPU 核心使用一个线程(每个核心最多 8 个线程)来执行垃圾收集。线程的数量可以通过-XX:ParallelGCThreads选项来调节。由于垃圾收集是分几个阶段完成的,因此阶段计算传递闭包首先被并行化,但计划包括更多GC阶段的并行化。

BellSoft 工程师积极参与新收集器的开发和集成(https://github.com/orgs/oracle/projects/6/views/1),并使用 HyperAlloc 基准测试来测量其性能,旨在模拟影响 GC 延迟的应用程序特征。结果表明 GC 暂停时间减少了 10-40%。

目前,ParallelGC 作为实验性功能在 Liberica Native Image Kit 中实现。在收到社区的反馈并验证其性能后,工程师将其集成到主要的 GraalVM CE 分支中。(https://github.com/bell-sw/Liberica/issues)

GraalVM CE 与 Oracle GraalVM 和新的 Oracle 许可证

截至 2023 年 6 月,有两个 GraalVM 发行版可用:基于 OpenJDK 的 GraalVM 社区版 (CE) 和基于 Oracle JDK 的 GraalVM 企业版 (EE)。但今年,Oracle 更改了 GraalVM 的许可条款。从 2023 年 6 月版本开始,新的 GraalVM 发行版可用于 JDK 17 和 JDK 20,而不是 EE,即 Oracle GraalVM。

GraalVM EE 仍可用于 19 至 22 个 GraalVM 版本,在针对商业客户的 My Oracle Support 和针对 GraalVM EE 的 OTN下分发(https://www.oracle.com/downloads/licenses/graalvm-otn-license.html),包括针对个人、开发和其他用户的早期采用者版本的许可证。

Oracle GraalVM 根据新的GraalVM 免费条款和条件 (GFTC)(https://www.oracle.com/downloads/licenses/graal-free-license.html) 进行分发,包括允许免费个人和商业使用的早期采用者版本许可证。该许可证允许开发人员将该程序用于内部业务运营,并重新分发未经修改的程序,而无需为此分发收取任何费用,包括包含该程序副本或与该程序副本捆绑在一起的产品的费用。什么是早期采用者版本?这些产品版本会不断开发和修改,因此未来版本可能包含与以前版本不兼容的功能和更改。

另一方面,GraalVM CE(或 GraalVM 开源)是从 GitHub 源构建的开源软件,并根据 GPLv2 + Classpath Exception 获得许可。GPLv2 + CPE 是一种自由软件许可证,使开发人员能够修改和自由分发产品的源代码。与此同时,它还赋予他们将模块或库添加到类路径中的权利,您可以在其他许可条件下分发这些模块或库。

GraalVM CE 版本可在GitHub上获取,而 Oracle GraalVM 可以从网站下载。(https://github.com/graalvm/graalvm-ce-builds/releases)(https://www.graalvm.org/downloads/)

下表总结了 GraalVM 版本和许可证:

GRAALVM版本

发布

LICENSE

适用于 Java 20 的 GraalVM

Oracle GraalVM

GraalVM 免费条款和条件 (GFTC),包括早期采用者版本的许可

GraalVM 社区版

GPLv2+CPE

适用于 Java 17 的 GraalVM

Oracle GraalVM

GFTC 包括早期采用者版本的许可证

GraalVM 社区版

GPLv2+CPE

适用于 Java 11、17 的 GraalVM 22

GraalVM 企业版

面向 Oracle 客户的 My Oracle Support
GraalVM EE 的 Oracle 技术网络许可协议

包括针对个人、开发和其他用户的早期采用者版本的许可

GraalVM 社区版

GPLv2+CPE

适用于 Java 11、17 的 GraalVM 21

GraalVM 企业版

面向 Oracle 客户的 My Oracle Support
GraalVM EE 的 Oracle 技术网络许可协议

包括针对个人、开发和其他用户的早期采用者版本的许可

GraalVM 社区版

GPLv2+CPE

就支持而言,GraalVM 是一个社区驱动的项目,有多种渠道可以获得帮助:

  • 文档

  • GitHub 存储库(开发人员可以在其中报告错误)

  • GraalVM 工程师的 Slack 频道

  • 邮件列表

拥有 Oracle Java SE 订阅的公司可以在其订阅范围内获得 GraalVM 的企业支持。还可以获得 GraalVM 发行版的其他供应商的支持。例如,BellSoft 为 Native Image 技术提供企业支持,作为 Liberica Native Image Kit(基于 GraalVM CE 的本机映像编译器)的一部分。

特点又如何呢?GraalVM 社区在GraalVM 项目顾问委员会的支持下致力于开发 GraalVM CE ,该委员会包括主要组织的代表:Oracle、VMWare、BellSoft、Red Hat 等。同时,Oracle单独在Oracle GraalVM上工作。

在大多数情况下,Oracle GraalVM 和 GraalVM CE 提供类似的功能,但有一些变化尚未移植到社区版。例如,Oracle GraalVM Native Image 包括 G1 GC、基于机器学习 (ML) 的配置文件推理和配置文件引导优化,而 GraalVM CE 中不具备这些功能。 

结论和未来计划

该项目的主要发展趋势涉及 Native Image 的进一步增强以及与 JDK 的显着融合,即代码库、功能、API 和增长策略的一致性。实现这一一致性的步骤之一是在 2022 年引入Galahad 项目,旨在为 OpenJDK 贡献与 Java 相关的 GraalVM 技术。

GraalVM 已被 Twitter、Facebook、阿里巴巴等许多知名公司用于生产环境。此外,主要 Java 框架也原生支持它:Spring Boot、Quarkus、Micronaut 和 Helidon。行业领导者对 GraalVM 的兴趣使我们有理由期待该技术在不久的将来得到更广泛的采用。


文章来源地址https://www.toymoban.com/diary/java/461.html

到此这篇关于GraalVM 的特性和未来发现前景的文章就介绍到这了,更多相关内容可以在右上角搜索或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

原文地址:https://www.toymoban.com/diary/java/461.html

如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请联系站长进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用
在Web应用程序中发送通知的方法及教程
上一篇 2023年10月24日 01:08
如何在WordPress中添加meta标签
下一篇 2023年10月24日 10:06

相关文章

  • Spring3新特性:Graalvm打包Springboot+Mybatis;Graalvm打包成Docker

    项目源代码 https://github.com/cmdch2017/SpringNative_Graalvm_Mybatis 安装graalvm与配置环境 首先安装步骤参考这篇博客 https://blog.csdn.net/weixin_38943666/article/details/129505945 其次如何处理反射 https://blog.csdn.net/qq_32740973/article/details/131799510 第一步,直接拷贝我项目中的config文件夹到你的项目 第

    2024年01月19日
    浏览(22)
  • Springboot3新特性:GraalVM Native Image Support和虚拟线程(从入门到精通)

    说明 :都知道,我是搞java的,最近搞c的算法和redis数据库比较多,所以对于以下文章,都是我自己这样认为的,各位看完之后,可尽情评论。 以往文章: Springboot3新特性:开发第一个 GraalVM 本机应用程序(完整教程)-CSDN博客 利用GraalVM将java文件变成exe可执行文件-CSDN博客 概述

    2024年01月16日
    浏览(24)
  • 未来从事鸿蒙开发?是否会有前景?

    鸿蒙的未来发展肯定很有前景的,鸿蒙作为新出的国产操作系统。它不仅只是手机操作系统,鸿蒙的出发点就是万物互联。 包含原生应用开发、车载、智能设备、数码、智能家居家电等等 。如此大的市场分布,岗位需求至少是很多的。 鸿蒙的布局很广, 对比Android、ios系统

    2024年02月21日
    浏览(16)
  • AIGC的起源:从基础到未来的前景

    博主 默语带您 Go to New World. ✍ 个人主页—— 默语 的博客👦🏻 《java 面试题大全》 🍩惟余辈才疏学浅,临摹之作或有不妥之处,还请读者海涵指正。☕🍭 《MYSQL从入门到精通》数据库是开发者必会基础之一~ 🪁 吾期望此文有资助于尔,即使粗浅难及深广,亦备添少许微薄

    2024年02月10日
    浏览(11)
  • 未来混合动力汽车的发展:技术探索与前景展望

               随着环境保护意识的增强和对能源消耗的关注,混合动力汽车成为了汽车行业的研发热点。混合动力汽车融合了传统燃油动力和电力动力系统,通过优化能源利用效率,既降低了燃油消耗和排放,又提供了更长的续航里程。本文将探讨混合动力汽车的技术方向

    2024年02月12日
    浏览(15)
  • 中国网络安全硬件平台行业的发展历程以及未来前景

    过去多年时间里,我国IT产品非国产化依赖程度较高,核心技术的缺失导致信息安全、数据安全受到了威胁,随着我国信息技术的发展,逐步实现IT国产化替代,网络安全依旧是企业在业务发展时的重点关注领域。企业客户安全意识提升,网络安全市场需求上涨,网络安全硬件

    2024年02月11日
    浏览(12)
  • 通用人工智能:概念,原理,历史,应用场景,影响,未来挑战,发展前景

    通用人工智能(General Artificial Intelligence, GAI)是指能够像人类一样学习、推理、决策和适应各种任务的人工智能系统。与目前主流的弱人工智能不同,通用人工智能具有高度的自主性和创造性,能够解决新问题和执行新任务。 通用人工智能的原理主要包括以下两个方面: 智

    2024年02月09日
    浏览(19)
  • 从Web2到Web3:区块链技术的未来前景

    随着互联网的发展, Web1.0、Web2.0 和 Web3.0 成为了人们口中津津乐道的话题。那么,这三种网络时代究竟有什么区别呢? Web1.0 是一个只读的时代 ,那个时候,用户只能浏览网页,无法进行互动和创作。 Web2.0 则是一个可读可写的时代 ,用户可以进行互动和创作,例如发布博客

    2024年02月15日
    浏览(19)
  • 探索未来:直播实时美颜SDK在增强现实(AR)直播中的前景

    在AR直播中,观众可以与虚拟元素实时互动,为用户带来更加丰富、沉浸式的体验。那么,直播美颜SDK在AR中有哪些应用呢?下文小编将于大家一同探讨美颜SDK与AR有哪些关联。 一、AR直播与直播实时美颜SDK的结合 增强现实技术在直播中的应用,让用户不仅可以观看主播的实时

    2024年02月13日
    浏览(16)
  • 【Docker】未来已来 | Docker技术在云计算、边缘计算领域的应用前景

    欢迎来到英杰社区: https://bbs.csdn.net/topics/617804998 欢迎来到阿Q社区: https://bbs.csdn.net/topics/617897397 📕作者简介: 热爱跑步的恒川 ,致力于C/C++、Java、Python等多编程语言,热爱跑步,喜爱音乐的一位博主。 📗本文收录于恒川的日常汇报系列,大家有兴趣的可以看一看 📘相

    2024年01月22日
    浏览(17)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包