Редактирование и работа с проектами
Компиляция и отладка
Редактор ресурсов и мастер ресурсов
Документация

Произнесите "Java" несколько раз и подумайте, какую реакцию это слово у вас вызывает. Если оно вас раздражает, то значит, вы много читаете компьютерной прессы (особенно про новый язык программирования Java) и дальнейшее чтение вам противопоказано. В противном случае вы открыли правильную страницу, потому что в этой статье мы расскажем вам про новейшее средство создания Internet-приложений и аплетов1 на языке Java - Microsoft Visual J++ 1.0. Вступив в битву за Internet позже всех, Microsoft не только не осталась на задворках истории, но и умудрилась вырваться вперед, обратив своего злейшего врага - язык программирования Internet-приложений Java - в своего союзника. Ход корпорации был прост: раз нельзя заставить людей отказаться от программирования на Java, то надо просто дать им лучший компилятор Java и получать от этого выгоду. Таким образом, конкуренты, планировавшие закрыть Microsoft путь в Internet повсеместным внедрением Java, сработали против себя: стратегическая ракета по имени Java, выпущенная по позициям Microsoft, была перехвачена, модернизирована и отправлена назад, но уже под под названием Visual J++. И похоже, что она может громыхнуть почище нападок на технологию ActiveX, о поддержке которой, к слову говоря, в Visual J++ не было забыто. Видимо, не стоит удивляться, если в один прекрасный день от Microsoft начнут поступать предложения о модернизации стандарта языка Java, как сейчас это происходит со стандартом HTML.

При создании Jakarta (кодовое название проекта Visual J++) был учтен опыт других создателей Java-инструментов - фирм Symantec, Borland и Sun, а также и все шишки, которые те успели набить. Сейчас, когда пакет Visual J++ 1.0 уже появился в продаже, можно рассмотреть все то, что было заложено в его окончательный вариант.

Редактирование и работа с проектами

Как и следовало ожидать, пакет Visual J++ выполнен на базе более ранней разработки Developer Studio, которую уже несколько лет компания Microsoft поставляет разработчикам в комплекте с компиляторами Visual C++ и Fortran PowerStation, вспомогательными инструментами работы с кодом Visual Test и Visual Source Safe и библиотекой поддержки разработчиков MSDN.

Окна в среде Developer Studio могут быть как самостоятельными, так и причаленными (dockable), то есть закрепленными внутри главного окна, подобно тому как закреплены линейки инструментов и меню.

При этом сохраняется возможность менять их размер мышью.

Замечательной особенностью среды Developer Studio является возможность работать с несколькими проектами одновременно, при этом они могут быть созданы для разных языков программирования. Хотите написать аплет, не прерывая компиляции своего проекта на Си++? Пожалуйста: Developer Studio может сделать для вас это в фоновом режиме. Кстати, если вы желаете прооптимизировать фрагмент, написанный на Си++, вставив файл на языке Фортран, то можете сделать это в одном проекте. Ну а пока идет процесс, потренируйтесь в разработке небольшой программки на Java.

Несколько слов о работе с проектами. В Visual J++ все проекты отображаются как иерархические деревья файлов. Кроме того, при генерации создаются два проекта вместо одного: отладочный вариант (debug) и вариант для распространения (release). Разница между ними состоит в том, что задаются разные ключи компиляции. Как правило, для варианта debug компилятор генерирует в выходной файл отладочную информацию, а release компилируется без оной. Переключение одного варианта на другой представляет собой смену выделенного пункта из выпадающего списка на основной линейке инструментов среды Developer Studio и занимает одну секунду.

Проект можно просмотреть в окне Project Workspace, щелкнув на закладке FileView в нижней части окна.

Но это не единственное назначение этого окошка. Там же можно просматривать иерархию классов, методов и переменных проекта (закладка ClassView) и электронную документацию в формате .MVB (закладка InfoView). Если нажать правую кнопку мыши в самом окне Project Workspace, то на экране возникнет контекстное меню, содержимое которого зависит от того, какая закладка включена и где находился курсор в момент нажатия. Благодаря такой концепции вы можете делать несколько дел одновременно, не покидая Developer Studio.

Если возможности, предоставляемые закладками FileView и InfoView, достаточно очевидны, то ClassView - это квинтэссенция автоматической разработки программ. Используя эту закладку, вы не только получите имена классов и их членов, но и можете добавить в эти классы новые методы и переменные. Давайте посмотрим, как это происходит. Указав имя класса, правой кнопкой мыши выберите Add Method; возникнет диалоговая панель, заполняя поля которой вы автоматически получите прототип нового метода.

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

Для создания приложения "с нуля" в J++ имеется единый со всеми другими компиляторами мастер генерации приложений AppWizard. При установке нового продукта в список возможных создаваемых проектов добавляются новые возможности. Вот так, к примеру, выглядит список на машине автора с установленными компиляторами Visual C++, Visual J++ и парой дополнительных инструментов, поставляемых с Microsoft Visual J++.

Процесс генерации Java-приложений и аплетов предельно прост: ваша задача указать, куда AppWizard должен положить готовые файлы с исходным текстом, и ответить на некоторые наводящие вопросы.

Здесь вы видите, что мастер пытается узнать, одно- или многопоточное приложение вы желаете получить, будет ли ваш аплет осуществлять анимацию и обработчики каких событий мыши вы хотите получить в результате генерации. Помимо исходных текстов AppWizard позволяет создавать одновременно аплет и самостоятельное приложение на базе одного и того же кода, экономя ваше время. В процессе генерации "каркаса" приложения вам будет предложено создать новую страницу в формате HTML со ссылкой на разрабатываемый вами аплет. Если вам это необходимо (а так оно и есть), то вам будет предложено задать имена и прочие атрибуты передаваемых через HTML-страницу параметров аплета.

Компиляция и отладка

Компилятор языка Java пакета Visual J++ обладает высокими скоростными данными: по числу компилируемых строк в минуту он более чем в два раза быстрее предыдущего рекордсмена - компилятора Borland Delphi 2.0.

При этом генерируемый им код полностью отвечает требованиям к Java-продуктам компании Sun - разработчика языка Java. Примерная скорость, которую развивал компилятор Visual J++ на тестах, - до 1 миллиона строк в минуту. А если вы пожелаете, то ваше Java-приложение может включать элементы ActiveX - еще одной технологии Microsoft, реализованной для Internet. Данные компилятор получает при чтении библиотек типов TLB. А чтобы подтвердить компилятору свои желания, надо включить необходимые COM-классы выражением import языка Java.

Отладчик в Visual J++ обладает рядом преимуществ по сравнению с конкурентами. Достаточно сказать, что он не требует настройки протокола TCP/IP, как это происходит в случае с отладчиками из пакетов Symantec Caf`e или JDK. Более того, отладчик Visual J++ практически совпадает с аналогичным средством из Visual C++ или Fortran PowerStation. Однако он предоставляет больше возможностей, так как в проекте можно задать и внешний отладчик, отличный от имеющегося в среде Developer Studio. Но и это не все: когда вы запускаете вашу Java-программу на исполнение, то кроме отладчика запускается браузер WWW, и конечно же, это не что иное, как Microsoft Internet Explorer 3.0. Разумеется, вы можете использовать и Netscape Navigator или, скажем, Mosaic. Поддерживается и одновременная отладка нескольких аплетов.

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

Структурированность информации и показ ее в виде дерева позволяет легко разделять переменные и объекты разных файлов.

Есть и еще одно окошечко, которое показывает все данные без разбора, - Variables. Данные в этом окне хоть и полные, но в целях удобства показываются лишь для выбранного пользователем контекста. Кроме того, данные разбиты на три группы: автоматические (auto), локальные (local) и данные текущего класса (this). Переключение между ними возможно через три закладки.

Между прочим, вы можете зайти и внутрь системных классов. Для этого достаточно выбрать контекст этого класса из списка доступных контекстов и можно взглянуть на происходящее за сценой.

Если вы ненадолго остановите указатель мыши на какой-либо переменной, то вашему взору предстанет такое, от чего еще каких-нибудь пять-шесть лет тому назад у любого программиста глаза бы на лоб вылезли. Рядом с переменной возникает всплывающее окошко (так называемый ToolTip), текст в котором показывает содержимое переменной под указателем мыши. Разные всплывающие окошки видел я за последнее время, но чтобы вот так! Это прямо-таки шедевр дружелюбия.

Для того чтобы создавать многопоточные приложения, требуется не только желание, но и соответствующее средство для отслеживания работы каждого потока. Visual J++ предоставляет такой инструмент, вмонтированный в среду отладчика: Thread Manager не только показывает потоки, запущенные программой пользователя, но отображает и системные витки-"демоны", выполняющие сервисные функции. Программист может вручную остановить выполнение любого потока, запустить остановленный поток или перенести фокус выполнения с одного потока на другой.

Редактор ресурсов и мастер ресурсов

Строго говоря, программы на языке Java не имеют ресурсов и не рассчитаны на их использование: все элементы интерфейса создаются и размещаются программно. Но в Microsoft Visual J++ пользователю не придется киснуть над листингами, подгоняя кнопки и линейки и перекомпилируя исходный текст бесконечное число раз, добиваясь все более и более точного расположения элементов на экране. Подход Microsoft в этом вопросе схож с подходом Symantec: можно создать ресурсы обычным способом, а затем отконвертировать их в программные модули на языке Java. Первый этап, т. е. создание ресурсов, происходит, как обычно, с помощью редактора ресурсов, встроенного в среду Developer Studio и знакомого всем пользователям Visual C++. Когда шаблон ресурсов создан, наступает время второго этапа - генерации Java-кода. Этим занимается специальный инструмент под названием Java Resource Wizard. Полученный код нужно добавить в проект, а во все файлы классов, которые ссылаются на полученный код, добавить выражения import для корректной компиляции.

Редактор ресурсов, используемый в Visual J++, работает по методу буксировки. Диалоговые панели формируются перетаскиванием элементов с палитры на шаблон ресурса.

Что же касается рисунков, то их создание несколько сложнее. Как известно, браузеры WWW не понимают никаких графических форматов, кроме GIF и JPEG, а редакторы ресурсов Windows, как назло, никогда не могли рисовать в этих форматах. В Microsoft Visual J++ этот недостаток исправлен, и можно сохранять графические изображения в файлах .JPG и .GIF.

К сожалению, Java Resource Wizard может конвертировать в Java-код только ресурсы меню и диалоговые панели. Причем из элементов диалоговых панелей конвертируются лишь те, для которых в Java имеются соответствующие классы. Более того, сгенерированный для диалоговой панели код создает лишь элементы интерфейса без панели. В своей программе вы сами зададите любой контейнер по своему усмотрению. Таким образом, для вашего интерфейса нет никакой разницы, куда будут переданы его элементы: в окно, панель или какой другой визуальный класс-контейнер. Как предполагается, по мере развития Java Resource Wizard будет распознавать все больше и больше ресурсов, предоставляя пользователю все больше и больше возможностей автоматизации разработки программ.

Документация

Пакет Visual J++ 1.0 содержит электронную документацию в формате .MVB, которая охватывает практически все аспекты работы в среде Developer Studio, а также приводит примеры программирования на языке Java. Отдельные места документации не совсем понятны из-за компактности изложения, но все равно надо отметить широкий кругозор технических писателей, ее составлявших. Назвать документацией прекрасную 320-страничную книгу Стефена Дэвиса "Learn Java Now" просто язык не поворачивается. Это отнюдь не академическое издание, а отменное пособие с разнообразными примерами и множеством листингов на любимую американцами тему: вычисление доходов по банковским депозитам. На дистрибутивном компакт-диске вы легко обнаружите все примеры. Кроме того, в комплекте поставки имеется цветной плакат с изображением иерархии классов языка Java.

Для тех, кто впервые окунулся в мир Java и идеологию продуктов Microsoft, имеется введение в работу с Visual J++, выполненное как гипертекстовая мультимедийная презентация, показываемая через Microsoft Internet Explorer. А каково было мое удивление, когда я, копаясь во внутренностях коробки, обнаружил карточку Getting Started размером немногим более открытки, на которой были показаны типовые шаги по созданию аплета.

Если вы - птица высокого полета и вам необходимо что-нибудь эдакое, то на диске c Visual J++ найдите каталог с четырьмя интересными приложениями независимых разработчиков. Мне показалась очень занимательной пробная версия RAD-системы создания Java-приложений с библиотекой графических эффектов Jamba фирмы AimTech Corporation. Процесс работы по созданию программы на Jamba чем-то напоминает работу в Visual Basic, хотя и отличается от последнего. Для быстрой генерации почтовых приложений вы найдете интересный мастер корпорации Neural Applications, встраивающийся во время установки в среду AppWizard. Фирма ObjectSpace отметилась своей библиотекой общих структур данных и алгоритмов JGL. А вот компания Liquid Motion пожадничала, включив в Visual J++ только демонстрацию своей библиотеки DimensionX для создания 2D-анимации и отсылая пользователей на свой WEB-сервер.

"Вот, пожалуй, и все, что я знаю о креветках" - так завершил свое долгое повествование один из персонажей фильма "Форест Гамп". И мне пора завершить свой рассказ о продукте, давшем новый толчок новой технологии в разработке приложений для Internet.


Дмитрий Рамодин - научный редактор журнала "Мир ПК", тел.: (095) 132-08-41.

Microsoft Visual J++ Professional Edition

Коротко о продукте: средство для разработки приложений на языке Java.
Microsoft A.O.,
тел.: (095) 967-85-85


1 Аплет - небольшое приложение, не способное выполняться самостоятельно. В случае с языком Java аплет - элемент, встраиваемый в Web-страницы в качестве полезного дополнения (анимация, калькуляция и т. д.).