Использовать или не использовать Scala для новых проектов Java?

Я впечатлен Twitter и расследую использование Scala для нового крупномасштабного веб-проекта с Hibernate и Wicket. Что вы думаете о Scala, и должен ли я использовать его вместо Java?

РЕДАКТИРОВАТЬ: И, как вы думаете, Google Noop, Fan или Scala может взять на себя руководство от Java в ближайшем будущем, и у кого есть шанс на ваш взгляд?

Ответ 1

Не забывайте, что вы можете использовать его вместе с Java. т.е. вы можете использовать скомпилированные .classes и .jars в среде с Scala -scripted.

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

Что-то, что следует учитывать, это то, кто еще будет заботиться об этом и поддерживать его. Для всех Scala hype, относительно небольшое число людей может ввести в него код (начиная с ноября 2009 года), и вам, возможно, придется нанимать людей в будущем, чтобы ухаживать за ним. Поиск Scala людей будет означать, что вы смотрите в гораздо меньшем пуле кандидатов (некоторые могут захотеть узнать Scala на задании, но все еще стоит начать)

Ответ 2

Вот плюсы и минусы Scala относительно Java IMHO:

Плюсы:

  • Более сжатый синтаксис для идиом, общих в современном Java-коде
  • Затворы
  • Более мощная система типов, включая mixins
  • Соответствие шаблону
  • У Great REPL, 2.8 даже есть вкладка

Вкратце: вы получаете гораздо больше функциональности с гораздо меньшим количеством кода, чем Java

Минусы:

  • Поддержка IDE по-прежнему имеет альфа-или бета-качество, хотя в настоящее время IDEA имеет лучшую поддержку
  • Стандартная библиотека не застрахована от изменений с каждой новой версией (2.8 будет иметь обратно несовместимые изменения).
  • Стандартная библиотека имела существенные ошибки, по крайней мере, как и год назад (когда я нашел ее в поддержке JSON)

Я думаю, что Scala будет готов к крупному производству в течение 6-8 месяцев, но сегодня я бы не поставил на него свой проект.

Ответ 3

Не забывайте, что это относительно небольшой кусок Twitter, особенно очереди сообщений, которые написаны в Scala. Насколько я понимаю, передним интерфейсом по-прежнему является Ruby-on-Rails.

Тем не менее, я мигрировал в scala год назад: я не оглядывался назад. Кроме того:

  • есть большой пул выпускников, которые очень заинтересованы в том, чтобы приступить к работе в магазине scala
  • тот факт, что scala создан для работы на JVM, означает, что разработчики Java получают начало на этом языке (если вам интересно, я могу расширить, почему это так).

Ответ 4

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

Ответ 5

Если вы планируете использовать Java и Scala в одной среде проекта, я бы предложил использовать Maven в качестве зависимости от проекта система. Вот код, который я использую для создания моих проектов Scala:

mvn archetype:generate -DarchetypeCatalog=http://scala-tools.org/

Вот несколько информация об использовании для использования maven с Scala. Если вы используете maven как компилятор, вы можете иметь как java, так и Scala исходные файлы в одном пакете без дополнительной настройки. Он просто работает.

Вот беседа, размещенная LinkedIn. Его панель с Scala, Twitter и Scala снимает веб-фреймворк (который я использую). Если вы все еще решаете, следует ли использовать Scala id, чтобы посмотреть его.

Ответ 6

Одно из преимуществ Scala заключается в том, что вы можете создавать его вместе с Java в одном проекте. Оба Maven (см. Комментарий luigi-prog) и простая сборка инструмент имеют довольно простые крючки, которые будут строить все за один раз.

Другой способ - принять существующие модульные тесты, переключить реализацию, увидеть разницу.

У Daniel Spiewak было несколько приятных записей о перехватах Java- Scala interop.

Я использую Scala на рабочем месте в течение прошлого года, и я бы сказал, что о трехмесячной кривой обучения станет достаточно опытным. Это с довольно небольшой группой типичных людей Java. Там много волатильности, но с точки зрения конвенций и стандартов, поэтому ожидайте, чтобы каждый раз несколько раз редактировалось по любому проекту.

Я не думаю, что вы можете искать "Scala программистов". Но вы можете найти множество программистов на Java, которые заинтересованы в изучении Scala.

Если бы я предполагал, Scala и Clojure могут быть передними участниками для "вытеснения" Java. Я бы не ожидал серьезного сдвига до 2012 года. Scala, вероятно, приводит к импульсу - теперь существует несколько книг на нескольких языках.