Java EE 6 и альтернативы - PullRequest
       17

Java EE 6 и альтернативы

12 голосов
/ 15 января 2011

Я разработчик Java SE, но у меня богатый веб-опыт (PHP, Perl / CGI и т. Д.), И сейчас я начинаю новый проект.Он будет иметь веб-интерфейс, бизнес-логику спагетти, реляционную базу данных в качестве хранилища и подключения к другим сервисам.Я делаю это с нуля.

Мои коллеги сказали мне использовать пружину, пружинную защиту и распорки.Я кратко рассмотрел спецификацию Java EE 6 и обнаружил, что она охватывает практически все аспекты корпоративных приложений.Я спросил своих коллег, зачем им пружины и распорки, но похоже, что они используют технологии просто потому, что они знакомы с ними и не знакомы с классическим стеком Java EE 6.

Итак, мой вопрос: что плохопро Java EE 6?Зачем мне весна, если есть поиск JNDI?Создание поддельного InitialContext для юнит-тестов займет день или два.И это все: я стою с такими внешними инструментами, как пружина.Зачем мне пружинная защита, если в спецификации Servlets встроена защита?Я могу сопоставить любой запрос с любым сервлетом, используя web.xml, не нужно struts.xml.Я могу использовать сервлет-фильтры вместо перехватчиков стояков.Есть RMI, поэтому Spring-Remote мне не нужен.И так далее ..

Зачем мне беспокоиться обо всех этих причудливых вещах, если есть Java EE 6?

Я действительно хочу найти ситуацию, когда Java EE 6 недостаточно.У вас есть?

Спасибо!

Ответы [ 5 ]

13 голосов
/ 15 января 2011

Почему люди используют Spring и почему он так популярен, требует небольшой истории.

Раньше Spring был проще, чем приложения Java EE.Я имею в виду спецификацию EJB2.x.Я чувствую, что было что-то вроде восстания против сложной природы этой спецификации.Разработчики хотели иметь более простую архитектуру, и Spring предоставил ее для них, позволив им писать POJO (простые старые объекты Java) вместо классов, которые должны были реализовывать определенные интерфейсы для получения желаемой функциональности.

Spring также сделал более популярными 2 принципа: Inversion of Control (IoC) и Dependency Injection.В совокупности эти два принципа предоставили различный способ соединения различных компонентов приложения и включения этих компонентов в приложение при его запуске.Это, в сочетании с идеей простого написания POJO, было очень убедительным для многих людей, потому что код был проще, и было проще соединить все ваши компоненты.

Новая спецификация EJB3 сводит на нет кое-что из того, что Spring долженпредложение, но Spring - это гораздо больше, чем контейнер IoC.Он предоставляет отличные шаблоны для доступа JDBC к базе данных, несколько простых способов обработки транзакций, утилиты тестирования, стек MVC и так далее.Это было популярно и остается популярным.Я слышал одну шутку:

"EJB3, ответ на вопрос, который никто не задавал ..."

EJB3 - прекрасный выбор.Весна - прекрасный выбор.Grails также является хорошим выбором (использует Spring, Hibernate под крышками).

1 голос
/ 15 января 2011

Звучит так, как будто вам нужно POC для конкретных возможностей с помощью Spring, а затем с Java EE 6, чтобы вы могли сравнить их как с похожим с реальным работающим практическим прототипом.

Однако я использую пружину по следующим причинам:

  • возможность абстрагировать мое приложение от сервера приложений. Таким образом, я могу работать на любом сервере приложений или вне AS для модульного тестирования
  • много кода котельной плиты, который я должен был бы написать, чтобы улучшить мой дизайн, уже доступен
  • IOC / DI - объект, который нуждается в зависимостях, не знает, как их получить - все, что он знает, - это то, какие интерфейсы ему требуются. Какая-то третья сторона предоставляет их. Да, вы можете свернуть собственную версию этой третьей стороны в Java EE 6, но она уже доступна в Spring.
  • Управляемые транзакциями Bean - Spring предоставляет все инструменты, необходимые для полного контроля ваших транзакций на низком уровне. Я всегда рекомендовал бы использовать BMT, поскольку он дает вам гибкость, которая может вам понадобиться.
1 голос
/ 15 января 2011

«Так зачем мне весна?»

Илья!Наконец, вы убедили меня (и, надеюсь, сами), что вам не нужна весна.На самом деле во всей этой куче нет ничего особенного хорошего ... если вы к этому уже не привыкли.Они пишут книгу о веб-технологиях, затем добавляют в нее остальную компьютерную науку и называют ее RESTfull.

"Однако представьте себе, что у вас много кода, который обрабатывает ввод данных, и множество моделей. Каждый контроллер может иметьвзгляд ".

Амир!- очень хорошее рассмотрение.Реальная разница между веб-фреймворками, которые я знаю, заключается в том, что такое определение компонента.Struts имеет три типа компонентов - компоненты View, Controler и Model.На первый взгляд выглядит неплохо (наверняка лучше, чем другие).Но что вы можете построить из этих компонентов?- Один просмотр страницы, один контроллер страницы и одна модель страницы.Бог знает, какова будет стоимость связывания элементов из этих трех рядов компонентов - возможно, огромной конфигурации, если это вообще возможно.

Реальным решением является (как вы практически заявили в приведенном выше) концепциякомпоненты, каждый из которых имеет свою точку зрения, свой контроллер и свою модель.Только один фреймворк зашел так далеко - HybridJava.Что такое строительный блок веб-страницы в Spring?

1 голос
/ 15 января 2011

Spring не нужен для Java EE.Spring просто делает сложные компоненты Java EE простыми в использовании.

0 голосов
/ 15 января 2011

Spring модель-представление-контроллер, который делает Java EE чище и более организованным. Структурно правильнее разделять ваши модели, виды и контроллер.

Я согласен с вами. Если это простой веб-сайт, то я думаю, что вы можете сделать все с помощью Java EE. Однако представьте, что у вас много кода, который обрабатывает ввод данных, и множество моделей. Каждый контроллер может иметь представление. Вы можете создать сервлет и затем перейти на правильную страницу JSP, или вы можете использовать Spring, потому что он уже все это делает.

Вы сами решаете, сколько вам нужно использовать пружины. Хороший фреймворк - это тот, который позволяет вам выбирать, какие части использовать. Я думаю, что весна делает это хорошо, потому что вы можете просто использовать модель MVC или пойти дальше и сделать больше с ней.

Последнее, пружина имеет инжекцию зависимостей, которая значительно упрощает настройку.

...