Ber*_*own 10 java language-agnostic stack forth
可以肯定地说Java虚拟机"最初"是为Java编程语言设计的,但是现在,其他开发人员已经能够编写编译成Java字节码的编程语言,如Scala,Jython和JRuby.
Java字节码中仍然存在"面向对象"的引用,如接口,方法,字段.例如,invokespecial是对'object'方法的调用.
它不是纯粹的语言无关指令集的纯栈虚拟机.例如,纯FORTH实现只能进行堆栈操作.
问题是JVM语言与否是无关的?
JVM绝对不是语言无关的,有些语言无法在其上有效实现.例如,JVM不提供内存寻址操作,因此像C这样的低级语言的实现效率非常低.但是它的原语集能够支持许多流行语言,其功能与Java不同,给出了一个适当的智能编译器.可以正确实现的语言不一定只是具有语法糖的Java; 当然,从Java中获得的差异越大,实现该语言的难度就越大
从JVM和java字节码是图灵完备的意义上来说,任何其他图灵完备的语言都可以转换并编译为java字节码并在JVM上运行。这可能效率极低,但并非不可能。至于“不可知论者”最严格的定义,并不存在这样的事情。在硬件级别,所有处理器都有一组定义的它们支持的二进制指令,因此在某些时候,任何语言都必须转换为与其应该执行的硬件兼容的汇编语言。
编辑:JVM 不是在真空中开发的,它是与 JAVA 编程语言结合开发的,因此 Java 语言很大程度上影响了 Java 字节码和 JVM 的设计。因此,从这个意义上说,您可以说 JVM 是在设计时考虑到 Java 的。但事实上,在架构中,JVM 有意识地与 Java 语言解耦(通过中间字节码格式),因此设计中的某些元素考虑了可能的替代语言。
| 归档时间: |
|
| 查看次数: |
872 次 |
| 最近记录: |