为什么有可能为JVM构建自定义语言,如Groovy,Scala,Clojure,Kotlin?

这些语言在很大程度上不同于Java,如OO系统,类型系统(最显着的)。

实际的问题是JVM是否跟踪引擎盖下的对象? JVM中是否有对象 ? 这些语言的创建者有责任与Java世界进行互操作,还是“默认”实现?

实际的问题是JVM是否跟踪引擎盖下的对象?

是的,它确实。 垃圾收集是JVM的责任。

JVM中是否有对象?

是的,有字节代码来创建类实例。 此外,实例方法的动态分派由JVM完成。

这些语言的创建者有责任与Java世界进行互操作,还是“默认”实现?

这是低挂的果子,而不这样做是愚蠢的。 而且,并不是所有的JVM语言都会重新发明,只要适当的时候就使用JRE类。 这包括最有可能的字符串,原始类型和他们的盒装形式和数组。

所有JVM语言都编译为“Java字节代码”。 实际上,JVM并不知道Java的编程语言 。 JVM规范指定了一个“ class文件”,它必须满足一定的规则。 只要您提供由编译器创建的兼容class文件,例如,您的代码将在JVM上运行。 这就是Kotlin所做的。