Anleitung B3 Einführung in die Entwicklungsumgebungen

Werbung
1
Seminar zum Programmierprojekt
Arbeitsbereich Technische Informatik
Ausgabe: 30. April 2008
Anleitung B3
Einführung in die Entwicklungsumgebungen
Allgemeines
In dieser Aufgabe lernen wir die Entwicklungsumgebungen Netbeans und Eclipse, sowie Java Wireless Toolkit (JWT) kennen. Zudem gibt es eine Einführung in die MIDlet/BluetoothProgrammierung. Sie können zwischen Netbeans und Eclipse wählen. Eclipse ist weit verbreitet und besonders an den Universitäten sehr beliebt. Netbeans unterstützt und erleichtert
die MIDlet-Programmierung, daher empfehlen wir speziell für dieses Projekt eher Netbeans.
NetBeans
NetBeans ist eine Entwicklungsumgebung, die komplett in der Programmiersprache Java geschrieben ist. NetBeans wurde für Java entwickelt, es werden aber auch Sprachen wie C,
C++, Ruby und Fortran unterstützt. Die Architektur der Software ist vollständig modular aufgebaut und durch so genannte Module bzw. Plugins erweiterbar. Zusätzlich gibt es so genannte Packs, welche die IDE (Integrated Design Environment) um größere Funktionspakete
erweitern. Des Weiteren kann NetBeans als Plattform für eigene Anwendungen verwendet
werden. Schwerpunkte bei der Entwicklung von NetBeans bildeten Funktionen, dze den
Entwickler produktiver machen. [5] Sun Microsystems gründete das NetBeans-OpenSource-Projekt im Juni 2000 und ist dessen Hauptsponsor. NetBeans enthält u.a. einen Editor, Debugger, GUI-Builder, kann für alle Java Editionen und fast allen BetriebssystemPlattformen verwendet werden. [6]
Zu Empfehlen ist das Durcharbeiten eines passenden Tutorials (www.netbeans.org > Tutorials > Mobile Applications > Developing Java ME/CDC Applications).
Sie können auch nach „MIDlet“ im Netbeans-Tutorial suchen.
Folgendes Bild ist dem Link [7] entnommen.
Netbeans ist an einem der PCs im Übungsraum C220 installiert.
2
Java Wireless Toolkit (JWT)
Bei der Programmierung von Anwendungsprogrammen für mobile Endgeräte eignet sich die
Verwendung des Java Wireless Toolkit.
3
Abbildung 1: Hauptmenü des Java Wireless Toolkit
Erstellen Sie mit „New Project“ ein neues Projekt, geben Sie dazu den Namen ihres Programs
und die MIDlet-Klasse an. Es wird daraufhin ein neues Verzeichnis unter C:\WTK25\apps\
erstellt. Darin finden Sie die Verzeichnisse src\ und bin\, in welchen Sie die Quelldateien ablegen (src\), bzw. die erstellten .jar Files finden (bin\). Starten Sie nun Eclipse und geben Sie
als Workspace-Verzeichnis C:\WTK25\apps\ an. Dann können Sie bei der Erstellung eines
neuen Projekts den Namen ihres WTK-Projekts angeben und Eclipse übernimmt die dort
vorhandene Verzeichnisstruktur. Erstellen Sie im Unterordner src\ ihre Quelldateien und
speichern Sie ihre Arbeit. Kompilieren Sie ihr Projekt mittels Build im Wireless Toolkit.
Das Java Wireless Toolkit enthält einen Emulator zum Testen Ihrer Programme ohne ein
Mobiltelefon. Klicken Sie dazu nach dem Kompilieren auf Run. Es öffnet sich ein neues
Fenster mit einem Handy, welches Sie per Maus bedienen können.
Abbildung 2: Der Emulator des Java Wireless Toolkit
4
Um Ihr Programm auf das Handy zu laden, gehen Sie auf
Project -> Package -> Create Package
Sie finden dann im Unterverzeichnis \bin ein .jar File, welches Sie z.B. per Bluetooth auf das
Handy laden können.
Für eine erste Einführung in die MIDlet-Programmierung sollten Sie sich Kapitel 2 der "Java
Wireless Toolkit Dokumentation" ansehen. Gehen Sie dazu auf
START -> All Programs -> Sun Java Wireless Toolkit 2.5 Beta -> Documentation.
Anhand des dort beschriebenen Beispiels werden wir hier die Grundlagen der MIDlet Programmierung erarbeiten, welche Sie zur Lösung dieser Aufgabe benötigen. Anschließend sollen Sie sich mit der Bluetooth-Funktionalität und den zugehörigen Bibliotheken vertraut machen und diese mittels eines MIDlets auf dem Mobiltelefon realisieren. Ihre Applikation soll
in der Lage sein per Bluetooth mit der Host und den BTNodes zu kommunizieren und die
dort angebotenen Dienste abzufragen und zu nutzen.
MIDlet Programmierung
NetBeans nimmt Ihnen einiges an Arbeit ab, was die MIDlet-Programmierung betrifft. Trotzdem ist es wichtig, dass Sie wenigstens ein paar Grundlagen über MIDlets wissen.
Anwendungen für das Mobile Information Device Profile (MIDP) heißen MIDlets. Ein oder
mehrere MIDlets bilden eine MIDlet-Suite. Eine MIDlet-Suite ist die kleinste installierbare
Einheit. Wir gehen hier davon aus, dass Sie das MIDlet "TinyMIDlet" aus der Documentation implementiert und im Emulator getestet haben. Wie Sie im Source-Code von Tiny-MIDlet
sehen, erweitert die Klasse TinyMIDlet die Klasse "MIDlet". Jedes entwickelte MIDlet muss
die Basisklasse "MIDlet" erweitern. Wird das MIDlet gestartet, so wird die von Ihnen zu implementierende Funktion startApp() aufgerufen. In dieser Funktion legen Sie fest, was angezeigt werden soll, wenn das MIDlet gestartet wird. Der Befehl
display.setCurrent(mainForm);
bringt dabei die vorher definierte Form "mainForm" zur Anzeige. Der Inahlt dieser Startseite
kann alternativ auch bereits im Konstruktor Ihrer Klasse festgelegt werden. Den Befehl zur
Anzeige müssen Sie jedoch in der Funktion startApp() absetzen. Der Befehl
Command exitCommand = new Command("Exit", Command.EXIT, 0);
fügt der Startseite den Befehl "Exit" hinzu. Als Argumente besitzt der Konstruktor Command
1. den Namen des Befehls,
2. den Commando-Typ und
3. die Priorität.
Hierbei gilt, je kleiner die Zahl im Feld Priorität, desto höher die Priorität. Des Weiteren, bedeutet eine höhere Priorität (kleinere Zahl), dass dieser Befehl für den Nutzer schneller zugänglich ist, in einem Menü also mit weniger "Klicks" zu erreichen ist. Es empfiehlt sich bei
sehr wichtigen oder vorrangigen Befehlen, wie "EXIT" oder "Cancel" eine höhere Priorität
zu wählen, um deren Ausführung zu garantieren.
Wählt der Benutzer einen Befehl aus, so wird im MIDlet die Funktion
public void commandAction(Command c, Displayable s)
5
aufgerufen. Diese Funktion stammt aus dem Interface CommandListener welches von unserer Klasse implementiert wird. Um ein Interface zu implementieren, muss jede im Interface
enthaltene Funktion in der implementierenden Klasse definiert werden. Oben genannte Funktion bekommt als Parameter c den abgesetzen "Command" mit dessen Hilfe das Verhalten
des MIDlets auf Benutzerinteraktionen gesteuert wird. Der Parameter Displayable s beinhaltet die aktuell angezeigte Seite. Aus ihr lässt sich unter anderem herauslesen, welcher MenüEintrag bei Absetzen des Commands c markiert war. Da das MIDlet das Interface implementiert, muss hier festgelegt werden, wie sich die Applikation bei verschiedenen Benutzerangaben verhalten soll.
Einige Funktionen, die Sie im Laufe der nächsten Aufgaben benutzen werden, erfordern, dass
sie in einem neuen Thread ausgeführt werden. Es empfielt sich, die Verwendung einer weiteren Klasse die für die Ausführung der Bluetooth-Funktionaltät zuständig ist und problemlos
in mehreren Instanzen (Threads) gestartet werden kann. Sehen Sie sich hierzu das Beispiel
BluetoothDemo aus dem Wireless Toolkit an.
Bluetooth Programmierung
Anhand des Beispiels BluetoothDemo werden Sie nun die Grundlagen der BluetoothVerwendung in Java kennenlernen. Im Source-Folder der BluetoothDemo finden Sie fünf
Dateien.
•
DemoMIDlet
•
GUIImageClient
•
GUIImageServer
•
BTImageClient
Die Klasse DemoMIDlet ist das MIDlet der Anwendung, GUIImageCient und GUIImageServer sind client- und serverseitig jeweils zur Verarbeitung und Anzeige der in BTImageClient
bzw. BTImageServer per Bluetooth empfangen Daten zuständig. BTImageClient wird von
GUIImageClient aufgerufen und dient der Suche nach Bluetooth-Geräten in der Umgebung
(Inquiry), der Suche nach Bildern, welche ein gefundenes Gerät bereitstellt und den BilderDownload. BTImageServer stellt nicht sichtbar für den Nutzer die Bluetooth-Funktionaltät
bereit, antwortet auf Anfragen eines Clients und sendet das ausgewählte Bild per Bluetooth
an einen Client.
Die Klasse BTImageClient implementiert Runnable und DiscoveryListener.
Durch die Implentierung von Runnable wird bei Starten eines Threads die Funktion run()
ausgeführt.
Durch den DiscoveryListener können Bluetooth-Anfragen wie searchDevices oder searchServices gestartet und die dadurch entstehenden Daten verarbeitet werden. Auf der Seite Java
Reference/API finden Sie die API zur Bluetooth-Programmierung in Java.
Zur Suche nach Bluetooth-Geräten in der Umgebung wird ein DiscoveryAgent benutzt. Dieser erlaubt das Suchen nach Geräten und nach Services. Zum Suchen nach Geräten wird die
Methode startInquiry benutzt. Sie erwartet folgende Argumente:
1. int accessCode bestimmt den Typ der Inquiry. Wir verwenden : DiscoveryAgent.GIAC.
6
2. DiscoveryListener: Listener bestimmt den Listener Thread welcher die gefundenen
Geräte empfängt und verarbeitet
Das Interface DiscoveryListener bietet eine Möglichkeit, die durch eine Inquiry empfangenen
Daten zu verarbeiten. Dazu müssen Sie die Funktion deviceDiscoverd implementieren und
die übergebenen Argumente RemoteDevice btDevice und DeviceClass cod (letztere werden
Sie nicht zwingend benötigen) in Klassenvariablen speichern und weiterverarbeiten.
Eine Einführung in Java2ME und weitere Literatur zum Thema Bluetooth-Programmierung
finden Sie in der Anleitung B4.
Fragen bzw. Aufgaben: Keine Fragen in Anleitung B3
Anhang
Literatur und Quellen
[1] http://java.sun.com/products/sjwtoolkit/download-2_5.html
[2] http://java.sun.com/javame/reference/apis.jsp
[3] http://wireless.klings.org/klings_jabwt_master_thesis.pdf
[4] http://www.eclipse.org
[5] www.wikipedia.de > netbeans
[6] www.netbeans.org
[7] http://www.netbeans.org/kb/55/quickstart-mobility.html
Herunterladen