Подтвердить что ты не робот

Основы Java EE

Я читал статьи в Википедии. Я просмотрел учебники Oracle. Я googled, выпивка и Yahoo, и все же я задыхаюсь от самых основных основ Java EE (5 +).

  • Должны ли все архитектуры Java EE задействовать сервер приложений, например JBoss или GlassFish, в какой-то момент? По сути, концепция сервера приложений, основанная на Java EE, и почему/почему не?

  • Помимо серверов приложений, существуют ли другие основные компоненты, от которых зависит архитектура Java EE? Если да, то каковы они и как они "привязаны" к архитектуре и относятся к серверу приложений?

  • Я действительно задыхаюсь от концепции EJB. Из всего, что я смог найти на них, я не могу сказать, является ли EJB спецификацией для разработчиков (в соответствии с которой спецификация EJB создает единицу кода, которую можно назвать "bean" ) или, если он похож на любую другую библиотеку Java, например JDBC или JMS.

    (a) На английском языке с королем, не используя передовые, уже в курсе понятия или маркетинговые ключевые слова, что такое EJB? Можете ли вы предоставить несколько быстрых и грязных примеров (EJB)?

    (b) Как интерфейс EJB/взаимодействует с сервером приложений?

    (c) Что такое контейнер EJB и что он делает?

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

    Увидев, что я настолько запутался в Java EE, уже ниже, приведен список некоторых продуктов, которые я слышал около. Я просто прошу кого-то помочь мне классифицировать эти продукты, чтобы я мог видеть, на виду, что они. Например, если я перечислил "GlassFish" и "JBoss", то они могут появиться в категории "Серверы приложений". Если я перечислил "Tomcat" и "WebSphere", они могут появляться под "Servlet Engines" и т.д.

    Список:

    • JBoss
    • Джеронимо
    • Jetty
    • GlassFish
    • Tomcat
    • Spring RabbitMQ
    • Spring GemFire ​​
    • Spring ers
    • Spring tc Server
    • Hibernate

5. Какая разница между Java EE 6 и Java EE 6 "Веб-профиль"?

4b9b3361

Ответ 1

  • Нет. Вы можете запускать несколько частей JavaEE в контейнерах, которые не являются серверами приложений. Сервлеты /JSP/JSF можно запускать в контейнере сервлетов. JPA - вы можете использовать с любой настройкой.

  • Все части семейства JavaEE могут использоваться автономно, то есть вне серверов приложений. Контейнеры сервлетов. JMS-провайдеров. Менеджеры JTA. Даже контейнеры EJB.

  • EJB до версии 3 предоставил набор интерфейсов, которые вы должны реализовать, чтобы ваши классы управлялись контейнером EJB. Начиная с версии 3.0 спецификация EJB определяет в основном аннотации (с точки зрения разработчика). Кроме того, это спецификация того, как контейнер EJB (часть серверов приложений) должен обрабатывать ваши EJB

  • Glassfish, JBoss и Geronimo (и некоторые другие) являются полнофункциональными серверами приложений. Tomcat, Jetty и Spring tc-сервер - это только контейнеры сервлетов - они обрабатывают только часть сервлета /jsp JavaEE. Они могут иметь дополнительные функции (например, функции мониторинга предприятия на сервере tc). Hibernate - это реализация JPA-объектно-реляционного сопоставления (короче - вы работаете с объектами, а не с JDBC). RabbitMQ - очередь сообщений, и я даже не уверен, что она соответствует спецификации JMS (часть JavaEE). GemFire ​​не имеет ничего общего с JavaEE

  • "Веб-профиль" включает только некоторые части (наиболее часто используемые в веб-приложениях) JavaEE - сервлетов, jsp, CDI, JPA, JSF, EJB (lite). Он не включает такие вещи, как JMS, JAX-WS и т.д. Здесь приведена таблица того, что включено и что не включено в веб-профиль. Идея состоит в том, что некоторые серверы приложений будут сертифицированы, даже если они не реализуют все спецификации, включенные в JavaEE. Caucho Resin будет таким сервером приложений, который поддерживает только веб-профиль.

Ответ 2

Божо действительно дал отличный ответ. Для некоторых дополнительных подробностей о Java EE следующий ответ, который я дал другому вопросу, может быть уместным: Структуры для многоуровневых архитектур Layers

Вы также можете прочитать статью, которую я редактировал в википедии об EJB: http://en.wikipedia.org/wiki/Enterprise_JavaBean

Чтобы добавить немного к подзапросу 3:

Вы можете видеть контейнер EJB как вид расширенной JVM. "Обычный" JVM предлагает услугу автоматического управления памятью для Java-классов. Контейнер EJB предлагает дополнительные услуги, такие как автоматическое управление транзакциями и объединение.

Чтобы сделать обычный класс, EJB действительно прост. Вам просто нужно добавить аннотацию @Stateless:

@Stateless 
public class SomeBean {

    // ... 

}

После этого все методы в bean автоматически транзактивны, а экземпляры SomeBean автоматически объединяются, а не повторно создаются, когда они необходимы.

Важно понять, что этот "управляемый beans" не может быть создан с помощью обычного нового оператора. Они должны быть введены через аннотацию. Если вы снова используете аналогию с обычной JVM, вы можете сказать, что эта аннотация является своего рода "управляемым новым оператором":

public class SomeOtherManagedBean {

   @EJB
   SomeBean someBean;
}

Уловка заключается в том, что инъекция здесь работает только в других управляемых beans. Из неуправляемой среды вы можете загружать экземпляр через JNDI-поиск.

В Java EE EJB beans традиционно подразумевают только чистую бизнес-логику. В последней версии Java EE, Java EE 6, была предпринята попытка привести концепцию управляемого bean в единую модель компонента ко всем частям приложения. Это делается с помощью спецификации CDI, которая также определяет тип компонента, который просто называется "управляемый bean". Возможно, что модель EJB в конечном итоге будет модифицирована как набор аннотаций CDI.

Ответ 3

Божо дал отличный ответ на ваш вопрос, поэтому я просто добавлю это.

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

Самый простой способ начать - Servlet и JSP. Большинство приложений Java EE используют эти технологии, и начинающим разработчикам будут предоставлены эти задачи в большинстве проектов, поэтому они практичны. Servlet и JSP - это спецификация, которая позволяет создавать в основном веб-страницы с динамическим (= переменным) контентом. Tomcat - это веб-контейнер, который реализует Servlet и JSP и обеспечивает среду выполнения для компонентов Servlet и JSP. Я рекомендую Tomcat, потому что он является открытым исходным кодом и имеет самую большую долю на рынке.

Я бы рекомендовал Core Servlets и Javaserver Pages от Marty Hall для начинающей книги. Это очень легко прочитать.