Entwanzen auf dem Handy

On-Device Debugging von J2ME-Anwendungen

Oscar Wivall und Sony Ericsson Developer World

Da die J2ME inzwischen die erste Wahl für alle Arten des Advanced Embedded Application Development geworden ist, steigt auch die Nachfrage nach professionellen Tools. Sony Ericsson hat sich dieser Nachfrage angenomen und setzt sich dafür ein, die Möglichkeiten der Entwickler, leistungsfähige Anwendungen zu entwickeln, zu verbessern. Hierzu gehört unter anderem das Debuggen von J2ME-Anwendungen auf der Zielplattform.

Sony Ericsson ist, soweit mir bekannt ist, immer noch der einzige Handy-Hersteller, der die Technik mit der Bezeichnung On-Device Debugging von J2ME-Anwendungen unterstützt. Dieses Feature ist sehr wichtig für Entwickler, wenn sie ihren Code testen und um sicherzustellen, dass er frei von jeglichen Bugs ist. Eine Alternative zum On-Device Debugging ist der Einsatz eines Emulators. Ein Emulator ermöglicht einen schnellen und einfachen Einblick in das Ergebnis der Ausführung einer J2ME-Anwendung auf dem Bildschirm des Entwicklungsrechners. Man kann außerdem den Code debuggen, indem man Standard Debugging Features wie Durchschreiten des Codes Zeile für Zeile, Setzen von Breakpoints, Verändern von Variablen und vieles mehr einsetzt. Emulatoren an sich verkürzen den Develop-Test-Debug-Zyklus, aber sie bieten niemals die gleichen Möglichkeiten wie das Testen auf einem realen Endgerät.

Es gibt zahlreiche Gründe dafür, weshalb sich Programme auf einem Emulator anders als auf einem realen Endgerät verhalten, wenn sie ausgeführt werden. Ein wesentlicher Unterschied ist, dass ein Emulator eine Softwareumgebung ist, die auf einer Plattform wie einem Windows-PC ausgeführt wird. Solche Computer arbeiten oft mit einer Taktfrequenz von 1 GHz oder mehr und mit 256 MB schnellem RAM. Im Gegensatz hierzu führt das Handy das Programm auf einem Low-Power-Prozessor aus, der mit einigen zehn bis Hunderten von MHz arbeitet. Während das Look & Feel eines Emulators das Look & Feel eines realen Handys effektiv nachbilden kann, kann aufgrund der verschiedenartigen Leistungsniveaus nicht garantiert werden, dass sich ein MIDlet auf beiden Plattformen identisch verhält. Hinzu kommt, dass das Handy zwischen 4 und 32 MB Low-Power-RAM für den Speicher zur Verfügung hat, was Einfluss auf das Design des Programms bezüglich der Ressourcennutzung haben kann.

Mit diesem Wissen neigen ernsthafte Entwickler dazu, den Emulator irgendwo in der Mitte des Entwicklungszyklus zu verlassen und den Code gegen das reale Mobiltelefon zu testen. Zu erfahren, wo man Kniffe anwenden und den Sourcecode modifizieren muss, um die Anwendung zu optimieren, kann in vielen Fällen einen langwierigen  Prozess auslösen, der die Produktivität reduziert und die Entwicklungskosten in die Höhe treibt.

Der Einsatz von On-Device Debugging für die Entwicklung von MIDlets stellt eine Lösung für dieses Problem dar. On-Device Debugging ist ein Mechanismus, bei dem der Code auf dem Zielgerät selber ausgeführt wird, während der Zugriff auf alle Debugging-Features der IDE, wie die Einzelschrittausführung des Codes und Aktualisierung von Variabelwerten, ermöglicht wird. Das Debugger Interface auf dem Entwicklungsrechner kontrolliert hierbei das reale Mobiltelefon über ein Kabel, per Infrarot oder per Bluetooth-Verbindung. Das Mobiltelefon liefert über diese Verbindung Debugging-Informationen zurück, die als Standard-Emulator-Debugging-Informationen empfangen und von der IDE angezeigt werden (Abb. 1). On-Device Debugging unterscheidet sich kaum vom Verwenden von Emulatoren, außer dass die Ausgabe des Programms direkt auf dem Handy angezeigt wird, anstatt auf dem Emulator zu erscheinen.

Abb. 1: So erfolgt die Integration des On-Device-Mechanismus in die Entwicklungsumgebung

Durch die Verwendung von On-Device Debugging anstatt eines Emulators kann man performanzkritische Abschnitte in einem MIDlet sehr früh im Entwicklungszyklus identifizieren und seine Anstrengungen auf diese Flaschenhälse konzentrieren. Da die Code-Performanz auf einem realen Endgerät beobachtet werden kann, ist es möglich, den Code gleich beim ersten Mal korrekt zu schreiben, anstatt ihn später zu modifizieren.
Alle Java-fähigen Handys von Sony Ericsson stellen dieses Debugging-Feature bereit, außer den P800/P900 Smartphones, die stattdessen On-Device Debugging von nativen C++ Anwendungen unterstützen.

Benötigte Voraussetzungen für das On-Device Dubugging

  • Ein Handy. On-Device Debugging von J2ME-Anwendungen wird zurzeit auf den T610 Serie, T630 Serie, Z600, Z1010, K700, Z500 und S700 Handys unterstützt
  • Das Sony Ericsson J2ME SDK 2.1, welches in der Docs & Tools-Sektion auf der Sony Ericsson Developer World Website zum Download bereitsteht.
  • Eine IDE mit Debugging-Unterstützung, wie Sun One Studio auf www.sun.com/software/sundev/jde/studio_me/ oder die JBuilder Mobile Edition auf www.borland.com/mobile/jbuilder/. Es ist außerdem möglich, Netbeans oder Eclipse einzusetzen.
  • Ein USB-Kabel, eine Infrarot- oder Bluetooth-Verbindung zwischen dem Handy und dem PC.
Durchführen des On-Device Debugging

In diesem Artikel werden die Sun One Studio 4 Mobile Edition IDE, das Sony Ericsson J2ME SDK 2.1.2 und ein K700i Handy verwendet, um zu zeigen, wie man den Sony Ericsson On-Device Debugger einsetzt. Um mit dem Einsatz des Sony Ericsson J2ME SDK zu beginnen, muss man die On-Device-Debugging-Schnittstelle zu der Liste der installierten Emulatoren der IDE hinzufügen. Dieser Schritt integriert die On-Device-Schnittstelle zwischen der IDE und dem Emulator. Die Schnittstelle leitet alle Debugging-Kommandos an das Handy weiter und wandelt die zurückgeschickten Daten in ein Format um, das der Debugger der IDE anzeigen kann.

Um das On-Device Debugging Interface zur IDE hinzuzufügen, gehen Sie zur Explorer Toolbar der IDE und wählen dann die Karteikarte Runtime aus. Hier erscheint nun eine Liste der Runtime Services, die auch den Eintrag INSTALLED EMULATORS enthält (Abb. 2). Führen Sie nun einen Rechtsklick auf den Eintrag INSTALLED EMULATORS aus und wählen Sie dann ADD EMULATOR aus dem nun erscheinenden Drop-down-Menü aus. Wählen Sie den Ort aus, wo das SDK installiert ist (der Standard ist c:SonyEricssonJ2ME_SDK) und wählen Sie den Ordner OnDeviceDebug aus. Klicken Sie nun auf Add. Jetzt erscheint ein Eintrag mit dem Namen Sony Ericsson J2ME SDK 2.1 (Debug On-Device) in der Liste der Emulatoren (Abb. 2).

Abb. 2: Dialog für die Sun ONE Studio 4 ME IDE

Wählen Sie nun den Standard-Phone-Skin aus, der verwendet werden soll, indem Sie das Tree Control des Debug On-Device-Eintrages auswählen. Führen Sie nun einen Rechtsklick auf den Namen des gewünschten Handys aus und wählen Sie dann Set as Default aus dem Drop-down-Menü. Nachdem die IDE diesen Emulator verwendet, kann man das On-Device Debugging nutzen. Für den Zugriff auf die On-Device-Debugging-Schnittstelle sind, wie man sieht, lediglich ein paar Mausklicks und keine höhere Wissenschaft erforderlich.

Um den On-Device-Debugging-Mechanismus auszuprobieren, ist es zunächst erforderlich, eine MIDlet Suite zu erstellen, die ein MIDlet enthält. Wenn man einen konventionellen Emulator verwendet, wird keine MIDlet Suite benötigt, um das Programm auszuführen: Die Klassendatei mit der Hauptklasse des MIDlets reicht hierfür aus. Da jedoch das komplette MIDlet Package auf das Handy geladen werden muss, bevor das On-Device Debugging ausgeführt werden kann, muss zunächst eine MIDlet Suite erstellt werden.

Abb. 3: Aufrufen des Programms

Erstellen Sie nun eine MIDlet Suite mit einem MIDlet durch Rechtklicken auf das Filesystem-Icon. Wählen Sie NEW | MIDP | MIDlETSUITES aus und folgen Sie den Anweisungen. Nachdem die MIDlet Suite erstellt wurde, können Sie sie ausführen. Um den Debug-Prozess zu starten, klicken Sie mit der rechten Maustaste auf das Icon der MIDlet Suite (Abb. 3) und wählen dann EXECUTE aus dem Drop-down-Menü.
Wenn nun das Projekt ausgeführt wird, wird kein Emulator gestartet. Stattdessen wird das Programm auf das Handy heruntergeladen. Die gesamte Standardausgabe von Java wird nun an den PC zurückgesendet und in dem Output-Konsolenfenster der IDE angezeigt. Um das Auffinden einer Problemzone innerhalb eines Programms zu beschleunigen, kann man den folgenden Code verwenden: System.out.println(„testing“); Hierdurch kann man einen Trace des Fortschritts des Programms im Ausgabefenster des Debuggers anzeigen lassen. 

Der Connection Proxy

Wenn der Debugger angewiesen wird, die MIDlet Suite auszuführen, dann wird das Connection-Proxy-Programm gestartet (Abb. 4) und es versucht, eine Verbindung zum Handy aufzubauen. Wenn keine Aktivität erkennbar ist, dann vergewissern Sie sich, dass das Kommunikations-Interface (USB, Infrarot oder Bluetooth) aktiv und ordnungsgemäß konfiguriert ist. Danach kann die MIDlet Suite erneut ausgeführt werden. Der Connection Proxy kann alternativ auch vom Windows-Start-Menü aus aufgerufen werden.

Oscar Viwall arbeitet als technischer Support-Spezialist für Sony Ericsson Developer World, einem globalen Support Programm und Web Portal, das komplett darauf ausgerichtet ist, professionellen Wireless Developern zu helfen, ihren Geschäftserfolg durch das Bereitstellen der Dokumentation, der Tools, des Trainings, des technischen und des Go-to-market-Supports, den sie in Ihrem Entwicklungsprozess benötigen, zu realisieren.
Geschrieben von
Oscar Wivall und Sony Ericsson Developer World
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.