非常经济地实现跨平台。你的语言编译器后端只需要输出 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社区看看,里面很多东西还是很有意思的^_^

最新文章

  1. Java类加载基本过程
  2. Django进阶(二)
  3. App瘦身
  4. Mini projects #3 ---- Stopwatch: The Game
  5. 智能车学习(十七)——舵机学习
  6. Linux命令--文件管理
  7. Visaul Studio2015安装以及c++单元测试使用方法
  8. UML中关系图解
  9. pip和easy_install使用方式
  10. 之前做web性能优化的一些个人心得
  11. Oracle 11g之创建和管理表练习
  12. C51应用 Modbs Rtu协议实现与KEPServerEx 通信
  13. study notes: high performance linux server programming
  14. Java之路——Java初接触
  15. mysql视图 更新中的问题
  16. Python import hook
  17. Building QGIS from source - step by step (开发文档翻译1)
  18. 2017-12-15python全栈9期第二天第三节之使用while循环输出0到10
  19. 运维数据库平台~inception测试脚本
  20. 16.linux常用查看命令

热门文章

  1. dubbo与spring mvc
  2. mysql 服务器ip连接统计
  3. vim的一些高级配置
  4. HDU-1034(简单模拟)
  5. javaweb常用工具类及配置文件备份
  6. SQLServer2012分离出的数据库存放路径
  7. iOS 多张图片保存到相册问题(add multiple images to photo album)
  8. iOS 高级开发 runtime(三)
  9. 基于注解整合struts2与spring的时候如果不引入struts2-spring-plugin包自动装配无效
  10. Mysql笔记【3】-SQL约束