为什么安装Scala需要额外安装JDK?

为什么安装Scala需要额外安装JDK?,scala,Scala,为什么需要额外安装JDK Scala发行版不包括将Scala转换为JVM字节码的Scala编译器吗 难道运行Scala编译程序不需要java和JRE吗 Scala需要JRE中没有的、Scala自己的版本中没有的JDK做什么 谢谢。在我的机器上,Scala 2.13.1发行版提供 ├── libexec │   ├── bin │   │   ├── fsc │   │   ├── scala │   │   ├── scalac │   │   ├── scaladoc │   │   └──

为什么需要额外安装JDK

Scala发行版不包括将Scala转换为JVM字节码的Scala编译器吗

难道运行Scala编译程序不需要java和JRE吗

Scala需要JRE中没有的、Scala自己的版本中没有的JDK做什么


谢谢。

在我的机器上,Scala 2.13.1发行版提供

├── libexec
│   ├── bin
│   │   ├── fsc
│   │   ├── scala
│   │   ├── scalac
│   │   ├── scaladoc
│   │   └── scalap
│   └── lib
│       ├── jansi-1.12.jar
│       ├── jline-2.14.6.jar
│       ├── scala-compiler.jar
│       ├── scala-library.jar
│       ├── scala-reflect.jar
│       └── scalap-2.13.1.jar
因此,如果您希望使用诸如
jdb
javap
jar
等,那么JDK安装似乎是必要的。就我个人而言,我经常在Scala REPL中使用
:javap
命令作为学习过程的一部分,我假设学习过程通过调用相应的JDK工具。请注意,它似乎是
:javap
通过调用
javap

此外,IDE很可能正在驱动一些JDK工具来提供它们的特性。另一方面,执行Scala应用程序应该只需要JRE,因为Scala编译器生成包含JVM字节码的
.class
文件

因此,对于开发,您可能需要完整的JDK,而对于执行,您至少需要JRE


考虑一下Ubuntu中的Scala包

default-jre-headless (>= 2:1.7)
libjline2-java (>= 2.13)
scala-library (= 2.11.12-4~18.04)
scala-parser-combinators
scala-xml
注意它如何只安装JRE(
默认JRE headless
),而不安装完整的JDK



我还通过尝试
SBT编译
混合
.scala
.java
源代码,在Ubuntu上测试了SBT是否只与JRE一起工作。它使用成功编译,但使用失败。SBT使用来自
tools.jar
,JRE 8没有附带,但是在
tools.jar
发布之后,JRE 11似乎附带了所需的功能。

有帮助吗?对于基本开发,您似乎只需要JRE,如果您将Java代码混合到Scala项目中,则需要JDK。对于打包,是否需要
jar
,是否需要JDK?Scala自己的版本是否包含命令
jar
?为什么不自己安装并检查它?同样,没有人手动编译和打包他们的应用程序。您使用的是构建工具,我不确定构建工具假设您安装了哪些二进制文件,回答这个问题的最简单方法是在新的环境中测试它。我认为最简单的答案是,您可以选择您想要的任何JDK。Scala没有理由强迫用户使用特定的JDK供应商或版本(除了兼容性问题,但这些问题往往会影响广泛的主要版本)。鉴于此,正如其他评论中已经强调的,您不一定需要JDK来开发Scala项目。