开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 1 天,点击查看活动详情
什么是 jvm 的语言无关性?
因为我们知道作为 jvm 来说它是java虚拟机,并且它只识别字节码,也就是说它只识别字节码的文件。
在刚接触java 的时候都会学习到我们平常编写代码的文件后缀是 .java,而真正能运行起来的文件的后缀是 .class 文件,这个就是 jvm 可以识别的 字节码文件了。
解耦
所以对于 jvm 来说,它和 java 语言是解耦的,是没有直接关系的,有关系的只是 jvm 去运行 java 代码通过编译器编译过后的字节码文件。
同时不只是 java 语言通过编译器编译过后的文件可以在 jvm 上进行运行,例如 Scala、Koltin语言通过对应的编译器进行编译后生成对应符合jvm规范的字节码文件也是可以在 jvm 中进行运行的。
无关性
这个就是 jvm 的语言无关性,也就是我们常说的跨语言性,可以做到跨平台性,可以在安装了 jvm 机器上运行各种符合规范的字节码文件,并且能保证运行的效果也都是一致的。
这个就得益于 jvm 的垃圾回收机制 和 jvm 里面的 JIT 的优化等,这就使得很多比较小众的语言也能具备很好的稳定性能。
同时这些比较小众的语言也不需要去考虑跨平台性,也不需要花大量的精力去进行对应的性能优化,因为在JVM里面它也会对执行的代码进行一定的优化操作。
总结
所以这就是我们常说的语言无关性,也是因为 JVM 的语言无关性奠定了非常强大的 JAVA 生态。
也得益于强大的 java 生态衍生出了一系列比较强大的软件架构