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科目。在本文中通过具体的算法题进行讲解相应算法。 今天涉及的算法主要有线性筛,十大排序中快速排序和归并排序。 后续会有动态规划的相关算法以及尝试模型的总结,如果…...
Android Framework-操作系统基础
最近在看《深入理解Android内核设计思想(第2版)》,个人感觉很不错,内容很多,现将书里个人认为比较重要的内容摘录一下,方便后期随时翻看。 计算机体系结构 硬件是软件的基石,所有的软件功能最…...
美国最新调查显示 50% 企业已在用 ChatGPT,其中 48% 已让其代替员工,你怎么看?
美国企业开始使用ChatGPT,我认为这不是什么新闻。 如果美国的企业现在还不使用ChatGPT,那才是个大新闻。 据新闻源显示,已经使用chatGPT的企业中,48%已经让其代替员工工作。 ChatGPT的具体职责包括:客服、代码编写、招…...
[Java·算法·中等]LeetCode17. 电话号码的字母组合
每天一题,防止痴呆题目示例分析思路1题解1分析思路2题解2题目 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。…...
C#7/C#8/C#9 与dotnetSDK 以及dotnet framework对应关系
语言版本 对应的.net framework版本 对应的.net sdk版本 推荐使用的vs studio C#7.3 3.5、 4.0、 4.5 、4.5.1、 4.5.2 、4.6 、4.6.1、 4.6.2 4.7.1、 4.7.2 .netcore 2.0、.netcore2.1、 .netcore2.2 C#8.0 / F#4.7 不支持 .netcore 3.0、.netcore 3.1 C# 9.0 …...
jvm调优经验总结
最近一段时间很忙,忙到每天10点多11点下班还是感觉有很多事没有做完,不过倒也没有什么太过低落的情绪,有时候只安静的看一个视频,简单看点文字,或者平静的坐着,并没有太多想法。短时间的工作压力是可以接受…...
等保合规知识常见问题解答
Q1:什么是等级保护? 答:等级保护是指对国家重要信息、法人和其他组织及公民的专有信息以及公开信息和存储、传输、处理这些信息的信息系统分等级实行安全保护,对信息系统中使用的信息安全产品实行按等级管理,对信息系统…...
分享5款Windows同类软件中的翘楚
今天要给大家推荐的是5款软件,每个都是同类软件中的个中翘楚,请大家给我高调地使用起来,不用替我藏着掖着。1.沙盒工具——Sandboxie Sandboxie是一个电脑必备的沙盘工具,对于从网上下载的软件安装包、文件、视频、图片等等一切不…...
记--springboot-工具类中使用@Component、@Resource与@Value失效
写一个工具类 需要使用Resource注入RedisTemplate 使用Value获取application.properties配置文件中配置 并使用Component将该工具类交个spring管理 调试的时候RedisTemplate以及所有的变量全是是null 看了网上的各种解决方式五花八门 有的说出现问题的原因:Compon…...
手写一个react,看透react运行机制
适合人群 本文适合0.5~3年的react开发人员的进阶。 讲讲废话: react的源码,的确是比vue的难度要深一些,本文也是针对初中级,本意让博友们了解整个react的执行过程。 写源码之前的必备知识点 JSX 首先我们需要了解什么是JSX。…...
JS判断输入值是否为正整数,判断变量是否为数字
这篇文章将讨论如何确定一个变量是否代表 JavaScript 中的有效数字。 1.JS中的test是原来是JS中检测字符串中是否存在的一种模式,JS输入值是否为判断正整数代码: <script type”text/javascript”> function test() { var num document.getElem…...
wordpress 微博侧边栏/正规电商培训学校排名
问: 我用的是vc2008 express版。 自己写了一个服务功能的lib,在一个客户程序中要调用我自己写的这个lib。无论lib还是客户端程序都是非mfc的,只用到了最基本的win32程序框架和opengl库。 在本机可以运行,使用MTD方式编译后ÿ…...
佛教网站大全网/办理培训机构需要具备的条件
1、在Java中,没有goto语句。因为大量使用goto语句会降低程序的可读性和可维护性,所以Java语言取消了goto的使用。同时,为了避免程序员自行使用goto所带来的混乱,Java语言仍将goto定义为一个关键字,但是没有定义任何语法…...
如何做网站的逻辑结构图/哪个模板建站好
本文实例为大家分享了python实现烟花小程序的具体代码,供大家参考,具体内容如下FIREWORKS SIMULATION WITH TKINTER *self-containing code *to run: simply type python simple.py in your console *compatible with both Python 2 and Python 3 *Depen…...
用国外服务器做赌博网站/厦门网络推广外包
析 构 方 法 封装,有一个叫构造函数 和构造函数对应的还有一种方法叫做析构。 class ren //一个类 是 人类 { public $mingzi ;//成员变量 punction__destruct() //析构方法 { } } 析构方法,有什么做用??什么时…...
做一个产品网站要多少钱/seo搜索排名优化公司
文章目录一、今日成绩二、错题总结第一题三、知识查缺题目及解析来源:2023年04月12日软件设计师每日一练 一、今日成绩 二、错题总结 第一题 解析: 依据题目画出PERT图如下: 关键路径长度(从起点到终点的路径中最长的一条&#x…...
做搜狗pc网站优化/百度关键词优化工具
Word中分节符的奇妙用法(转)在对Word文档进行排版时,经常会要求对同一个文档中的不同部分采用不同的版面设置,例如要设置不同的页面方向、页边距、页眉和页脚,或重新分栏排版等。这时,如果通过“文件”菜单中的“页面设置”来改变…...