![GraalVM与Java静态编译:原理与应用](https://wfqqreader-1252317822.image.myqcloud.com/cover/558/41992558/b_41992558.jpg)
上QQ阅读APP看书,第一时间看更新
第1章 Java静态编译技术的诞生
经过多年的演进,Java语言的功能和性能都在不断地发展和提高,但是冷启动开销较大的问题长期存在,难以从根本上解决。在传统的单机或者服务器部署的场景中,冷启动的问题并不明显,但是在云原生应用的场景中,其负面影响尤为突出。如果应用的冷启动时间超过了其实际执行的时间,还要用户为“不必要”的启动耗时付出费用,用户是难以有良好的使用体验的。Java语言也因此在Serverless场景下无法与Node.js、Go等快速启动的语言竞争,落于下风。在这种背景下,作为能够从根本上解决冷启动问题的Java静态编译技术有了用武之地,开始在业界崭露头角,为Java语言注入了新的竞争力。
本章首先讨论启动JVM和Java程序从解释执行到实时编译执行的过程,并结合实例介绍冷启动问题在Serverless应用场景下的问题严重性;接下来通过启动性能的对比引出静态编译技术,并详细介绍静态编译的概念、基本原则、整体优势和局限性。阅读本章后读者会对Java的静态编译技术建立整体认识,从宏观上了解这种新技术的能力和局限性。
本章在讨论中会使用的样例程序如下。
- Serverless场景的样例:由micronaut框架[1]官方提供的名为greeting-service的spring-boot应用样例:该应用默认在启动后监听本地8080端口,接受名为greeting的请求,然后返回一个包含了计数值和字符串的响应。这个样例程序的源码位于https://github.com/micronaut-projects/micronaut-spring/tree/master/examples/greeting-service。
- javac编译器:JDK中用纯Java编写的,负责将Java源码编译为字节码的编译器。
- 简单的HelloWorld程序。