当前位置: 首页 > news >正文

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在国内的推广和应用越来越广泛,相信它将会在未来的软件开发领域发挥越来越重要的作用。

http://www.lryc.cn/news/24636.html

相关文章:

  • 如何外网登录访问瑞友天翼应用虚拟化系统?——快解析内网端口映射方案
  • 蓝海彤翔执行副总裁张加廷接受【联播苏州】独家专访
  • iOS Airplay Screen Mirroring 同屏技术详解
  • 更新 Python 100道基础入门检测练习题【下篇】(附答案)
  • [RDMA-高级计算机网络report] Congestion Control for Large-Scale RDMA Departments
  • ROS2功能包Hello world(python)
  • 数学建模竞赛的一些心得体会
  • 什么是自动化测试?自动化测试现状怎么样?
  • CHAPTER 2 Web HA集群部署 - Heartbeat
  • 蓝桥杯每日一题:不同路径数(dfs深度优先)
  • NCRE计算机等级考试Python真题(十)
  • 【蓝桥杯嵌入式】点亮LED灯,流水灯的原理图解析与代码实现——STM32
  • RK3288-android8-es7210-阵列麦克风
  • 硬件工程师常见问题与答疑
  • 【Java】Java进阶学习笔记(一)—— 面向对象(封装)
  • jsp拆迁管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目
  • CCNP350-401学习笔记(易错题合集)
  • 喀秋莎Camtasia2023最新版本电脑录屏剪辑软件
  • 「考研算法」
  • Android Framework-操作系统基础
  • 美国最新调查显示 50% 企业已在用 ChatGPT,其中 48% 已让其代替员工,你怎么看?
  • [Java·算法·中等]LeetCode17. 电话号码的字母组合
  • C#7/C#8/C#9 与dotnetSDK 以及dotnet framework对应关系
  • jvm调优经验总结
  • 等保合规知识常见问题解答
  • 分享5款Windows同类软件中的翘楚
  • 记--springboot-工具类中使用@Component、@Resource与@Value失效
  • 手写一个react,看透react运行机制
  • JS判断输入值是否为正整数,判断变量是否为数字
  • Android开发八股文,Android也有自己的八股文了