Контакты

Для связи с нами можно использовать:
irc://irc.chatnet.ru:#gfs
icq://546460
email://cobalt[@]gfs-team.ru

Все материалы предоставлены только с ознакомительной целью
ГлавнаяСтатьиКодингПишем программы под телефоны на Java
© Guru 24.12.2006

Автор статьи надеется на то, что читатель знаком более менее с языком программирования Java, а так же знаком с азами ООП и рассчитывает именно на этот круг читателя. Однако учить Java можно и при создании приложений под телефоны, то есть, начиная с этой статьи можно приступить к изучению как Java так и программированию приложений под телефоны.

Что необходимо для того чтобы написать самое простое приложение? Вам понадобятся следующие вещи: - Платформа Java + SDK - J2SE SDK (скачать можно по адресу http://java.sun.com/j2se/1.4.2/download.html)
- Набор средств для разработки J2ME приложений - J2ME WTK (http://java.sun.com/products/sjwtoolkit/)

Примечание к установке - SDK и WTK устанавливайте на один диск.

Для начинающих. Вы можете поискать в интернете, у себя в локалке книгу в pdf формате - называется "Буткевич ЕЛ Пишем программы и игры для сотовых телефонов.pdf". Но скажу сразу - книгу можно удалить прочитав пару первых глав. Другими словами книга не будет интересной для тех кто знаком с Java. Итак, скачали всё необходимое, установили. Что дальше? А дальше я вам расскажу что представляет из себя приложение под телефон, написанное на Java естественно, только после этого приступим к написанию первого приложения. При написании приложения с помощью WTK создаются 7 папок и 1 файл. Подробнее:

project.properties - файл содержит параметры, какие библиотеки подключать, что использовать, какая конфигурация;
src - папка которая содержит исходники нашего приложения res - папка с файлами ресурсов, например: рисунки, файл с настройками приложения;
lib - папка которая содержит библиотеки, обычно пустует bin - папка, в которой находятся исполняемые файлы Java (то есть наше приложение) после компиляции.

Во время компиляции создаются такие папки:
classes - это папка в которой находятся откомпилированные классы (названия файлов внутри этой папки совпадают с названиями файлов в папке src, только расширение .class);
tmpclasses - аналог папки classes за исключением того что в этой папке хранятся промежуточные (временные) откомпилированные классы;
tmplib - аналог tmpclasses, только для lib.

Структура файлов в каталоге src:
- Имя файла должно совпадать с названием класса внутри этого файла. То есть если у нас есть класс helloapp , то файл должен называться helloapp.java
- Один файл может содержать один образец класса. Исключение составляет когда класс может находиться внутри другого класса, но это для извращенцев.
- В каталоге может быть столько .java файлов, сколько необходимо в проекте. Ну это зависит от вас. Бывает достаточно одного файла, а бывает и 5,10 и более. Всё зависит от вашей меры структурирования приложения на части.
- Так же как в каталоге могут быть java файлы, так же могу быть и под папки с java файлами. Эти папки уже будут называться пакетами.

Структура файлов в каталоге res:
- Имя файла может быть любым. Так же файл может быть любого типа.
- Желательный тип рисунков это png

Структура java файла:
- Как я упоминал раньше для файлов внутри папки src - имя класса должно совпадать с названием файла, а так же в файле должен находиться только один образец класса.
- Если у вас есть под папки в которых находятся классы, то в исходном тексте необходимо либо подключить эти файлы стандартным путём (с помощью import, но об этом позже), а потом просто использовать все возможности подключенного, либо не подключать, но указывать где находится метод или переменная необходимого класса(детальнее на примере)
- Если у вас все java файлы находятся в одном месте (папке) то их не нужно подключать в исходниках.

Структура проекта приложения:
- Каждое приложение имеет свой профиль и конфигурацию под определённое устройство (MIDP и CLDC соответственно). CLDC, она же конфигурация. Отвечает за конфигурацию и список используемых API. Профиль, он же MIDP. Расширяет CLDC.
- Проект имеет название и главный класс проекта. Название проекта и класса могут совпадать.

Структура приложения. Приложение состоит из архива со всеми файлами которые были использованы при создании виновного. Корень этого архива содержит откомпилированные классы, изображения которые были в папке res и файлы которые были в папке lib. Для того чтобы приложение работало необходимо иметь этот архив (.jar) а так же дескриптор приложения (.jad).

Рассказал вам про необходимые структуры, теперь приступим к WTK. Что представляет из себя Wireless Tool Kit? Это набор утилит, созданных помочь разработчику. Из необходимого вам, в состав утилит входит эмулятор четырех моделей телефонов, проект-менеджер и упаковщик. Эмулятор, думаю ясно, необходим для отладки приложения на компьютере. Проект-менеджер создаёт необходимые папки, упаковать приложение, а также позволяет откомпилировать и запустить проект на эмуляторе. Так же хочу добавить самое важное. С WTK идёт документация по классам, их методам а так же интерфейсам. Она всегда должна быть под рукой.

Наш первый проект
Всё установлено, можно запускать. Запускаем нашего менеджера - KToolBar. Менеджер имеет несколько кнопок, из которых вам понадобится всего пять. Это Open Project, Create Project, Build, Run и Clear Console. Под кнопками находится список из четырех эмуляторов. Думаю вы уже горите желанием запустить хоть одно приложение. Нажимайте на Open Project и выбирайте любое. Скорее всего вы выберите Games (: Выбрали - компилируйте и запускайте (Build ; Run). Перед вами появляется эмулятор выбранного вами телефона в котором необходимо запустить приложение. Как пользоваться телефоном думаю вы уже знаете. Обратили внимание на то что при нажатии на Open Project нельзя выбрать путь? Вот он - минус этого WTK ): Но это не важно. Приложения которые вы открываете и будете создавать автоматом присобачены к директории path/to/WTK/apps/ . Ну что ж, пора создать что-то своё. Нажимайте Create Project , вписывайте туда название проекта и имя главного класса. В новом окне выберете платформу (Target Platform) она должна быть установлена в JTWI или же Custom, но тогда MIDP должен быть 2.0 и CLDC 1.0, можно и 1.1. Открывайте в папке apps папку с названием вашего проекта. А внутри неё папку src, в которой сразу же создаёте файл с названием главного класса, ну и с расширением java. У меня проект и главный класс приложения называется hello. Открывайте, приступаем (не забывайте что в языке Java, как и в Си, Си++ и им подобных регистр букв имеет значение):

import javax.microedition.midlet.MIDlet;

public class hello extends MIDlet{
        public void startApp(){
                System.out.println("Hello world!");
}
        public void pauseApp(){}
        public void destroyApp(boolean u){notifyDestroyed();}
};

Откомпилируйте приложение и запустите его. При запуске приложения на эмуляторе не удивляйтесь что ничего не будет. Сообщение Hello world! отобразится в консоли менеджера. Как сделать чтобы оно появилось на экране - расскажу пойже.

Рассмотрим каждую строчку нашего приложения.

import javax.microedition.midlet.MIDlet;
Тут, с помощью оператора import мы подключили основной абстрактный класс приложения без которого любое приложение никого не заработает. У него есть три абстрактных метода которые необходимо переписать.
public class hello extends MIDlet{
Если вам не знакомы слова "абстрактный", "наследование", "public", "методы" - объясняю. Абстрактный класс это не полностью функциональный класс. Он содержит методы, которые необходимо переписать при унаследовании. То есть если создать экземпляр абстрактного класса, то компилятор начнет материться, что мол вот вы такой, сякой использовали абстрактный класс. Методы - это функции внутри класса. Они, так же, как и классы могут быть доступны остальным членам процесса (: могут быть и не доступны (этому способствуют директивы public , private, protected). Наследование - указывается директивой extends. Означает что класс, который вы создаете, будет содержать методы и переменные того класса от которого происходит наследование. В нашем случае мы наследовались от класса MIDlet и сказали что наш класс доступен всем.
public void startApp(){
System.out.println("Hello world!");
}
Один из трёх абстрактных методов класса MIDlet. Выполняется при запуске приложения. Строка System.out.println("Hello world!"); вызывает метод println из пакета System и выводит строку, указанную в скобках в поток out.
public void pauseApp(){}
public void destroyApp(boolean u){notifyDestroyed();}
Оставшиеся два абстрактных метода класса MIDlet. pauseApp вызывается когда приложение становится неактивным, приостановленным. После того как pauseApp отдает коньки, управление передается либо destroyApp, либо startApp. То есть если например в нокии, вы свернули своё приложение, а потом захотели закрыть через диспетчер - то будет вызван destroyApp. Параметр у destroyApp означает тип уничтожения приложения, если параметр указан как true , то приложение закроется без вопросов, если будет false то оно может ещё и возмутиться, выкинуть оператором throw ошибку о том что не может закрыться в данный момент.

Подведём итог статьи. Для того чтобы создать приложение для телефона не так уж и много потребуется усилий. Мне достаточно было узнать как создавать обычное приложение, а также взглянуть на демонстрационные приложения внутри WTK для того чтобы выучить этот весьма легкий язык а так же J2ME. Ну а что такое иметь ещё и документацию под рукой... (: Если вам интересно и вы хотите ещё пару статей на эту же тему - оставляйте свои отзывы... Спасибо что осилили столькомногобуковок.




© Guru 24.12.2006

e-Commerce Partners Network
shkun написал:

Спасибо за статью! В будущем пригодится! А то этот WTK 120мб весит((( нет возможности скачать столько....

Igor написал:

отличная статья. только вопрос. к сделать чтобы эта программа читалась на телефоне, а то он просто текстовиком открывает

Ник:

Текст:
P Br B I Qute



Код: обновить
Последние комментарии
19.08.2017 17:11:42 Роберт написал:
> Почты: «mail.ru» «rambler.ru» «yandex.ru» «gmail.com» «yahoo.com» «hotmail.com» «bigmir.net» ...
Взлом за 15 минут
19.08.2017 17:10:50 Роберт написал:
> Почты: «mail.ru» «rambler.ru» «yandex.ru» «gmail.com» «yahoo.com» «hotmail.com» «bigmir.net» ...
Социальная инженерия. Часть II
19.08.2017 17:09:45 Роберт написал:
> Почты: «mail.ru» «rambler.ru» «yandex.ru» «gmail.com» «yahoo.com» «hotmail.com» «bigmir.net» ...
Возрождение СИ
Реклама

Тут должна была быть ваша реклама, но мы потеряли глиняную табличку с ее текстом. SapeId: 665044

Rambler's Top100