如果您愿意,可以查看编译器源代码,尽管首先看一下Martin Odersky关于编译器内部的演示可能会提供更多信息.
在回答您的具体问题时:
scalac不会这样做,并要求您先javac手动运行; 但是scalac可以在2.7.2之后使用javac编译Java文件.Scala 不编译 Java。它对 Java 有足够的了解,可以弄清楚类的 API 是什么,但仅此而已。
它希望您使用 java 编译器来编译您的 java 文件。
是的。Scala 生成有效的 .class 文件。但是,无法将该文件转换为 Java 代码,因为有效的类文件允许 Java 不允许或不能表示的内容。
没有“那个”JVM。有许多现有的 JVM,事实上,Oracle 拥有自己专有的 JVM。当然,Sun 的 JVM 现在是 Oracle 的。
一直以来都有许多专有的 JVM,其中之一来自 Oracle。
让我们考虑一个假设的“最坏情况”场景:世界上所有 JVM 都成为许可(付费)产品或不复存在。当然,Scala 仍然可以在 Dalvik VM 上运行,但我们假设它也已付费或不复存在。
在这种情况下,Scala仍然可以继续存在,但您必须付费才能运行使用 Scala 编译的程序。事实上,由于 Scala 是一个 JVM 程序,你甚至需要付费才能使用编译器!
或者,Scala 可以扩展到其他一些目标平台。现在 Scala 有这样的努力,但绝对没有压力使它们成为生产级。如果有必要,它会完成。