Основы Java EE - PullRequest
       3

Основы Java EE

26 голосов
/ 29 декабря 2010

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

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

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

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

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

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

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

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

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

    Список:

    • JBoss
    • Джеронимо
    • Причал
    • GlassFish
    • Tomcat
    • Spring RabbitMQ
    • Spring GemFire ​​
    • Весна
    • Spring tc Server
    • Hibernate

5. В чем разница между Java EE 6 и веб-профилем Java EE 6?

Ответы [ 3 ]

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

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

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

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

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

5 голосов
/ 30 декабря 2010

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

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

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

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

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

@Stateless 
public class SomeBean {

    // ... 

}

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

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

public class SomeOtherManagedBean {

   @EJB
   SomeBean someBean;
}

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

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

3 голосов
/ 29 декабря 2010

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...