这是因为:1、非常经济地实现跨平台;2、JVM 卓越的 JIT (Just-In-Time 即时编译)性能;3、成熟的实例与经验;4、资料完备,社区巨大。语言编译器后端只需要输出 JVM 字节码就可以。跨平台需要极大的工作量,需要花费大量精力去针对不同平台和处理器进行优化。
1、非常经济地实现跨平台
语言编译器后端只需要输出 JVM 字节码就可以。跨平台需要极大的工作量,举个例子,只是独立开发生成本地代码,就需要花费大量精力去针对不同平台和处理器进行优化(比如 Firefox 就会考虑重用 WebKit 的这部分后端)。
2、JVM 卓越的 JIT (Just-In-Time 即时编译)性能
JIT 可以在运行中记录程序运行的特征,并在其基础上做大量的优化(Java 企业级应用的优秀性能很大程度上是由此而来)。 JIT 自从 HotSpot JVM 随 Java 1.2 发布以来,JVM JIT 的性能不断提高,是无可争议的成功产品。把 JVM 作为目标平台意味着大量的性能优化工作可以「外包」给 JVM 来做,大大缩减了 Guest 语言的开发预算。
3、成熟的实例与经验
已经有多个成熟的实例,有大量的经验可以借鉴。JVM 作为一个成熟的高层运行环境,为 Guest 语言提供了很多运行时所需要的服务,比如内存管理(有业界领先的垃圾回收等),很大程度上避免了额外的独立开发。
4、资料完备,社区巨大
JVM 有多个独立实现,也有若干厂商会持续推进,资料完备,社区巨大。Java 社区有大量成熟的库,一般来说,运行在 JVM 上的其它语言都会设计一个专用的「桥」来帮助直接使用 Java 的库,对潜在客户来说是个很好的卖点。Java 有还算不错的开发工具和环境。目标为 JVM 的很多语言会考虑用 Java 语言实现(至少在 bootstrap 阶段)。
延伸阅读:
什么是JVM?
Java虚拟机(Java Virtual Machine 简称JVM)是运行所有Java程序的抽象计算机,是Java语言的运行环境,它是Java 最具吸引力的特性之一。
虚拟机是一种抽象化的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机有自己完善的硬体架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。Java虚拟机屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。
文章标题:为什么很多语言选择在JVM上实现,发布者:小编,转载请注明出处:https://worktile.com/kb/p/39243