ГлавнаяРегистрацияСтатистикаФорум
Навигация
Вход на сайт
Логин
Пароль
 
Фразы
Spid3r
Web-Surfer, Москва

Дайте мне мануал, и я переверну Землю!



Наши проекты
project1
project1


Опрос на сайте

Age Of Empires 3
Larry: Love For Sail
Shadowalker
Lost Planet: Trag Zero
UFO: Aftershock
Sims 2: Castaway
Spiderwick
Nowhere


Популярные статьи
» Tomb Raider 8: Underworld (от Eidos Mobile)
» 3D Racing Evolution
» Thief Run (от Glu Mobile)
» Flatout Mobile
» С Днём Рождения,Spid3r
» Snowboard Hero
» Zone of Alienation
» Ferrari GT: Evolution HD (от Gameloft)
» ONE Долгожданный релиз!
» Dogfight 1916' (от Global Fun/ Wireless Sharks Ltd.)

Архив новостей
Ноябрь 2008 (46)
Октябрь 2008 (36)
Сентябрь 2008 (33)
Август 2008 (30)
Июль 2008 (37)
Июнь 2008 (50)
Май 2008 (37)
Апрель 2008 (42)
Март 2008 (49)
Февраль 2008 (41)
Январь 2008 (31)
Декабрь 2007 (39)
Ноябрь 2007 (25)
Октябрь 2007 (32)
Сентябрь 2007 (31)
Август 2007 (18)

Статистика


Главная страница » Статьи » Программирование » Hello, World! (Программирование на J2me)
Hello, World! (Программирование на J2me) Статьи » Программирование
Создание мидлета

Итак, для создания мидлета остановимся на одном из перечисленных в первой
статье средств разработки J2ME Wireless Toolkit (WTK), с помощью которого
реализованы все приведенные в этой книге примеры. После установки Wireless Toolkit запускаем его основную утилиту KToolbar. Доступные после запуска действия — это NewProject (Новый проект) и OpenProject (Открыть проект).

Можно открыть демонстрационные проекты и на готовых примерах рассмотреть возможности и особенности языка, но мы создадим новый проект и назовем его MyFirstMidlet[i]. Так же назовем и основной класс мидлета [i](MIDlet Class Name) в окне создания нового проекта.

Hello, World! (Программирование на J2me)


После нажатия кнопки Create Project (Создать проект) появится диалоговое окно ввода информации для файла — описателя приложения. Диалоговое окно состоит из нескольких вкладок, первая из которых — API Selection, здесь выбираем нужную платформу.

Hello, World! (Программирование на J2me)


Следующая вкладка Required (Обязательные) — содержит обязательные атрибуты файла-описателя

Hello, World! (Программирование на J2me)


• 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 мы увидим результат компиляции — количество ошибок в программе, местонахождение и описание каждой из них. Если все в порядке, то отобразится сообщение о том, что компиляция прошла успешно

Hello, World! (Программирование на J2me)


На этом этапе в папке нашего проекта было создано еще несколько директорий, в одну из которых, /classes, и было помещено откомпилированное приложение, представленное файлом MyFirstMidlet.class. Сгенерированный компилятором файл уже является программой, готовой к исполнению на эмуляторе телефона. Чтобы запустить написанное нами приложение, в списке Device (Аппарат) панели управления утилиты KToolbar нужно выбрать один из стандартных или установленных нами эмуляторов. Эмулятор вместе с созданным нами приложением запускается с помощью команды Run (Запустить) панели управления. По умолчанию приложение запустится в эмуляторе с многообещающим названием ”DefaultGrayPhone”.

Упаковка мидлета

Заключительным этапом создания полноценного мобильного приложения, готового для загрузки в телефон, является упаковка созданных файлов в jar-архив, который уже пригоден для загрузки в мобильный телефон. Для упаковки приложения следует выбрать в меню Project (Проект) утилиты KToolbar команду Create Package (Создать архив). После упаковки в папке /bin нашего приложения появился файл MyfirstMidlet.jar. Это и есть нужный нам jar-архив. Современные архиваторы типа WinZIP или WinRAR поддерживают этот формат и позволяют нам заглянуть внутрь сформированного архива. Ничего нового там мы не увидим, только все тот же файл MyFirstMidlet.class и файл манифеста в папке META-INF.
 
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь. Мы рекомендуем Вам зарегистрироваться либо зайти на сайт под своим именем.

Другие новости по теме:

  • Отображаем картинку (Программирование на J2me)
  • Реализация графического меню. Часть 1 (Программирование на J2me)
  • Взлом Tanks Mobile
  • С чего начать? (Программирование на J2me)
  • Handmark начинает дистрибьюцию хитов от I-play


  • #1 написал: SlaDER (16 ноября 2007 13:04)
    Хочу спросить нужны ли такие статьи в дальнейшем?


    ___________________________
    Юзербар (userbar)
    #2 написал: UbeiBobra (16 ноября 2007 17:27)
    Хоть статья стырена, но мне была полезная. НАДА!


    ___________________________
    #3 написал: YourDestiny (17 ноября 2007 16:31)
    я такое с год назад делал) а статьи над такие публиковать..


    ___________________________
    #4 написал: SlaDER (17 ноября 2007 19:16)
    Статья моя, писал еще для старого сайта. Естественно использовал литературу.


    ___________________________
    Юзербар (userbar)
    #5 написал: FlyZZard (18 ноября 2007 19:08)
    А мне больше по вкусу Sun One Studio 4 из этой же серии.Она посложнее ( как для меня),но вместе с тем намного мощнее.Кстати кто в ней шарит,давайте дилиться опытом!


    ___________________________
    #6 написал: javagamerx (18 декабря 2007 16:44)
    Большоооооое спасибо за статью wink научили меня однако!


    ___________________________
    #7 написал: EvilTH (17 января 2008 22:24)
    А строк должно быть 40 и 39?
    Первая строка пустая,или там импорт?


    ___________________________
    #8 написал: BlackFan (17 января 2008 22:49)
    EvilTH, неважно...


    ___________________________
    Юзербар (userbar)
    #9 написал: EvilTH (19 января 2008 00:01)
    блин,WTK 2.5.2 вывел 3 ошибки при компиляции по поводу импортов
    подправил.потом выскочило 6 ошибок,и только потом понял что вместо lcdui написал Icdui. smile
    подправил и все скомпилировалось.


    ___________________________
    #10 написал: Magikov (14 марта 2008 23:44)
    Wireless Toolkit есть ссылка где можно скачать это??


    ___________________________
    #11 написал: BlackFan (15 марта 2008 17:47)


    ___________________________
    Юзербар (userbar)
    #12 написал: dixon (5 апреля 2008 17:31)
    a wtk декомплировать умеет??? если да то скажите как !


    ___________________________
    Информация
    Посетители, находящиеся в группе Гости, не могут оставлять комментарии в данной новости.
    Главная страница | Регистрация | Добавить новость | Новое на сайте | Статистика | Форум Copyright © 2007 - 2008. Alibom.net All Rights Reserved | Дизайнер: SlaDER