DataLife Engine > Программирование > Hello, World! (Программирование на J2me)
Hello, World! (Программирование на J2me)16 ноября 2007. Разместил: SlaDER |
|
Создание мидлета
Итак, для создания мидлета остановимся на одном из перечисленных в первой статье средств разработки J2ME Wireless Toolkit (WTK), с помощью которого реализованы все приведенные в этой книге примеры. После установки Wireless Toolkit запускаем его основную утилиту KToolbar. Доступные после запуска действия — это NewProject (Новый проект) и OpenProject (Открыть проект). Можно открыть демонстрационные проекты и на готовых примерах рассмотреть возможности и особенности языка, но мы создадим новый проект и назовем его MyFirstMidlet[i]. Так же назовем и основной класс мидлета [i](MIDlet Class Name) в окне создания нового проекта. ![]() После нажатия кнопки Create Project (Создать проект) появится диалоговое окно ввода информации для файла — описателя приложения. Диалоговое окно состоит из нескольких вкладок, первая из которых — API Selection, здесь выбираем нужную платформу. ![]() Следующая вкладка Required (Обязательные) — содержит обязательные атрибуты файла-описателя ![]() • MIDlet-Jar-Size — размер jar-файла в байтах. Обратите внимание, что данный атрибут прописывается в файле описателя автоматически средствами WTK при упаковке проекта. Будьте аккуратны при ручном редактировании jar-архива: несовпадение заявленного и реального размеров jar-файла послужит причиной ошибки при загрузке приложения в телефон; • MIDlet-Jar-URL — сетевой адрес и название jar-файла. В нашем случае это поле содержит лишь имя jar-файла; • MIDlet-Name — имя мидлета (или комплекта мидлетов), которое будет показа- но пользователю в меню запуска приложения; • MIDlet-Vendor — разработчик приложения (организация или частное лицо); • MIDLet-Version — версия мидлета в формате быть использована при установке и обновлении приложения; • MicroEdition-Configuration — требуемая конфигурация J2ME для выполнения мидлета. В рамках нашей книги используется конфигурация CDLC-1.0; • MicroEdition-ProfiLe — требуемый профайл J2ME для выполнения мидлета. Здесь мы рассматриваем работу с профайлом MIDP-1.0. Поля ввода значений необязательных атрибутов расположены на вкладке Optional(Факультативные): • MIDlet-Data-Size — минимальное количество байт данных для постоянного хранения, требуемое мидлетом. Значение поля по умолчанию — ноль; • MIDlet-Delete-Confirm — определяет, должна ли система запрашивать подтверждение пользователя при удалении приложения из устройства; • MIDlet-Description — описание мидлета или набора мидлетов; • MIDlet-Icon — имя графического файла .png в jar-архиве, который будет использован системой для данного мидлета в меню запуска приложений; • MIDlet-Info-URL — сетевой адрес с описанием приложения или информацией о разработчике; • MIDlet-Install-Notify — указывает, должна ли система уведомлять пользователя перед установкой нового мидлета. Разработчик также имеет возможность определить собственные атрибуты приложения на вкладке User Defined (Определенные пользователем). Имена атрибутов не должны начинаться с префикса MIDlet- и могут быть получены во время выполнения приложения с помощью метода getAppProperty (String key) класса MIDIet. После того как все необходимые атрибуты указаны, нажимаем кнопку ОК и получаем сообщение о том, что проект был успешно создан. Разберемся, что в данный момент произошло. Для этого перейдем в папку, где установлен Wireless Toolkit. В каталоге проектов apps появилась новая папка с именем нашего проекта MyFirstMidlet. В корневом каталоге нашего проекта были автоматически созданы еще несколько папок. Рассмотрим их назначение: • /bin — папка для хранения файлов приложения: jar-архив приложения, файл описателя приложения .jad и файл манифеста MANIFEST.MF. Автоматически созданные файлы MyFirstMidlet.jad и MANIFEST.MF содержат указанные при создании проекта атрибуты; • /res — файлы ресурсов, используемые приложением во время выполнения. Файлы могут содержать текстовые или бинарные данные, картинки в формате PNG (Portable Network Graphics). • /src — исходные файлы приложения, содержащие собственно код программы. Файлы должны иметь расширение .Java. Пришло время перейти непосредственно к программированию, уверен, что вам уже надоело читать это скучное введение и уже не терпится перейти со своим телефоном ”на ты”. К сожалению, среда Wireless Toolkit не содержит текстового редактора, поэтому нам потребуется любой другой редактор, на худой конец обычный блокнот. Достаточно простые и удобные в обращении, с моей точки зрения, такие редакторы, как IntelliJ IDEA, UltraEdit или EditPlus, хотя опять же это дело вкуса, данный вопрос не принципиален, можете пользоваться и блокнотом. Импорт классов и пакетов Начнем с того, что классы, предоставляемые нам реализацией J2ME, объединены в пакеты, представляющие группу классов определенной тематики. Для компилятора имя класса составляют название класса и полное название пакета, где он содержится. Такое имя может быть достаточно длинным, поэтому можно импортировать класс с помощью оператора import, а в дальнейшем пользоваться лишь названием класса. Синтаксис оператора import достаточно простой: import .: Таких операторов может быть сколько угодно. Они должны располагаться в самом начале программы. Существует возможность импортировать сразу все классы, содержащиеся в пакете. Для этого в операторе import вместо определенного имени класса следует указать символ *: import .* Для знатоков языка C++ и основ объектно-ориентированного программирования отметим, что import не является аналогом директивы include языка С, поскольку никакие файлы во время импорта не подключаются. Реализация J2ME, которую мы рассматриваем, включает в себя следующие пакеты, классы которых мы будем рассматривать подробно на протяжении всей книги: • java.iо — классы работы с потоками ввода и вывода данных; • java.lang — классы типов данных языка J2ME, а также некоторые системные классы; • java.util — классы дополнительных утилит, реализующие структуры данных, а также работу со временем; • javax.microedition.io — классы, обеспечивающие сетевые соединения; • javax.microedition.Icdui — классы пользовательского интерфейса профайла MIDP; • javax.microedition.midlet — содержит единственный класс MIDIet, являющийся основным классом мобильного приложения; • javax.microedition.rms — классы поддержки долговременного хранения данных. Итак, первой строчкой нашей программы мы импортируем основной класс мобильного приложения: import javax.microedition.midiet.MIDlet; Далее мы импортируем класс Форм, который является определенного рода контейнером, который может содержать различные визуальные элементы, такие как текстовые строки, поля символьного ввода, картинки, меню выбора, шкалы: import javax.microedition.lcdui.Form; Последний класс, который мы будем импортировать в этом примере это класс Display. Он нужен для того чтобы отобразить нашу форму на экране. Объект класса Display создается автоматически реализацией MIDP при запуске мидлета и сохраняется до вызова функции destroyApp(). Самим такой объект создать нельзя, зато можно получить ссылку на него с помощью метода getDisplay(MIDIet), который принимает в качестве аргумента ссылку на текущий мидлет. import javax.microedition.lcdui.Display; Далее реализуем свой собственный класс MyFirstMidlet, расширяющий класс MIDIet. Как уже говорилось, обязательны к реализации три абстрактных метода класса MIDiet. Они могут быть и пустыми, но присутствовать в нашем классе обязаны. В методе startApp() получим атрибут имени приложения с помощью метода getAppProperty(String key) класса MIDIet и отобразим его на форме вместе с сакраментальным ”Hello, World!” import javax.microedition.midlet.MIDlet; import javax.microedition.lcdui.Form; import javax.microedition.lcdui.Display; public class MyFirstMidlet extends MIDlet{ private Form form; // форма, отображаемая на экране private Display display; // менеджер дисплея public void startApp(){ // получить ссылку на менеджер дисплея display = Display.getDisplay(this); // создать новую форму form = new Form("Hellow, World!"); // получить строку атрибута имени мидлета String name = getAppProperty("MIDlet-Name"); // добавляем к строке Hellow, World! name+=" Hellow, World! "; // добавляем строку на форму form.append(name); // выводим форму на экран display.setCurrent(form); } public void pauseApp(){ } public void destroyApp(boolean unconditional){ // уведомить систему о завершении notifyDestroyed(); } } Обратим внимание на то, что мы не импортировали класс String из пакета java.lang, но без особых проблем используем их в нашей программе. Все верно. Дело в том, что пакет java.lang просматривается компилятором всегда и в импорте не нуждается. Компиляция и запуск мидлета После того как весь код нашего первого приложения написан, сохраним получившийся файл в папке исходных файлов приложения /src с именем MyfirstMidlet.java. Заметим, что имя файла должно полностью совпадать с именем основного класса приложения, иначе компилятор выдаст следующую ошибку: Class MyFirstMidlet is public, should be declared in a file named MyFirstMidlet.java. Половина дела сделана, хотя пока что написанная программа является не более, чем простым текстом, который теперь нужно преобразовать в настоящее мобильное приложение. Этим вопросом занимается компилятор — специальная программа, переводящая написанный нами текст в машинные команды, понимаемые устройством. Для того чтобы откомпилировать наше приложение, следует выбрать команду Build (Компилировать) на панели управления главного окна KToolbar. В основном окне утилиты KToolbar мы увидим результат компиляции — количество ошибок в программе, местонахождение и описание каждой из них. Если все в порядке, то отобразится сообщение о том, что компиляция прошла успешно ![]() На этом этапе в папке нашего проекта было создано еще несколько директорий, в одну из которых, /classes, и было помещено откомпилированное приложение, представленное файлом MyFirstMidlet.class. Сгенерированный компилятором файл уже является программой, готовой к исполнению на эмуляторе телефона. Чтобы запустить написанное нами приложение, в списке Device (Аппарат) панели управления утилиты KToolbar нужно выбрать один из стандартных или установленных нами эмуляторов. Эмулятор вместе с созданным нами приложением запускается с помощью команды Run (Запустить) панели управления. По умолчанию приложение запустится в эмуляторе с многообещающим названием ”DefaultGrayPhone”. Упаковка мидлета Заключительным этапом создания полноценного мобильного приложения, готового для загрузки в телефон, является упаковка созданных файлов в jar-архив, который уже пригоден для загрузки в мобильный телефон. Для упаковки приложения следует выбрать в меню Project (Проект) утилиты KToolbar команду Create Package (Создать архив). После упаковки в папке /bin нашего приложения появился файл MyfirstMidlet.jar. Это и есть нужный нам jar-архив. Современные архиваторы типа WinZIP или WinRAR поддерживают этот формат и позволяют нам заглянуть внутрь сформированного архива. Ничего нового там мы не увидим, только все тот же файл MyFirstMidlet.class и файл манифеста в папке META-INF. |