$ jar craf bin/MANIFEST.MF bin/HelloWorld.jar — C classes/. -C res.
$
Эта команда создаст файл JAR для вашего набора MID-летов HelloWorld. Листинг содержимого директории bin/ обнаруживает только что созданный файл HelloWorld. jar:
$ Is — i bin
total 2
— rw-r-r- 1 vartan None 1393 HelloWorld.jar
— rw-r-r- 1 vartan None 193 MANIFEST.MF
$
Листинг содержимого файла JAR, который вы только что создали, выдает следующую информацию:
$ jar tf bin/HelloWorld.jar
META-INF/
META-INF/MANIFEST.MF
classes/./
classes/./HelloWorid.class
HelloWorld.png
$
Как вы можете видеть, файл манифеста включается в файл JAR. Файл JAR содержит один файл. class для нашего приложения HelloWorld. Он также содержит файл формата. png (portable network graphics — переносимая сетевая графика), который является подходящим вариантом для использования в качестве значка приложения. Файл MANIFEST.MF, конечно, был создан вручную, как описано выше.
Программное обеспечение управления приложениями на устройстве, таком, как мобильный телефон, использует файл JAD для получения информации, необходимой для управления ресурсами во время выполнения MID-лета. Файл дескриптора приложения является необязательным, однако полезным. Вы можете использовать любой текстовой редактор для его создания, но вы должны дать файлу расширение. jad. Чтобы избежать путаницы, я рекомендую давать ему имя, которое характеризует весь набор MID-летов.
Таблица 2.4. Обязательные атрибуты файла дескриптора приложения
Имя атрибута — Описание
MIDlet-Jar-URL — URL файла JAR набора MID-летов
MIDlet-Jar-Size — Размер (в байтах) файла JAR
MIDlet-Name — Имя набора MID-летов
MIDlet-Vendor — Разработчик приложения (например, название компании или имя частного лица]
MIDlet-Version — Номер версии набора MID-летов в форме <major>. <minor>.<micro>, определяемой схемой спецификации управления версиями продукта JDK
MicroEdition-Configuration — Конфигурация J2ME, необходимая для исполнения MID-лета
MicroEdition-Profile — Профиль J2ME, необходимый для исполнения MID-лета
Таблица 2.5. Необязательные атрибуты файла дескриптора приложения
Имя атрибута — Описание
MIDlet-Data-Size — Минимальное количество байт данных постоянного хранения, требуемое набором
MIDlet-Delete-Confirm — Указывает, должна ли AMS запрашивать подтверждение пользователя перед удалением MID-лета
MIDiet — Description — Описание набора MID-летов
MIDlet-Icon — Имя файла PNG, содержащегося в JAR
MIDlet-Info-URL — URL, который содержит дополнительную информацию об этом наборе MID-летов
MIDlet-Install-Notify — Указывает, должна ли AMS уведомлять пользователя перед установкой нового MID-лета
В дополнение к необязательным полям, перечисленным в таблице 2.5, файл JAD может содержать отдельные поля атрибутов для каждого MID-лета, описанные и названные разработчиком приложения. Вы можете называть эти атрибуты так, как вам нравится, однако вы не должны использовать «MIDlet-» в имени атрибута. Этот префикс зарезервирован для имен стандартных атрибутов, определенных спецификацией MIDP.
Файл JAD для программы HelloWorld также находится в директории HelloWorld/bin/ и его содержимое выглядит так:
MIDlet-1: HelloWorld, HelloWorld.png, HelloWorld
MIDlet-Jar-Size: 1393
MIDlet-Jar-URL: HelloWorld.jar
MIDlet-Name: HelloWorld
MIDlet-Vendor: Vartan Piroumian
MIDlet-Version: 1.0
В частности, обратите внимание на поле атрибута MIDlet-Jar-Size. Когда вы используете инструменты командной строки, вы должны вручную редактировать файл JAD, чтобы обновлять значение атрибута MIDlet-Jar-Size каждый раз, когда вы создаете файл JAR, для точного отражения размера файла JAR. Листинг директории bin/ показывает, что ваш файл JAR занимает 1393 байта. Поэтому файл JAD должен точно отражать этот размер, что он и делает.
Заметьте, что некоторые из полей появляются как в файле манифеста, так и в файле JAD. Причина этого заключается в том, что спецификация MIDP требует их наличия в обоих полях. В частности, три атрибута — MIDlet-Name, MIDlet-Version и MIDlet-Vendor — заслуживают особого внимания. Они должны иметь одно и то же значение, если присутствуют как в файле JAD, так и в файле Manifest. Спецификация MIDP оговаривает, что файл JAR не должен загружаться, если эти три значения не являются идентичными в этих двух файлах.
К настоящему моменту мы уже прошли этапы редактирования (создания программы), компилирования, предварительной проверки и упаковки. Наконец, вы готовы к распаковке и запуску вашего приложения. В действительности разработчик MID-лета загрузил бы файл JAR на какую-либо систему инициализации приложений (системы инициализации приложений описываются в главе 10). Системы инициализации предлагают распаковку приложения вслед за его загрузкой. Пользователи загружают файл JAR набора MID-летов на свои устройства и запускают его с помощью программного обеспечения системы управления приложениями устройства.
В этой главе распаковка означает размещение файлов под управлением эмулятора инструментария J2ME Wireless Toolkit. Вы можете затем запустить приложение в эмуляторе, имитируя его выполнение на реальном устройстве.
Вместо того чтобы просто показать вам, как размещать упакованные файлы приложения под управлением Wireless Toolkit для выполнения, в следующем разделе вам будет показано, как выполнять полный цикл разработки, который вы только что завершили, с помощью Wireless Toolkit. Последняя часть этого описания покажет вам, как выполнять ваши приложения.
Этот раздел покажет вам, как использовать J2SE Wireless Toolkit, разработанный в отделе «Java Software» компании «Sun», для выполнения всех этапов цикла разработки, который вы выполнили вручную. Вы можете загрузить J2ME Wireless Toolkit бесплатно с Web-страницы Java Software на сайте Sun Microsystems, http://java.sun.com. Загрузите версию, соответствующую вашей операционной системе, и следуйте инструкциям по установке, предоставляемым при загрузке.
Свойства и функции Wireless Toolkit базируются на проектах. Проект представляет собой разработку набора из одного или более MID-летов. Завершение выполнения цикла разработки проекта выражается в создании файлов приложения JAR и JAD и файла манифеста, который описывает файл JAR.
KToolbar является основной утилитой Wireless Toolkit. На рисунке 2.1 показано главное окно KToolbar. Обратите внимание, что во время запуска он предлагает вам создать новый проект или открыть существующий и снова использовать исходный код, который вы уже видели в примерах с использованием командной строки.
Рисунок 2.1. KToolbar является главным окном, из которого вы можете получить доступ ко всем функциям Wireless Toolkit
Первый этап затем заключается в создании нового проекта. Я собираюсь создать проект HelloWorld и вновь использовать исходный код, который вы уже видели. На рисунке 2.2 показано окно, которое всплывает, когда вы выбираете пункт New Project… (Новый проект…) в строке меню KToolbar.