JavaOne Today

За всей праздничной суетой конференции JavaOne как-то незамеченным остался тот факт, ради которого и было устроено это грандиозное шоу: бурное развитие технологии Java продолжается. Три года назад компания Sun сделала ее общедоступной - соответствующие средства можно бесплатно загрузить из Internet. Начальная версия тихо ушла со сцены, но мир узнал о технологии Java, которая успела наделать много шума. Разработчикам не терпелось немедленно начать ее применение, однако, попробовав приступить к реальной работе с JDK версии 1.0 и 1.1, они обнаружили немало "острых углов". Многие пытались применить Java в реальных проектах, но текущее состояние JDK сильно тормозило этот процесс.

Недостатки JDK

В JDK 1.0 и 1.1 было немало того, что представляло определенные трудности для разработчиков. Хотите вывести информацию на печать? Извините, из программы на Java этого сделать нельзя. Нужен хороший пользовательский интерфейс? В принципе, создать его можно, но это потребует слишком много работы. Хотите реализовать информационное наполнение Web-страницы с помощью апплета? Ограничения защиты апплета, обеспечивающие безопасность клиентской системы, затрудняют для апплета выполнение любой полезной работы. Вам удалось с честью преодолеть все препятствия, вызванные "шероховатостями" API-интерфейса? Мои поздравления! Теперь вы увидите, как медленно на самом деле работает ваше законченное Java-приложение.

Несмотря на существенные недостатки в JDK 1.0 и 1.1, эти "шероховатости" были просто следствием незрелости технологии. Причины того, что разработчики сталкивались с ними в столь больших масштабах, заключались в изумительно "быстром старте" языка Java. Многие другие языки провели свое "детство" в относительной безвестности, что позволило им стать более зрелыми к тому времени, когда они начали завоевывать популярность. С другой стороны, технология Java обещала столь многое (включая значительное увеличение продуктивности создания приложений, защиту в сетевых средах и независимость от платформы), что для многих разработчиков усилия по преодолению описанных недостатков вполне себя оправдывали. В конце концов, "первопроходцы" пришли к заключению, что рано или поздно технология Java должна вырасти из своего младенческого состояния, а ее скорейшее применение позволит им оторваться на шаг вперед от своих конкурентов, еще не приступивших к использованию Java.

JDK 1.2: состояние дел улучшается

С выпуском JDK 1.2, виртуальной машины Java HotSpot и ПО Java Activator, появление которых ожидается во второй половине этого года, многие самые заметные "острые углы" технологии Java будут заметно сглажены, что позволит создать мощные средства создания ПО, способные принести разработчикам ощущение комфорта. В 1998 г. технология Java должна превратится в ценный инструмент для разработчиков ПО (особенно для корпоративных). Наконец-то их время пришло.

Ориентация на корпоративных разработчиков

За последний год компания Sun в основном сконцентрировала свои усилия на том, чтобы сделать технологию Java более пригодной для корпоративных пользователей. Конечно, попутно данная технология стала более применимой и в других областях. Вместе с тем, если вы являетесь корпоративным разработчиком, возьмите на заметку следующее. Чтобы превратить Java в более жизнеспособную корпоративную технологию, Sun сосредоточила свои усилия по разработки JDK 1.2 в нескольких областях:

  • Развитие Java API для обеспечения более простой разработки и развертывания корпоративных приложений.
  • Усовершенствованные реализации виртуальной машины Java для повышения производительности.
  • Сертификационное тестирование и проект Java Activator помогут компаниям оценить преимущества независимости от платформы.
  • Java IDL и усовершенствования в JDBC позволят компаниям сохранить сделанные вложения.
  • Расширенная среда защиты поможет им защитить сделанные вложения.

"Сглаживание углов" в API-интерфейсе версии 1.2

JDK 1.2 включает в себя несколько новых вызовов API и многочисленные усовершенствования в существующих API-интерфейсах. Перечислим некоторые основные моменты.

  • Новые библиотеки наборов
  • Новая модель защиты
  • Новый комплект для разработки пользовательского интерфейса (Swing Set)
  • Drag and Drop API
  • Accessibility API
  • Поддержка печати
  • Улучшенная поддержка "глобализации"
  • Механизм расширения функциональности ядра Java API
  • Связь с CORBA
  • Развитая 2D-графика и поддержка работы с изображениями
  • Среда для применения расширений базовых API

Повышение производительности: классическая виртуальная машина и Java HotSpot

Ключевой областью, в которой технология Java нуждается в усовершенствовании, является производительность. Sun занимается совершенствованием своей технологии виртуальной машины (VM) "на двух фронтах": улучшение классической VM и развитие концепции виртуальной машины Java HotSpot. Основная разница между этими виртуальными машинами заключается в том, что классическая виртуальная машина использует традиционный компилятор JIT (just-in-time), в то время как в HotSpot применяются методы "адаптивной оптимизации". Классическая VM реализует многочисленные усовершенствования, способствующие повышению производительности выполняемых ею программ, включая JIT-компилятор, "на лету" преобразующий байт-коды приложения в "родной" (внутренний) код данной платформы.

Кроме того, в классической VM используется более быстрое распределение памяти, улучшенная "сборки мусора" и уплотнение классов в памяти. Как утверждает Фрэнк Раймаловски, менеджер по семейству продуктов JDK, выполненное компанией Sun эталонное тестирование показывает, что классическая VM, поставляемая с JDK 1.1.6, обеспечивает в четыре раза более высокую производительность по сравнению с оригинальной версией JDK 1.1, и функционирует в девять раз быстрее, чем в JDK 1.0.2.

Между тем, реальные "технологические чудеса" проявляются в Java HotSpot. Как и классическая виртуальная машина, HotSpot преобразует байт-коды во внутренний код, но делает это только для наиболее ответственной (в плане производительности) части приложения. HotSpot начинает интерпретацию байт-кодов приложения в непосредственном режиме, но осуществляет мониторинг приложения при его выполнении. Данная VM выявляет те методы, на которые в приложениях тратится больше всего времени, и преобразует их во внутренний код. Поскольку во внутренний код транслируется только часть методов приложения, у VM оказывается больше времени для качественного выполнения оптимизации, чем у обычного JIT-компилятора классической VM.

Данный подход позволяет HotSpot VM преобразовывать от 10% до 20% кода приложения, который выполняется 80% - 90% времени, в хорошо оптимизированный внутренний код. Хотя реализованный в HotSpot подход с технической точки зрения вполне разумен и кажется очень многообещающим, он пока что не представлен "широкой общественности" (до сих пор имеется лишь альфа-версия HotSpot). Пока еще рано давать какие-либо количественные оценки реальной производительности HotSpot. Кроме того, компания Sun пока не объявила, сколько будет стоить HotSpot (или этот продукт будет поставляться бесплатно).

Независимость от платформы на корпоративном уровне

Еще одной областью, где технология Java столкнулась с трудностями, стала обещанная независимость от платформы. Из-за ошибок в различных реализациях, запаздывания с включением новых версий и различиях в стратегиях развития самой технологии, девиз "написано однажды - работает везде" так и не был осуществлен в полной мере. Чтобы справиться с данной проблемой, в частности, на корпоративном уровне, компания Sun приступила к реализации проекта под названием Project Java Activator. Activator позволяет использовать среду выполнения JRE (Java Runtime Environment) от Sun, а не заданные по умолчанию среды, поставляемые с Microsoft Internet Explorer и Netscape Navigator. ПО Activator имеется для платформ Microsoft Windows и Sun Solaris. С помощью Activator компании могут гарантировано получить единообразную среду выполнения Java-программ на машинах Windows и Solaris.

Еще один способом, с помощью которого Sun надеется улучшить совместимость различных реализаций среды выполнения Java, является тестирование. К июню этого года Sun будет иметь уже 11 тыс. тестовых программ: все владельцы лицензий должны пройти их, чтобы сертифицировать свои продукты как Java-совместимые ("Java Compatible"). В сочетании с программой "100% Pure Java" более строгие тесты на совместимость должны помочь технологии Java реализовать одно из своих главных достоинств - независимость от платформы. Любая 100%-чистая программа на Java должна выполняться в любой среде Java, сертифицированной как Java Compatible.

Использование имеющихся корпоративных систем

В JDK 1.1 технология удаленного вызова методов (RMI, Remote Method Invocation) расширяет объектную модель Java до масштабов сети. С помощью RMI разработчики могут обращаться к другим Java-приложениям, выполняемым на подключенных к сети компьютерах, путем простого вызова методов в локальном объекте-представителе. Java IDL API позволяет программистам через IDL и IIOP консорциума OMG обращаться к средствам удаленной обработки (независимо от того, написаны они на Java или нет). Это предоставляет Java-приложениям доступ к унаследованным системам. Кроме Java IDL, JDK 1.2 включает в себя усовершенствования в JDBC - стандартном API-интерфейсе, предоставляющем Java-приложениям доступ к базам данных. Такие усовершенствования как "прокручиваемые" курсоры, поддержка типов данных SQL 3, настраиваемое отображение типов SQL 3, полная поддержка сортировки и загрузки объектов Java, помогут компаниям использовать существующие корпоративные данные.

Усовершенствование модели защиты

Одной из последних областей, в которых JDK 1.2 помогает сделать технологию Java более жизнеспособной для корпоративных пользователей, является улучшение модели защиты. Новый API-интерфейс защиты позволяет системным администраторам присваивать "правила" и "полномочия". Правила определяют (на основе цифровой подписи или источника кода), кто и что может делать в системе, причем допускается детализация полномочий, определяющих, например, доступ к конкретному каталогу или подключение к определенному серверу. Новая инфраструктура защиты расширяет известную концепцию "песочницы" Java (sandbox) - ограничений неструктурированного кода для управления доступом на системном уровне. Кроме того, API защиты JDK 1.2 применяются в равной степени к апплетам, приложениям, компонентам Java Beans и сервелетам (Java-приложениям, выполняемым на сервере).

Заключение

По мере созревания Java API, повышения производительности и независимости от платформы, технология Java становится готовой к важным изменениям, которые должны произойти в этом году. Выпуск JDK 1.2, Java Activator и HotSpot должен облегчить разработку и развертывание Java-приложений, особенно в корпоративной среде. О сроках предстоящих изменений рассказывается во врезке "Что дальше?".


Билл Веннерс в течении 12 лет профессионально занимается созданием программного обеспечения. Работая в знаменитой Кремниевой Долине, в фирме Artima Software Company, он оказывает услуги по консалтингу и обучению. За эти годы он проектировал ПО для компаний, работающих в области бытовой электроники, полупроводниковой промышленности и страхования жизни. Веннерс имеет опыт программирования на многих языках и на разных платформах, включая язык ассемблера для ряда микропроцессоров, C в Unix, C++ в Windows и Java в Web. Он является автором книги "Inside the Java Virtual Machine", опубликованной издательством McGraw-Hill. С ним можно связаться по адресу bill.venners@javaworld.com.

Ресурсы

  • Более подробная информация о JDK
    http://java.sun.com/products/jdk/
  • Java Developer Connection
    http://java.sun.com/jdc/
  • Более детальные сведения о Java Activator
    http://java.sun.com/products/activator/
  • Информация по JFC (Java Foundation Classes):
    http://java.sun.com/products/jfc/
  • Сведения о среде JRE (Java Runtime Environment)
    http://java.sun.com/products/jre

    Что дальше?

    Текущая версия JDK имеет номер 1.1.5. JavaSoft планирует выпускать сервисные версии (с исправленными ошибками, улучшениями в производительности и совместимости, но не содержащие новых API) для JDK 1.1.x каждые 12 - 18 недель.

    Ожидается, что комплект JDK 1.1.6 будет выпущен к середине апреля, версия 1.1.7 появится в течение лета, а версия 1.1.8 - к концу года.

    Самой последней бета-версией JDK является JDK 1.2 beta 3, появившаяся 23 марта. Ожидается, что следующая бета-версия JDK 1.2 с более полным набором средств будет выпущена через несколько месяцев. Полная версия JDK 1.2 должна увидеть свет в конце нынешнего лета.

    Java Activator в настоящее время проходит бета-тестирование. Ожидается, что работа над ним будет завершена к середине апреля.

    Java HotSpot сейчас существует в альфа-версии. Ожидается, что бета-версия HotSpot появится в конце лета, а окончательная версия - к концу года.


    Что нового в Java API?

  • Библиотека Сollections: Новая библиотека JDK 1.2 представляет собой мощный и хорошо спроектированный инструмент. Моя первая реакция была: "Вот это да!" Обратите на нее внимание.
  • Новая модель защиты: В JDK 1.2 компания Sun значительно усовершенствовала базовую инфраструктуру защиты среды выполнения Java. Эта новая инфраструктура предоставит администраторам сетей инструментальное средство, необходимое для реализации эффективной политики защиты Java, позволяющей апплетам и приложениям Java выполнять полезную работу.
  • Swing: Если средства пользовательского интерфейса AWT вас разочаровывают, не отчаивайтесь. Обратите внимание на Swing - инфраструктуру Java-классов (один из элементов JFC - Java Foundation Classes). Она позволяет создавать пользовательские интерфейсы, функционирующие на нескольких платформах.
  • Средства буксировки (Drag and Drop): Вам нужно передавать данные между Java-приложениями и приложениями на внутреннем коде данной платформы или в рамках одного приложения Java? Теперь это можно сделать с помощью интерфейса Drag and Drop API библиотеки классов JFC.
  • Accessibility API: Если вы планируете создавать Java-приложения, ориентированные на людей с физическими недостатками и поддерживающие некоторые вспомогательные средства, такие как устройства считывания информации с экрана, системы распознавания речи и терминалы Брайля, обратите внимание на еще один компонент JFC - интерфейс Accessibility API.
  • Печать: Нужно вывести что-то на печать? Нет проблем. API-интерфейс печати дает возможность печатать "где угодно".
  • Глобализация: Muss Du ein Programm auf Deutsch schreiben? O Tal vez tu programma tienne que hablar en espanol? Может вы и не в состоянии это произнести, то ваша Java-программа сможет вывести данный текст на экран! Новая поддержка развитой двумерной графики и шрифтов в версии 1.2 позволяет Java-программам общаться на большем числе языков. Кроме того, новый интерфейс Input Method Framework API облегчает ввод нелатинских символов.
  • Среда расширений Java: Если вам необходимо расширить базовые функции Java API и предоставить доступ к этим расширенным функциям клиентам сети, у которых они не инсталлированы локально, то среда расширений Java может решить данную проблему.
  • Java IDL: Вам нужно обеспечить взаимодействие Java-программ с CORBA (Common Object Request Broker Architecture)? Воспользуйтесь Java IDL.
  • Java 2D: API-интерфейс Java 2D предлагает богатый набор инструментальных средств, помогающих включать в программы развитые средства 2D-графики и работы с изображениями.