
上QQ阅读APP看书,第一时间看更新
1.4 小结
Java经过从解释执行到JIT编译执行的发展演进,虽然其运行时峰值性能在极限情况下已经能够达到比肩C程序的程度,但是在现今云原生的浪潮下,Java与生俱来的冷启动问题越来越突出。小的云原生应用可能在尚未触发JIT编译时就结束退出了,使得JIT编译没有了用武之地,而冷启动的开销却不可避免地影响了云原生应用的响应速度。
Java静态编译技术是一个既兼顾了Java已有生态,又可以彻底解决冷启动问题的技术方案,总结如下。
1)基本思想:将Java程序从字节码在单独的编译阶段编译为自举的本地二进制可执行(或库)文件。
2)核心原则:封闭性假设,所有运行时的内容必须在编译时可见,并被编译到native image中。
3)主要优点如下:
- 启动性能好,较传统Java应用最高可达到两个数量级的启动性能提升;
- 占用内存少,一般只需要占用传统Java应用一半的内存;
- 多语言支持,可以用Java语言编写C/C++程序的库文件。
4)主要缺点如下:
- 不能完全支持Java的动态特性;
- 不再具有平台无关的特性;
- 调试、监控等工具生态发生变化,不能使用传统的Java工具。
本书接下来会首先介绍分别由Oracle和华为实现的Java静态编译技术的概况与特点,然后详细介绍Oracle的静态编译技术的具体应用和技术实现原理。