Что такое Java EE?


162

Я занимаюсь Java SE уже несколько лет и перехожу к Java EE. Однако у меня возникли проблемы с пониманием некоторых аспектов Java EE.

  1. Java EE - это просто спецификация? Я имею в виду: EJB Java EE?

  2. Являются ли EJB / Spring различными реализациями Java EE?

Прошу прощения, но у меня есть некоторые трудности, чтобы понять, что такое Java EE.

Может кто-нибудь объяснить, что такое Java EE? А EJB?



2
Вы должны разделить этот вопрос на два вопроса, один из которых является дубликатом, а другой, я думаю, не найден в этой ссылке.
Хельдар

2
На самом деле, вы читали [java-ee] тег вики ?
Пауло Эберманн


Ответы:


187

Java EE - это просто спецификация? Я имею в виду: EJB Java EE?

Java EE действительно абстрактная спецификация. Любой желающий может разработать и предоставить рабочую реализацию спецификации. В конкретных реализациях являются так называемые серверы приложений, как WildFly , TomEE , GlassFish , Свободы , WebLogic и т.д. Есть также контейнеры сервлетов , которые реализуют только JSP / Servlet часть огромного Java EE API, такие как Tomcat , Jetty , и т.п.

Мы, разработчики Java EE, следует писать код , использующий спецификацию (т.е. импортировать только javax.* классы в нашем коде вместо конкретной реализации классов , таких как org.jboss.wildfly.*, com.sun.glassfish.*и т.д.) , и тогда мы сможем запустить наш код на любой реализации (таким образом, на любой сервер приложений). Если вы знакомы с JDBC, это в основном та же концепция, что и как работают драйверы JDBC. Смотри также ao. Проще говоря, что такое фабрика?

Загрузки Java EE SDK от Oracle.com содержит в основном на GlassFish сервер вместе кучу документации и примеров и , возможно , также в среде IDE NetBeans. Вам это не нужно, если вы хотите другой сервер и / или IDE.

EJB является частью спецификации Java EE. Смотри, это в API Java EE . Полноценные серверы приложений Java EE поддерживают его "из коробки", а простые контейнеры JSP / Servlet - нет.

Смотрите также:


Являются ли EJB / Spring различными реализациями Java EE?

Нет, как уже говорилось, EJB является частью Java EE. Spring - это автономный фреймворк, который заменяет и улучшает многие части Java EE. Spring не обязательно требует Java EE для запуска. Контейнер для сервлетов, такой как Tomcat, уже достаточен. Проще говоря, Spring является конкурентом Java EE. Например, Spring (автономный) конкурирует с EJB / JTA, Spring MVC конкурирует с JSF / JAX-RS, Spring DI / IoC / AOP конкурирует с CDI, Spring Security конкурирует с JAAS / JASPIC и т. Д.

В прежние времена J2EE / EJB2 API EJB2 было ужасно реализовать и поддерживать. Spring был тогда намного лучшей альтернативой EJB2. Но начиная с EJB3 (Java EE 5), EJB API был значительно улучшен на основе уроков, извлеченных из Spring. Начиная с CDI (Java EE 6), на самом деле нет причин снова рассматривать другую инфраструктуру, такую ​​как Spring, чтобы упростить разработчикам разработку, среди прочего, уровня обслуживания.

Только когда вы используете пустой контейнер сервлетов, такой как Tomcat, и не можете перейти на сервер Java EE, Spring становится более привлекательным, поскольку его проще установить на Tomcat. Невозможно установить, например, контейнер EJB на Tomcat без изменения самого сервера, вы, по сути, будете заново изобретать TomEE.

Смотрите также:


2
Таким образом, можно сказать, что Java EE определяет, какая поддержка должна существовать для запуска типичного приложения JEE?
Джеймс П.

4
@ Джеймс: Да. Практически все в Java EE API абстрактно. Java SE API также имеет несколько абстрактных частей, например, JDBC, JAXP, JAXB и т. Д.
BalusC

3
«На самом деле нет причин снова смотреть на другую инфраструктуру, такую ​​как Spring, чтобы сделать разработчиков проще». -> Действительно ценная информация.
Jacktrades

@BalusC: Привет, официальная ссылка Sun Java EE .... не работает, если вы дадите ссылку, похожую на эту, это будет полезно для кого-то.
Абдул Рахман

Для запуска полной среды Spring достаточно контейнера сервлетов, контейнер сервлетов - это [веб-сервер + веб-контейнер (реализует сервлет API)], где для запуска Java EE необходим сервер приложений, такой как Glassfish. Контейнер сервлетов не хватит. Контейнер сервлетов является подмножеством сервера приложений. Как я понимаю это?
сверхобмена

11

Java Enterprise Edition (Java EE) - это общая спецификация, которая ссылается на ряд других более подробных спецификаций, среди которых Enterprise JavaBeans (EJB) является одной из наиболее важных.

Прочитайте это - это объясняет разницу между Java EE и Spring

Спасибо...


4
  • Источник - Java 2 Platform, Enterprise Edition (J2EE) определяет стандарт для разработки многоуровневых корпоративных приложений на основе компонентов. J2EE упрощает создание корпоративных приложений, которые являются переносимыми, масштабируемыми и которые легко интегрируются с устаревшими приложениями и данными.

  • Источник - технология Enterprise JavaBeans (EJB) - это серверная компонентная архитектура для платформы Java Enterprise Edition (Java EE). Технология EJB обеспечивает быструю и упрощенную разработку распределенных, транзакционных, безопасных и переносимых приложений на основе технологии Java.

  • Java EE - это просто спецификация? Я имею в виду: EJB Java EE?

    • Java EE - это спецификация.

    • EJB - это серверная компонентная архитектура для Java EE

  • Являются ли EJB / Spring различными реализациями Java EE?

    • И EJB, и Spring - это разные фреймворки, следующие Java EE.

6
Возможно, не очень полезно цитировать древний текст (2005) из древней версии спецификации (J2EE). OP специально попросил Java EE, которая является современным воплощением J2EE.
Арджан Тиймс

-5

Проще говоря - JavaEE - это платформа.

Он состоит из множества спецификаций, которые являются просто API. Конкретные конкретные реализации этих API-интерфейсов - это так называемая «ссылочная реализация».

  1. EJB - это всего лишь одна спецификация в платформе JavaEE
  2. Нет, Spring - это инфраструктура приложений, которая может позволить вам / имеет поддержку для разработки приложений JavaEE

EJB - это Enterprise Java Beans


4
Этот ответ ничего не добавляет к предыдущим ответам. Более того, он не является точным: только одна конкретная реализация является справочной, остальные - нет. Незначительный: Spring интегрируется с JavaEE, но может прекрасно работать и без него.
Таир

@tair Да, только 1 конкретная реализация рассматривается как «Ссылка», например, JPA имеет множество реализаций, но только EclipseLink является RI. Когда я упомянул RI, я имел в виду разные API. Я думаю, что вы не поняли мой ответ выше. Кроме того, да, Spring интегрируется с JavaEE, о чем я упоминал выше.
Разработчик программного обеспечения
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.