|
Страница 1 из 2  Самые основы J2ME, необходимый инструментарий, установка - настройка, написание Hello World Начнем с предисловия: это моя первая статья, поэтому если что не понравиться, то не пинайте сильно, в ней я постараюсь открыть основы написания простейших мидлетов для мобильных телефонов, что становится весьма популярно в последнее время , в связи с развитием большинством производителей мобильных телефонов платформы с поддержкой J2ME. В последние пять лет, платформа J2ME , разработанная компанией Sun Microsystems на основе платформы J2SE приобрела огромную популярность во всем мире. Сейчас платформа Java , благодаря разработке CLDC1.1 и MIDP2.0 в J2ME , встречается не только в самых навороченных смартофонах, но даже в карманных органайзерах. Теперь рассмотрим краткие основы платформы J2ME. Сразу оговоримся , что устройства J2ME собственно делится на два категории : "Первая категория описывает устройства, которые имеют специальное назначение или ограничены в функциях, они не являются универсальными вычислительными машинами - CLDC. Вторая категория описывает устройства, которые обычно имеют большие возможности для средств пользовательского интерфейса (UI) - CDC ."-это объясняет сильное функциональное ограничение этого языка, связанное в первую очередь с низкой производительностью устройств такого класса.
Теперь закончим с бесполезной теорией и приступим непосредственно к изучению профиля CLDC1.0 MIDP2.0 J2ME, для этого сперва рассмотрим пакеты, включенные в стандартный набор CLDC1.0 и их назначение: | Название пакета | Краткое описание | | java.io | Стандартные классы ввода-вывода приложения в J2SE | | java.lang | Основные классы интерфейсов виртуальной машины в J2SE | | java.util | Классы стандартных утилит пакета J2SE | | javax.mircoedition.io | Классы структуры общих соединений CLDC 1.0 | Первые 3 пакета (java.io, java.lang, java.util) имеют префикс java. , т.к. происходят от аналогичных пакетов в J2SE и имеют схожие функции , 4 пакет (javax.microedition.io), используется с префиксом javax. , т.к. он содержит функции и интерфейсы, свойственные только языку J2ME и не имеющие реализации в основном пакете J2SE. Но CLDC включает в себя довольно большое количество устройств с различными Возможностями, поэтому он имеет еще более мелкое деление, для мобильных телефонов это MIDP1.0 (Mobile Information Device Profile), который наиболее полно использует функциональные возможности мобильного телефона и содержит следующие пакеты (стоит заметить, что уже существует профиль CLDC1.1 MIDP2.0 , который в данной статье не рассматривается, но имеет большие возможности по сравнению с MIDP1.0): | Название пакета | Краткое описание | | java.io | Стандартные классы ввода-вывода java | | java.lang | Основные классы интерфейсов виртуальной машины java | | java.util | Классы стандартных утилит java | | javax.microedition.icdui | Классы интерфейса пользователя в J2ME | | javax.microedition.rms | Классы постоянного хранения данных в J2ME | | javax.microedition.midlet | Классы определения J2ME приложений | | javax.microedition.io | Классы общих соединений MIDP | В дальнейшем мы более подробно познакомимся с каждым пакетом, его назначением и использованием на наглядных примерах, а сейчас приступим к написанию нашей первой мегапрограммы, которая выведет на экран телефона заветное заклинание, звучащее как "HELLO WORLD!", точнее мы напишем две версии этой уникальной программы, чтобы ознакомится как с простым текстовым выводом, так и с выводом через графический элемент Canvas, который предоставляет более широкие возможности по оформлению текста. Но прежде чем написать наш первый исходный код, мы сперва определимся, какие программы нам будут необходимы для удобного создания J2ME приложений на начальном этапе: 1)J2SDK - собственно сам дистрибьютив Java , который необходим для компиляции, отладки и запуска Ява приложений, который имеет практически все необходимое для разработки приложения, но не имеет графического интерфейса, что на начальных этапах изучения программирования может привести к путанице, поэтому кроме него нам понадобиться еще некоторый инструментарий. Последнюю версию J2SDK всегда можно найти на сайте производителя: http://java.sun.com , но для разработки приложений j2me лучше использовать версии младше, чем SDK1.6, если вы хотите обеспечить оптимальную совместимость со старыми моделями телефонов, для последних моделей можно использовать любую версию! 2)WTK - удобный инструмент, предназначенный непосредственно для разработки приложений на j2me, имеет в составе все необходимые программы и классы, к тому же , оснащен удобным пользовательским интерфейсом(GUI), поэтому он тоже необходим на этапе изучения языка, найти его можно тоже на сайте производителя: http://java.sun.com, где он доступен для бесплатного скачивания. 3)Эмулятор - программа, необходимая для проверки работоспособности приложения на определенном телефоне, в составе WTK уже имеется эмулятор, но иметь эмулятор стороннего производителя обычно очень полезно. Скачать эмулятор для телефона Siemens можно по адресу: http://www.siemens-club.ru/soft-emul.php, где можно скачать и SDK. Эмулятор сименсов состоит из двух частей:SMTK (один пакет для всех эмуляторов) и сам эмулятор телефона, обе части обязательны для скачивания. 4)Также нам потребуется редактор, но в связи со сложностью настройки специализированных редакторов, мы ограничимся на данный момент обыкновенным блокнотом, который поставляется в комплекте с Windows. Если же вы решите установить редактор, то вот список наиболее популярных: JBuilder, IntelliJ IDEA, Eclipse, Netbeans и другие. Все они различаются по возможностям и удобству пользования и выбор одного из них, это дело личных предпочтений, но я выбрал для себя IntelliJ IDEA. Теперь коротко опишем процесс установки и запуска нашего основного инструментария. Для начала установим заранее загруженный J2SDK, его установка ничем не отличается от установки любого другого приложения под Windows, поэтому сложностей возникнуть не должно, единственная рекомендация - смените путь установки на любой другой, не содержащий пробелов (Например: C:/javasdk/). Теперь проверим, прописана ли у нас Ява в PATH, для этого запустим командную строку (WIN+R -> 'cmd') и введем в ней команду 'java -version' (между 'java' и '-version' - стоит пробел!), если мы увидим что-то похожее на: C:>java -version java version "1.4.1_01" Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.1_01-b01) Java HotSpot(TM) Client VM (build 1.4.1_01-b01, mixed mode)
То это означает, что Ява удачно прописана в PATH , если в ответ на команду мы видим: "jаva" не является внутренней или внешней командой, исполняемой программой или пакетным файлом. Тогда нам необходимо проделать следующие действия (для WinXP): Пуск -> Панель управления -> Система -> Дополнительно (вкладка) -> Переменные среды, там найти в нижнем окне переменную path , нажать кнопку изменить и добавить после ее содержимого : ';<C:/javasdk/bin>' , без '', javasdk - ваш путь к SDKб сохранить результат. После этого, если вы не допустили ошибок в процессе изменения path , в командной строке после ввода команды 'java -version' отобразиться что-то похожее не первую вкладку. После установки SDK, установите WTK, его установка тоже не должна вызвать затруднений, единственной особенностью, будет необходимость указать при установке верный путь к C:/javasdk/ , но как правило он верно определяется самостоятельно. После того, как заветная версия Явы отобразиться в командной строке и установлен WTK, можно приступить к следующему этапу, к установке эмулятора. Для начала установим SMTK, который попросит при установке указать путь к SDK, директория , куда он будет установлен, не должна содержать пробелов, иначе это может привести к неработоспособности. Наконец, после установки SMTK (скорее всего версии 2.0), можно запускать программу установки самого эмулятора, советую для качественного тестирования поставить эмуляторы m50, m55, mc60, s65, cx65 , т.к. они имеют разные разрешения экранов и разную функциональность, что благотворно сказывается на надежности тестирования и позволяет посмотреть внешний вид приложений на разных телефонах. После установки проверим работоспособность эмуляторов, для этого запустим SMTK Emulator launcher, расположенную в Пуск -> Siemens Mobility Toolkit -> SMTK Emulator Launcher, должно открыться окно, отображающее список установленных эмуляторов с возможностью быстрого запуска: После запуска эмулятора, появятся три окна, окно для быстрого управления эмулятором (1), окно вывода эмулятора (2) и соответственно сам эмулятор (3): Теперь, когда установка эмулятор и работа всех систем проверена и настроена, мы можем, наконец приступить к разработке нашей первой J2ME программы. Сразу оговоримся, что в листинге программы комментарии, которые не воспринимаются как программный код, выделяются двумя способами: // Это короткий однострочный комментарий
/** * А это комментарий, * на нескольких строках * (Второй способ) */
Теперь рассмотрим написание нашей первой программы, выводящей на экран 2 строки: 'Hello world!' и 'Всем привет!' (если вы установили WTK в папку, отличную от C:/WTK тогда замените во всех дальнейших шагах путь C:/WTK на ваш путь к WTK) : 1) Запустите WTK (C:/WTK/bin/ktoolbar.bat): 2) Нажмите кнопку 'New Project': 3) Введите в поле 'Project Name' название проекта, в поле 'MIDlet Class Name' название главного класса мидлета, обратите внимание, регистр имеет значение, поэтому Hello и hello - совсем разные названия! В нашем случае, в поле 'Project Name' введем 'HelloMIDlet1' в поле 'MIDlet Class Name' - 'HelloClass'! Нажмите кнопку 'Create Project', откроется новое окно, содержащее настройки нового мидлета, вот краткое описание полей основной вкладки конфигурирования (Required), остальные поля пока можно не менять: | Название опции | Значение | | MIDlet-Jar-Size | Размер JAR архива приложения | | MIDlet-Jar-URL | Адрес к JAR архиву в Интернете | | MIDlet-Name | Название приложения | | MIDlet-Vendor | Автор приложения | | MIDlet-Version | Версия приложения (три числа, разделенные точкой, например 1.0.3) | | MicroEdition-Configuration | CLDC конфигурация приложения | | MicroEdition-Profile | Профиль MIDP приложения | Вот внешний вид окон приложения, после нажатия кнопки 'Create Project', в главном окне WTK отображены пути, где необходимо расположить исходные коды приложения : 4) Теперь мы провели почти все необходимые подготовки и готовы к написанию нашего первого приложения, но сперва нанесем еще один штрих: | Папка | Значение | | C:/WTK/apps/HelloMIDlet1/bin | Тут мы сможем забрать готовое приложение | | C:/WTK/apps/HelloMIDlet1/src | В этой папке необходимо разместить все исходники | | C:/WTK/apps/HelloMIDlet1/res | В этой папке можно разместить внешние ресурсы | | C:/WTK/apps/HelloMIDlet1/lib | Сюда нам писать пока не стоит: | 5) Итак, рассмотрим нашу первую программу (все данные программы необходимо поместить в C:/WTK/apps/HelloMIDlet1/src/HelloClass.java): /**HelloClass.java**/
// Сначала подключим классы, которые нам понадобятся для программы // каждая программа на java начинается именно с этого.
import javax.microedition.midlet.*; import javax.microedition.lcdui.*;
// Теперь создадим стандартный рабочий класс J2ME, расширяющий класс // MIDlet, именно этот класс является обязательным элементом J2ME программы
public class HelloClass extends MIDlet{
// Переопределим стандартные функции класса MIDlet: startApp(), // pauseApp() и destroyApp(boolean n) которые отвечают // соответственно за действия при запуске приложения, его // приостановке и выходе из // него. В нашем случае переопределен // только startApp(), который содержит собственно всю программу // функция destroyApp() и pauseApp() в нашем случае не играют никакой // роли, однако их указание даже в пустом виде - обязательно!
public void destroyApp(boolean d){notifyDestroyed();} public void pauseApp(){} public void startApp(){
// Создаем после запуска приложения (startApp()) локальную форму с // именем form, обратите внимание на синтаксис определения: // <тип переменной>< ><имя переменной>< // >=< >new< ><Класс(<Параметр 1>, // <Параметр 2>, :)><;> // Тип переменной обычно совпадает с именем класса! // Обратите внимание, что конструктор Form(String title) имеет // только 1 параметр - заглавие формы.
Form form = new Form("Начало!");
// Теперь к уже созданной форме с именем 'form' необходимо // прилепить элементы, в наше5м случае это текст, но на его // месте может быть и какой-нибудь другой элемент , но об // этом читайте в официальной документации с адреса http://java.sun.com. // В нашем случае для присоединения к форме надписей, используется // функция класса Form() с именем append(String Text), вызываемая // как form.append("Text"); , заметьте, что мы используем в // качестве параметра для функции русскую строку, что может // привести к некорректному отображению в некоторых моделях // телефонов (в основном старых), поэтому 3 строку мы запишем // в виде Unicode аналога строки 'Привет всем!', который // выглядит как : // " \u0412\u0441\u0435\u043C\u0020\u043F // \u0440\u0438\u0432\u0435\u0442\u0021" // при запуске мы увидим, что на месте Unicode будут отображены // русские символы. комбинация \n означает конец отображаемой // строки и переход на новую.
form.append("Hello World!\n"); form.append("Всем привет!\n"); form.append("\u0412\u0441\u0435\u043C\u0020\u043F\u0440\u0438\u0432\u0435\u0442\u0021");
// А эти 2 строки являются самыми важными, т.к. именно они отвечают // за вывод данных на экран, сперва мы получаем в объект класса Display, // названный display текущее содержание экрана телефона:
Display display = Display.getDisplay(this);
// A эта строка пишет в объект display содержимое формы form, // определенной выше. display.setCurrent(form);
// Закрываем startApp(){:} и класс HelloClass(){:} } }
6) Теперь, когда исходный код сохранен в нужном файле, рассмотрим процесс Компиляции и запаковки мидлета. Вернитесь в KToolBar WTK (если вы закрыли его, то прочитайте выше как запустить и нажмите на кнопку Open Project -> HelloMIDlet1). Нажмите кнопку Build, если в не допустили ошибок в пунктах 1-5, то вы увидите сообщение следующего содержания: Project settings saved Building "HelloMIDlet1" Build complete
Если вы увидели сообщение другого содержания, сигнализирующее об ошибке, то внимательно проверьте все шаги и правильность копирования исходного кода программы. 7) Если в пункте 6 вы получили приведенное сообщение, то значит программа написана без ошибок и успешно скомпилирована, соответственно ее можно Запустить, для этого выберите эмулятор в строке 'Device:' и нажмите кнопку 'Run', вы должны увидеть изображение телефона, нажмите кнопку 'Launch' на клавиатуре виртуального телефона, не экране должно появиться что-то, напоминающее рисунок, расположенный ниже. Как видите строка "Всем привет!" и строка, написанная в Unicode : "\u0412\u0441\u0435\u043C\u0020\u043F\u0440\u0438\u0432\u0435\u0442\u0021" выглядят на экране всех эмуляторов одинаково, на экране большинства мобильных телефонов это будет точно также, но, как и было сказано выше, некоторые телефоны (например, Samsung) не смогут отобразить строку 'Всем привет', но без проблем отобразят строку в Unicode: |