其他分享
首页 > 其他分享> >

作者:互联网


GraalVM介绍

今天我们来讲讲整个Java生态下相当有分量的一位角儿——GraalVM:GraalVM官方网站Quarku官方文档

GraalVM是用Java实现的基于HotSpot/OpenJDK的JVM和JDK。它支持额外的编程语言和运行范式,例如对Java应用程序AOT,从而实现快速启动和低内存占用。

GraalVM的三大特点:

了解完这些背景知识,我们再看看官网怎么说。

Run Programs Faster Anywhere
Increase application throughput and reduce latency
Compile applications into small self-contained native binaries
Seamlessly use multiple languages and libraries

在各种地方跑起来都更快。提升应用的吞吐并减少延迟、把应用编译成独立本机的二进制程序、无缝使用多种语言和库。



性能有多强

GraalVM框架的测试表现供大家参考,数据有点夸张哈,但是大趋势肯定是不会错的。

大概有个5倍左右的改进吧,应该说相当不错了。如果说前面的响应速度影响的还是用户体验,那8G内存的服务器跟40G内存的服务器,那省下来的可是真金白银啊。

聪明的小伙伴可能会说了,你上面的数据强是强,但是万物互联时代,主要看吞吐,对别的技术栈来说,上面的两个维度数据即使不理想,也不能算硬伤。吞吐强,才是真的强。我们一起来看下图:

来自TechEmpower的数据测试。我只截取了使用JavaScript语言相关技术(都是后端哦)的成绩。先交代下背景,TechEmpower准备了同样的硬件环境,然后用不同的语言和框架来做同一件事情(提供后端HTTP API),并对它们进行压力测试记录下来成绩。所有参与测试的代码都是开源的,可以在GitHub上找到。当然这种“跑分”化的场景跟我们实际项目运行的情况肯定是千差万别的,TechEmpower考虑到实际情况的复杂性,准备了不同的测试场景,如图:


TechEmpower的GitHub上能看到说明,指出了这次测试是基于GraalVM的。略显遗憾的就是,TechEmpower并没有测试一版不依赖GraalVM的es4x,其实es4x是一种跑在JDK上的JavaScript技术(如果你对JDK上跑JavaScript感到惊奇,可以查看你不知道的Java),所以es4x跟GraalVM不是强关联的,只是es4x官方认为GraalVM性能更好,所以不论es4x的官网还是TechEmpower的跑分,都是把GraalVM作为了第一选择。

至此,我已经花了不少篇幅来介绍GraalVM的性能优势,相信你对它的性能水平有了一个大概的认识。前面的内容基本是拿来主义,重度依赖了互联网上已有的数据成果,下面我们开始第二个议题,真刀真枪的写点代码试一试。

多语言互相调用好使不

先来看看GraalVM支持哪些语言:

应该说有点意思,支持的语言还真不少。那我们就来动手试试吧。

安装GraalVM

我是通过sdkman来管理GraalVM的,建议你也这样做。

安装sdkman

curl -s "https://get.sdkman.io" | bash

使用sdkman查看可用的GraalVM

sdk list java

结果如图:

找一个最新版本安装,此处是20.3.0.r11-grl

sdk install java 20.3.0.r11-grl

这里提一句,执行完安装后,sdkman会询问你是否把刚安装的环境作为默认环境,我建议你选择否,这样就不会对你电脑之前安装好的Java、Node环境造成影响。当您想使用20.3.0.r11-grl的时候,只需要执行sdk use java 20.3.0.r11-grl,它只会影响当前终端上下文的环境。

基本的环境准备好后,你可以试试node --version,应该可以看到v12.18.4的输出,而如果你执行which node,应当会看到类似下面的内容:

有意思吧?GraalVM居然自带了一个node命令,一个不需要你安装https://nodejs.org就可以使用的node

标签:Java,语言,JDK,二进制,虚拟机,JavaScript,JVM,GraalVM
来源: https://www.cnblogs.com/liboware/p/15179828.html