初步探索GrbblVM云原生时代JV

北京痤疮医院好不好 http://m.39.net/pf/a_9216875.html

1云原生时代Java语言的困境

经过多年的演进,Java语言的功能和性能都在不断的发展和提高,诸如即时编译器、垃圾回收器等系统都能体现Java语言的优秀,但是想要享受这些功能带来的提升都需要一段时间的运行来达到最佳性能,总的来说Java是面向大规模、长时间使用的服务端应用而设计的。

云原生时代,Java语言一次编译到处运行的优势不复存在,理论上使用容器化技术,所有语言都能部署上云,而无法脱离JVM的Java应用往往要面对JDK内存占用比应用本身还大的窘境;Java动态加载、卸载的特性也使得构建的应用镜像中有一半以上的无用代码和依赖这些都使得Java应用占用内存相当多。而启动时间长,性能达到峰值的时间长使得在Serverless等场景下无法与Go、Node.js等快速语言竞争。

Java应用程序的运行生命周期示意图

2GraalVM

面对云原生时代Java的不适,GraalVM或许是最好的解药。GraalVM是Oracle实验室推出的基于Java开发的开源高性能多语言运行时平台,它既可以在传统的OpenJDK上运行,也可以通过AOT(Ahead-Of-Time)编译成可执行文件单独运行,甚至可以集成至数据库中运行。除此之外,它还移除了编程语言之间的边界,并且支持通过即时编译技术,将混杂了不同的编程语言的代码编译到同一段二进制码之中,从而实现不同语言之间的无缝切换。

本文主要简单从三个方面介绍GraalVM可以为我们带来的改变:

1)基于Java的GraalCompiler的出现对学习和研究虚拟机代码编译技术有着不可估量的价值,相比C++编写的复杂无比的服务端编译器,不管是对编译器的优化还是学习的成本都大大的降低。2)静态编译框架SubstrateVM框架,为Java在云原生时代提供了与其他语言竞争的可能,大大的减少了Java应用占用内存,并且可以加快启动速度几十倍。

3)以Truffle和Sulong为代表的中间语言解释器,开发者可以使用Truffle提供的API快速用Java实现一种语言的解释器,从而实现了在JVM平台上运行其他语言的效果,为Java世界带来了更多更有想象力的可能性。

GraalVM多语言支持

3GraalVM整体结构

graal├──CONTRIBUTING.md├──LICENSE├──README.md├──SECURITY.md├──THIRD_PARTY_LICENSE.txt├──bench-


转载请注明:http://www.aierlanlan.com/rzgz/3150.html

  • 上一篇文章:
  •   
  • 下一篇文章: