下一代的JDK - GraalVM

GraalVM是最近几年Java相关的新技术领域不多的亮点之一, 被称之为革命性的下一代JDK,那么它究竟有什么神奇之处,又为当前的Java开发带来了一些什么样的改变呢,让我们来详细了解下

下一代的JDK

官网对GraalVM的介绍是 “GraalVM 是一个高性能 JDK,可提高基于 Java 和 JVM 的应用的性能并简化 Java 云原生服务的构建和运行。它提供优化的编译器,可以更快地生成代码并降低计算资源消耗,实现微服务即时启动“

这里面有几个关键词:高性能云原生低资源即时启动。而这几个关键词其实恰恰也是当前Java应用开发面临的困境。大家都知道当前不管是企业服务还是互联网领域都在强调云原生开发,但云原生的一个核心要素就是需要资源和服务的快速调度,毕竟服务器和带宽都是要钱的,用户只想在使用服务时付费,而不是长时间让应用空转。比如目前流行的serverless模式,要求函数的生命周期尽可能的短,意味着频繁的启动和销毁,这对于服务的启动性能,资源消耗,服务包大小都有比较高的要求。但对于当前的JAVA应用来说却是无可承受的痛。所以为啥现在go,rust这些语言大行其道,其实就是迎合了云原生的需求场景。Java作为一个拥有20多年历史的语言,当然不可能坐以待毙,所以也在不断的探索怎么提升启动时间,减少资源消耗,GraalVM应该算是目前这些探索当中最靠谱,最成熟的一个。

如果GraalVM真的能解决以上的问题,那称其为革命性的下一代JDK或者说是云原生时代Java的希望之星也不为过吧。目前包括Spring Boot, Micronaut, Quarkus 这些知名框架也都对GraalVM提供了原生的支持。

那GraalVM究竟是如何做到这一切的呢?我们先来看一下GraalVM的架构图
在这里插入图片描述

从图上可以看出来,其实GraalVM核心是由两个部分构成的。其中之一是一个全新的名为Graal的编译器,它是完全用Java语言编写的,就是图中红色的部分,这也是GraalVM的名字的来源,可想而知这个编译器的重要性。

另外一个重要的组成部分就是用于构建高性能动态语言解释器的框架叫做 Truffle,就是最上面的这一层,它也是GraalVM能够支持多种编程语言运行在其上的基础框架,它现在支持的语言有很多呀,包括pyhton,js这些常见的脚本语言,借助于LLVM编译器,甚至可以让C或者C++都跑在GraalVM之上,这在以前是很难想象的。

最底层就是我们非常熟悉的 Hotspot JVM,这部分GraalVM 并没有对Hotspot JVM做大的调整,包括垃圾回收器,类加载器,线程管理,诊断和监控等特性都是直接复用Hotspot JVM的功能,这也保证了GraalVM能够与现有的JAVA生态保持完全的兼容,只是专注于编译优化和性能提升

Graal编译器

Graal实际上是一个用Java语言编写的JIT编译器。它的主要作用就是替换原本Hotspot JVM中用C++写的另外两个JIT编译器:C1和C2。C1主要是用client模式下,我们应该接触的比较少,C2是Hotspot JVM自带的高性能JIT编译器,当年Hotspot JVM出现时

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值