Является ли 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. Смотрите также Проще говоря, что такое фабрика?
Java EE SDK , загружаемый с Oracle.com, содержит в основном сервер GlassFish вместе с кучей документации и примеров, а также, по желанию, IDE NetBeans. Вам это не нужно, если вам нужен другой сервер и / или IDE.
EJB является частью спецификации Java EE. Смотри, это в Java EE API . Полноценные серверы приложений 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 становится более привлекательным, так как проще установить Spring на Tomcat. Невозможно установить, например, EJB-контейнер Tomcat без изменения самого сервера, вы, по сути, будете заново изобретать TomEE.
Смотри также: