在一种使用JVM的语言中,例如Jython、JRuby或任何不是Java的语言,Java是否在某个“下面”使用的语言?
执行是否意味着:
语言移植到某个地方使用JVM + Java + JVM?
例如,Jython是用Java编写的,还是使用其他东西来利用JVM?
发布于 2015-10-23 18:58:48
那得看情况。
语言标准库的一部分可以用java实现。编译器/解释器也是如此。其他对引导不重要的部分甚至可以用语言本身编写。
用户代码本身最初可能通过解释器运行,但后来编译成字节码。此外,生成的字节码可以基于运行时收集的类型配置文件进一步优化。如果字节码的某些假设无效,则字节码可能会弹回解释器。这与hotspot的解释器/c1/c2层和许多其他JIT环境类似--尽管是在更高的抽象级别上。
但interpreter+JIT只是一种可能的方法。例如,Scala是AOT-编译成字节码。
他们还可以使用C绑定来实现没有1:1映射到JDK标准库的相应语言标准库的函数。
发布于 2015-10-23 18:36:45
不,它们没有(在一般情况下)编译成Java。
例如,Jython将python编译为Java字节码,然后在JVM上运行。这与JRuby编译的字节码相同。虽然Jython和JRuby本身基本上都是用Java编写的,但实际运行的python/Ruby程序并不是编译成Java,而是立即编译到Java字节码。
https://stackoverflow.com/questions/33309132
复制相似问题