博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
为什么很多语言选择在JVM上实现
阅读量:4606 次
发布时间:2019-06-09

本文共 1260 字,大约阅读时间需要 4 分钟。

非常经济地实现跨平台。你的语言编译器后端只需要输出 JVM 字节码就可以。跨平台需要极大的工作量,举个例子,只是独立开发生成本地代码,就需要花费大量精力去针对不同平台和处理器进行优化(比如 Firefox 就会考虑重用 WebKit 的这部分后端)。

JVM 卓越的 JIT (Just-In-Time 即时编译)性能。 JIT 可以在运行中记录程序运行的特征,并在其基础上做大量的优化(Java 企业级应用的优秀性能很大程度上是由此而来)。 JIT 自从 HotSpot JVM 随 Java 1.2 发布以来,JVM JIT 的性能不断提高,是无可争议的成功产品。把 JVM 作为目标平台意味着大量的性能优化工作可以「外包」给 JVM 来做,大大缩减了 Guest 语言的开发预算。
已经有多个成熟的实例,有大量的经验可以借鉴
JVM 作为一个成熟的高层运行环境,为 Guest 语言提供了很多运行时所需要的服务,比如内存管理(有业界领先的垃圾回收等),很大程度上避免了额外的独立开发。
JVM 有多个独立实现,也有若干厂商会持续推进,资料完备,社区巨大。
Java 社区有大量成熟的库,一般来说,运行在 JVM 上的其它语言都会设计一个专用的「桥」来帮助直接使用 Java 的库,对潜在客户来说是个很好的卖点。
Java 有还算不错的开发工具和环境。目标为 JVM 的很多语言会考虑用 Java 语言实现(至少在 bootstrap 阶段)。
题外话:
由于 Scala 的独特优势,现在有不少研究性语言会用 Scala 实现,可以看到这里会有间接地使用 JVM 。
另外一个趋势是把 Javascript 成为新的目标平台。很多主流语言都已经出现了编译器可以翻译成 Javascript[1],这也是得益于近年来 Javascript 虚拟机性能的显著提升。

企业在选择一项技术的时候更多的考虑是技术本身带来什么,即实用性。而不是技术是否华丽,优美

总结基于上面的原则JVM的优势很明显:
1.成熟,标准,这一套实现已经沿用了很多年,得到过充分的验证,它代表了一个成熟的流派,包括后来的.Net FrameWork也是沿用同样的原理。
2.垃圾回收 GC这个概念在Lisp时代就已经定义,可能很多追求性能的同学会鄙视之,但无论如何它确实带来了开发效率的提升。
3.内存管理 其实这一点和2有些重复,但JVM的内存模型,基于栈的方式,方法执行的优化,甚至线程方面的处理都是非常经典和值得借鉴的
4.相关文档非常完善,标准清晰,有专门的公司推进,拥有大量的开发者。
但是有了上面几点并不一定代表你要用它,因为现实中的开发一定是要根据实际情况做出抉择的,而不是听信“某某技术牛X”这样的言论。
如果楼主有兴趣可以研究下JVM的实现,包括现在Android的Dalvik,甚至可以去Mono社区看看,里面很多东西还是很有意思的^_^

转载于:https://www.cnblogs.com/easn/p/JVM.html

你可能感兴趣的文章
Linux Glibc溢出漏洞凶猛来袭 可让***者获取操作系统的控制权限
查看>>
设计模式之原则
查看>>
Maven修改全局和局部JDK版本
查看>>
设计模式——组合模式(Composite Pattern)
查看>>
java设计模式之——代理模式
查看>>
php页面防止重复提交
查看>>
Perl DBI模块的例子
查看>>
python中str和repr区别
查看>>
升级win10后无法使用桥接网络解决方法
查看>>
如何进行跨网段的远程唤醒
查看>>
数据挖掘-同比与环比
查看>>
nginx+php详解
查看>>
怎样取php一个字符串中的某个字符
查看>>
我的友情链接
查看>>
RedHat6 管理应用服务【11】
查看>>
stm32F10x复习-1
查看>>
redis的学习使用(ubuntu系统下)
查看>>
20135226黄坤信息安全系统设计基础期末总结
查看>>
轻松快捷创建VSFTP虚拟用户
查看>>
[转]Javascript原型继承
查看>>