J2ME - Mobile Information Device Profile (MIDP)

autor: Przemysław Łupiński

1. Wstęp

Sun'owska wizja sieci bezprzewodowych to łatwy i niezawodny dostęp do informacji w dowolnym czasie, z dowolnego miejsca i urządzenia. Na podstawie tej ideii powstał:
Mobile Information Device Profile:
Jest to standard, który określa wymagania aplikacji stosowanych w urządzeniach bezprzewodowych, które wykorzystują platformę J2ME. Umożliwia on także tworzenie aplikacji przez niezależnych programistów, które będą działały we wszystkich urządzeniach bezprzewodowych zgodnych z tym standardem.
MIDP (Mobile Information Device Profile) oraz CLDC (Connected Limited Device Configuration) zapewniają razem pełne środowisko dla aplikacji J2ME (Java 2 Micro Edition) w przenośnych urządzeniach elektronicznych, takich jak telefony komórkowe i PDA.

Specyfikacja MIDP dotyczy takich zagadnień jak:

2. Specyfikacja

Specyfikacja jest wynikiem Java Specification Request (JSR), definiująca Mobile Information Device Profile (MIDP) dla Java 2 Platform, Micro Edition (J2METM). Została stworzona przez Mobile Information Device Profile Expert Group, w skład którego wchodzą nasepujące firmy: America Online, DDI, Ericsson, Espial Group, Inc., Fujitsu, Hitachi, J-Phone, Matsushita, Mitsubishi, Motorola Inc.1, NEC, Nokia 2, NTT DoCoMo, Palm, Research In Motion, Samsung, Sharp, Siemens, Sony, Sun Microsystems Inc.3, Symbian, Telcordia Technologies Inc.

2.1. Wymagania

Poniższe wymagania są dodatkowymi wymaganiami do Connected, Limited Device Configuration. Specyfikacja MIDP bierze pod uwagę ograniczenia elektronicznych urządzeń przenośnych (moc, pamięć, łączność, rozmiar wyświetlacza).
2.1.1. Wymagania sprzętowe
Minimalne wymagania:
2.1.2. Wymagania programowe
Minimalne założenia:

2.2. Architektura

Celem tej specyfikacji jest stworzenie otwartego, rozbudowywalnego środowiska aplikacji dla urządzeń przenośnych. Obrazek poniżej przedstawia poziomy architektury MIDP. Nie wszystkie poziomy są wymagane.


Najniższy blok (MID) przedstawia poziom sprzętu urządzenia przenośnego. Na szczycie tego poziomu jest native system software. Warstwa ta zawiera system operacyjny oraz biblioteki użyte przez urządzenie. Dalej jest warstwa oprogramownia - CLDC. Blok ten reprezentuje K-Virtual Machine (KVM) oraz skojarzone biblioteki zdefiniowane przez specyfikację CLDC. Dwie kategorie API są przedstawione na szczycie CLDC: Najwyższa warstwa prezentuje możliwe typy aplikacji urządzeń przenośnych:

2.3. Zakres zdolności

Ponieważ zakres zdolności przenośnych urządzeń jest bardzo duży, specyfikacja skupia się tylko na zbiorze API - pod względem przenośności:
2.3.1. Aplikacja
MIDP definiuje model aplikacji, pozwalający na współdzielenie ograniczonych zasobów urządzenia przez wiele aplikacji lub MIDletów. MIDP definiuje czym jest MIDlet, jakie środowisko działania jest dla niego dostępne i jak ono powinno być zachowane, by urządzenie mogło zarządzać jego zasobami.
Aplikacje MIDP muszą używać tylko funkcjonalności opisanej w specyfikacji MIDP. Elementy zestawu MIDletu:
2.3.2. Interfejs Użytkownika
Wymagania stawiane interfejsowi użytkownika: Struktura Interfejsu użytkownika podzielona została na dwie logiczne części API:
2.3.3. Zasób pamięci trwałej
MIDP zapewnia dla MIDletów mechanzim trwałego zapamiętywania danych oraz późniejszego ich przetwarzania. Mechanizm ten zwany jest Record Management System (RMS) i wzorowany jest na prostej, zorientowanej rekordowo bazie danych.
2.3.4. Sieć
MIDP dziedziczy obsługę sieci po Connected, Limited Device Configuration (CLDC). MIDP popiera protokół HTTP, który może być implementowany zarówno przez protokół IP (np. TCP/IP) oraz protokół nie-IP (np. WAP, i-mode), by zapewnić dostęp do serwerów HTTP na internecie.
2.3.5. Układ czasowy
Aplikacje, które potrzebują opóźnienia lub przeszeregowania na dłuższy czas mogą skorzystajć z klas Timer i TimerTask, zawierające funkcje:

3. Pakiety i klasy

Pakiety i klasy wchodzące w skład J2ME - MIDP:

4. Zastosowanie

Aplikacje zgodne z Mobile Information Device Profile, to tak zwane midlety. Midlety zyskują na popularności wraz ze zwiększaniem się ilości telefonów komórkowych i palmtopów ze wsparciem dla Javy. W sieci znaleźć można całe mnóstwo midletów - w większości bezpłatnych lub należących do kategorii shareware.
Na przykład w telefonie Nokia 9210 Communicator za pomocą menedżera midletów możemy instalować nowe aplikacje, uruchamiać je, a także usuwać te, które nie przypadły nam do gustu. Każdy midlet składa się z dwóch plików - archiwum .jar oraz pliku .jad.

Aby pisać samodzielnie programy w oparciu o tę technologię potrzebne jest narzędzie J2ME Wireless Toolkit - emulator urządzenia MIDP.

Poniżej przedstawiam zrzuty ekranu ukazujące przykładowe midlety. Można znałeźć wśród nich ciekawe gry (np. Tetris czy Arkanoid), programy użytkowe (HTTP Getter), demonstracje i inne.















5. Przykład - Hello World

/*
 * Copyright 2000-2001 by Sun Microsystems, Inc.,
 * 901 San Antonio Road, Palo Alto, California, 94303, U.S.A.
 * All rights reserved.
 */

package examples.helloworld;
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;

public class HelloWorld extends MIDlet implements CommandListener {
    private Command exitCommand;
    private TextBox tb;

    public HelloWorld() {
        exitCommand = new Command("Exit", Command.EXIT, 1);
        tb = new TextBox("Hello MIDlet", "Hello, World!", 15, 0);
        tb.addCommand(exitCommand);
        tb.setCommandListener(this);
    }

    protected void startApp() {
        Display.getDisplay(this).setCurrent(tb);
    }

    protected void pauseApp() {}
    protected void destroyApp(boolean u) {}

    public void commandAction(Command c, Displayable d) {
        if (c == exitCommand) {
            destroyApp(false);
            notifyDestroyed();
        }
    }
}

6. Linki


Imponujący wybór midletów znaleźć można między innymi na następujących stronach: