Для продвижения сетевой клиент-серверной версии бухгалтерской прог- раммы "Финансы без проблем" фирме "Хакерс Дизайн" были нужны фильмы, при просмотре которых потенциальный покупатель имел бы возможность наблюдать на одном экране взаимодействие клиентских и серверной частей программы и получать пояснения по ходу демонстрации. Желательно, чтобы это можно было делать прямо из браузера при посещении Web-узла. Немаловажно и то, чтобы пользователи могли бы передавать такие фильмы-аплеты друг другу просто в виде файлов без боязни передачи вирусов.
Когда работа сетевой версии демонстрируется консультантами в офисе, все просто - рядом находятся несколько машин. У каждой есть экран нормального размера. Легко переводить взгляд с машины на машину и слышать при этом слова консультанта. Съемка фильма также не представляет трудностей: снимающие программы отслеживают изменения на экранах и записывают их в один большой общий файл. Затем с помощью других программ этот файл снабжается пояснениями и конвертируется в исходные тексты для заданной платформы - в данном случае в файлы *.java. А вот с воспроизведением фильма есть проблема: как все уместить на одном экране? Будем считать, что экран разделен на четыре равные части: вверху - клиент для DOS и клиент для Windows, внизу - сервер и пояснения. Сервер "Финансов без проблем" имеет мнемосхему, отображаемую в текстовом режиме 80x25, клиент для DOS работает также в текстовом режиме 80x25 с перепрограммированным знакогенератором, а клиент для Windows требует хотя бы 640x480 пикселов. Пусть размер символа в текстовом режиме составляет 8x16, тогда требуемое разрешение экрана: 1280x960. Хотя это и реально, но в общем случае неприемлемо. Чтобы фильм могли смотреть все, надо уложиться в разрешение
800x600. К счастью, шрифт 5x12 смотрится неплохо и позволяет разместить на таком экране окно с текстом, имеющее размер 400x300 пикселов. Клиента для Windows также удается втиснуть в формат 400x300 за счет шрифта Terminal 09. А для пояснений благодаря малому объему их текста был выбран легкочитаемый шрифт 10x18.
Эти собственные русифицированные шрифты аплет должен "носить" с собой. Он не может рассчитывать на то, что они есть в конкретной операционной системе. Он не может также и подключить шрифты к системе и пользоваться стандартным методом drawString. Вместо этого аплет строит из элементов шрифтов изображения в памяти и использует методы createImage и drawImage. Вопреки опасениям, это работает весьма быстро.
Содержание фильма запоминается снимающими фильм программами в больших массивах целых чисел. В этих числах закодированы сжатые четверти экрана и последующие их изменения. А массивы принадлежат классам, входящим в тело аплета. Здесь приходится учитывать особенности инициализации массивов в byte-коде, генерируемом компиляторами Java. Например, когда мы пишем на языке C static byte X [30] = { 12, 23, 44, ... }; static int Y [30] = { 12, 23, 44, ... }; мы уверены, что в модуле *.exe массив X будет занимать 30 байт, а массив Y - 120 байт, если int соответствовал 32-разрядному целому. А вот в Java подобная конструкция будет весьма неэкономной: и массив X, и массив Y займут в *.class примерно по 150 байт! Поэтому фильмы упаковываются в массивы из длинных строк (класс String) по два байта в одном 16-разрядном символе строки. Для String размер инициализирующего byte-кода близок к минимально возможному.
Типичный размер фильма - от 1 до 2 Мб. Ранние версии снимающей программы упаковывали весь файл в виде одного FILM.class. Вскоре выяснилось, что Netscape Navigator 3.0 не может загружать классы размером более 64 Кб, - при попытке сделать это следует аварийное прекращение работы. И это при том, что Netscape Navigator 2.02 с такими классами справлялся успешно. Так что теперь фильмы разделяются на серии из небольших классов по 30 - 40 Кб.
Для компилирования и отладки аплетов использован пакет Symantec Cafe 1.0 с опцией Symantec Java Compiler. Сдедует заметить, что сначала проект выполнялся с помощью Sun Java WorkShop
- и был под угрозой из-за очень медленной работы Sun Javac Compiler.
При тестировании и отладке аплетов использованы пять браузеров: Applet Viewer из Symantec Cafe 1.0, Netscape Navigator 2.02 и Netscape Navigator 3.0 для Windows 95, Netscape Navigator 3.0 для Macintosh и Internet Explorer 3.0. Во всех этих браузерах аплеты работают нормально, правда, на Macintosh с 8 Мб ОЗУ фильм после первых успешных кадров сообщил о недостатке памяти.
Отмечены некоторые странности с компилятором JIT (Just In Time) в Internet Explorer. Когда включен JIT-компилятор, некоторые функции для работы со строками работают неверно. Впрочем, на показе фильма это почти не сказывается - следует предупреждение и работа продолжается.
Уже после того, как были сняты и построены фильмы-аплеты, был выполнен эксперимент по их конвертированию в Watcom C. Интересно сопоставить количественные характеристики одного из фильмов, перенесенного на разные платформы. Скорость обновления кадра в колонке Java указана для Netscape Navigator 3.0; в случае Internet Explorer 3.0 с JIT скорость составляет примерно 2 усл. ед. Измерения проводились на машине Toshiba Tecra 700CT с 16 Мб RAM в Windows 95.
Как долго загружается такой фильм? Если вы работаете через модем при скорости около 14 400 бит/с, то придется ждать 15 - 30 минут от момента нажатия на кнопку html-страницы (и это при условии, что у вашего провайдера хорошая связь с тем узлом, где расположен фильм). Если вас и узел разделяют скоростные линии связи, то типичное время - от 30 с до 1 мин.
Фирмой предусмотрен и другой, более практичный для большинства пользователей способ просмотра. Можно переписать себе несколько Zip-файлов примерно по 200 Кб каждый, разархивировать их в каталоге X и запустить переименовывающий файл long.bat. При этом из файлов *.cla образуются файлы *.class. Затем в браузере следует указать такой URL: file:///c:/X/nd.html. Загрузка фильма произойдет за несколько секунд, и при необходимости ее можно быстро повторить.
С фирмой "Хакерс Дизайн" можно связаться по адресу: http://www.hd.ru, на этом же узле можно увидеть Java-фильм и поговорить с консультантами по Java-телеграфу; телефон фирмы: (095) 438-0381, 213-2818; e-mail: mail@hd.ru.
АРКАДИЙ ВОДЯНИК
Java C/Windows 95 C/DOS4GW
+--------------+--------------+--------------+--------------+
|Размер, Кб | 1143 | 798 | 1095 |
+--------------+--------------+--------------+--------------+
|Кол-во файлов | 34 | 1 | 2 |
+--------------+--------------+--------------+--------------+
|Скорость | 1 | 4 | 3 кадра, |
|обновления | | | усл.ед. |
+--------------+--------------+--------------+--------------+
Большее число указывает на более высокую производительность.