百科问答小站 logo
百科问答小站 font logo



「解释/JIT 字节码的 VM」这个概念是 Java 的设计者第一个发明的吗? 第1页

  

user avatar   rednaxelafx 网友的相关建议: 
      

假定be5大大发这个问题不是来钓鱼…

原问题:

「解释/JIT 字节码的 VM」这个概念是 Java 的设计者第一个发明的吗?

答案显然是否定的啊。

这里就不尝试追溯到“最初的字节码解释器”是哪个了。但Java的祖先们,Self、Smalltalk、PostScript的实现都是以字节码解释器为主流的。

80年代的Smalltalk也已经开始有JIT编译的实现了,而80年代末的Self就已经开始把高度动态的面向对象语言的高效JIT编译推到了很高的高度,其实现技巧在现在的JavaScript引擎中还有直接应用。

如果90年代初Sun没有成功推起Java、几个IT大手没有聚在一起做Taligent还失败了然后一起转投Java,那1990年代中期腾飞的面向对象语言恐怕就不是Java而是Smalltalk了。当时的Smalltalk实现们有着先进的技术、成熟的实现,好些实现还是现在主流JVM的直接血缘上的祖先:

  • Berkeley Smalltalk -> Self -> Strongtalk -> HotSpot
  • OTI Smalltalk -> IBM K8 -> IBM UVM -> IBM J9

前面好像有奇怪的东西混进去了?Java的祖先为啥会有PostScript?PostScript和字节码?

因为Java的主要设计者James Gosling高司令大大在参与Oak项目之前写过PostScript解释器啊。这段经历恐怕对后来Java字节码的设计有着非常大的影响。

PostScript自身就可以看作是“字节码”了 >_<

高司令上学的时候也学习过Pascal,而Pascal中很有影响力的一个实现,UCSD Pascal所带来的p-code概念,大概是现代高级语言虚拟机的字节码指令集的主要源头了吧。UCSD Pascal所定义的p-code让语言处理器的前端与后端可以干净的分离,前端只负责语法分析和编译时语义的处理,后端则负责运行时语义的处理。这样,“前端”只要实现一遍,而“后端”才需要每个平台实现一个版本——既可以实现为p-code到机器码的编译器,也可以实现为p-code的解释器。

请参考高司令的自述:

How The JVM Spec Came To Be

34:00左右:

The JVM bytecode spec is based loosely on the Pascal p-code spec.

跟Pascal差不多时期,PostScript的祖宗之Forth那也是杠杠的解释器,其中不乏有趣的字节码解释器实现。

再往前看,有趣的老祖宗还得说说SECD machine。基于栈的字节码解释器在1960年代就已经存在了…LispKit Lisp可以编译到SECD machine上运行。

===================================

前面有回答提到LISP。确实LISP很早就有实现用上了字节码解释器,但原始LISP实现(Steve Russell在IBM 704上根据

AI Memo 8

写的LISP解释器)并不是一个字节码解释器,而是一个AST解释器—— S-expression的解释器。




  

相关话题

  今年刚考上机械研究生,想着混个毕业,自学三年java毕业转行可行吗? 
  JDK 源码中 HashMap 的 hash 方法原理是什么? 
  一个即将步入大学对编程感兴趣的学生,3 年能将 Java 学到什么程度,应怎样合理分配这 3 年? 
  创业公司选择 .NET 技术栈究竟比选 Java/Python 贵多少钱? 
  为什么 .NET 平台在技术上远强过 Java,而多数大公司却仍采用后者? 
  两年嵌入式C语言编程经验,如果有机会做和 Android 相关的 C++、JAVA,还有 Javascript 脚本开发工作,转过去好吗? 
  a += a *= a; 为什么在C++和Java算出了不同结果? 
  一码通崩溃的技术原因是什么? 
  江湖上流传着哪些关于R大RednaxelaFX的黑暗传说? 
  开发一个类似IDEA的Java IDE有多难? 

前一个讨论
如何评价《百度外卖 16 家餐厅隐身城中村:售过期菜,剪刀拌饭》?
下一个讨论
男领导晚上9点多约女下属去酒店房间,说了解工作状况,如果什么都没发生你信吗?





© 2024-11-25 - tinynew.org. All Rights Reserved.
© 2024-11-25 - tinynew.org. 保留所有权利