Graal VM:云原生时代的Java( 四 )


  • 一切HotSpot虚拟机本身的内部接口,譬如JVMTI、JVMCI等,在都将不复存在了——在本地镜像中,连HotSpot本身都被消灭了,这些接口自然成了无根之木 。这对使用者一侧的最大影响是再也无法进行Java语言层次的远程调试了,最多只能进行汇编层次的调试 。在生产系统中一般也没有人这样做,开发环境就没必要采用Graal VM编译,这点的实际影响并不算大 。
  • Graal VM放弃了一部分可以妥协的语言和平台层面的特性,譬如Finalizer、安全管理器、InvokeDynamic指令和MethodHandles,等等,在Graal VM中都被声明为不支持的,这些妥协的内容大多倒并非全然无法解决,主要是基于工作量性价比的原因 。能够被放弃的语言特性,说明确实是影响范围非常小的,所以这个对使用者来说一般是可以接受的 。
  • ……
    以上,是Graal VM在Java语言中面临的部分困难,在整个Java的生态系统中,数量庞大的第三方库才是真正最棘手的难题 。可以预料,这些第三方库一旦脱离了Java虚拟机,在原生环境中肯定会暴露出无数千奇百怪的异常行为 。Graal VM团队对此的态度非常务实,并没有直接硬啃 。要建设可持续、可维护的Graal VM,就不能为了兼容现有JVM生态,做出过多的会影响性能、优化空间和未来拓展的妥协牺牲,为此,应该也只能反过来由Java生态去适应Graal VM,这是Graal VM团队明确传递出对第三方库的态度:
    3rd party libraries


    推荐阅读