关于Virtual Machine的思考

1.从大学使用最频繁的编程工具Sybase公司的Power Builder(编程语言其实是叫Power Script)开始说起

Power Builder开发的应用程序,是需要基本的运行时(Runtime)来支持,而我们也从截图中清楚地看到,如果没有基本的PBVM60.dll(凭借我的技术感觉上,这个VM应该就是Virtual Machine的缩写,先放这里,暂不查阅文献)的基本支持,程序是无法运行启动。

2.从工作后接触的第二门编程语言C#,对应的.NET说开来,.NET平台的核心运行环境是依赖于CLR(Common Language Runtime),Runtime这个老朋友又出现了。当然,.NET平台的开发大神有来自Borland公司的Delphi之父,Delphi虽然我没用过,但也是和Power Builder一样扬名天下的利器,甚至有超越后者其他优势。

3.再讲讲Visual C++(VC),也是古老进化来的,从最早工控行业使用的VC++6.0,绕不开的藩篱,经常会发现缺少VC60.dll程序无法启动,而这个VC60.dll,我们亲切地称之为VC++ 6.0 (Runtime)运行时。如果我们看到过一些书籍的话,Run Time和本质其实是和Design Time相对来说的,也就是说程序从设计到运行是一个完整的工程,这也是为什么有的行业会把程序员成为软件设计师。

4.接着讲讲最近一直在用的Java语言,作为早期引领.NET的先驱,JVM(这一般是指Sun公司的HotSpot,当然还是一票Weblogic的XXX,JBoss的JRockit等JVM实现等着你)这个词已经烂大街了,但是经过这几年的学习,发现8年前.NET(4.0及之前的版本)的垃圾收集机制(根引用,遍历,012三代收集)比起当时的JVM的垃圾收集方法和算法,简直弱爆了。用打扑克打个比方,JVM的垃圾收集方案,有斗地主,升级,拱猪。。。等多种玩法,而.NET的则只搞定斗地主一种玩法。Java设计跨平台的先天优势以及后续谷歌为它引入的Devik虚拟机,使他更加猖獗,不过好像早两年谷歌也在反思Devik的虚拟机机制设计的深层次问题。

5.最后说说JavaScript吧,不知道是我以前孤陋寡闻没注意,还是确实Chrome引入了新机制VM(作为程序员的直觉,这个指定是Virtual Machine缩写,难道Google把V8引擎搞成VM了?不敢直视),Google(又是Google,你咋就那么牛,让人高不可攀呢)把JS的解析器(以前都是什么SpiderMonkey之类的东西),现在用Chrome调试JavaScript(或者按照更新的标准应该叫ECMAScript)问题,时而会遇到VMxxx,看来ECMAScript(现在已经是第6版的Alapha版本了)越来越面向对象了,有VM做基础,确实能够更上一层楼了,怪不得NodeJS敢于迎难而上,挑战服务器端呢。

另外,前一段微信里看到一篇纯技术的文章,讲SSD硬盘的,其中就讲到在存储空间和存储效率之前的平衡,内部也实现了一套类似JVM一样的机制,就是划分成不同作用的一些块,一些块满了达到条件时候,就会触发类似VM机制的垃圾收集功能, 移动块数据,类似机械硬盘的碎片整理原理,以提高磁盘效率。

 

posted @ 2016-11-27 18:46  任国强  阅读(191)  评论(0编辑  收藏  举报