Малик Эмулятор: разработка приложений

Данное руководство вкратце описывает процесс создания простого java-приложения, которое выводит текст «Привет, мир!» на форму с командой Выход, в среде разработки Eclipse для java-разработчиков с использованием библиотек Java Малик Эмулятора.

Создание проекта

Чтобы создать новый проект, в среде разработки Eclipse нажимаем пункт меню File › New › Java Project. В появившемся окне New Java Project вводим название своего проекта. Так как мы используем нестандартную редакцию Java (в нашем случае это J2ME), отмечаем опцию Use default JRE 'jre' and workspace compiler preferences. Чтобы исходный код и файлы классов находились в папках src и bin соответственно, отмечаем опцию Create separate folders for sources and class files (рекомендуется, отмечено по умолчанию). Нажимаем кнопку Finish. Среда разработки создаст для вас новый пустой проект. Теперь настроим его.

Окно создания java-проекта
Окно создания java-проекта

Настройка проекта

В окне Package Explorer выбираем наш проект. В контекстном меню проекта нажимаем пункт Properties. В появившемся окне нас будут интересовать две ветки свойств проекта: Java Build Path и Java Compiler.

Ветка Java Build Path: здесь на вкладке Libraries необходимо указать один JAR-архив из библиотек эмулятора:

<папка с эмулятором>\java\malik-api.jar
Архивы из библиотек эмулятора в окне свойств проекта
Архив из библиотек эмулятора в окне свойств проекта

Ветка Java Compiler: здесь необходимо настроить компилятор на генерацию кода для платформы J2ME. Все подробности — на этом экранном снимке:

Настройки компилятора для платформы J2ME в окне свойств проекта
Настройки компилятора для платформы J2ME в окне свойств проекта

Первые три опции в группе Classfile generation (помечены словами (used by the debugger)) можно отключить, если хотите уменьшить размер получаемых файлов классов. Эти опции используются отладчиками платформы J2ME и их лучше оставить включенными до тех пор, пока продолжается разработка и тестирование вашего проекта. Если вы планируете использовать только встроенный в Малик Эмулятор отладчик, то вам понадобятся только номера строк и имена файлов исходного кода (вторая и третья опция соответственно).

Нажимаем кнопку Apply and Close и соглашаемся с необходимостью перекомпиляции проекта.

Процесс разработки

Перед тем, как приступить непосредственно к разработке кода и ресурсов проекта, необходимо создать текстовый файл manifest.mf в папке проекта. Сделать это можно как в самой среде разработки Eclipse, так и внешним текстовым редактором. Этот файл содержит необходимые сведения о вашем проекте. Скопируйте нижеследующий код.

Текстовый файл manifest.mf
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.7.0
Created-By: 10.0-b19 (Sun Microsystems Inc.)
MIDlet-Description: Здесь должно быть описание java-приложения.
MIDlet-Icon: /icon.png
MIDlet-Name: Мой тестовый мидлет
MIDlet-Vendor: Здесь должно быть имя разработчика
MIDlet-Version: 1.0
MIDlet-1: Мой тестовый мидлет, /icon.png, HelloMIDlet
MicroEdition-Configuration: CLDC-1.1
MicroEdition-Profile: MIDP-2.1

Важное замечание: после внесения любых изменений в файлы проекта вне Eclipse необходимо в контекстном меню проекта нажимать пункт Refresh. Этим вы сообщите среде разработки о любых внешних изменениях проекта.

Отредактируйте данные в свойствах MIDlet-Description и MIDlet-Vendor.

Примечание: в ходе разработки других проектов потребуется редактировать данные во всех свойствах, начинающихся с MIDlet.

Теперь можно приступить к разработке кода и ресурсов проекта. Код и ресурсы проекта должны располагаться в папке src.

Свойства MIDlet-Icon и MIDlet-1 требуют, чтобы в папке src проекта были, как минимум, два файла: icon.png и HelloMIDlet.java.

Первый файл icon.png — это значок приложения. Для данного проекта мы использовали Inkscape, чтобы нарисовать такой значок: icon.png. Помещаем его в папку src проекта.

Примечание: значок приложения должен быть в формате PNG, а для других графических изображений, используемых в проекте, спецификация MIDP разрешает использовать форматы PNG и JPEG.

Второй файл HelloMIDlet.java — это исходный код java-приложения. Здесь должен быть объявлен одноимённый класс, унаследованный от MIDlet. Внутри этого класса создадим:

Остальные методы (pauseApp() и destroyApp(boolean)) можно оставить пустыми.

Исходный код HelloMIDlet.java
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;

public class HelloMIDlet extends MIDlet implements CommandListener
{
    private Form screenMain;
    private Command commandExit;

    public HelloMIDlet() {  }

    public void commandAction(Command command, Displayable screen) {
        if(screen == screenMain && command == commandExit)
        {
            notifyDestroyed();
        }
    }

    protected void startApp() throws MIDletStateChangeException {
        Display.getDisplay(this).setCurrent(getScreenMain());
    }

    protected void pauseApp() {  }

    protected void destroyApp(boolean unconditional) throws MIDletStateChangeException {  }

    private Form getScreenMain() {
        Form result;
        if((result = screenMain) == null)
        {
            (result = screenMain = new Form(getAppProperty("MIDlet-Name"), new Item[] {
                new StringItem(null, "Привет, мир!")
            })).setCommandListener(this);
            result.addCommand(getCommandExit());
        }
        return result;
    }

    private Command getCommandExit() {
        Command result;
        if((result = commandExit) == null)
        {
            result = commandExit = new Command("Выход", Command.EXIT, 0);
        }
        return result;
    }
}

Теперь создадим JAR-архив проекта. В папке проекта создадим папку dist и будем размещать в ней все JAR-архивы проекта, поскольку в рамках одного проекта может быть несколько JAR-архивов. В контекстном меню проекта нажимаем пункт Export…. В появившемся окне выбираем ветку Java › JAR file и нажимаем кнопку Next.

Окно экспорта проекта: выбор типа данных для экспорта
Окно экспорта проекта: выбор типа данных для экспорта

На первом шаге указываем папку src проекта и путь к целевому JAR-архиву. Нажимаем кнопку Next.

Окно экспорта проекта: выбор целевого JAR-архива
Окно экспорта проекта: выбор целевого JAR-архива

Второй шаг можно пропустить и сразу нажать кнопку Next.

На третьем шаге отмечаем опцию Use existing manifest from workspace и указываем расположение нашего текстового файла manifest.mf. Нажимаем кнопку Finish.

Окно экспорта проекта: выбор файла манифеста
Окно экспорта проекта: выбор файла манифеста

В результате в папке dist проекта появится новый JAR-архив, который можно установить на Малик Эмулятор или запустить любым другим эмулятором java-программ для платформы J2ME.

Запуск и тестирование

Установка полученного JAR-архива на Малик Эмулятор ничем не отличается от установки других архивов. После запуска приложения мы увидим форму с текстом «Привет, мир!» и командой Выход, нажатие на которую приведёт к завершению работы приложения.

Экранный снимок получившегося java-приложения
Экранный снимок получившегося java-приложения

Выводы

Итак, мы получили основу для разработки java-приложений в среде Eclipse. Эту основу можно экспортировать в JAR-архив и запускать на любых эмуляторах платформы J2ME. Для этого достаточно указать среде разработки JAR-архив malik-api.jar из библиотек эмулятора и задать особые настройки для компилятора. Минимальный набор файлов для создания JAR-архива выглядит так:

А дальше — всё, что требуется вашему проекту: исходный код других классов, изображения, звук, и т. д.