在2024年3月的 TIOBE 开发语言排名中,Java 语言排名第4,较去年同期下降一名;Go 语言排名第8,较去年同期上升2名。
开发语言的排名反映着开发者和项目应用语言的趋势,它虽然不能全面地展示一门开发语言的流行程度、市场占有率等,但也能在一定程度上反应中语言的发展态势。
Go 语言在这几年的热门发展,一方面是它类同于 C++ 可以开发高性能的本地应用,另一方面则是云原生应用概念明确以后,在云原生应用的开发中,各种组件、框架越来越依赖于 Go 语言的这种高性能、高扩展,倒推了它的流行。
在云原生应用的这种催化下,各化语言都想在云计算的新一轮发展占据一席之地,每种语言、每个框架都想和云原生沾上边。
而 Java 也同样的做出了相应的改变。
JVM & GraalVM
Java 语言设计之初,就想做到平台无关,所以它的运行基于虚拟机,通过不同的平台的虚拟机解决平台差异问题,以实现:一次编译,到处运行。而 Java 最常用的虚拟机(即 JVM),是大名鼎鼎的 HotSpot。
但在云原生应用的大浪下,虚拟机的性能始终是无法与本地应用相比的。原因正是 Java 的设计机制中,JVM 解析的是 Java 编译生成的字节码,而原生语言,如 C++ 或 Go,编译生成的机器码。这二者的运行性能差异不可同日而语。
为了搭上云原生的大船,在 2019 年 Oracle 推出了新一代的虚拟机 GraalVM。GraalVM 在设计时,不仅支持 Java 和类 Java 语言的运行,还支持了 NodeJS 等的运行,极大的扩展了 GraalVM 生态体系。
但更重要的是,GraalVM 设计支持将 Java 应用(或类 Java 应用,如 Kotlin 语言应用)编译为机器本地应用(Native Image),以达到和 Go 语言一样的高性能及低资源消耗。
从发布之初到现在,GraalVM 非常强势,Spring Boot 3 框架也是完全支持 GraalVM 编译为本地应用(Native Image),而比 Spring Boot 更轻量的框架 Quarkus、Micronaut 也是强势发展。这些框架都定位于云原生框架,借由 GraalVM 的本地应用编译能力,试图为 Java 和类 Java 语言打开一片新的天地。
未来
Go 语言虽然在云原生应用的大潮下强势崛起,但不难看出,它更大的优势在于基础组件、基础框架的开发与迭代,而在 Java 传统的业务管理领域,Go 语言有着自己天然的弱势:生态不足。
比如,我们在 Java 体系下迭代发展成熟的流程工单体系,不可能为了拥抱云原生应用,就抛弃掉使用这些成熟框架开发的项目,而另起炉灶去用 Go 语言重写一套。
抛弃已有的软件资产,在商业上不见得是一种好的方式。有了 GraalVM 的加持,只要框架逐步支持上,开发者可以复用已有的代码,又能编译得到性能同原生本地应用接近的 Java 应用。就一点就是非常吸引人的。
目前, GraalVM 不仅提供了全套的使用、编译工具还提供了丰富的指导文档。在云原生应用发展大势下,Java 开发者有了 GraalVM 的加持,也将有着未来可期的发展。
领取专属 10元无门槛券
私享最新 技术干货