Массивная ERP-система на языке Scala

Прочитав медленный компилятор и ответ Мартина Одерски, мы так обеспокоен запуском массового продукта ERP (который хорошо финансируется и нацелен на конкретную отрасль) с использованием языка Scala.

Отредактировано на основе ответов ниже: возможно разделение на разные модули. Но именно так следует поступать / планировать в любых крупных проектах. Это просто не может быть для нас решением.

Сам Мартин признал (см. ссылку выше), что компилятор Java в 10 раз быстрее Scala (почти два года назад). Это пугает нас, мы не можем позволить себе ждать часами, пока он строится (например, когда мы делаем чистую сборку) на машине Dev. Мартин четко сказал, что не ждите никаких чудес в будущем.


Наш единственный вариант - использовать непрерывную компиляцию. Наша предполагаемая IDE - это IntelliJ Idea.

  1. Я не уверен, как это повлияет на производительность машины разработчика / Ide?
  2. Также, когда я нажимаю кнопку «Сохранить», он также пытается скомпилировать файл кода, который я сейчас пишу?

Некоторые рекомендации действительно приветствуются.

Спасибо
Mk


person Murali Krishna    schedule 24.08.2013    source источник
comment
Этот вопрос о медленном компиляторе был задан в 2010 году. Вы действительно думаете, что за эти три года ничего не изменилось?   -  person 4lex1v    schedule 24.08.2013
comment
Спасибо за ваш комментарий. Он, должно быть, определенно улучшился. Но, согласно ответу Мартина, он будет оставаться медленным, и в будущем не стоит ожидать каких-либо чудес.   -  person Murali Krishna    schedule 24.08.2013
comment
Что ж, я могу сказать, что мы разрабатываем не массивную, а около 10 модулей, систему здравоохранения RESTful поверх Akka + Spray, и в настоящее время это занимает около 25 минут в Jenkins на задачах очистки / компиляции / тестирования.   -  person 4lex1v    schedule 24.08.2013
comment
Еще раз спасибо за ответ. Для меня это уже звучит комфортно. Не могли бы вы сказать, сколько времени требуется для компиляции того же решения на машине разработчика?   -  person Murali Krishna    schedule 24.08.2013
comment
Мы используем DigitalOcean в качестве Dev Server, что касается локальной машины, которая действительно зависит от моих целей, не забывайте, что SBT использует инкрементную компиляцию + JRebel + sbt-revolver plugin, так что это действительно быстро, что касается полной очистки / компиляции / тестирования задача может быть минут 20 на Mac-mini   -  person 4lex1v    schedule 24.08.2013
comment
возможно, вы захотите взглянуть на «Штаны» и на то, как он был использован для значительного сокращения времени сборки для большого проекта scala за счет внедрения хорошего SoC внутри проекта youtube.com/watch?v=ukqke8iTuH0, вы можете достичь тех же преимуществ, дисциплинируя, используя любой инструмент сборки.   -  person Jean    schedule 24.08.2013


Ответы (1)


Скорость компиляции определенно не является одной из сильных сторон Scala, но вы потенциально можете ограничить ее влияние на вас, структурируя большой проект как набор более мелких проектов с древовидной зависимостью (например, основные утилиты; основная библиотека, которая зависит только от этих утилит. ; интерфейс базы данных, который зависит от ядра и внешней библиотеки базы данных и т. д.). Затем в течение большинства циклов разработки вы можете притвориться, что работаете с меньшим проектом, и зарезервировать более крупные сборки для относительно редких событий.

Мой самый большой проект довольно мал (время компиляции менее 5 минут; 40k LOC), но даже в этом случае я разделил его таким образом, что мне редко приходится ждать дольше минуты, пока что-либо завершится. Это требует некоторой дисциплины для поддержки и некоторого рефакторинга (поскольку я перемещаю общие блоки кода из листьев дерева, где его перекомпилировали быстро, в корень, а не дублировал его), но у меня это хорошо сработало.

person Rex Kerr    schedule 24.08.2013