为什么可以为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 就是这样做的。

最新更新