Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Что выбрать - Spring или JEE


Автор: oson 22.9.2012, 23:44
Разрабатывается система с RESTfull интерфейсом.
REST имплементируется на Jersey.
Надо  определиться, на чем собственно писать service layer.
Что лучше использовать в самом engine - JEE 6 или Spring 3.
Других вариантов вроде нет особенно.
Ясно, что при определенных входных требованиях есть преимущества у JEE 6, и у Spring 3.
Поделитесь плиз, при каких этих самых требованиях лучше использовать JEE 6 и при каких Spring 3?

Автор: kosmonaFFFt 23.9.2012, 12:33
Как человек, начинавший со спринга и потом пршедший в тихий ужас от JEE, рекомендую спринг...

Автор: AntonSaburov 23.9.2012, 15:43
У спринга есть большое преимущество в плане настройки конфигурации. Если не требуется распределенное приложение на нескольких серверах, то наверно на нем можно остановиться.

Цитата(kosmonaFFFt @  23.9.2012,  12:33 Найти цитируемый пост)
потом пршедший в тихий ужас от JEE

Может вы просто не умеете его готовить smile

Автор: kosmonaFFFt 23.9.2012, 16:35
Может и не умею... ) Но у нас даже заказчику надоел JEE с глассфишем, и они хотят перепиливания проекта на tomcat и spring...

Автор: COVD 23.9.2012, 17:33
Цитата

Если не требуется распределенное приложение на нескольких серверах

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

Автор: AlexeyVorotnikov 24.9.2012, 08:52
Spring и JEE взаимно ортогональны. Ничто не мешает использовать их одновременно. 

Автор: oson 24.9.2012, 15:19
Цитата(AlexeyVorotnikov @ 24.9.2012,  08:52)
Spring и JEE взаимно ортогональны. Ничто не мешает использовать их одновременно.

Зачем же они нужны сразу оба? Особенно если вопрос касается именно service layer. Тут или то или другое.
Я прав?


То есть я так понимаю, что если планируется делать серверную часть на нескольких серверах, то Spring никак не подходит.
То есть это ограничение, которое точно определяет, что надо использовать JEE, но никак не Spring?

Автор: AlexeyVorotnikov 24.9.2012, 16:01
Берём и читаем главу Enterprise JavaBeans (EJB) integration из Spring Reference Documentation (глава 20 в версии 3.0, 21 в версии 3.1):
Цитата
...it is important to note that using Spring does not prevent you from using EJBs. In fact, Spring
makes it much easier to access EJBs and implement EJBs and functionality within them. Additionally,
using Spring to access services provided by EJBs allows the implementation of those services to later
transparently be switched between local EJB, remote EJB, or POJO (plain old Java object) variants,
without the client code having to be changed.

Автор: AntonSaburov 24.9.2012, 16:08
Цитата(oson @  24.9.2012,  15:19 Найти цитируемый пост)
То есть это ограничение, которое точно определяет, что надо использовать JEE, но никак не Spring?

Это только ограничивает выбор средств интеграции нескольких серверов да и просто нескольких приложений между собой - даже на одном сервере придется что-то придумывать, чтобы из одного приложения вызывать другое приложение. То, что я видел пару лет назад для тех же Web-Services в Spring было реализовано достаточно убого.
К тому же как верно было замечено никто не мешает использовать и то и то.

Автор: Vasay 24.9.2012, 17:28
JEE набор из довольно большого числа спецификаций на различные случаи жизни. 

Изначально это был кошмар мало пригодный для использования, что породило некоторое число альтернативных более легковесных и простых в применении решений, в том числе и Spring.

Постепенно JEE перерабатывали и делали более дружелюбным, и местами он стал весьма интересен. 


Цитата(oson @  24.9.2012,  15:19 Найти цитируемый пост)
То есть я так понимаю, что если планируется делать серверную часть на нескольких серверах, то Spring никак не подходит.


Если я правильно понял AntonSaburov-а, он, говоря про распределенные приложения, имел ввиду EJB. Но ничто не мешает Вам используя Spring в качестве основы для основного приложения выносить часть логики в EJB на другие сервера. 


Автор: oson 3.10.2012, 22:19
Спасибо.
Еще хотел уточнить, правильно ли я понимаю в принципе отличие JEE и Spring.
Spring имеет свой собственный контейнер и не нуждается в Application server.
В свою очередь JEE - это просто набор стандартов, а конкретная имплементация этого набора - это конкретный application server.
То есть JEE не может существовать без апликейшн сервера. Реализация JEE может существовать только в виде конкретного аппликейшн сервера.
То есть вне аппликейшн сервера говорить про JEE не имеет смысла, а про Spring - вполне имеет смысл.
Правильно?

И второй вывод.
Так как имплементация стандартов может по факту отличаться от одного сервера к другому, то разработку лучше вести для конкретного сервера, 
например Glassfish (родной сервер Oracle - может стандарты имплементированы максимально правильно).

Правильно?

Автор: Vasay 4.10.2012, 01:00
Цитата(oson @  3.10.2012,  22:19 Найти цитируемый пост)
Spring имеет свой собственный контейнер и не нуждается в Application server.


Он нуждается в контейнере сервлетов (TomCat, Jetty....)


Цитата(oson @  3.10.2012,  22:19 Найти цитируемый пост)
В свою очередь JEE - это просто набор стандартов

Именно так.

Цитата

а конкретная имплементация этого набора - это конкретный application server.


По-сути - апликэйшен сервер это контейнер сервлетов (часто тот же TomCat ) на который навешены библиотеки/приложения реализующие тот или иной функционал JEE.
Т.е. отсюда и название application server (сервер приложений) - т.е. это сервер с приложениями реализующими спецификации JEE и функционал которых может использовать Ваше приложение. 


Цитата(oson @  3.10.2012,  22:19 Найти цитируемый пост)
То есть JEE не может существовать без апликейшн сервера. Реализация JEE может существовать только в виде конкретного аппликейшн сервера.

Ответ на этот вопрос вытекает из предыдущего - если Вам нужна лишь часть функционала JEE, то можно ограничиться лишь подключением определенных библиотек к проекту реализующих этот функционал (или запуском параллельно определенных приложений на контейнере сервлетов расширяющих его функционал)


Цитата(oson @  3.10.2012,  22:19 Найти цитируемый пост)
То есть вне аппликейшн сервера говорить про JEE не имеет смысла, а про Spring - вполне имеет смысл.

Несовсем.

Посути - и то и то набор библиотек. Только в первом случае обычно он поставляется с Апликэйшен сервером, а во втором отдельным набором библиотек, который Вы подключаете к своему проекту.
Однако есть и такое: http://www.springsource.org/dmserver
Есть и такое: http://openejb.apache.org/

Автор: oson 4.10.2012, 11:03
Спасибо за подробный ответ. 

Автор: Atum 20.3.2013, 00:04
Цитата(kosmonaFFFt @ 23.9.2012,  16:35)
Может и не умею... ) Но у нас даже заказчику надоел JEE с глассфишем, и они хотят перепиливания проекта на tomcat и spring...

интересно чем так плох jee с ejb 3.1 servlet 3.1  против spring 3.1 

 по мне так  jee это в 10 раз меньше кода . 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)