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

时间:2017-08-18 08:41:09

标签: jvm jvm-languages

这些语言在很大程度上与Java不同,如OO系统,类型系统(最值得注意的)。

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

2 个答案:

答案 0 :(得分:3)

  

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

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

  

JVM中是否有对象?

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

  

这些语言的创建者是否有责任与Java世界互操作,或者它是否已实现"默认情况下"?

这是低悬的果实,不这样做是愚蠢的。此外,并非所有JVM语言都重新发明轮子,并在适当时使用JRE类。这很可能包括String,原始类型及其盒装形式和数组。

答案 1 :(得分:1)

所有JVM语言都编译为" Java Byte Code"。实际上,JVM对编程语言 Java没有任何想法。 JVM规范specifies a" class文件",必须满足某些规则。只要您提供由编译器创建的兼容class文件,您的代码就可以在JVM上运行。这就是Kotlin所做的事情。