Должен ли я пойти на Spring или придерживаться Java EE 6?

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

Или мне нужно начинать с Spring?

Потому что, поскольку я должен начинать с нуля, хорошо, что я следую трендам, которые хороши и ориентированы на работу.

Или даже если я использую только Java EE, а затем, если мне нужно перейти на Spring, он будет быстрым или наоборот.

И где между ними Hibernate? Я имею в виду, если я использую Java EE 6, мне все еще нужен Hibernate или Java EE 6, мне это не нужно.

Будет ли я в невыгодном положении, если я не использую Spring или Spring, может сделать мое веб-приложение для создания приложений проще, чем ядро ​​Java EE/JSF.

Ответ 1

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

  • сервлеты и JSP для Spring MVC,
  • JPA для Spring DAO.
  • JTA для Spring безопасности

Единственное, что заменяет Spring в стеке Java EE Groovy и Grails которые используют Spring в качестве базы.

Наконец, я бы сказал, функциональность мудрая и делает то же самое. Это код (Java EE) по сравнению с конфигурацией (Spring), вопрос предпочтения действительно.

Ответ 2

Все мои комментарии должны быть взяты с солью. Я был пользователем Spring с версии 1.0; Я никогда не использовал ни одну версию EJB в производстве - от 1.0 до настоящего времени.

Spring хорошо меня зарекомендовал: любой метод, который я хотел бы применить с Java EE, доступен мне в Spring. Я использовал веб-службы, LDAP, обмен сообщениями и модули портлетов вместе с обычными подозреваемыми настойчивостью, удалением и веб-MVC. Код отличный. Я считаю, что акцент на расслоении, кодировании на интерфейсы, инъекции зависимостей и аспектно-ориентированном программировании приносит пользу моим проектам.

Истина заключается в том, что вы можете выбрать и заставить ее работать. Там небольшое преимущество или недостаток на этом этапе, потому что EJB 3 взял так много от Spring, что они должны быть похожими. Я не могу сказать это из личного опыта, потому что я не использовал EJB 3.

Ни один из моих работодателей или клиентов не жалуется на EJB 3. Люди на моем рынке используют Spring или .NET для общения с веб-службами через HTTP.

EJB требуют, чтобы вы использовали RMI или CORBA в качестве сетевого протокола. Я считаю, что HTTP-протоколы - будь то RPC-XML, SOAP или REST - выигрывают, потому что обычно это просто и открыто.

Никто не может предсказать будущее, поэтому совет по поиску работы бесполезен. Ваши локальные рыночные условия могут быть не такими же, как у меня. Вы можете хеджировать свои ставки и учиться обоим. Какой бы вы ни выбрали, он почти уверен, что вам нужно будет узнать что-то новое в будущем, которое не будет ни EJB, ни Spring. Поэтому выберите один и будьте готовы к изменению.

Ответ 3

Из моего личного опыта изучения Java EE/Web-программирования из простой стандартной Java я попытался перейти прямо в некоторые структуры без четкого понимания того, как работает Java EE/Web. Хотя не все Java EE имеют значение, если вы используете фреймворк вроде Spring, я думаю, что неплохо хорошо разбираться в некоторых базовых технологиях. Вам не нужно идти за борт, но понимание некоторых основ - хорошая идея.

Когда что-то неправильно настроено в библиотеках (например, Spring), иногда они принимают определенный уровень знаний в своей пользовательской части. После нескольких основных проблем я провел некоторое время и вернулся к основам. После этого мне было лучше иметь дело с каркасами.

Я бы просто отказался от маршрута EJB.

Ответ 4

Spring и Java EE 6 в некотором смысле похожи. Они идут параллельно. Я думаю, будет лучше, если вы изучите Java EE 6, а затем (если хотите/нужно) узнаете Spring.

В Java EE существует стойкость Java, которая очень хорошо работает для различных запросов к базе данных.

Ответ 5

Сначала, пожалуйста, поймите, что Java EE - это не одна спецификация, а набор спецификаций. Хотя Spring является основой. Spring имеет аккуратную интеграцию со многими спецификациями Java EE, включая EJB. Идея использования спецификаций - сделать ваше приложение переносимым между различными реализациями этой спецификации. К сожалению, это не очень хорошо работает в реальной жизни. Теперь о Hibernate. Опять же: это каркас. Java EE включает спецификацию JPA. Hibernate реализует JPA. Вы можете найти другие реализации. Поэтому, если вы используете другую реализацию, вам не нужен Hibernate.

Теперь вы, вероятно, хотите узнать нижнюю строку. У меня его нет. Если вы изучаете Java, чем больше вы знаете, тем лучше. Если вы ищете технологии для запуска нового веб-приложения, я считаю, что лучше использовать Spring с контейнером сервлета (контейнер сервлетов является частью Java EE!), Например Jetty или Tomcat + для использования JPA (реализация Hibernate) для сохранения.

Ответ 6

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