ТЕХНИЧЕСКИЙ АНАЛИЗ

Спецификация J2EE 1.4 обеспечит лучшую совместимость Java-приложений с ПО на базе других языков

Рынку серверов Java-приложений предстоит претерпеть еще один цикл изменений, связанных с неизбежным утверждением спецификации J2EE 1.4. Совместимость с J2EE (Java 2 Enterprise Edition) уже стала непременным условием для любого сервера Java-приложений, претендующего на место под корпоративным солнцем.

В версии 1.4, опубликованной 22 августа в качестве проекта спецификации, обновлены все три базовых стандарта серверов Java-приложений. Теперь они представлены новыми версиями: EJB 2.1 (Enterprise JavaBeans), Java Servlet 2.4 и JSP 2.0 (Java Server Pages). О серьезных доработках JSP 2.0 - расширенной библиотеке тегов и новом языке выражений - мы уже писали 2 сентября (см. www.eweek.com/links).

Как только эти стандарты будут утверждены, дело станет за фирмой Sun Microsystems - ей придется обновить свою базовую реализацию J2EE и инструментарий проверки совместимости. После этого можно будет приступить к тестированию серверов приложений сторонних производителей и сертифицировать их на совместимость. По нашим оценкам, первые продукты на базе J2EE 1.4 могут появиться в начале следующего года.

В спецификации J2EE 1.4 упоминаются три области, которые в нее не вошли, однако будут охвачены следующими версиями. Это, во-первых, интерфейс API аудита и механизм его проведения; во-вторых - управление доступом на основе данных, реализованных в классе (механизм управления доступом с учетом контента), в-третьих - стандартизация методов саморегистрации пользователей на Web-узлах.

Поддержка Web-сервисов

Главное отличие EJB 2.1 от нынешней версии - способность привязывать вызовы SOAP 1.1 (Simple Object Access Protocol - простой протокол доступа к объектам) к сессионным EJB-элементам, не сохраняющим состояние (stateless).

В настоящее время доступ к EJB можно получить только из клиентских Java-приложений с помощью Java-протокола RMI (Remote Method Invocation - вызов удаленного метода) или из клиентских приложений CORBA (Common Object Request Broker Architecture - общая архитектура посредника запросов к объектам) посредством CORBA-протокола Internet Inter-ORB Protocol.

Получив встроенную поддержку SOAP, разработчики смогут обращаться к бизнес-логике на базе EJB, используя для этого любой язык, поддерживающий SOAP поверх HTTP (или Secure HTTP). В ближайшей перспективе это должно намного упростить обеспечение взаимодействия приложений, созданных с помощью инструментария разработки Microsoft, с миром J2EE (см. врезку).

Предусматривается и более простой путь, позволяющий элементам EJB самостоятельно обращаться к внешним компонентам посредством SOAP.

Что касается встроенной поддержки Web-сервисов, то здесь J2EE приходится гнаться за лидером в этой области - Microsoft. Корпорация интегрировала API доступа к Web-сервисам в серверную бизнес-логику, благодаря чему ее инфраструктура .Net Framework демонстрирует великолепную поддержку Web-сервисов. Конечно, существует целый ряд продуктов сторонних производителей, позволяющих совместить EJB и другие Java-классы с интерфейсом SOAP, но все же отсутствие поддержки Web-сервисов со стороны J2EE - явный недостаток нынешней спецификации.

В новой версии расширены возможности языка запросов EJB - уровня абстракции поверх SQL, который используется для обработки элементов логических объектов. Теперь здесь имеются операторы подсчета, суммирования, определения наименьшего, наибольшего и среднего составного значения. Предусмотрена также поддержка декларации ORDER BY для сортировки и вывода объектов в заданном порядке.

Отметим и то, что совместимые со спецификацией EJB 2.1 серверы должны иметь сервис таймера, способный запускать EJB через заданные промежутки времени либо в заданное время путем обратного вызова.

Предлагаемая спецификация Java Servlet 2.4 мало чем отличается от нынешней версии 2.3. Обновлен формат файлов дескрипторов развертывания сервлетов, благодаря чему разработчики получили возможность добавлять в такие файлы данные конфигурации создаваемых сервлетов. Новый формат задается с помощью XML Schema, а не прежнего Document Type Definition, что обеспечивает лучшую типизацию данных. При этом сохранена полная поддержка сервлетов, для чего используются файлы дескрипторов развертывания версий 2.2 и 2.3. 4

С техническим редактором на Западном побережье Тимоти Диком можно связаться по адресу: timothy_dyck@ziffdavis.com.

Совместимость J2EE обеспечивает протокол SOAP

Простой протокол доступа к объектам - так расшифровывается аббревиатура SOAP - уже получил широкое распространение в качестве механизма вызовов удаленных процедур. Он применяется в масштабах всей отрасли, поэтому нет ничего удивительного в том, что фирма Sun Microsystems включила его поддержку в грядущую спецификацию Java 2 Enterprise Edition 1.4.

Такое решение может стать маленьким подарком и тем, кто работает в “чистой” среде Java. Дело в том, что этот протокол открывает новый, не отягощенный багажом прошлого путь взаимодействия серверов приложений J2EE.

Создатели J2EE давно подчеркивали преимущества стандартизации и совместимости продуктов разных производителей, доказанные в процессе тестирования этой технологии. Однако здесь есть одно “но”... Хотя все продукты, построенные на базе J2EE, имеют один и тот же уровень функциональности, он вовсе не гарантирует совместимости приложений J2EE, развернутых на различных серверах приложений. Более того, порой бывает невозможно повторить развертывание одного и того же приложения на другом сервере из-за различий в файлах дескрипторов.

Сложности возникают при любой попытке выйти за рамки обычных вызовов метода между двумя серверами. Так может случиться, например, если одному из них нужно передать на другой конкретные идентификаторы безопасности или семантику транзакций (скажем, при обработке одной и той же распределенной транзакции).

Да и об объединении разнородных серверов приложений J2EE в кластеры думать не приходится - каждый из них будет использовать собственный протокол кластеризации. Производители таких серверов лишь совсем недавно начали задумываться о совместном функционировании своих продуктов, установленных на разных аппаратных платформах и работающих под управлением разных ОС.

Все эти проблемы совместимости уходят корнями в процесс разработки архитектуры CORBA, а основу их составляет отсутствие возможности взаимодействия различных сервисов транзакций в рамках этой спецификации.

Серьезные замечания раздаются и в адрес новых стандартов SOAP, которые, например, не предлагают никаких средств для передачи семантики транзакций в вызове SOAP. Не стандартизированы в них и способы передачи идентификаторов безопасности - правда, в этой области уже развернуты обширные исследования, и мы надеемся, что к следующему году проблема будет решена.

На сегодняшний день SOAP успешно справляется с большинством простых проблем совместимости. Когда же дело доходит до комплексных разнородных проектов, мы советуем устанавливать по обоим концам линии средства упорядочивания сообщений, обеспечивающие безопасность и поддержку транзакций при работе сложных распределенных приложений.

Изменения в J2EE 1.4

Enterprise JavaBeans 2.1

- Доступ к элементам сеансовых EJB, не хранящих состояния, через Web-сервисный интерфейс

- Новые операторы объединения и сортировки в языке запросов EJB

- Сервис таймера для планирования операций

Java Servlet 2.4

- Обновленный и расширенный формат файлов дескрипторов развертывания

- Возможность использовать сервлет в качестве стандартной страницы приветствия

- Интерфейс API выхода пользователя из системы

JavaServer Pages 2.0

- Встроенная библиотека стандартных тегов для условных выражений, выполнений цикла, доступа к базам данных и обработки данных XML

- Новый язык простых выражений, позволяющий разрабатывать динамические страницы без глубокого знания Java

- Возможность размещения на страницах заказных тегов JSP