Почему Scala обычно устанавливается для каждого из ваших Scala проектов, а не для всей системы? - PullRequest
0 голосов
/ 14 марта 2020

Мне было интересно, почему https://www.scala-lang.org/download/ говорит

Scala необычно, потому что обычно оно устанавливается для каждого из ваших Scala проектов, а не устанавливается системно. широкий.

Почему дело не в Java? Может ли этот способ работать для Java проектов?

Спасибо.

Ответы [ 2 ]

2 голосов
/ 14 марта 2020

Если вы используете SBT на основе scalaVersion, указанного в build.sbt проекта, он будет обрабатывать Scala как другие зависимости обычной библиотеки и загружать их в

.ivy2/cache/org.scala-lang/scala-compiler
.ivy2/cache/org.scala-lang/scala-library
.ivy2/cache/org.scala-lang/scala-reflect

аналогично обычной библиотеке, скажем, cat

libraryDependencies += "org.typelevel" %% "cats-core" % "2.0.0"

, которая в конечном итоге окажется под

.ivy2/cache/org.typelevel/cats-core_2.13

Мы также можем иметь общесистемную установку Scala под, скажем /usr/local/bin, однако SBT не будет использовать это и будет читать из ~/.ivy2/

2 голосов
/ 14 марта 2020

Одна вещь заключается в том, что, говоря о Java, мы должны различать guish JRE и JDK.
JRE имеет JVM, поэтому это только платформа времени выполнения для Java байт-кода, JDK имеет компилятор и другие инструменты разработки.

Scala установка уже идет с компилятором, интерпретатором и т. Д. c.

Оба могут запускать свой собственный скомпилированный код, но для Java нужны дополнительные jar-файлы на classpath для запуска Scala программ (хорошо описанных здесь) .

Другая и, вероятно, основная причина, по которой при установке отдельного Scala для каждого проекта по отдельности, заключается в том, что Scala не полностью совместима между его версиями, то есть для конкретной версии Scala требуется указанная c версия. библиотеки.
(где Java обратно совместимо)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...