Ответ 1
Является ли Java EE только спецификацией? Я имею в виду: Является ли EJB Java EE?
Java EE действительно представляет собой абстрактную спецификацию. Любой человек может разрабатывать и обеспечивать рабочую реализацию спецификации. Конкретными реализациями являются так называемые серверы приложений, такие как WildFly, TomEE, GlassFish, Liberty, WebLogic и т.д. Существуют также контейнеры сервлетов, которые реализуют только часть JSP/Servlet огромного API Java EE, например как Tomcat, Jetty и т.д.
Мы, разработчики Java EE, должны писать код, используя спецификацию (т.е. импортировать только javax.*
классы в наш код, а не конкретные классы реализации, такие как org.jboss.wildfly.*
, com.sun.glassfish.*
и т.д.), и тогда мы сможем для запуска нашего кода в любой реализации (таким образом, на любом сервере приложений). Если вы знакомы с JDBC, это в основном та же концепция, что и драйверы JDBC. См. Также a.o. Проще говоря, что такое factory?
Загрузка Java EE SDK из Oracle.com содержит в основном сервер GlassFish по кучке документации и примеров и, возможно, также IDE NetBeans. Вы не нуждаетесь в этом, если хотите другой сервер и/или IDE.
EJB является частью спецификации Java EE. Посмотрите в API Java EE. Полноценные серверы приложений Java EE поддерживают его, но простых контейнеров JSP/Servlet нет.
См. также:
- Где я могу найти список всех эталонных реализаций для Java EE 6?
- Java EE веб-разработка, с чего начать и какие навыки мне нужны?
- Что нужно узнать для создания веб-приложений Java в Java EE 6?
Являются ли 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 Безопасность конкурирует с JAAS/JASPIC и т.д.
Назад во время старого J2EE/EJB2 раз, API EJB2 был ужасен для внедрения и поддержки. Spring был тогда намного лучшей альтернативой EJB2. Но поскольку EJB3 (Java EE 5), EJB API был значительно улучшен на основе уроков, извлеченных из Spring. Поскольку CDI (Java EE 6), на самом деле нет причин снова смотреть на другую инфраструктуру, такую как Spring, чтобы сделать разработчиков более легкими, чтобы развивать среди других уровень обслуживания.
Только когда вы используете barebones servletcontainer, например Tomcat, и не можете перейти на сервер Java EE, тогда Spring более привлекателен, так как проще установить Spring на Tomcat. Невозможно установить, например, контейнер EJB от Tomcat, не изменяя сам сервер, вы в основном должны изобретать TomEE.