Graal VM:微服务时代的Java

互联网之于JavaScript、人工智能之于Python,微服务风潮之于Golang,在原生云微服务时代到来时Java能否还长期占据编程语言榜单第一位位置呢?Oracle Labs新公开了一项黑科技:Graal VM,从它的口号“Run Programs Faster Anywhere”就能感觉到一颗蓬勃的野心,这句话显然是与1995年Java刚诞生时的“Write Once,Run Anywhere”在遥相呼应。

什么是Graal VM?

官网介绍如下:

GraalVM is a high-performance runtime that provides significant improvements in application performance and efficiency which is ideal for microservices. It is designed for applications written in Java, JavaScript, LLVM-based languages such as C and C++, and other dynamic languages. It removes the isolation between programming languages and enables interoperability in a shared runtime.

GraalVM为微服务和高性能而生,它支持各种语言,甚至自定义编程语言,它可以将各种语言放在一起进行编程,并且编译后运行在不同环境,例如OpenJDK(Java环境)、Node.js(Javascript)、数据库环境等执行。

GraalVM性能有多强?

官网介绍GraalVM启动时间比JAVA JVM快50倍,占用内存少5倍,GraalVM提供高性能为Java微服务向原生云迈进提供坚实的基础技术架构。在微服务架构的视角下,应用拆分后,单个微服务很可能就不再需要再面对数十、数百GB乃至TB的内存,有了高可用的服务集群,也无须追求单个服务要7×24小时不可间断地运行,它们随时可以中断和更新;但相应地,Java的启动时间相对较长、需要预热才能达到最高性能等特点就显得相悖于这样的应用场景。但有了GraalVM加持后Java在微服务时代又焕发新生。

Spring微服务框架如何和GraalVM兼容?

Spring框架5.1版本已开始支持GraalVM native image support。GraalVM native image允许以较低的吞吐量和各种限制为代价,以较低的内存消耗(通常是普通JVM等价物的5倍)将Spring应用程序编译为本机可执行文件,启动速度非常快(小于100ms)。支持反射和动态代理,但需要手动或通过专用支持配置。它还允许生成小容器镜像。

Spring团队兼容GraalVM 计划。

Spring框架从5.1开始就提供了对GraalVM本机映像的初始支持。

但是GraalVM在RC阶段的各种问题阻碍了它的正确使用,因此springframework5.2开发周期主要致力于通过与GraalVM开发团队协作来报告这些问题。自从GA以来,GraalVM几乎(请参阅影响Spring的已知GraalVM问题)允许使用相关的反射配置和命令行参数运行Spring框架应用程序。

在不需要额外配置或解决方法的情况下实现GraalVM本机映像支持是即将推出的springframework5.3的主题之一。将GraalVM视为Spring应用程序的合适部署目标的主要缺失部分是在Spring框架级别提供自定义GraalVM特性实现,以自动注册依赖机制或Spring工厂中使用的类,有关详细信息,请参阅相关问题#22968。

为了使最终用户能够使用它,还可能需要工具级别的支持(将正确的命令行参数传递给本机映像、打包)。

当前Spring实验性支持

由Andy Clement创建的springgraalvm本机实验项目展示了如何以graalvm本机映像的形式开箱运行springboot应用程序。它可以作为一个潜在的即将到来的官方支持的基础。该项目最新版本 0.8.5支持GraalVM 20.3.0和Spring Boot 2.4.1(2020-12-11发布最新版本)。

最后小工蚁新零售产品2021年版本也开始全面支持GraalVM,并且支持多语言环境,小工蚁主要使用Java(企业业务和数据中台开发)、Javascript(互联网多端应用开发)和Python(人工智能和大数据应用),考虑2021年小工蚁所有接口开放后,提供Web界面开发工具提供企业快速业务逻辑自定义应用开发。小工蚁产品全面支持GraalVM可以大幅降低企业数字化需要的服务器成本和云计算成本,让企业更快速满足市场变化需求,很好适应激烈竞争环境所需要数字化平台。

沪公网安备 31010702002009号