随着Java 发展成熟,在Java生态体系中曾经发挥巨大作用的JIT技术,现在可能成为一个限制Java发展的毒药。
世界变了,大人们。
现在的软件架构设计,微服务,快速开发迭代, 交付发布,持续集成。使一些新的编译语言,变得火热起来。
笨重的,启动慢,需要时间预热的JVM,变得与这个时代不相融洽, 你五分钟发布一次,哦豁,JVM刚启动,还没来得及热身。
隔壁Golang,编译用了十二秒,启动用了3秒钟。
完犊子了。
最近Oracle在发力GraalVM,一个AOT技术为主导的编程项目,它不仅支持Java,还支持Python,Ruby,甚至Javascript。
这个技术框架,把代码编译为一个精巧的二进制文件,启动速度,执行效率,内存占用都明显有提升。
根据astradot的统计,容器化的Java 实例,生命周期分布图如下:
可以看到,大部分容器生命周期都不长。
意思是它们在发布稍晚之后,就会被新的所替代。所以不存在说长期执行的应用这个说法。
容器在业务发布的时候,被创建,然后接入请求,下一次发布,又会被新的容器替代。
周而复始。
JIT适用于那些长期执行的项目,越用,越优化。用的越多,优化效果越好。
JVM会自动优化那些被频繁执行的业务逻辑,并进行优化。
如果你只运行了几分钟时间,那么JIT威力完全来不及发挥。
未来Java会走向何方,不是很确定,但可以预见,Golang和Rust这样的编译形语言,会越来越受欢迎。
这里放一句话: 没有谁能杀死Java,真正杀死它的,是它自己。
共勉。