Без ошибок может писать только Господь Бог, но почему-то не хочет
О Java написано много хороших слов. И это можно понять, ведь создатели этой технологии попытались создать аппаратно-независимую платформу для разработки и исполнения программ. По идее, интерпретация байт-кодов Java позволяет запускать программы на любой платформе, где имеется Java-интерпретатор. Но хорошие идеи не всегда легко реализовать.
В России пока совсем не много программистов, пытающихся писать коммерческие приложения на Java. Одной из первых в этой области начала экспериментировать московская фирма ASoft. По просьбе редакции PC Week/RE с программистом этой фирмы Александром Янушко, разрабатывавшим Java-приложения, беседует Валерий Коржов.
PC Week: В каких элементах своих систем Вы использовали Java-технологию?
А. Я.: Разрабатывая программное обеспечение для банковских систем, мы решили использовать Java, поскольку до этого нам приходилось писать несколько вариантов программ для каждой платформы в отдельности. Java привлекателен тем, что уже работающую программу можно переносить на этот язык постепенно. Мы, например, начали с того, что написали на языке Java клиентскую часть нашей банковской системы, т. е. сделали прорисовку диалоговых окошек, с которыми работали операционисты, администраторы и другие пользователи системы.
PC Week: Какими Вы пользовались инструментами разработки Java-приложений?
А.Я.: Мы использовали пакет Java Development Kit - JDK версии 1.02 компании Sun Microsystems. Этот комплект включает в себя следующие элементы Java-технологии:
- Java-компилятор - javac;
- Java-интерпретатор - java;
- программу для просмотра Java апплетов - appletviewer;
- генератор сопроводительной документации - javadoc;
- транслятор исходных текстов с языка Java на Си - javah;
- дизассемблер Java-классов - javap;
- Java-отладчик - jdb.
PC Week: Были ли проблемы во время разработки Java-программ, или все прошло гладко?
А. Я.: Главная проблема состояла в том, что при большом числе используемых окон интерпретатор java для платформы Windows 95 работал очень медленно. Когда открывалось примерно 50 окон (в отсутствие других активных программ), компьютер 486DX2-66 начинал работать так медленно, что прорисовка следующего окна занимала около 3 - 5 минут. Если на ту же машину установить Solaris x86, то та же программа в тех же условиях функционировала достаточно быстро и использовала максимум 10% рабочего времени процессора. К счастью, компьютеры под Windows 95 использовали только операционисты, которым обычно не требовалось более 20 окон, и "насыщения" просто не происходило. С выходом же новой версии JDK 1.1 проблема решилась сама собой, так как новая версия Java-интерпретатора под Windows 95 работает более корректно.
Кроме того, обнаружилось достаточно много ошибок в Abstract Windows Toolkit (AWT), входящем в состав JDK 1.02. Например, ошибка в реализации линейки прокрутки (scroll bar), используемой для просмотра полного содержания окна, часто приводила к зависаниям программы. Поэтому нам пришлось самостоятельно переписать Java-класс, отвечающий за работу этого компонента. Кроме того, оказалось, что вокруг некоторых управляющих панелей существует так называемая "зона невидимости", перекрывающая находящиеся поблизости элементы. Из-за нее невозможно, например, поместить две кнопки на расстоянии 5 - 6 пикселов друг от друга, так как одна из них будет частично перекрыта ореолом другой.
PC Week: Не отбили ли довольно многочисленные недочеты Java-технологии охоту работать с ней?
А. Я.: Перечисленные недостатки Java-технологии вовсе не умаляют ее достоинств. Технология эта молодая, и, вероятно, со временем все ошибки в ней будут исправлены. Поэтому мы не остановились на достигнутом и стали применять также сетевые возможности Java, например работать с одной копией программы. При использовании сети с низкой пропускной способностью, когда передача программы размером 1 - 3 Мб становится делом весьма проблематичным, можно применять кэширование на клиентской машине. В этом случае, если программа долго не изменяется, она работает так, как будто установлена на клиентской машине. Если же время от времени необходимо загружать новые куски программы, то достаточно передать по сети только ее дополнительные части, которые также будут сохранены для дальнейшего использования. Такая технология одновременно обеспечивает простоту поддержки программы, ее модернизацию и эффективную загрузку сети.
С Александром Янушко можно связаться по адресу: javl@asoft.msk.su.