Java Native

通常 Java 程序会占用很大的内存,启动也比较慢。这两个特点在一些内存受限的环境下会产生问题,例如嵌入式环境。

太大的内存占用对云原生环境也不太友好,如果系统有很多微服务,每个服务都需要占用很多内存,那么就需要更多的节点承载整个系统。

GraalVM#

https://www.graalvm.org/

GraalVM可以加速Java程序的启动,降低内存占用。

GraalVM还可以将Java程序编译成平台相关的可执行文件,可以进一步加快启动速度,降低内存占用。

附带的好处是平台相关的可执行文件很难被反编译,可以很好的保护代码。

但是 Native 的编译也会有一些限制,对于反射的支持有限。

Spring Native 项目可以帮助创建可以编译成 Native 的 Spring 应用。

Quarkus#

https://quarkus.io/

Quarkus是一个基于GraalVM的一个项目,主要是提供类似 Spring 的框架,便于编译 Native 应用。

不要认为JVM性能差#

编译成 Native 程序听起来性能应该很强,GraalVM 主要优化的是程序的启动速度和内存占用,JVM虽然内存占用大,但其执行效率依然是很高的。

所以如果项目选择编译成 Native 应该对性能进行测试。

comments powered by Disqus