ПЛАТФОРМЕННОЕ ПО

Sun Microsystems представила несколько Java-продуктов

В начале года Sun Microsystems анонсировала целый ряд своих обновленных Java-технологий. В январе она представила среду разработки NetBeans 5.0, а уже спустя месяц сообщила о выпуске ознакомительных версий NetBeans Enterprise Pack 5.5. и Java Platform, Enterprise Edition 5 (JEE 5)*1. В феврале стало также известно о выходе очередной бета-версии Java Platform, Standard Edition 6 (JSE 6), носившей ранее кодовое название Mustang. Согласно заявлению компании, этот релиз уже полностью соответствует запланированному составу функциональности настольной Java-системы, так что он может стать последней бета-версией перед появлением окончательного варианта осенью текущего года.

_____

*1 Стоит обратить внимание на то, что в наименовании Java-платформы исчезла цифра "2", обозначающая номер поколения системы. По-видимому, это должно подчеркнуть, что какие-то революционные изменения в Java, которые привели бы к появлению "3", произойдут не скоро и Java пока будет развиваться эволюционным путем.

Отметим сразу, что все свои разработки в области Java компания Sun ведет в сотрудничестве с сообществом Java Community Process (JCP), которое не только принимает участие в обсуждении предлагаемых спецификаций на самых ранних этапах их создания, но и утверждает их (в этом плане Sun скорее выступает в качестве инициатора и координатора работы). Ядро JCP составляют в настоящее время 14 компаний и организаций, включая Apache Software Foundation, BEA, IBM, Oracle и SAP AG.

NetBeans выходит из зоны затмения

Главная интрига в развитии NetBeans (см. PC Week/RE, N 17/2005, с. 38) - общедоступной интегрированной среды Java-разработки - заключается в том, что Sun решила выполнять этот проект практически в одиночку. Тем самым компания вступила в прямую конкуренцию с аналогичным проектом Eclipse (см. PC Week/RE, N 10/2005, с. 35), в котором IBM удалось объединить практически всех ведущих поставщиков Java-средств, за исключением как раз родоначальника и формального владельца Java.

На первых порах это соперничество складывалось явно не в пользу Sun, что стало поводом для расхожей игры слов о том, что "кофе не вызревает в условиях солнечного затмения"*1. Но с выпуском в конце 2004 г. NetBeans 4.0 аналитики рынка средств разработки начали сходиться во мнении, что пора "затмения" прошла, а сейчас, с появлением версии 5.0, порой даже звучат задиристые прогнозы, как бы в зону затмения не попал Eclipse.

_____

*1 Eclipse - затмение, beans - бобы (кофейные).

Среди довольно большого списка новых возможностей NetBeans 5.0, наверное, наиболее заметным улучшением можно назвать конструктор пользовательского интерфейса NetBeans GUI Builder, ранее называвшийся Project Matisse. Отметим также усовершенствованные средства рефакторинга при разработке Web-сервисов.

К дополнительным достоинством продукта относится также его бесплатная поддержка в рамках программы Sun Developer Network. Кроме того, сама среда разработки (IDE), поставляемая в открытых кодах, выпускается в комплекте с NetBeans Mobility Pack 5, предназначенным для создателей мобильных приложений на базе Java ME. Sun является главным автором NetBeans, но поскольку эта система реализуется на принципах открытого проекта, то она дополняется за счет улучшений со стороны весьма значительного сообщества разработчиков. Именно это делает NetBeans IDE 5.0 серьезным конкурентом для Eclipse IDE.

Одновременно Sun активно агитирует поставщиков коммерческих инструментов за переход к использованию NetBeans в качестве интегрированной среды разработки, подавая при этом собственный пример: именно данная IDE является основой линейки Sun Java Studio. Естественным конкурентным преимуществом NetBeans служит еще и то, что Sun, как создатель самой платформы Java, может раньше других включать поддержку новых спецификаций в состав своих инструментов.

Новая серверная Java нацелена в первую очередь на упрощение и повышение эффективности разработки Web- и Enterprise-приложений

Так, NetBeans 4.0 стал в свое время первым Java-инструментом, реализованным на базе новой тогда версии спецификаций JSE 5. А представленный сейчас предварительный вариант NetBeans Enterprise Pack 5.5 уже включает возможность работы с будущей Java EE 5. Важным новшеством инструмента 5.5 является и то, что в него включены средства, ранее доступные лишь в Sun Java Studio Enterprise. Речь идет, в частности, о поддержке UML и включении солидного набора инструментов проектирования для SOA. Кроме того, в состав комплекса входит Java Application Server 9, выпущенный пока тоже только в бета-варианте.

Контуры JEE 5

Новая серверная Java представлена сегодня лишь в промежуточном варианте JEE 5 SDK, с которым уже начали знакомиться участники JCP. Как подчеркивают представители Sun, выпущенный набор ПО в целом соответствует спецификациям, формально объявленным на прошлогодней конференции JavaOne. В то же время выпущенная версия JEE 5 SDK носит пока предварительный характер, поскольку комитет JCP еще не утвердил окончательно спецификации новой платформы. Ожидается, что такое решение будет принято не позднее начала мая.

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

- Enterprise JavaBeans (EJB) API 3.0, дополненная поддержкой программирования с помощью сервисов Plain Old Java Objects (POJO), которые могут быть преобразованы в Web-сервисы с использованием аннотаций или Java Persistence API;

- Java API for XML Web Services (JAX-WS), разработанная для упрощения вызова Web-сервисов путем автоматической генерации клиентского и серверного кода и обеспечения поддержки последних стандартов SOAP и WSDL;

- JavaServer Faces 1.2, упрощающая построение пользовательских интерфейсов для Web-приложений благодаря готовым компонентам, а также позволяющая создавать Web-решения типа AJAX (см. PC Week/RE, N 6/2006, с. 33);

- аннотации, помогающие уменьшить размер дескрипторов, необходимых для управления развертыванием ПО (в предыдущих версиях Java они достигали сотен строк).

Как заявляет Sun, эти технологии могут радикально повлиять на сокращение объема кода и описаний конфигураций, создаваемых собственно разработчиками. В ряде случае речь может идти о снижение на 85% и более.

На поля Java выходит "Мустанг"

Напомним, что нынешняя текущая версия Java Standard - J2SE 5.0 под именем Tiger - появилась на рынке осенью 2004 г., а первый предварительный бета-вариант Mustang в закрытом режиме был выпущен в июле 2005 г. Как известно, стандартное издание Java ориентировано на разработку клиентских настольных приложений. Поэтому новшества его 6-й версии могут быть условно разделены на две категории: улучшение ядра (повышение производительности труда разработчика и управление приложениями) и модернизированные возможности настольной системы (интерфейс пользователя и интеграция в клиентской ОС). Значительный шаг вперед сделан также в направлении поддержки Web-сервисов и безопасности. В целом можно сказать, что интересное для себя найдут в JSE 6 и разработчики приложений, и системные администраторы, и поставщики инструментов, и специалисты в области безопасности.

Поскольку эта система уже очень близка к выходу на рынок, рассмотрим появившиеся в ней нововведения несколько подробнее. Однако сначала отметим, что год назад, при подготовке к выпуску первой бета-версии "Мустанга", Sun говорила (точнее, не мешала другим говорить) о том, что новый вариант Sun Java Virtual Machine будет представлен в открытых кодах. Сейчас компания пока не затрагивает эту тему...

Модернизированные возможности ядра

Под Java-ядром мы понимаем те компоненты Java (сам язык и встроенные инструменты), которые являются основой для всех аспектов разработки приложения - от API пользовательского интерфейса до серверных библиотек.

В JSE 6 расширена поддержка скриптовых языков и Web-сервисов для создания приложений следующего поколения Web 2.0. В систему включен новый механизм исполнения сценариев Scripting API (в соответствии со спецификациями Java Specification Request 223), обеспечивающий внутренний доступ к Java со стороны различных скриптовых языков, в том числе PHP и JavaScript. Имеется возможность подключить даже сразу несколько скриптовых движков, которые запускаются прямо во время исполнения Java-приложения. Кроме того, Web-контент можно генерировать на основе скриптового кода в среде Web Scripting Framework непосредственно в Servlet-контейнере.

Новый набор функций Java Compiler API позволяет компилировать исходный Java-код внутри приложения. Это можно применять, например, для быстрого интерактивного формирования программного слоя доступа к источникам данных без перекомпилирования всей программы. Нужно также сказать о расширенных возможностях Java Platform Debugger Architecture (JPDA), которая теперь помогает выявлять ошибки типа взаимных блокировок и выдавать трассировку стека для наблюдения за блокируемыми объектами. Важно и то, что в Java SE 6 добавлена поддержка подключения внешних агентов к JVM (Java Virtual Machine) в целях проведения диагностики.

Получили развитие средства диагностики, управления и мониторинга приложениями. Например, появилось больше возможностей для обнаружения и анализа утечек памяти с помощью полной трассировки стека (функция java.lang. OutOfMemory) и выдачи протокола о фатальных ошибках при переполнении динамической памяти. Кроме того, новая опция JVM позволяет запускать скрипты, когда эта область памяти полностью занята.

С помощью обновленного JMX Monitoring API приложение теперь может реагировать на выход значений передаваемых атрибутов (в том числе при использовании комплексных типов данных) за пороговые величины. Специально для ОС Solaris 10 в состав Java SE 6 включен механизм отладки и диагностики Solaris DTrace. С его помощью можно, например, остановить работу приложения в любом месте кода и посмотреть состав загруженных библиотек (не только Java, но и системных), а также состояние ядра Solaris.

Поддержка Web-сервисов выполняется новыми наборами API. XML Digital Signatures API позволяет производить шифрование XML-данных, Java-XML Web Service (JAX-WS) 2.0 API заменил ранее использовавшуюся библиотеку JAX-RPC, а Java-XML Binding (JAXB) 2.0 реализует поддержку XML-схем, в том числе связывание с ними классов кода. И наконец, Streaming API for XML (STaX) представляет собой набор двунаправленных функций для чтения и записи XML в потоке данных, включая возможность пропуска секций и выборки только нужных фрагментов документов.

Что же касается безопасности, то JSE 6 может быть интегрирована с протоколами Generic Security Services/Kerberos, к тому же эта платформа наделена средствами Java Authentication & Authorization Service (JAAS) для LDAP-аутентификации (Lightweight Directory Access Protocol), а также механизмом запросов сертификатов безопасности, который дает возможность Java-приложениям использовать разные протоколы для получения нужных сертификатов.

Новшества настольной системы

Один из парадоксов Java заключается в том, что этот язык разрабатывался более 10 лет назад в первую очередь для применения на клиентских компьютерах, но почти сразу он переместился на серверную сторону и сегодня воспринимается именно в таком качестве. Создание "толстых" настольных приложений - это для Java не первоочередная задача. Однако последние годы Sun активно работает над тем, чтобы изменить устоявшийся имидж Java, в том числе путем его интеграции с настольными хостовыми ОС. JSE 6 - серьезный шаг именно в этом направлении.

Многие новые десктоповские функции JSE 6 реализованы в рамках проекта JDesktop Integration Components (JDIC), который подразумевает возможность прямого использования таких "родных" средств ОС, как браузер, редактор электронной почты, системные панели инструментов, привязка к типам файлов, печать и т. д. Отметим, что хотя Sun предпочитает употреблять в своих материалах о JSE 6 термин "настольная система", чаще всего речь идет о вполне конкретном семействе - Windows. Впрочем, в анонсе новой JSE отдельно говорится, что она будет поддерживать работу в среде будущей Windows Vista.

Вот некоторые наиболее интересные инновации JSE 6:

- поддержка заставок экрана, которые информируют пользователя о процессе запуска приложения (причем еще до старта JVM);

- модернизация в Java Foundation Classes (JFC) и Swing:

- повышено качество компилируемого кода для работы с Windows API, в том числе с учетом специфики различных версий Windows;

- стало удобнее управление раскладкой пользовательского экрана и визуальными элементами управления;

- технология двойного буферирования реализует наглядный и быстрый способ перемещения графики на экране;

- поддержка области состояния: два новых класса, SystemTray и TrayIcon, позволяют добавлять иконки, советы для кнопок и спадающие меню к системным областям состояниям Windows или Gnome Linux;

- улучшенная поддержка печати для Jtable;

- расширенные функции Java 2D, обеспечивающие повышение качества отображения текстовой информации, особенно на LCD-мониторах;

- новый набор java.awt.Desktop API, дающий возможность создавать приложения с пользовательским интерфейсом, который смело можно отнести к первоклассной категории. Этот набор также позволяет запускать из Java-программы установленный по умолчанию браузер или почтовый клиент, выполнять интеграцию с общими настольными приложениями;

- помимо всего этого существенно улучшены возможности интернационализации ПО, в том числе использования различных региональных форматов и методов преобразования данных.

Разумеется, это далеко не все новшества JSE 6. В целом же, оценивая ее "способности", можно сказать, что если раньше стандартное издание платформы Java было как бы в тени своего "старшего" серверного брата, то теперь оно, с точки зрения профессиональных разработчиков, сможет занять весьма достойное место. Последние уже сейчас могут познакомиться с JSE 6 с помощью NetBeans IDE 5.0, загрузив этот инструмент с сайта www.netbeans.org.