MIDP (Mobile Information Device Profile) ist ein Profil der Java 2, Micro Edition (J2ME), das speziell auf die Fähigkeiten kleiner mobiler Endgeräte wie Mobiltelefon oder Pager ausgelegt ist. Es umfasst daher Funktionen zur Ansteuerung und Abfrage von ITU-T Einhandtastaturen, Miniaturbildschirmen, flüchtigen und nicht-flüchtigen Speicher im Kilobyte-Bereich etc.
MIDP-Applikationen heißen MIDlets.
Es existieren bisher das MIDP 1.0 und das MIDP 2.0, das einige Erweiterungen aufweist. MIDP 3.0 ist bereits als JSR 271 in Bearbeitung.
MIDP ist ein Sandboxmodell, was große Sicherheit gegenüber Computerviren oder Hackerangriffen gewährleistet. Der Benutzung von Netzwerkeinrichtungen geht eine Bestätigung vom Benutzer voraus, der sie explizit für jedes MIDlet bei erforderlichem Verbindungsaufbau erlauben muss. Viren oder vergleichbare Programme sind laut Sun Microsystems ebenfalls nicht möglich (*), da das Dateisystem außerhalb der Sandbox liegt und darauf nur sehr eingeschränkt zugreifbar ist.
TextField) oder Fortschrittsanzeigen (Gauge), zur Verfügung. Sie sind der Elternklasse Item untergeordnet. Objekte von Item können auf einem Formular platziert werden, sind jedoch nur eingeschränkt positionierbar. Formulare sind Objekte der Klasse Form. Sie können an das aktuelle Display angehängt werden und verschiedene UI-Elemente beinhalten. Das MIDlet kann Wechsel zwischen Formularen anfordern sowie während der Laufzeit UI-Elemente hinzufügen und auf Benutzereingaben reagieren.
Die wichtigsten UI-Elemente sind:
Form: Container für andere UI-Elemente.
Command: Repräsentiert einen Menüeintrag. Mehrere Kommandos können in einem Menü zusammengefasst und an ein Formular angehängt werden.
Alert: Popup-Nachrichten die den Benutzer über Fehler, Exceptions, Warnungen oder über sonstige Informationen benachrichtigen.
ChoiceGroup: Implementiert eine Selektionsmöglichkeit zwischen mehreren Einträgen. Die Auswahl ausschließlich einzelner (engl. "single choice") oder auch mehrerer Einträge (engl. "multiple choice") ist möglich.
TextBox: Einzeilige Eingabefelder, in denen der Benutzer Text einfügen bzw. editieren kann.
TextField: Ähnlich einer TextBox, allerdings mehrzeilig.
Gauge: Fortschrittsanzeige.
Ticker: Anzeige von bewegendem Text.
Canvas ist der Eingangspunkt für graphische Zeichnungen. Sie selbst beinhaltet hierfür keine Methoden, jedoch stellt sie die Callback-Funktion paint() bereit. Sie wird immer dann aufgerufen, wenn der Programmmanager entscheidet, das Display neu zu zeichnen. Ihr einziger Parameter ist ein Objekt Graphics, welches sämtliche Zeichnungsfunktionen, wie beispielsweise drawLine() zum Zeichnen einer Linie oder fillRect() zum Ausfüllen eines Rechtecks, beinhaltet.
Grundsätzlich kann man zwischen reinen Hintergrundapplikationen und jenen unterscheiden, die mit dem Benutzer interagieren. Interaktive Applikationen können auf das Display über ein Objekt Display zugreifen. Man erhält es als Rückgabeobjekt der statischen Methode getDisplay() mit dem MIDlet als Argument. Die Methode setCurrent() bestimmt, welches Objekt Displayable den Inhalt eines Displays darstellen soll. Displayable ist die Elternklasse von Screen und Canvas. Ihr sind alle UI-Klassen unterstellt. Mit anderen Worten, sie definiert sämtliche Objekte die am Display angezeigt werden können.
Ein RecordStore besteht aus einer Sammlung von Bytearrays mit einer zugehörigen, eindeutigen ID beginnend bei 1. Sie wird als Primärschlüssel (engl. "primary key") genutzt. IDs von gelöschten Einträgen werden nicht wiederverwertet. Wird ein neuer Eintrag hinzugefügt, erhält er die nächsthöhere ID der größten jemals vorgekommenen ID. Ein RecordStore kann sich in vier Zuständen befinden. RMS3.png Zunächst wird ein RecordStore vom Zustand Not Exists mit openRecordStore() und einer Bezeichnung (max. 32 Zeichen) als Argument erstellt. Besteht die Datenbank bereits, erfolgt der Übergang vom Zustand Closed. Im darauffolgenden Zustand Open kann die Datenbank mit den Methoden addRecord(), setRecord() und deleteRecord() modifiziert werden, wobei ein Zeitstempel (engl. "Timestamp") den Zeitpunkt ihrer letzten Änderung markiert und ein Zähler nach jeder Änderung inkrementiert wird. Mit getRecord() werden Datensätze unter Angabe ihrer ID ausgelesen. Greifen mehrere Threads auf ein RecordStore zu, ist es Aufgabe des MIDlets diese Zugriffe zu koordinieren. closeRecordStore() schließt die Datenbank und führt sie in den Zustand Closed über. In diesem Zustand ist kein Zugriff auf die Datenbank möglich und führt bei einem solchen Versuch zu einer RecordStoreNotOpenException. deleteRecordStore() löscht die Datenbank und der Zustand Not Exists wird erreicht. RecordStore definiert die Methode enumerateRecords() mit Hilfe derer Datensätze gefiltert oder sortiert werden können. Sie liefert ein Objekt RecordEnumeration zurück, das einen flexiblen Umgang mit einer RMS-Datenbank erlaubt. Diese Schnittstelle weißt große Ähnlichkeit zur Implementierung einer klassischen verketteten Liste auf. Sie beinhaltet Methoden zum dynamischen Durchlaufen der Datensätze sowie Abfragen, ob es ein nächstes oder vorheriges Element gibt, etc. Weitere Schnittstellen sind die Klassen RecordListener und RecordFilter. RecordListener erlaubt das Abfangen von Ereignissen, wie z. B. Modifikationen der Datenbank, sodass entsprechende Reaktionen gesetzt werden können. Mit RecordFilter können Datensätze auf bestimmte Kriterien überprüft werden.
Programmiersprache Java | Abkürzung
Mobile Information Device Profile | Mobile Information Device Profile | Mobile Information Device Profile | Mobile Information Device Profile | MIDP | MIDP | MIDP