Ответ 1
Ну,
Scala/Akka предлагает различные концепции для многих распространенных ошибок
в развитии системы. Чтобы сравнить несколько примеров с Java EE:
= > JavaBeans:
Mutable Data-структуры - это просто злое, а не потокобезопасное.
Внесение их в контейнер ничего не меняет.
Вместо этого используйте неизменяемые структуры данных, поскольку scala применяется с помощью CaseClasses.
= > EJB:
Состав EJB просто отстой. Фактическая проблема заключается в том, что EJB должны иметь высокий уровень сцепления, чтобы быть полезными с точки зрения повторного использования, что практически невозможно на практике. Набивка их в контейнер не сделает его лучше. В Scala, используя черты,
для композиции позволяет использовать ad-hoc-композицию посредством инъекции конструктора, защищенной f-ограниченным полиморфизмом. Жизнь может быть такой простой.
= > Сделки:
Да, менеджеры транзакций уже улучшают ситуацию, но все равно
требуется большой стек Java EE, чтобы он работал. В Scala просто используйте программную транзакционную память (STM), предоставленную akka, и все готово.
= > Настойчивость:
Нужно ли нам ОРМ? Проекты вроде squeryl.org добавляют строго типизированный LINQ to Scala.
Вместо высокоуровневого отображения языка запросов, как Hibernate, он просто интегрирует
запросы в Scala, полностью проверенные компилятором. Это, конечно, справедливо только для реляционных БД. Для no-sql существуют другие доступные решения.
= > Масштабирование?
Кластеризация Java EE? Нужно ли говорить больше?
В akka вы просто добавляете еще несколько серверов, и система просто масштабируется. Зачем? Потому как
к удаленным субъектам относятся и доступны так же, как локальные актеры и все
иначе это просто вопрос настройки вашей распределенной действующей системы. Акка основана на
модель Erlang, поэтому они не ищут пять-девять часов, а девять-девять раз
при полной загрузке системы.
В то же время, акка настолько легка и легка, что вы
может использовать его на Android. Вы попытаетесь запустить Java EE на Android?
https://github.com/gseitz/DiningAkkaDroids
Чтобы быть ясным, возможно, десять лет назад Java EE был ответом на вопрос о том, как построить
крупным программным обеспечением для корпоративного уровня и, как только Spring сделал его пригодным для использования, это было, возможно, лучшее доступное решение в те дни.
Сегодня мир сильно изменился, и большинство старых ответов больше не соответствуют сегодняшней реальности. Scala, не является совершенным, но если это действительно сводится к одной отдельной строке, это будет следующим:
В Scala, я получаю свое фактическое программирование за небольшую часть времени Java EE и установка контейнера.
Даже Spring, поскольку структура выбора для Java EE движется в направлении scala:
http://blog.springsource.org/2012/12/10/introducing-spring-scala/
Чтобы начать с обоих, концепций и лучших практик для Akka, есть удобный книга под названием "Акка Essential"
http://www.akkaessentials.in/2012/12/adding-turbchargers-to-jee-apps.html