可以肯定地说,Java虚拟机最初是为
Java编程语言而设计的,但是现在,其他开发人员已经能够编写编译到Java字节码的编程语言,如Scala,Jython和J
Ruby.
Java字节码中仍然存在“面向对象”引用,如接口,方法,字段.例如invokespecial是对“对象”方法的调用.
它不是纯粹的语言不可知指令集的纯堆栈虚拟机.例如,纯FORTH实现只会有堆栈操作.
问题是,JVM语言是否不可知?
解决方法
从某种意义上说,JVM和Java字节码是完整的,任何其他图灵完整的语言都可以被转换和编译为java字节码并在JVM上运行.这可能是非常低效的,但不是不可能的.对于“不可知论”的最严格的定义,没有这样的事情.在硬件级别,所有处理器都有一组定义的二进制指令,因此在任何时候,任何语言都必须被转换为与应该执行的硬件兼容的程序集.
编辑:JVM没有在真空中开发,它是与JAVA编程语言一起开发的,因此Java语言严重影响了Java字节码和JVM的设计.所以在这个意义上,你可以说JVM是用Java设计的.但是,在架构中,JVM有意识地从Java语言去除耦合(通过中间字节码格式),因此设计中有可能考虑可能的替代语言的元素.