因此,我了解了scalac编译器与javac有何不同-查看生成的字节码,它们看起来与javac生成的内容完全不同-例如没有构造函数的类。

但是,运行时是否不同于在类路径中使用scala jar启动java?我非常确定,但是有人可以确认scala命令只是围绕Java的薄包装-毕竟,他们只是简单地编写了JRE/JDK。

最佳答案

scala命令基本上是一个脚本,该脚本设置类路径,然后在Java Runtime环境中运行您的代码。
scala脚本中的相关行显示在末尾:

exec "${JAVACMD:=java}" $JAVA_OPTS -cp "$TOOL_CLASSPATH" -Dscala.home="$SCALA_HOME" -Denv.emacs="$EMACS"  scala.tools.nsc.MainGenericRunner  "$@"

基本上,这将开始运行javaMainGenericRunner。然后MainGenericRunner检查您是否已告诉scala运行您的Scala类之一。如果是这样,它将开始运行它。否则,它将启动交互式解释器。

08-25 08:23