Всем привет. Несколько дней назад я написал о том, что хочу изучать Java EE 7. Там же я написал, что планирую ежедневно писать конспекты по полученным материалам. Что из этого вышло? Читайте в этом посте.
Как я и хотел, я начал изучать Java EE с помощью официального туториала по Java EE 7. Честно сказать, я не осилил его. Всё написано как-то уж больно сухо (хотя, чего ещё хотеть от документации).
Прочитав 2 главы туториала, узнал про общую архитектуру Java EE, узнал о том, как ставить GlassFish — канонический сервер приложений, узнал, как деплоить приложения. На этом, наверное, всё. Поэтому, решил начать читать книжку, а туториал оставить на потом.
На сегодняшний день существует несколько книжек по Java EE 7. Это Java EE 7 with GlassFish 4 Application Server, это Beginning Java EE 7. Прочитав отзывы к обоим книжкам, выбрал первую.
В Java EE 7 with GlassFish 4 Application Server содержится всего 350 страниц. Тут нет каких-то длинных введений, сразу идёт рассказ по существу. Обсуждаются такие понятия, как EJB, JPA, JSF, а также ряд других API.
Честно сказать, пока прочитал только порядка 50%. И, надо признаться, книжка не очень понравилась. Всё как-то сильно просто и очевидно (может, это благодаря моему бекграунду в ASP.NET MVC).
Отдельно стоит отметить, что в этой книжке используется крайне простой английский (даже я, с моим ужасным английским, могу читать книгу практически без словаря).
Сегодня на хабре мне посоветовали обратить своё внимание на 2-ю из этих книжек (то есть, на Beginning Java EE 7). Возможно, попробую почитать и её.
Итак, что же мне удалось узнать про Java EE 7 за эти несколько дней? Перейдём наконец-то к введению в эту технологию.
Java EE 7 — это набор стандартов, которые описывают массу различных API. Каждый из стандартов описывает конкретную технологию, причём, некоторые из этих технологий могут использоваться и в Java SE.
Так как Java EE — это только описание технологий (то есть, их декларация), то нужно кому-то предоставить и имплементацию этих вещей (то есть, реализацию технологий). Не стоит волноваться: простому разработчику не придётся программировать реализацию стандарта. Разные компании создают свои продукты — Серверы приложений, которые как раз таки и содержат реализации всех стандартов из соответствующей версии Java EE.
На сегодняшний день существует несколько серверов приложений, которые реализуют Java EE 7. Это референсная реализация GlassFish 4 от Oracle, и это крайне популярный Open Source сервер WildFly.
Считается, что сервер приложений — это имплементация всех стандартов из описания Java EE, а также ряд дополнительных фич. Поэтому, в теории, вы легко сможете менять сервер приложений, и всё должно и дальше работать нормально.
Дальше я бы хотел рассказать о структуре Java EE приложения. Это модульное приложение, состоящее из нескольких слоев. Первый слой — это клиентская часть приложения (как я понял, это аналог View в ASP.NET MVC). Технология, которая реализует этот уровень, называется JavaServer Faces. JSF — это, грубо говоря, продвинутый шаблонизатор с набором предустановленных компонентов, которые можно использовать при верстке.
Существуют и другие подходы к реализации клиентской части приложений. Во-первых, это Сервлеты — классы, которые способны принимать HTTP запросы и отвечать на них своими HTTP ответами. Думаю, что можно сказать, что аналогом Сервлета в ASP.NET MVC является класс Controller.
Есть и третий подход к реализации клиента — полноценный UI на основе какого-нибудь MV* javascript фреймворка + взаимодействие с сервером по RESTful (JAX-RS).
Следующий слой стандартного Java EE приложения — это сервисы, в которых описывается бизнес логика. Для этого используется технология Enterprise JavaBeans (EJB). Грубо говоря, это несколько типов различных классов (с сохранением состояния между запросами, без сохранения состояния между запросами, с использованием сервера очередей).
В EJB описываются различные сервисы. Например, есть класс UserService, и там описываются такие методы, как getUser, saveUser, removeUser.
Для доступа к данным используется ещё один стандарт — Java Persistence API (JPA). Конечно же, это опять только декларация технологии, а ещё нужна имплементация. В серверах приложений присутствует эта имплементация. Есть и независимые реализации JPA. Например, популярная ORM Hibernate как раз таки реализует JPA.
Отдельно стоит упомянуть интересную систему внедрения зависимостей. Стандарт, который описывает это дело, называется Contexts and Dependency Injection (CDI). Эта технология позволяет получить нужные зависимости некоторых типов (например, доступ к БД) всего-лишь с помощью одной аннотации над соответствующей переменной.
Больше рассказывать о Java EE я, к сожалению, не буду, так как знаком с этой технологией лишь неделю и боюсь наделать много ошибок. Пока понял, что существует большое количество API, которые необходимо умело комбинировать, для того чтобы сделать рабочее приложение.
Кстати, я уже решил, что буду делать в качестве «домашнего задания». Скоро подробно напишу об этом.
Категории: Java
Метки: JavaEE