GraalVM-云原生时代的JVM(Java)
文章目录
- 一、GraalVM是什么?
- 二、GraalVM有哪些特点?
- 2.1、高性能
- 2.2、多语言支持
- 2.3、互操作性
- 2.4、安全性
- 三、GraalVM的应用效果
- 3.1、提高性能
- 3.2、简化开发
- 3.3、降低成本
- 3.4、节省资源
- 3.5、支持云环境
- 四、使用GraalVM编译springboot应用程序
- 4.1、下载并安装GraalVM
- 4.2、安装Spring Boot CLI
- 4.3、创建Spring Boot项目
- 4.4、安装GraalVM native-image
- 4.5、编译Spring Boot应用程序
- 4.6、运行native应用
- 五、国内应用GraalVM的案例
- 5.1、华为云
- 5.2、快手
- 5.3、蚂蚁金服
- 5.4、阿里云
公众号:MCNU云原生,欢迎搜索关注,更多干货,及时掌握。
一、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:
$ sdk install springboot
4.3、创建Spring Boot项目
使用Spring Boot CLI创建一个新的Spring Boot项目,此命令将创建一个名为“myapp”的新Spring Boot项目,并添加Web依赖项。
$ spring init --dependencies=web myapp
4.4、安装GraalVM native-image
您可以使用以下命令安装GraalVM:
$ gu install native-image
4.5、编译Spring Boot应用程序
在Spring Boot项目的根目录中,使用以下命令构建可执行的JAR文件:
$ ./mvnw package
然后,使用以下命令将可执行的JAR文件编译为native镜像:
$ native-image -jar target/myapp-0.0.1-SNAPSHOT.jar
该命令将创建一个native镜像“myapp”。
4.6、运行native应用
使用以下命令运行native应用:
$ ./myapp
以上成功地使用GraalVM编译了一个Spring Boot应用程序,并将其转换为本地应用。
五、国内应用GraalVM的案例
GraalVM在国内已经得到了广泛的应用和推广,以下是一些案例介绍(以下案例来自网络收集信息,真实情况待评估,仅作为参考):
5.1、华为云
华为云使用GraalVM作为其云服务的基础设施,从而提高了应用程序的性能和可扩展性。此外,华为云还利用GraalVM的多语言支持和互操作性,构建了一个多语言云原生应用开发平台。
5.2、快手
快手使用GraalVM来运行它们的Java应用程序,从而获得更好的性能和更低的内存消耗。据测试,使用GraalVM后,快手的性能可以提高20%-30%。
5.3、蚂蚁金服
蚂蚁金服使用GraalVM来加速它们的Java应用程序,并且将GraalVM嵌入到了它们的基础设施中。这使得蚂蚁金服能够更好地利用系统资源,从而提高整体性能和可扩展性。
5.4、阿里云
阿里云使用GraalVM来加速它们的Java应用程序,并且利用GraalVM的云支持,在云环境中运行它们的应用程序。此外,阿里云还构建了一个基于GraalVM的云原生Java框架,帮助开发者更好地构建云原生应用程序。
总之,GraalVM是一个非常强大和灵活的工具,可以帮助开发者构建高性能、多语言和云原生的应用程序。随着GraalVM在国内的推广和应用越来越广泛,相信它将会在未来的软件开发领域发挥越来越重要的作用。
相关文章:

GraalVM-云原生时代的JVM(Java)
文章目录一、GraalVM是什么?二、GraalVM有哪些特点?2.1、高性能2.2、多语言支持2.3、互操作性2.4、安全性三、GraalVM的应用效果3.1、提高性能3.2、简化开发3.3、降低成本3.4、节省资源3.5、支持云环境四、使用GraalVM编译springboot应用程序4.1、下载并…...

如何外网登录访问瑞友天翼应用虚拟化系统?——快解析内网端口映射方案
瑞友天翼应用虚拟化系统(GWT System)是国内具有自主知识产权的应用虚拟化平台,是基于服务器计算(Server-based Computing)的应用虚拟化平台。如何将内网平台提供到互联网上外网访问,是我们比较关注的问题。…...

蓝海彤翔执行副总裁张加廷接受【联播苏州】独家专访
今年春节档,科幻类电影《流浪地球2》票房口碑双丰收,截至目前,累计票房已破 38 亿,淘票票评分 9.6 ,影片的特效质感可以媲美国际顶尖水平。其中,蓝海彤翔为影片的后期制作提供了出色的渲染服务。2月21日&am…...
iOS Airplay Screen Mirroring 同屏技术详解
投屏技术已经被大量用在身边的产品,比如电视投屏,投影仪,视频会议产品中。 在iOS平台外的其他平台中都已经有非常成熟的标准和实现。但在封闭的苹果iOS和Mac系统中,苹果使用私有的Airplay协议进行多屏互动,只开放给自己…...

更新 Python 100道基础入门检测练习题【下篇】(附答案)
前言 大家早好、午好、晚好吖 ❤ ~ 爆肝更新 Python 100道基础入门练习题【篇上】 更多精彩内容、资源皆可点击文章下方名片获取此处跳转 实例021:猴子偷桃 题目: 猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半…...

[RDMA-高级计算机网络report] Congestion Control for Large-Scale RDMA Departments
本文主要解决的问题是在RoCEv2体系中,基于优先级的拥塞控制PFC是一种粗粒度的机制。 它在端口(或端口加优先级)级别上运行,并且不区分流。PAUSE机制是基于每个端口(和优先级)的,而不是基于每个流…...

ROS2功能包Hello world(python)
文章目录环境准备Python创建工作空间、功能包及节点方法编译使用环境准备 为了便于日后复现,相关环境已经打包到docker中。 拉取docker镜像 docker pull 1224425503/ros2_foxy_full:latest新建容器 docker run -dit --rm --privilegedtrue --network host -e NV…...

数学建模竞赛的一些心得体会
1.数学建模经验首先简要的介绍一下我的情况。数学建模我也是在大一暑假开始接触的,之前对其没有任何的了解。我本身对数学也有相对较厚的兴趣,同时我也是计算机专业的学生,因此,我觉得我可参加数学建模的这个比赛。大一的暑假参加…...

什么是自动化测试?自动化测试现状怎么样?
什么是自动化测试:其实自动化测试,就是让我们写一段程序去测试另一段程序是否正常的过程,自动化测试可以更加省力的替代一部分的手动操作。 现在自动化测试的现状,也是所有学习者关心的,但现在国内公司主要是以功能测…...

CHAPTER 2 Web HA集群部署 - Heartbeat
Web HA集群部署 - Heartbeat1. Heartbeat 概述1.1 Heartbeat主要组成部分2. 环境依赖2.1 环境及组件软件2.2 关闭firewalld & selinux2.3 配置双机互信,SSH密钥登录2.4 同步时间(以主节点时间为准)2.5 配置域名解析3 安装软件3.1 安装…...

蓝桥杯每日一题:不同路径数(dfs深度优先)
给定一个 nm的二维矩阵,其中的每个元素都是一个 [1,9] 之间的正整数。 从矩阵中的任意位置出发,每次可以沿上下左右四个方向前进一步,走过的位置可以重复走。 走了 k 次后,经过的元素会构成一个 (k1) 位数。 请求出一共可以走出…...

NCRE计算机等级考试Python真题(十)
第十套试题1、数据库系统的核心是___________。A.数据库管理系统B.数据模型C.软件工具D.数据库正确答案: A2、下列叙述中正确的是___________。A.线性表链式存储结构的存储空间可以是连续的,也可以是不连续的B.线性表链式存储结构与顺序存储结构的存储空…...

【蓝桥杯嵌入式】点亮LED灯,流水灯的原理图解析与代码实现——STM32
🎊【蓝桥杯嵌入式】专题正在持续更新中,原理图解析✨,各模块分析✨以及历年真题讲解✨都在这儿哦,欢迎大家前往订阅本专题,获取更多详细信息哦🎏🎏🎏 🪔本系列专栏 - 蓝…...

RK3288-android8-es7210-阵列麦克风
ES7210驱动包 应需求调试一个ES7210的阵列麦克风 首先移植 From 234647c69a57c32198c65836e7fc521dc22e444b Mon Sep 17 00:00:00 2001 From: LuoXiaoTan <lxt@rock-chips.com> Date: Tue, 10 Jul 2018 18:08:50 -0700 Subject: [PATCH] ASoC: codecs: add es7210 adc …...

硬件工程师常见问题与答疑
在工作中,尤其是做了很多年的,有些问题可能不知道,又不好意思问,怕别人说你连这个都不知道?很尴尬,而且百度又搜不到,本博主收集了很多答疑,希望里面有对你有用的,或者是…...

【Java】Java进阶学习笔记(一)—— 面向对象(封装)
【Java】Java进阶学习笔记(一)—— 面向对象(封装)一、类中成分1、类中成分2、this关键字this() 访问构造器方法3、static关键字1. 成员变量的区分2. 成员方法的区分3. 成员变量访问语法的区分二、封装1、封装的定义封装的好处2、…...

jsp拆迁管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目
一、源码特点 JSP 拆迁管理系统是一套完善的java web信息管理系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0&…...

CCNP350-401学习笔记(易错题合集)
CCNP350-401学习笔记(1-50题)_殊彦_sy的博客-CSDN博客CCNP350-401学习笔记(2023.2.17)https://blog.csdn.net/shuyan1115/article/details/129088574?spm1001.2014.3001.5502CCNP350-401学习笔记(51-100题)…...

喀秋莎Camtasia2023最新版本电脑录屏剪辑软件
录屏软件的鼻祖是techSmith 的喀秋莎(Techsmith Camtasia Studio),视频编辑软件Camtasia 2023发布,十大新功能放出!作为一个自媒体人,每天都要录制编辑视频,选择一个好的视频编辑工具就是大家首先面临的一个…...

「考研算法」
考研算法 前言 本系列文章涉及的算法内容,针对的是哈尔滨工业大学854科目。在本文中通过具体的算法题进行讲解相应算法。 今天涉及的算法主要有线性筛,十大排序中快速排序和归并排序。 后续会有动态规划的相关算法以及尝试模型的总结,如果…...

【Python】 -- 趣味代码 - 小恐龙游戏
文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...
rknn优化教程(二)
文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK,开始写第二篇的内容了。这篇博客主要能写一下: 如何给一些三方库按照xmake方式进行封装,供调用如何按…...

视频字幕质量评估的大规模细粒度基准
大家读完觉得有帮助记得关注和点赞!!! 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用,因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型(VLMs)在字幕生成方面…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决
Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中,新增了一个本地验证码接口 /code,使用函数式路由(RouterFunction)和 Hutool 的 Circle…...

Python基于历史模拟方法实现投资组合风险管理的VaR与ES模型项目实战
说明:这是一个机器学习实战项目(附带数据代码文档),如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在金融市场日益复杂和波动加剧的背景下,风险管理成为金融机构和个人投资者关注的核心议题之一。VaR&…...

Selenium常用函数介绍
目录 一,元素定位 1.1 cssSeector 1.2 xpath 二,操作测试对象 三,窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四,弹窗 五,等待 六,导航 七,文件上传 …...
全面解析数据库:从基础概念到前沿应用
在数字化时代,数据已成为企业和社会发展的核心资产,而数据库作为存储、管理和处理数据的关键工具,在各个领域发挥着举足轻重的作用。从电商平台的商品信息管理,到社交网络的用户数据存储,再到金融行业的交易记录处理&a…...

C++_哈希表
本篇文章是对C学习的哈希表部分的学习分享 相信一定会对你有所帮助~ 那咱们废话不多说,直接开始吧! 一、基础概念 1. 哈希核心思想: 哈希函数的作用:通过此函数建立一个Key与存储位置之间的映射关系。理想目标:实现…...

Mysql故障排插与环境优化
前置知识点 最上层是一些客户端和连接服务,包含本 sock 通信和大多数jiyukehuduan/服务端工具实现的TCP/IP通信。主要完成一些简介处理、授权认证、及相关的安全方案等。在该层上引入了线程池的概念,为通过安全认证接入的客户端提供线程。同样在该层上可…...