Вы можете обойти время запуска JVM, открыв Scala REPL, а затем загрузив свои скрипты прямо в него, используя команду :load
. Это компилирует (это занимает некоторое время, но на практике я не нахожу это долго) содержимое скрипта и загружает его для использования в REPL. Например:
scala> :load testScript.scala
Loading testScript.scala...
import scala.collection.mutable.Map
memory: scala.collection.mutable.Map[Int,Int] = Map()
fib: (Int)Int
res7: Int = 165580141
scala> fib(10)
res1: Int = 55
scala> fib(11)
res2: Int = 89
scala> fib(12)
res3: Int = 144
scala> fib(13)
res4: Int = 233
Например, мой типичный рабочий процесс при написании различных прототипов в Scala выглядит следующим образом. У меня есть текстовый редактор, открытый в одном окне, и Scala REPL в другом. Я пишу свой код, а затем загружаю его (:load script.scala
). Результаты, полученные сценарием, сразу же доступны (как видно из приведенной выше расшифровки, res7
), а также доступны любые функции, классы или объекты, определенные в сценарии. И это быстрее, чем запуск scala myScript.scala
, поскольку JVM уже загружена.
Если вы идете по скомпилированному маршруту, используйте fsc
(быстрый компилятор Scala). При первом запуске он создает процесс-демон, который компилирует код. Поэтому вам нужно будет заплатить стартовую цену JVM только один раз. Просто обратите внимание, что если вы измените значение CLASSPATH
(переменная окружения), вам придется перезапустить fsc
(это то, что меня давно не беспокоило).
-- Flaviu Cipcigan