Замена Java EE для Scala?

Многие сравнения Java x Scala, похоже, сосредоточены только на одном языке (синтаксис, коллекции api, участники и т.д.), но как насчет разработки корпоративных приложений?

Если вы хотите создать распределенную корпоративную систему с помощью Scala, вы бы закодировали традиционное приложение Java EE с использованием синтаксиса Scala (например, класс, совместимый с EJB с использованием синтаксиса Scala), и запустите его в контейнере Java EE, или есть замена Java EE в экосистеме Scala?

Если вторая, до сих пор самая близкая вещь, которую я нашел, это типный стек; это замена Scala для контейнера Java EE?

Является ли Akka заменой JMS (и возможно Session Beans) или ваша система Scala все еще использует Java EE-сервисы?

Ответ 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

Ответ 2

Akka - действительно своего рода "замена" для JMS. За этой идеей (и вашим вопросом) это действительно изменение парадигмы, и мы должны знать об этом, но, исходя из этого факта, я думаю, что у akka была возможность очень широко использоваться в следующем будущем для нескольких целей: от передачи сообщений к интеграции между распределенной параллельной платформой etherogeneus.

Стек Safeafe - это стек, поэтому я не мог подумать о том, что касается Java EE contanier.

И, наконец, первый ответ: если вы хотите использовать синтаксис EJB, рассмотрите возможность использования аннотаций и у вас будет возможность написать EJB более или менее так же, как java, а также некоторый "синтаксический сахар" scala

Ответ 3

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