К счастью, во втором квартале 2006 года вышла значительно улучшенная Java EE 5 (запрос на спецификацию JSR 244). Опираясь на примеры свободных фреймворков, она возродила модель программирования POJO. Метаданные могли определяться аннотациями, а дескрипторы развертывания XML стали опциональными. С точки зрения разработчика, создание EJB 3 и нового интерфейса JPA было настоящим качественным скачком, а не рядовым эволюционным изменением. В качестве стандартного фреймворка был представлен JavaServer Faces (JSF), а в качестве API для работы с SOAP-службами стал использоваться JAX-WS 2.0, заменивший JAX-RPC.
В 2009 году появилась Java EE 6 (запрос на спецификацию JSR 316), продолжившая традицию простоты разработки. Она включала в себя концепции аннотаций, программирования POJO, а также механизма конфигурации путем исключения в масштабах всей платформы, в том числе на веб-уровне. Ее отличал широкий спектр инноваций, например принципиально новый интерфейс JAX-RS 1.1, валидация компонентов 1.0, контекст и внедрение зависимости (CDI 1.0). Некоторые из ранее разработанных API (например, EJB 3.1) были упрощены, другие, наоборот, доработаны (JPA 2.0 или служба времени EJB). Однако основными новшествами Java EE 6 стали портируемость (например, с помощью стандартизации глобального именования JNDI), избавление от некоторых спецификаций (с помощью отсечения) и создание подсистем платформы с использованием профилей.
Сегодня Java EE 7 предлагает много новых спецификаций (пакетная обработка, веб-сокеты, обработка JSON), а также совершенствует существующие. Java EE 7 также улучшает интеграцию между технологиями, задействуя контексты и внедрения зависимостей (CDI) в большинстве спецификаций. В данной книге я хочу продемонстрировать эти улучшения, а также показать, насколько проще и полнее стала платформа Java Enterprise Edition.
Отсечение
Впервые версия Java EE была выпущена в 1999 году, и с тех пор в каждом релизе добавлялись новые спецификации (см. рис. 1.4). Постепенно это стало проблемой. Некоторые функции поддерживались не полностью или не очень широко применялись, так как были технологически устаревшими, либо им находились достойные альтернативы. Поэтому экспертная группа внесла предложение об удалении некоторого функционала методом отсечения. Процесс отсечения заключается в составлении списка функций, подлежащих возможному удалению в следующем релизе Java EE. Обратите внимание, что ни одна из функций, предложенных к удалению, не убирается из текущей версии, но может быть удалена в следующей. Java EE 6 предложила удалить следующие спецификации и функции, и в Java EE 7 их уже не было.
•
•
•
•
Спецификации Java EE 7
Спецификация Java EE 7 определяется запросом JSR 342 и объединяет в себе 31 спецификацию. Сервер приложений, призванный обеспечить совместимость с Java EE 7, должен реализовывать все эти спецификации. Они перечислены в табл. 1.2–1.6, где сгруппированы по технологическим предметным областям, с указанием версии и номера запроса JSR.
Спецификация | Версия | JSR | URL |
---|---|---|---|
Java EE | 7.0 | 342 | http://jcp.org/en/jsr/detail?id=342 |
Web Profile (Веб-профиль) | 7.0 | 342 | http://jcp.org/en/jsr/detail?id=342 |
Managed Beans (Управляемые компоненты) | 1.0 | 316 | http://jcp.org/en/jsr/detail?id=316 |
В области веб-служб (см. табл. 1.3) службы SOAP не дорабатывались, так как никакие спецификации не обновлялись (см. главу 14).