Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >GraalVM-云原生时代的JVM(Java)

GraalVM-云原生时代的JVM(Java)

作者头像
MCNU云原生
发布于 2023-03-17 01:56:09
发布于 2023-03-17 01:56:09
1.4K02
代码可运行
举报
文章被收录于专栏:MCNU云原生MCNU云原生
运行总次数:2
代码可运行
一、GraalVM是什么?

GraalVM是 Oracle 开源的一款通用虚拟机产品,官方称之为 Universal GraalVM,是新一代的通用多语言高性能虚拟机。它可以运行多种编程语言,如Java、JavaScript、Python等,并提供了即时编译(JIT)和AOT编译(AOT)的支持。GraalVM还支持在不同语言之间互相调用,以及嵌入到其他应用程序中使用。这使得GraalVM成为一个非常强大和灵活的工具,可以满足不同应用场景的需求。

二、GraalVM有哪些特点?

2.1、高性能

GraalVM的即时编译器采用了新型的JIT技术,能够在运行时对代码进行优化,从而提高应用程序的性能。同时,GraalVM还支持AOT编译,能够将代码预先编译成本地机器代码,进一步提高应用程序的运行速度。

从下图可以看到,使用Native Image编译得Java微服务应用相比较于原来的HotSpot模式,启动时间大大地缩短了。而这正式云原生时代serverless所需要的快速启动的能力。

2.2、多语言支持

GraalVM支持多种编程语言,如Java、JavaScript、Python等,甚至还支持R、Ruby、C等语言。这意味着开发者可以使用他们最喜欢的语言来开发应用程序,同时还可以将不同语言的代码集成在一起。

2.3、互操作性

GraalVM允许不同语言之间互相调用,甚至可以将代码嵌入到其他应用程序中。这使得开发者可以选择最适合他们需求的编程语言,并且不需要为了使用不同的语言而进行大量的代码转换。

2.4、安全性

GraalVM的安全性是由于其特有的“沙箱”机制。这个机制允许开发者在GraalVM上运行不受信任的代码,而不会影响到系统的其他部分。这种机制可以防止恶意代码的传播,从而保证系统的安全性。

三、GraalVM的应用效果

GraalVM的应用效果非常显著,尤其在大规模、复杂的应用程序中。以下是GraalVM的一些应用效果:

3.1、提高性能

GraalVM的即时编译器和AOT编译器可以显著提高应用程序的性能。据测试,GraalVM的性能可以比传统的JVM高出20%-100%。

3.2、简化开发

GraalVM的多语言支持和互操作性可以大大简化开发工作。开发者可以使用他们最熟悉的语言来开发应用程序,并且不需要进行大量的代码转换和集成工作。

3.3、降低成本

GraalVM的性能提升和简化开发的特性,可以帮助企业在开发过程中减少人力资源和时间成本,同时提高开发效率。

3.4、节省资源

GraalVM采用了高效的内存管理技术,可以在运行时动态调整内存大小。这意味着应用程序可以更好地利用系统资源,从而提高整体性能。

从下图可以看到使用Native Image构建的Java微服务应用在内存消耗上更少,能够更加有效利用系统资源。

3.5、支持云环境

GraalVM的云支持使得它可以在云环境中运行,这意味着开发者可以将应用程序轻松迁移到云上,并且能够利用云环境的弹性扩展和负载均衡等特性。

四、使用GraalVM编译springboot应用程序

使用GraalVM编译Spring Boot应用程序,需要遵循以下步骤:

4.1、下载并安装GraalVM

可以从GraalVM官方网站(https://www.graalvm.org/downloads/)下载GraalVM并安装,比较简单不赘述。

4.2、安装Spring Boot CLI

您可以使用以下命令安装Spring Boot CLI:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ sdk install springboot
4.3、创建Spring Boot项目

使用Spring Boot CLI创建一个新的Spring Boot项目,此命令将创建一个名为“myapp”的新Spring Boot项目,并添加Web依赖项。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ spring init --dependencies=web myapp
4.4、安装GraalVM native-image

您可以使用以下命令安装GraalVM:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ gu install native-image
4.5、编译Spring Boot应用程序

在Spring Boot项目的根目录中,使用以下命令构建可执行的JAR文件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ ./mvnw package

然后,使用以下命令将可执行的JAR文件编译为native镜像:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ native-image -jar target/myapp-0.0.1-SNAPSHOT.jar

该命令将创建一个native镜像“myapp”。

4.6、运行native应用

使用以下命令运行native应用:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ ./myapp

以上成功地使用GraalVM编译了一个Spring Boot应用程序,并将其转换为本地应用。

五、国内应用GraalVM的案例

GraalVM在国内已经得到了广泛的应用和推广,以下是一些案例介绍(以下案例来自网络收集信息,真实情况待评估,仅作为参考):

5.1、快手

快手使用GraalVM来运行它们的Java应用程序,从而获得更好的性能和更低的内存消耗。据测试,使用GraalVM后,快手的性能可以提高20%-30%。

5.2、蚂蚁金服

蚂蚁金服使用GraalVM来加速它们的Java应用程序,并且将GraalVM嵌入到了它们的基础设施中。这使得蚂蚁金服能够更好地利用系统资源,从而提高整体性能和可扩展性。

总之,GraalVM是一个非常强大和灵活的工具,可以帮助开发者构建高性能、多语言和云原生的应用程序。随着GraalVM在国内的推广和应用越来越广泛,相信它将会在未来的软件开发领域发挥越来越重要的作用。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-03-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 MCNU云原生 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
GraalVM编译器将会进入Java主线版本
Galahad项目将向OpenJDK社区提供与Java相关的GraalVM技术,以便于GraalVM中新的JIT和AOT编译器技术在Java中孵化。
老夫编程说
2023/02/10
9360
GraalVM编译器将会进入Java主线版本
过两年 JVM 可能就要被 GraalVM 替代了
GraalVM 是 Oracle 大力发展和想要推广的新一代 JVM ,目前很多框架都已经渐渐支持 GraalVM 了,比如我们在用的 Spring 也已经推出了对 GraalVM 兼容的工具包了。
古时的风筝
2022/12/18
10K0
过两年 JVM 可能就要被 GraalVM 替代了
Spring Boot3 新玩法,AOT 优化!
今天和小伙伴们来聊一聊 Spring6 中的一个新特性 AOT(Ahead of Time),这也是目前在学习 Spring6 源码视频的小伙伴的一个提问,其实还是挺有代表意义的,因此松哥整理一篇文章来和大家聊一聊这个话题。
江南一点雨
2024/01/17
2.5K1
Spring Boot3 新玩法,AOT 优化!
云原生时代的Spring Boot 3.0: GraalVM原生镜像,启动速度提升近30倍
Spring Boot 3.0 五天前(2022年11月24日)发布了,变化很大,基于spring6.0,spring6.0是Spring下一个未来十年的新开端。
后端云
2023/02/10
3.6K0
云原生时代的Spring Boot 3.0: GraalVM原生镜像,启动速度提升近30倍
《GraalVM:Java AI 应用性能与启动速度的优化利器》
在人工智能蓬勃发展的今天,Java 作为一种广泛应用的编程语言在 AI 领域也占据着重要地位。然而,Java 应用在性能和启动速度方面有时会面临挑战。GraalVM 的出现为优化 Java AI 应用带来了新的曙光。本文将深入探讨 GraalVM 如何在优化 Java AI 应用的性能和启动速度方面发挥关键作用,助力开发者打造更高效的 AI 解决方案。
程序员阿伟
2024/12/22
1360
《GraalVM:Java AI 应用性能与启动速度的优化利器》
云原生时代高性能Java框架—Quarkus(一)
Quarkus 是一个为 Java 虚拟机(JVM)和原生编译而设计的全堆栈 Kubernetes 原生 Java 框架,用于专门针对容器优化 Java,并使其成为无服务器、云和 Kubernetes 环境的高效平台。
东溪陈姓少年
2020/08/06
6.7K0
GraalVM(云原生时代的Java)和IoT在边缘侧落地与实践
你可以嫌弃Java, 但是可以永远相信JVM! 在云原生如日中天、Serverless日渐成熟、新语言百花齐放的当下,跨语言、Native支持、高性能低资源占用的技术必定是其璀璨的明珠,而GraalVM正是这样一个承载了JVM未来,将Java带入下一波技术的弄潮儿。
sanshengshui
2023/05/01
1.1K0
GraalVM(云原生时代的Java)和IoT在边缘侧落地与实践
【Spring云原生】Spring官宣,干掉原生JVM,推出 Spring Native!整体提升性能!Native镜像技术在Spring中的应用
Native镜像技术是一种将Java应用程序编译成本地可执行文件的技术。它的原理是通过静态编译将整个Java应用程序及其依赖项转换为本地机器代码,从而实现更快的启动时间和较小的内存占用。
苏泽
2024/03/10
5320
Spring6和SpringBoot3的新特性-你不得不了解的AOT原来这么简单
  AOT是Spring6.0提供的一个新特性,Ahead of Time 提前编译。
用户4919348
2023/05/27
3.2K0
Spring6和SpringBoot3的新特性-你不得不了解的AOT原来这么简单
Java 革新之路:GraalVM 原生镜像
Java 主导着企业级应用。但在云计算领域,采用 Java 的成本比它的一些竞争对手更高。原生编译降低了在云端采用 Java 的成本:用它创建的应用程序启动速度更快,使用的内存更少。
xcbeyond
2022/09/07
1.5K0
Java 革新之路:GraalVM 原生镜像
【干货】云原生时代,阿里如何让Java冷启动提速两个数量级?
来源 | QCon全球软件开发大会    嘉宾 | 林子熠     整理 | 李慧文 Java 语言自从诞生以来就被打上了“慢”的标签。经过 25 年的发展,Java 程序的峰值性能在实时编译(JIT)技术的支持下已能超越 C/C++ 程序,但实时编译仍无法解决冷启动速度慢的问题。在云原生的场景下,往往需要快速拉起新的服务以响应用户持续增长的请求,此时服务的启动时间就显得至关重要。 阿里探索了两种不同维度上的冷启动加速技术,经过双 11 大促的检验都取得了良好的效果:AppCDS 技术在传统 Java 环
江南一点雨
2022/04/19
1.4K0
【干货】云原生时代,阿里如何让Java冷启动提速两个数量级?
Spring Native 中文文档
https://docs.spring.io/spring-native/docs/current/reference/htmlsingle/#getting-started-buildpacks
爱撸猫的杰
2022/01/05
10.6K0
王炸!!Spring 终于对 JVM 动手了…
Spring 在今年 3 月份推出了 Spring Native Beta 版本,我本来还想着等正式发布了再研究下,不用等了,现在我们就来尝尝鲜。
Java技术栈
2021/06/16
8840
Spring Native 项目,把 Spring 项目编译成原生程序!
Spring 发布了 Spring Native 的 beta 版本,该功能已经在 start.spring.io 上可用了。
Yano_nankai
2021/03/29
3.2K0
GraalVM:云原生时代的Java
前两天正好研究了一下GraalVM,偶然间看到昨天周大在华章的直播里也分享了一波GraalVM,顺便就蹭蹭这个热度吧。
麒思妙想
2020/07/10
1.3K0
借助 Spring Boot 和 GraalVM 实现原生 Java
作者 | Josh Long 译者 | 张卫滨 策划 | 丁晓昀 本文是“Native Compilations Boosts Java”系列文章的一部分。你可以通过 RSS 订阅接收新文章更新通知。 Java 在主导着企业级应用。但是在云中,采用 Java 的成本要比其竞争者更高。使用 GraalVM 进行原生编译降低了在云中 Java 的成本:它所创建的应用启动更快,使用的内存也更少。 原生编译为 Java 用户带来了很多的问题:原生 Java 会如何改变开发方式?我们在什么情况下该转向
深度学习与Python
2023/04/01
8860
借助 Spring Boot 和 GraalVM 实现原生 Java
Java在云原生的破局利器——AOT(JIT与AOT)
JIT(Just-in-Time,实时编译)一直是Java语言的灵魂特性之一,与之相对的AOT(Ahead-of-Time,预编译)方式,似乎长久以来和Java语言都没有什么太大的关系。但是近年来随着Serverless、云原生等概念和技术的火爆,Java JVM和JIT的性能问题越来越多地被诟病,在Golang、Rust、NodeJS等新一代语言的包夹下,业界也不断出现“云原生时代,Java已死”的言论。那么,Java是否可以使用AOT方式进行编译,摆脱性能的桎梏,又是否能够在云原生时代焕发新的荣光?本文会带着这样的疑问,去探索Java AOT技术的历史和现状。
燃192
2023/02/28
3.8K0
Java在云原生的破局利器——AOT(JIT与AOT)
Quarkus经GraalVM native-image编译后启动只需0.07秒(9)
quarkus号称超音速亚原子JAVA为Graalvm量身定制的java堆栈,是否名副其实呢?下面就来看看真实情况如何。动手前先简单介绍下Graalvm,它是oracle出品的一个AOT编译器,可以将应用程序编译成本地映像,通俗的说可以将java编译成机器可直接执行的程序,可以参考go语言的编译输出产物。而且graalvm不仅仅支持java,对其他语言也有很好的支持。下面先看一张quarkus的java应用程序在传统的vm下面和graalvm下面的资源占用图。
kl博主
2023/11/18
4970
Quarkus经GraalVM native-image编译后启动只需0.07秒(9)
Oracle的JVM你知道,GraalVM你知道吗?
GraalVM是一种开源高性能的运行时环境,用于编写和执行各种编程语言的应用程序。它提供了一种灵活的、一致性的多语言运行时,支持Java、JavaScript、Ruby、Python、R和Scala等多种语言。GraalVM的目的是为开发人员提供一种统一的运行时环境,以简化应用程序的开发和部署。
DevOps持续交付
2023/12/21
6110
Oracle的JVM你知道,GraalVM你知道吗?
Graal VM:云原生时代的Java
文章为笔者原创,首发于:https://icyfenix.cn/tricks/graalvm/
周志明
2020/05/02
1.9K0
Graal VM:云原生时代的Java
推荐阅读
相关推荐
GraalVM编译器将会进入Java主线版本
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验