2. Hintergrundverarbeitung in Android: Services und Notifications Grundlagen zu Services. Service

Größe: px
Ab Seite anzeigen:

Download "2. Hintergrundverarbeitung in Android: Services und Notifications Grundlagen zu Services. Service"

Transkript

1 2. Hintergrundverarbeitung in Android: Services und Notifications Grundlagen zu Services Service Services sind Teil des Komponentenmodells von Android. Sie kapseln Programmlogik, die unabhängig von einer Benutzerschnittstelle ausgeführt werden kann. Sie haben ihr eigenes Lebenszyklusmodell und werden anders behandelt als Activities. Sie können Schnittstellen für den Zugriff durch andere Komponenten anbieten. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 54

2 2. Hintergrundverarbeitung in Android: Services und Notifications Grundlagen zu Services Vorteile von Services automatischer Restart höhere Priorität als nicht sichtbare Activities Priorität kann heraufgesetzt werden auf die sichtbarer Activities Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 55

3 2. Hintergrundverarbeitung in Android: Services und Notifications Grundlagen zu Services Arten von Services Local Service Service, der im Prozess der Anwendung läuft, die ihn gestartet hat. Remote Service Ein Service der in einem eigenen Prozess läuft. Vorteil: Stabilität Nachteil: Erhöhte Kommunikationskosten, Interprozesskommunikation (IPC) notwendig, typischerweise in Form von Remote Procedure Calls (RPC) Wir betrachten zunächst nur Local Services. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 56

4 2. Hintergrundverarbeitung in Android: Services und Notifications Grundlagen zu Services Deklaration von Services im Manifest (1) Service muss als Komponente im Manifest deklariert werden, auf gleicher Ebene wie Activities. Für Local Services genügt die Angabe des Namens der Klasse, die den Service implementiert. <service android:name=".meintollerservice"/> Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 57

5 2. Hintergrundverarbeitung in Android: Services und Notifications Grundlagen zu Services Deklaration von Services im Manifest (2) Für einen Remote Service muss man zusätzlich einen Prozessnamen angeben: <service android:name=".meintollerservice" android:process=":meinserviceprozess"/> Prozessname beginnt mit Großbuchstabe: Nur die startende Anwendung kann der Service verwenden, Service läuft unter der User-ID der startenden Anwendung Prozessname beginnt mit Kleinbuchstabe: Jede Anwendung kann auf Service zugreifen Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 58

6 2. Hintergrundverarbeitung in Android: Services und Notifications Grundlagen zu Services Services und Threads Ein Service sorgt nicht automatisch für Parallelität, seine Lebenszyklusmethoden laufen im Main Thread Konsequenz: auch für langlaufende Teile im Service benötigen wir Threads. Service hat höhere Priorität, wird nach Möglichkeit nicht unterbrochen und wenn doch u.u. wieder automatisch gestartet. Threads dagegen hängen am Prozess und sterben mit dem Prozess. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 59

7 2. Hintergrundverarbeitung in Android: Services und Notifications Grundlagen zu Services Szenario 1: Services als Dienstleistung ohne Kommunikation Operationen: Starten und Stoppen des Service Der Service arbeitet autonom im Hintergrund. Ansonsten keine Kommunikation mit dem Service notwendig Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 60

8 2. Hintergrundverarbeitung in Android: Services und Notifications Grundlagen zu Services Die Klasse Service Zur Implementierung eines Service müssen wir von der Klasse android.app.service ableiten. Die wichtige Methoden in diesem Szenario: public void oncreate () Wird aufgerufen, wenn der Service (nicht das repräsentierende Objekt) erzeugt wird. public int onstartcommand (Intent intent, int flags, int startid) seit Android 2.0: Wird jedesmal aufgerufen, eine andere Komponente den Service starten will. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 61

9 2. Hintergrundverarbeitung in Android: Services und Notifications Grundlagen zu Services intent: Der Intent, der den Start auslöste, kann zusätzliche Daten beinhalten flags: Flags, die vom Laufzeitsystem gesetzt werden und genauer über den Start informieren startid: Eine ID, die vom Laufzeitsystem vergeben wird. Der Rückgabewert informiert das Laufzeitsystem über die Betriebsart des Service. public void onstart (Intent intent, int startid) vor Android 2.0 public abstract IBinder onbind (Intent intent) In diesem Szenario ohne Bedeutung, muss als abstrakte Methoden aber implementiert werden. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 62

10 2. Hintergrundverarbeitung in Android: Services und Notifications Grundlagen zu Services public void ondestroy () Wird aufgerufen, wenn der Service beendet wird, weil z.b. alle Klienten den Service nicht mehr benötigen stopself() Damit der Service sich selbst anhalten kann. Alle on...-methoden werden implizit durch die Laufzeitumgebung aufgerufen, kein expliziter Aufruf! Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 63

11 2. Hintergrundverarbeitung in Android: Services und Notifications Grundlagen zu Services Betriebsart Konstanten für die Rückgabe in onstartcommand(): START STICKY: Für Services, die explizit gestartet und gestoppt werden sollen. Automatischer Restart nach Unterbrechung durch das Laufzeitsystem START NOT STICKY: Für Services, die sich nach ausgeführter Arbeit selbst beenden (stopself()). Kein automatischer Restart durch das Laufzeitsystem START REDELIVER INTENT: Für Services, bei denen garantiert werden soll, dass sie ihre Arbeit beenden können Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 64

12 2. Hintergrundverarbeitung in Android: Services und Notifications Grundlagen zu Services Automatischer Restart bei Unterbrechung vor Aufruf von stopself() Flags: START FLAG REDELIVER: Unterbrechung durch das Laufzeitsystem bevor stopself() aufgerufen wurde Intent wird wieder mit übergeben START FLAG RETRY: Unterbrechung durch das Laufzeitsystem bei der Betriebsart START STICKY, Intent wird nicht mit übergeben Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 65

13 2. Hintergrundverarbeitung in Android: Services und Notifications Szenarien für lokale Services Szenario 1: Lebenszyklus oncreate(): Wird beim Erzeugen des Service aufgerufen und sollte für Initialisierungen verwendet werden. onstartcommand(): Wenn eine Komponente den Service startet, mehrfacher Aufruf möglich ondestroy(): Wird aufgerufen, wenn der Service beendet wird. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 66

14 2. Hintergrundverarbeitung in Android: Services und Notifications Szenarien für lokale Services Szenario 1: Starten und Stoppen Hierfür stehen Methoden im Context zur Verfügung, Beispiel Activity: public abstract ComponentName startservice (Intent service) vgl. startactivity(), Startet einen Service mit Hilfe eines Intents (explizit oder implizit) Liefert null, wenn der Service nicht gestartet werden konnte. public abstract boolean stopservice (Intent service) Hält den Service an, auch wenn noch andere Komponenten den Service benutzen. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 67

15 2. Hintergrundverarbeitung in Android: Services und Notifications Szenarien für lokale Services Szenario 1: Beispiel Beispiel 2.1. Schreiben in Log alle 5 Sekunden Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 68

16 2. Hintergrundverarbeitung in Android: Services und Notifications Szenarien für lokale Services Szenario 2: Service mit Callback an andere Komponente Wenn im Service ein Ereignis eintritt, über das die Klienten informiert werden sollen, kann man einen Broadcast Intent verschicken. Broadcast Intents sind auch selbstdefinierbar und können mit zusätzlichen Daten versehen werden. Für die Behandlung eines Intents, müssen wir einen Broadcast Receiver implementieren, hier typischerweise einen dynamischen Broadcast Receiver. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 69

17 2. Hintergrundverarbeitung in Android: Services und Notifications Szenarien für lokale Services Wiederholung: Dynamischer Broadcast Receiver siehe Mobile Informationsysteme I Hier aber: Verschicken der Broadcast Intents auf Anwendungsebene Definition eigener Broadcast Intents Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 70

18 2. Hintergrundverarbeitung in Android: Services und Notifications Szenarien für lokale Services Szenario 2: Anwendungsstruktur In der Service-Klasse wird eine öffentliche String-Konstante als Intent- Bezeichner definiert. In der Service-Routine der Service-Klasse wird ein Broadcast Intent versendet. In der Client-Klasse wird ein Broadcast Receiver (als innere Klasse) definiert und es wird eine Instanz dieser Klasse erzeugt. In der Client-Klasse wird der Broadcast Receiver registriert. Hierbei wird der öffentliche Intent-Bezeichner aus der Service-Klasse verwendet. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 71

19 2. Hintergrundverarbeitung in Android: Services und Notifications Szenarien für lokale Services Wir starten und stoppen den Service wie bisher üblich. Die gewünschten Reaktion auf eintreffende Broadcast Intents definieren wir in onreceive() des Broadcast Receivers. Da der Broadcast Receiver in der Activity liegt und im Main-Thread läuft, können wir von onreceive() aus die GUI-Elemente manipulieren. Die Methode onreceive() definiert den Lebenszyklus eines Broadcast Receivers. Hier dürfen natürlich auch keine langdauernden Berechnungen stattfinden. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 72

20 2. Hintergrundverarbeitung in Android: Services und Notifications Szenarien für lokale Services Szenario 2: Beispiel Beispiel 2.2. Schreiben in Log alle 5 Sekunden; zusätzlich wird ein Broadcast Intent mit einem Zählerwert versendet, der in einer View angezeigt wird. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 73

21 2. Hintergrundverarbeitung in Android: Services und Notifications Szenarien für lokale Services Szenario 3: Service mit erweiterter Schnittstelle Ein Service bietet zusätzliche Methoden an, über die sich die Klienten über den Zustand des Service informieren können oder weitere Dienstleistungen des Service nutzen können. Die zusätzlichen Methoden und Dienstleistungen können mit Hilfe eines sogenannten Binders genutzt werden. Auswirkungen auf den Lebenszyklus: Methode onbind() des Service ist vernüftig zu implementieren, Rückgabe einer IBinder-Instanz. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 74

22 2. Hintergrundverarbeitung in Android: Services und Notifications Szenarien für lokale Services Szenario 3: Binder Eine Binder-Instanz stellt zusätzliche Methoden für den (eventuellen remote) Zugriff auf einen Service bereit. Klasse Binder im Paket android.os Schnittstelle IBinder im Paket android.os Binder implementiert IBinder. Typisches Vorgehen: Innerhalb der Service-Klasse wird eine öffentliche Binder-Klasse abgeleitet von Binder definiert. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 75

23 2. Hintergrundverarbeitung in Android: Services und Notifications Szenarien für lokale Services Weiterhin wird in der Service-Klasse eine Instanz der Binder-Klasse angelegt und gespeichert, z.b. in einer privaten Klassenvariablen. Die Methode onbind() liefert dann die Binder-Instanz als Ergebnis. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 76

24 2. Hintergrundverarbeitung in Android: Services und Notifications Szenarien für lokale Services Szenario 3: Lebenszyklus Services mit Binder haben einen anderen Lebenszyklus: oncreate(): Wie in Szenario 1 onbind(): Wird aufgerufen, wenn sich eine Methode mit dem Service verbunden hat und liefert typischerweise die Binder-Instanz als Ergebnis. onunbind(): Wird aufgerufen, wenn alle Komponenten die Verbindung mit dem Service beendet haben. Wird in der Regel nicht überschrieben. ondestroy(): Wie in Szenario 1 Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 77

25 2. Hintergrundverarbeitung in Android: Services und Notifications Szenarien für lokale Services Anders als in Szenario 1 kann hier ein Service erst dann angehalten werden, wenn keine Komponente mehr eine Verbindung zum Service hat. Auch ein stopservice() hält in diesem Fall den Service nicht an. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 78

26 2. Hintergrundverarbeitung in Android: Services und Notifications Szenarien für lokale Services Szenario 3: Verbinden und Trennen Verbinden und Trennen statt Starten und Stoppen Verbinden: Mit Hilfe der Methode public boolean bindservice (Intent service, ServiceConnection conn, int flags) Verbinden (und evtl. Erzeugen) mit Hilfe eines Intents Zur Verwaltung der Verbindung wird ein Objekt verwendet, das ServiceConnection implementiert. Automatisches Starten mit Hilfe des Flags Context.BIND AUTO CREATE Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 79

27 2. Hintergrundverarbeitung in Android: Services und Notifications Szenarien für lokale Services Trennen: Mit Hilfe der Methode public abstract void unbindservice (ServiceConnection conn) Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 80

28 2. Hintergrundverarbeitung in Android: Services und Notifications Szenarien für lokale Services Szenario 3: ServiceConnection Schnittstelle im Paket android.component; enthält zwei Methoden: public void onserviceconnected (ComponentName name, IBinder service) Aufruf erfolgt als Folge von bindservice(); service ist hier die Binder-Instanz, die der Service in onbind() als Ergebnis lieferte. typischerweise erfolgt Downcast auf konkreten Typ (öffentliche innere Klasse des Service) Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 81

29 2. Hintergrundverarbeitung in Android: Services und Notifications Szenarien für lokale Services public void onservicedisconnected (ComponentName name) wenn die Verbindung zum Service beendet wurde, z.b. durch ein unbindservice() Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 82

30 2. Hintergrundverarbeitung in Android: Services und Notifications Szenarien für lokale Services Szenario 3: Anwendungsstruktur Schnittstelle für die Methoden definieren, die der Service (via Binder) anbieten soll in Service-Klasse: öffentliche innere Binder Klasse, die die Schnittstelle implementiert in Service-Klasse: Binder-Instanz wird einmalig angelegt und gespeichert in Service-Klasse: onbind() liefert Binder-Instanz in Klient-Klasse: Implementierung von ServiceConnection Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 83

31 2. Hintergrundverarbeitung in Android: Services und Notifications Szenarien für lokale Services in Klient-Klasse: Instanziierung einer ServiceConnection in Klient-Klasse: Aufruf von bindservice() und unbindservice() in Implementierung von ServiceConnection: Downcast von IBinder auf öffentlichen Binder-Typ, Speicherung des Binders in Klient-Klasse: Zugriff auf die Dienste des Service über das Binder- Objekt Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 84

32 2. Hintergrundverarbeitung in Android: Services und Notifications Szenarien für lokale Services Szenario 3: Beispiel Beispiel 2.3. Service mit folgenden Diensten: int generaterandomint() neue Zufallszahl wird generiert int getlastrandomint() liefert die zuletzt erzeugte Zufallszahl void setrange(int low, int high) Intervall für die Generierung Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 85

33 Remote Services bisher: Alle Services waren lokal, liefen im gleichen Prozess wie die nutzenden Komponenten. jetzt: Services in eigenem Prozess. Damit betreten wir den Bereich der verteilten Systeme. insbesondere: Interprozesskommunikation (IPC) für Datenaustausch mit Service notwendig, aber auch eine Reihe weiterer allgemeiner Techniken verteilter Systeme: IDL, RPC, Marshalling, Asynchronität Android bietet kein Remote Method Invocation (RMI) an! Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 86

34 IDL Interface Definition Language, also Schnittstellenbeschreibungssprache beschreibt remote angebotene Dienste, reine Spezifikationssprache Definition u.a. von: Methoden mit Ein- und Ausgabeverhalten Datenstrukturen Asynchronität eigene Syntax, eigene Datentypen, aber angelehnt an Implementierungssprachen Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 87

35 IDL-Compiler zur automatischen Erzeugung von Quelltexten für Hilfsklassen oder -prozeduren, z.b. sogenannte Stub-Klassen Beispiel für C (Sprache) und RPC (Verteilte Umgebung): rpcgen Bindung an unterschiedliche Sprachen möglich, z.b. bei CORBA Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 88

36 AIDL AIDL steht für Android Interface Definition Language Dateiendung:.aidl automatische Generierung von Java Klassen mit weiteren inneren Klassen für den remote Aufruf von Diensten eines Service und der Übertragung der Parameterdaten und des Ergebnisses (Marshalling) Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 89

37 Marshalling Bezeichnet das Umwandeln von einfachen oder strukturierten Daten in ein Format, das die Übermittlung der Daten an andere Prozesse ermöglicht. Auf der Empfängerseite werden die Daten wieder in ihre originäre Form gebracht (Unmarshalling). Problem: Sender und Empfängerseite nutzen u.u. unterschiedliche Repräsentationsformate. Ursachen: unterschiedliche Rechnerarchitekturen, unterschiedliche Sprachstandards Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 90

38 Dies muss von den entsprechenden IDL-Compilern berücksichtigt werden. Basis hierzu sind neutrale Datenrepräsentationsformate. Beispiel C in Verbindung mit rpcgen: External Data Representation (XDR) Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 91

39 Stub Als Stub bezeichnet man Quelltext, der für anderen Quelltext, typischerweise auf einem anderen Rechner oder Speicherbereich steht. vgl. Entwurfsmuster Proxy Beispiel: Eine Methode, die in einem anderen Prozess verfügbar ist, wird lokal durch einen Stub zur Verfügung gestellt. Der Stub übernimmt Marshalling der Methodenparameter, Kommunikation mit dem anderen Prozess und Unmarshalling des Ergebnisses. Der Stub-Quelltext für den Client wird dabei automatisch vom IDL- Compiler erzeugt und kann i.d.r. direkt so genutzt werden. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 92

40 Die meisten IDL-Compiler erzeugen auch einen sogenannten Server-Stub. Dies ist ein Quelltext-Rahmen, in den der Entwickler nur noch die Implementierung des eigentlichen Server-Dienstes einsetzen muss. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 93

41 AIDL in der Praxis Anlegen einer Textdatei mit der Endung.aidl im src-verzeichnis In der ersten Zeile muss das zugehörige Package deklariert werden. Diese Package-Deklaration wird in den generierten Quelltext übernommen. Im allereinfachsten Fall sieht die AIDL-Definition wie eine übliche Schnittstellendefinition aus. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 94

42 Beispiel: package mobis2.beispiel24; interface IRandomService { int generaterandomint(); int getlastrandomint(); void setrange(int low, int high); } Der im SDK enthaltene AIDL-Compiler erzeugt daraus automatisch im gen-verseichnis eine Datei IRandomService.java. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 95

43 Was enthält der generierte Quelltext? In IRandomService.java werden definiert: Die Schnittstelle IRandomService, mit den drei definierten Methoden, erweitert um eine Exception-Deklaration. Die öffentliche abstrakte innere Klasse IRandomService.Stub, abgeleitet von Binder, mit den abstrakten Methoden aus IRandomService. Der Typ IRandomService.Stub wird später im Service genutzt, um die konkrete Binder-Klasse zu implementieren, dient also als Rahmen für die Serviceimplementierung. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 96

44 Die private innere Klasse IRandomService.Stub.Proxy, implementiert (konkret) IRandomService, führt dazu Marshalling, Kommunikation mit Service und Unmarshalling aus. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 97

45 Serviceimplementierung Wir definieren zum Typ IRandomService.Stub eine konkrete Instanz, z.b. in Form einer anonymen Klassendefinition. Hierbei müssen wir die Methoden des Service implementieren. Die wichtigste Methode ist jetzt onbind(). Dort geben wir einfach unsere IRandomService.Stub als Ergebnis zurück. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 98

46 Manifest Service muss im Manifest deklariert werden. Verwendung des Attributs android:process, um einen eigenen Prozess für den Service zu erzwingen. Definition eines Intent-Filters zwingend erforderlich, da kein expliziter Aufruf möglich. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 99

47 Servicenutzung Prinzipiell wie bei einem lokal Service mit Verbindung (Szenario 3), mit den folgenden Änderungen: Wir definieren eine private Variable vom Typ IRandomService. In der Methode onserviceconnected(): Statt eines Downcasts nutzen wir die Methode asinterface() der Klasse IRandomService.Stub. Diese Methode liefert (für uns verdeckt) auf der Client Seite eine Instanz der Proxy-Klasse IRandomService.Stub.Proxy. Diese implementiert aber IRandomService. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 100

48 Beispiel:... private IRandomService service;... public void onserviceconnected(componentname name, IBinder binder) { service = IRandomService.Stub.asInterface(binder); } Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 101

49 Jetzt können wir an anderer Stelle mit Hilfe des Proxy-Objektes service die Methoden des Remote Service aufrufen, fast so, als wären es lokale Methoden: int value; try { value = service.generaterandomint(); } catch (RemoteException e) {... } Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 102

50 Szenario 4: Remote Service mit Verbindung und einfachen Daten (Zusammenfassung) 1. AIDL-Schnittstelle deklarieren, 2. Serviceklasse implementieren, dabei Stub-Klasse um Methoden aus AIDL- Schnittstelle erweitern, 3. Service in Manifest eintragen, 4. Service mit bindservice() starten und in onserviceconnected() auf Schnittstelle (Proxy-Objekt) des Service zugreifen und 5. Methoden der AIDL-Schnittstelle über das Proxy-Objekt aufrufen. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 103

51 Szenario 4: Beispiel Beispiel 2.4. Dienste wie bei Szenario 3, diesmal aber als Remote Service in eigenem Prozess. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 104

52 Datentypen für Remote Services (1) Als Parameter- oder Ergebnistyp dürfen nur die folgenden Datentypen verwendet werden: einfache Datentypen String und CharSequence List und Map AIDL-generierte Schnittstellen Klassen, die Parcelable implementieren Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 105

53 Datentypen für Remote Services (2) Listen können eine Typinstanziierung enthalten, z.b. List<String>; sie werden als ArrayList übertragen. Für Maps ist nur der Raw-Type erlaubt(?). Sie werden als HashMap übertragen. Elemente von Kollektionstypen müssen wiederum ein übertragbarer Typ sein. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 106

54 Parcelable Schnittstelle, die eine Serialisierung eines Objektes für die Datenübertragung ermöglicht sprachneutrale Serialisierung, deshalb keine Verwendung von Serializable Implementierung muss sich um Ablage in und Wiederherstellung aus einer Instanz der Klasse Parcel kümmern. Instanzen der Klasse Parcel enthalten die serialisierten Objekte. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 107

55 Implementierung von Parcelable Eine Klasse T muss zur Implementierung von Parcelable folgendes aufweisen: public static final Parcelable.Creator<T> CREATOR Öffentliche finale Klassenvariable, die ein Objekt referenziert, das Parcelable.Creator implementiert. Dieses Objekt wird für die Wiederherstellung einer Instanz der Klasse T aus einem Parcel benötigt. public void writetoparcel(parcel dest, int flags) Methode zur Ablage einer Instanz von T in einem Parcel. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 108

56 Wenn flag den Wert PARCELABLE WRITE RETURN VALUE hat, dann wird die Methode genutzt, um einen Rückgabewert im Parcel abzulegen, ansonsten == 0. public int describecontents() Bit-Maske um anzuzeigen, dass der Inhalt des Parcels besonders behandelt werden muss. Bisher ist hierfür nur CONTENTS FILE DESCRIPTOR definiert, üblicher Rückgabewert == 0. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 109

57 Schnittstelle Parcelable.Creator generische Schnittstelle public T createfromparcel (Parcel source) Wiederherstellung einer Instanz der Klasse T aus einem Parcel. public T[] newarray (int size) Liefert ein Feld der Länge size mit T als Komponententyp. Notwendig für Typsicherheit, da in Java keine Felderzeugung mit einem generischen Typ möglich ist. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 110

58 Die Klasse Parcel Bytecontainer Schreibmethoden: writexxx(value) für verschiedene Datentypen Schreiben von Feldern, Listen und Maps möglich Lesemethoden: readxxx() für verschiedene Datentypen Felderm Listen Maps müssen voher erzeugt werden und werden durch das Lesen nur gefüllt, Beispiel: public final void readintarray (int[] val) Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 111

59 Beispielimplementierung Beispiel 2.5. Eine Klasse für Punkte im IR 2, die Parcelable implementiert: public class Point2D implements Parcelable { private double x; private double y; public Point2D(double x, double y) { this.x = x; this.y = y; } Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 112

60 private Point2D(Parcel in) { this.x = in.readdouble(); this.y = in.readdouble(); } public static final Parcelable.Creator<Point2D> CREATOR = new Parcela public Point2D createfromparcel(parcel in) { return new Point2D(in); } }; public Point2D[] newarray(int size) { return new Point2D[size]; } Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 113

61 public void writetoparcel(parcel out, int flags) { out.writedouble(x); out.writedouble(y); } } public int describecontents() { return 0; } Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 114

62 Parcelable und AIDL Neben der Implementierung ist eine AIDL-Definition erforderlich. Für das Beispiel: In Datei Point2D.aidl: package mobis2.beispiel25; parcelable Point2D; Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 115

63 Modifier für Parameterübergabe Bei der Paramterdefinition innerhalb von AIDL können folgende Modifier verwendet werden: in: Nur für die Übergabe an den Remote-Prozess, Änderungen werden nicht an den aufrufenden Prozess übertragen. out: Nur für das Ergebnis, eine Übertragung an den Remote-Prozess ist nicht notwendig inout: Sowohl Übertragung an den Remote-Prozess, als auch zurück an den aufrufenden Prozess Die Modifier werden nicht für einfache Datentypen verwendet! Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 116

64 Asynchrone Methodenaufrufe Die Aufrufe der Methoden eines Remote-Service sind, wenn nicht anders definiert, stets synchron, d.h. der rufende Thread wird blockiert, bis die Antwort vom Service eintritt. Problem: mögliches ANR bei Aufrufen aus dem Main-Thread heraus Lösung: asynchrone Methodenaufrufe: der aufrufende Thread wartet nicht bis das Ergebnis eintrifft. für AIDL: Kennzeichnung von asynchronen Methoden durch oneway: oneway void myasynchronousmethod(int para); Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 117

65 Ergebnisübermittlung bei asynchronen Methoden einfacher Ansatz: Broadcast Receiver im Client, Versand eines Broadcast Intent im Remote Service andere Möglchkeit: dedizierte Callback-Objekte verwenden Callback-Objekte werden vom Client an den Remote Service geschickt und im Remote-Service registriert. Die Callback-Objekte bieten wiederum eine Methode an, um ein Ergebnis vom Remote Service an den Client zu schicken. Hierzu erforderlich: Definition zweier Remote-Interfaces Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 118

66 Übersicht: Asynchrone Methoden Wir definieren in AIDL ein Interface IServiceCallBack mit einer Methode docallback(in T value). Dabei ist T der Ergebnistyp, falls erforderlich muss die entsprechende Klasse Parcelable implementieren. Die AIDL-Definition des Remote Service IRemoteService enthält: Eine asynchrone Methode oneway void myasynchronousmethod(int para), eine Methode um Callbacks zu registrieren: void registercallback(iservicecallback callback) Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 119

67 und eine Methode um Callbacks abzumelden: void unregistercallback(iservicecallback callback) Zur Implementierung der Methoden registercallback() und unregistercallback() nutzt der Binder des Remote Service eine Instanz der Klasse android.os.remotecallbacklist. Nach Beendigung der Berechnung in der asynchronen Methode werden die in der RemoteCallbackList gespeicherten Callbacks genutzt, um die Antworten an die Clients zu schicken. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 120

68 Quelltextskizze Remote Service public class RemoteService extends Service {... private RemoteCallbackList<IServiceCallback> callbacks = new RemoteCa... private IRemoteService.stub binder = new IRemoteService.Stub() { public void registercallback(iservicecallback callback) throws Re callbacks.register(callback); } public void unregistercallback(iservicecallback callback) throws callbacks.unregister(callback); } Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 121

69 public void myasynchronousmethod(int para) { T resultdata;... // langandauernde Berechnung f"ur resultdata } } int ncb = callbacks.beginbroadcast(); for (int i=0; i<ncb ; i++) { try { callbacks.getbroadcastitem(i).docallback(resultdata); } catch (Remote Exception e) {... } } callbacks.finishbroadcast(); Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 122

70 }... // oncreate(), onbind(), etc. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 123

71 Quelltextskizze Client public class ClientActivity extends Activity { private IRemoteService service;... private IServiceCallback callback = new IServiceCallback.Stub() { public void docallback(t value) {... // value verarbeiten und in value enthaltene Werte z.b. a } }... private ServiceConnection connection = new ServiceConnection() { public void onserviceconnected(componentname name, IBinder binder Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 124

72 } service = IRemoteService.Stub.asInterface(binder); try { service.registercallback(callback); } catch (RemoteException e) {... } } public void onservicedisconnected(componentname name) { try { service.unregistercallback(callback); } catch (RemoteException e) {... } }... // oncreate() mit Aufruf von bindservice(), etc. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 125

73 } Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 126

Szenario 3: Service mit erweiterter Schnittstelle

Szenario 3: Service mit erweiterter Schnittstelle 2. Hintergrundverarbeitung in Android: Services und Notifications Szenarien für lokale Services Szenario 3: Service mit erweiterter Schnittstelle Ein Service bietet zusätzliche Methoden an, über die sich

Mehr

2. Hintergrundverarbeitung in Android: Services und Notifications

2. Hintergrundverarbeitung in Android: Services und Notifications 2. Hintergrundverarbeitung in Android: Services und Notifications Übersicht 2. Hintergrundverarbeitung in Android: Services und Notifications Übersicht: In Mobis 1: Threads; hier genauerer Blick auf Services

Mehr

Mobile Informationssysteme II

Mobile Informationssysteme II Mobile Informationssysteme II Peter Becker Hochschule Bonn-Rhein-Sieg Fachbereich Informatik peter.becker@h-brs.de Vorlesung Wintersemester 2010/11 Allgemeines zur Vorlesung Vorbemerkungen Homepage zur

Mehr

Android Processes & Services

Android Processes & Services Android Processes & Services Jürg Luthiger University of Applied Sciences Northwestern Switzerland Institute for Mobile and Distributed Systems Ziele heute Arbeitsblatt 4 besprechen (inkl. Repetition)

Mehr

Kapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen

Kapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen Kapitel 9 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Attribute von Klassen, Methoden und Variablen Interfaces WS 07/08 1/ 18 2/ 18

Mehr

B Java RMI B.2 B.4. 1 Java. 1.2 Methoden. 1.1 Objekte (2) 1.1 Objekte. Objektorientierte Sprache. Klassenbeschreibung. Methode ist eine Art Funktion

B Java RMI B.2 B.4. 1 Java. 1.2 Methoden. 1.1 Objekte (2) 1.1 Objekte. Objektorientierte Sprache. Klassenbeschreibung. Methode ist eine Art Funktion 1 Java 1.1 e B Java RMI orientierte Sprache e beschrieben in Klassendefinitionen und andere Datentypen: int, float, boolean, etc. referenzen Verweise auf e keine Zeiger, Adressen o.ä. B.1 B.2 1.1 e (2)

Mehr

Mobile App Development - Multitasking -

Mobile App Development - Multitasking - Mobile App Development - Multitasking - Inhalt Threading Services Service Lifecycle Gestartete Services Gebundene Services Threading Threading Standard Java Threads Thread Runnable volatile & synchronized

Mehr

4. Software-Kompponenten in Android Broadcast Intents und Broadcast Receivers. Broadcast Intents

4. Software-Kompponenten in Android Broadcast Intents und Broadcast Receivers. Broadcast Intents Broadcast Intents Broadcast Intents sind eine spezielle Art von Intents, die auf Betriebssystemebene (genauer: Application Framework) verschickt werden, nicht auf der Anwendungsebene Zweck: informieren

Mehr

Einführung: Verteilte Systeme - Remote Method Invocation -

Einführung: Verteilte Systeme - Remote Method Invocation - Einführung: Verteilte Systeme - - Prof. Dr. Michael Cebulla 11. Dezember 2014 Fachhochschule Schmalkalden Wintersemester 2014/15 1 / 43 M. Cebulla Verteilte Systeme Gliederung 1 2 Architektur RMI Kommunikation

Mehr

Prozesse und Threads in Android

Prozesse und Threads in Android Prozesse und Threads in Android Jede gestartete Applikation ist eigener Prozess und läuft in eigener Dalvik VM Prozess startet User-Interface-Thread (UI-Thread), der für die sichtbaren Bestandteile der

Mehr

Systemprogrammierung. Projekt: Java RMI. Wintersemester 2006 / 2007

Systemprogrammierung. Projekt: Java RMI. Wintersemester 2006 / 2007 Systemprogrammierung Projekt: Java RMI Wintersemester 2006 / 2007 Systemprogrammierung 1. Einleitung 2. Einführung in RPC 3. RMI 4. Code Beispiele 5. Live Vorstellung 6. Ausblick 7. Fazit 2 1. Einleitung

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 13 Einstieg in die Informatik mit Java Schnittstellen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 13 1 Einführung 2 Definition einer Schnittstelle 3 Implementierung

Mehr

Remote Method Invocation

Remote Method Invocation Remote Method Invocation spezielle Technik aus dem Java-Umfeld Ausführung der Methoden auf einem entfernten Rechner Analogon zum RPC (Remote Procedure Call) Zweck: Objekte in verschiedenen Java-VM s Aufruf

Mehr

7.1.5 Java RMI Remote Method Invocation (http://java.sun.com/products/jdk/rmi) (http://java.sun.com/j2se/1.3/docs/guide/rmi/spec/rmitoc.

7.1.5 Java RMI Remote Method Invocation (http://java.sun.com/products/jdk/rmi) (http://java.sun.com/j2se/1.3/docs/guide/rmi/spec/rmitoc. 7.1.5 Java RMI Remote Method Invocation (http://java.sun.com/products/jdk/rmi) (http://java.sun.com/j2se/1.3/docs/guide/rmi/spec/rmitoc.html) bietet leider nur begrenzte Verteilungsabstraktion Unterstützung

Mehr

7. Schnittstellen Grundlagen zu Schnittstellen. 7. Schnittstellen

7. Schnittstellen Grundlagen zu Schnittstellen. 7. Schnittstellen 7. Schnittstellen Grundlagen zu Schnittstellen 7. Schnittstellen Eine Schnittstelle (Interface) ist eine Spezifikation eines Typs in Form eines Typnamens und einer Menge von Methoden, die keine Implementierungen

Mehr

Weitere Beispiele. Beispiel CD-Spieler: Exemplare eines abstrakten Konzepts. 7. Schnittstellen. Schnittstelle: Syntax

Weitere Beispiele. Beispiel CD-Spieler: Exemplare eines abstrakten Konzepts. 7. Schnittstellen. Schnittstelle: Syntax Weitere Beispiele Beispiel CD-Spieler: Exemplare eines abstrakten Konzepts public interface Funktion { boolean istimdefbereich(double x); double wert(double x); String gibbeschreibung(); public interface

Mehr

Mobile und Verteilte Datenbanken

Mobile und Verteilte Datenbanken Mobile und Verteilte Datenbanken Java RMI Vorlesung Wintersemester 2013/2014 groppe@ifis.uni-luebeck.de Institut für Informationssysteme Universität zu Lübeck Kommunikations-Middleware Bietet höhere Kommunikations-Dienste

Mehr

Remote Method Invocation

Remote Method Invocation Remote Method Invocation Spezielle Technik aus dem Java-Umfeld Ausführung von Methoden auf einem entfernten Rechner Analogon zum RPC (Remote Procedure Call) Zweck: Objekte in verschiedenen Java-VMs Aufruf

Mehr

Java-Programmierung. Remote Method Invocation - RMI

Java-Programmierung. Remote Method Invocation - RMI Java-Programmierung Remote Method Invocation - RMI Entwicklungsmethoden Sockets Entwurf verteilter Anwendungen ist relativ aufwändig, da zunächst ein Kommunikationsprotokoll entwickelt werden muss aufwändig

Mehr

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter Kapitel 1 Der vierte Tag 1.1 Vererbung Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter Sprachen. Unter Vererbung versteht man die Möglichkeit, Eigenschaften vorhandener

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 35 Einstieg in die Informatik mit Java Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 35 1 Grundlagen 2 Verdeckte Variablen 3 Verdeckte Methoden 4 Konstruktoren

Mehr

Programmieren in Java

Programmieren in Java Einführung in die Objektorientierung Teil 4 Interfaces, innere Klassen und Polymorphie 2 Vererbung im Klassendiagram (Wiederholung) Vererbung repräsentiert eine ist ein Beziehung zwischen Klassen Ware

Mehr

1 Motivation. 1 Motivation. Standard Middleware für objektorientierte Anwendungen. Motivation. Fragmentierte Objektmodel. Java RMI

1 Motivation. 1 Motivation. Standard Middleware für objektorientierte Anwendungen. Motivation. Fragmentierte Objektmodel. Java RMI 1 Motivation Motivation ierte Objektmodel Standard Middleware für objektorientierte Anwendungen CORBA,.NET-Remoting Java Remote Method Invocation (RMI) Java RMI ierte Objekte undjava RMI Zusammenfassung

Mehr

Objektorientierte Programmierung und Klassen

Objektorientierte Programmierung und Klassen Objektorientierte Programmierung und Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 16.5.07 G. Bohlender (IANM UNI Karlsruhe) OOP

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 25 Einstieg in die Informatik mit Java Objektorientierte Programmierung und Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 25 1 Die Philosophie 2 Definition

Mehr

Repetitorium Informatik (Java)

Repetitorium Informatik (Java) Repetitorium Informatik (Java) Tag 6 Lehrstuhl für Informatik 2 (Programmiersysteme) Übersicht 1 Klassen und Objekte Objektorientierung Begrifflichkeiten Deklaration von Klassen Instanzmethoden/-variablen

Mehr

1 Klassen und Objekte

1 Klassen und Objekte 1 Klassen und Objekte Datentyp - Spezifikation des Typs von Datenobjekten Datenstruktur - logische Ordnung von Elementen eines Datentyps - zur (effizienten) Speicherung, Verwaltung, Zugriff - auf die Elemente

Mehr

Vererbung. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java 23.5.

Vererbung. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java 23.5. Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 23.5.07 G. Bohlender (IANM UNI Karlsruhe) Vererbung 23.5.07 1 / 22 Übersicht 1

Mehr

Vererbung, Polymorphie

Vererbung, Polymorphie Vererbung, Polymorphie Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 21.1.08 G. Bohlender (IANM UNI Karlsruhe) Vererbung, Polymorphie 21.1.08

Mehr

Themen. Web Service - Clients. Kommunikation zw. Web Services

Themen. Web Service - Clients. Kommunikation zw. Web Services Themen Web Service - Clients Kommunikation zw. Web Services Bisher: Implementierung einer Java Anwendung und Bereitstellung durch Apache Axis unter Apache Tomcat Java2WSDL Erzeugen einer WSDL-Datei zur

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 16 Einstieg in die Informatik mit Java Innere Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 16 1 Einführung 2 Element-Klassen 3 Lokale Klassen 4 Anonyme Klassen

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Tafelübung 03 Vererbung, Polymorphie, Sichtbarkeit, Interfaces Clemens Lang T2 11. Mai 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/26 Klassen und Objekte Klassen und Objekte

Mehr

Geschachtelte Klassen

Geschachtelte Klassen Geschachtelte Klassen Die Programmiersprache Java bietet nicht nur die Möglichkeit innerhalb von Klassen Datenfelder und Methoden zu definieren, sondern auch Klassen. Solche Klassen heißen en geschachtelte

Mehr

Theorie zu Übung 8 Implementierung in Java

Theorie zu Übung 8 Implementierung in Java Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich Theorie zu Übung 8 Implementierung in Java Klasse in Java Die Klasse wird durch das class-konzept

Mehr

Programmieren in Java -Eingangstest-

Programmieren in Java -Eingangstest- Programmieren in Java -Eingangstest- Nummer: 1. Studiengang: Informatik B.Sc. Informatik M.Sc. ESE B.Sc. ESE M.Sc. Sonstiges: Fachsemester: Bitte Fragen, die Sie nicht beantworten können unbedingt mit

Mehr

Das Interface-Konzept am Beispiel der Sprache Java

Das Interface-Konzept am Beispiel der Sprache Java Das Interface-Konzept am Beispiel der Sprache Java Klaus Kusche, November 2013 Inhalt Motivation: Wozu braucht man Interfaces? Interfaces in Java Was spricht gegen die große Lösung? Voraussetzungen Kenntnisse

Mehr

Tag 7 Repetitorium Informatik (Java)

Tag 7 Repetitorium Informatik (Java) Tag 7 Repetitorium Informatik (Java) Dozent: Patrick Kreutzer Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2017/2018 Informatik-Repetitorium

Mehr

Remote Methode Invocation (RMI) ETIS SS05

Remote Methode Invocation (RMI) ETIS SS05 Remote Methode Invocation (RMI) ETIS SS05 Motivation Ablauf der Kommunikation Erstellung Remote-Service Zusammenfassung Gliederung 2 Motivation I RMI: Remote Method Invokation Möglichkeit verteilte Java-Anwendungen

Mehr

Java RMI Remote Method Invocation

Java RMI Remote Method Invocation Java RMI Remote Method Invocation Ziel: Aufruf von Instanzmethoden entfernter Objekte basierend auf Java. Paket: java.rmi und Unterpakete Topologie: RMI Registry RMI Server RMI Client Der Server registriert

Mehr

Innere Klassen. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java

Innere Klassen. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java Innere Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 13.06.07 G. Bohlender (IANM UNI Karlsruhe) Innere Klassen 13.06.07 1 / 11

Mehr

1. Abstrakte Klassen

1. Abstrakte Klassen 1. Abstrakte Klassen Lernziele 1. Abstrakte Klassen Lernziele: Das Konzept abstrakter Klassen und abstrakter Methoden kennen und verstehen, in der Lage sein, abstrakte Klassen und Methoden in Java zu formulieren,

Mehr

Kapitel 13. Abstrakte Methoden und Interfaces. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz

Kapitel 13. Abstrakte Methoden und Interfaces. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz Kapitel 13 Abstrakte Methoden und Interfaces 13. Abstrakte Klassen und Interfaces 1. Abstrakte Klassen 2. Interfaces und Mehrfachvererbung Folie 12.2 Abstrakte Methoden und Klassen Manchmal macht es überhaupt

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 27 Einstieg in die Informatik mit Java Klassen als Datenstrukturen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 27 1 Überblick: Klassen als Datenstruktur 2 Vereinbarung

Mehr

Johannes Unterstein - TINF16 - Java - Sommersemester 2017 JAVA. Weiterführende Spracheigenschaften

Johannes Unterstein - TINF16 - Java - Sommersemester 2017 JAVA. Weiterführende Spracheigenschaften JAVA Weiterführende Spracheigenschaften 100 AGENDA Strings Exceptions Enums Generics Lambdas & Methods Bulk-Operations 101 DIE KLASSE STRING Zeichenketten werden in Java als String repräsentiert Wie der

Mehr

Faulheit professionell: Fertige Datenbehälter. Das Java-Collections-Framework Typsicherheit Generische Klassen

Faulheit professionell: Fertige Datenbehälter. Das Java-Collections-Framework Typsicherheit Generische Klassen Faulheit professionell: Fertige Datenbehälter Das Java-Collections-Framework Typsicherheit Generische Klassen Das Java Collections Framework Grundlegende Interfaces Das Interface List Das Interface List

Mehr

Programmierung Nachklausurtutorium

Programmierung Nachklausurtutorium Programmierung Nachklausurtutorium Laryssa Horn, Tim Engelhardt 20 März 2018 Klassen Wofür wir Klassen brauchen: Definieren ein Bauplan eines Objektes Bauplan enthält Attribute und Methoden Klasse Beispiel

Mehr

3 Objektorientierte Konzepte in Java

3 Objektorientierte Konzepte in Java 3 Objektorientierte Konzepte in Java 3.1 Klassendeklarationen Fragen an die Klassendeklaration: Wie heißt die Klasse? Wer darf auf die Klasse und ihre Attribute/Methoden zugreifen? Ist die Klasse eine

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 34 Einstieg in die Informatik mit Java Klassen mit Instanzmethoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 34 1 Definition von Klassen 2 Methoden 3 Methoden

Mehr

Lösungsvorschläge zur Nachklausur zum Kurs 1618 Sommersemester 2001 am

Lösungsvorschläge zur Nachklausur zum Kurs 1618 Sommersemester 2001 am Aufgabe 1 Lösungsvorschläge zur Nachklausur zum Kurs 1618 Sommersemester 2001 am 16.3.2002 Folgende Implementierung löst die gestellte Aufgabe : public interface Figur { public void anzeigen (); public

Mehr

Programmieren 2 Java Überblick

Programmieren 2 Java Überblick Programmieren 2 Java Überblick 1 Klassen und Objekte 2 Vererbung 4 Innere Klassen 5 Exceptions 6 Funktionsbibliothek 7 Datenstrukturen und Algorithmen 8 Ein-/Ausgabe 9 Graphische Benutzeroberflächen 10

Mehr

B Java RMI B.1 B.2. 1 Java. 1.1 Objekte. Objektorientierte Sprache

B Java RMI B.1 B.2. 1 Java. 1.1 Objekte. Objektorientierte Sprache B Java RMI B.1 1 Java 1.1 Objekte Objektorientierte Sprache Objekte beschrieben in Klassendefinitionen und andere Datentypen: int, float, boolean, etc. Objektreferenzen Verweise auf Objekte keine Zeiger,

Mehr

Komponententechnologien Winter 2016/17. Komponenten. 2. Die Anfänge. Peter Sturm, Universität Trier 1

Komponententechnologien Winter 2016/17. Komponenten. 2. Die Anfänge. Peter Sturm, Universität Trier 1 Komponenten 1 2. Die Anfänge 3 Peter Sturm, Universität Trier 1 Selbstzufrieden Anwendung Hardware 4 Oh? Da gibt es noch jemanden? Anwendung Anwendung TCP/IP Hardware Hardware 5 Peter Sturm, Universität

Mehr

Prof. Dr. Wolfgang Schramm. Vorlesung. Techniken der Programmentwicklung. Exkurs: Anonyme Klassen

Prof. Dr. Wolfgang Schramm. Vorlesung. Techniken der Programmentwicklung. Exkurs: Anonyme Klassen Prof. Dr. Wolfgang Schramm Vorlesung Exkurs: Anonyme Klassen Techniken der Programmentwicklung Prof. Dr. Wolfgang Schramm Vorlesung Exkurs: Anonyme Klassen Techniken der Programmentwicklung Anonyme Klassen

Mehr

Praktikum Verteilte Anwendungen

Praktikum Verteilte Anwendungen Technische Informatik (Info II) -Sommersemester 2006 - Folie 1 / 27 0 Gliederung 1.) Kurze Wiederholung/ Einleitung 2.) RPC/ RMI 3.) Praktisches Beispiel 4.) Aufgabenblatt Folie 2 / 27 Wiederholung/ Einleitung

Mehr

Beispiele für Ausdrücke. Der imperative Kern. Der imperative Kern. Imperativer Kern - Kontrollstrukturen. Deklarationen mit Initialisierung

Beispiele für Ausdrücke. Der imperative Kern. Der imperative Kern. Imperativer Kern - Kontrollstrukturen. Deklarationen mit Initialisierung Beispiele für Ausdrücke Der imperative Kern Deklarationen mit Initialisierung Variablendeklarationen int i = 10; int j = 15; Beispiele für Ausdrücke i+j i++ i & j i j [] [static]

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 39 Einstieg in die Informatik mit Java Objektorientierte Programmierung und Klassen mit Instanzmethoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 39 1 Überblick:

Mehr

Mobile und Verteilte Datenbanken

Mobile und Verteilte Datenbanken Mobile und Verteilte Datenbanken Java RMI Vorlesung Wintersemester 2010/2011 groppe@ifis.uni-luebeck.de Institut für Informationssysteme Universität zu Lübeck Java Remote Method Invocation (RMI) Realisierung

Mehr

Programmieren II. Innere Klassen. Heusch 10, Ratz 5.2.1, Institut für Angewandte Informatik

Programmieren II. Innere Klassen. Heusch 10, Ratz 5.2.1, Institut für Angewandte Informatik Programmieren II Innere Klassen Heusch 10, 13.10 Ratz 5.2.1, 9.8 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Innere Klassen Bisher kennen wir nur Klassen, die entweder zusammen

Mehr

3. Klassen Statische Komponenten einer Klasse. Klassenvariablen

3. Klassen Statische Komponenten einer Klasse. Klassenvariablen Klassenvariablen Wir wollen die Zahl der instantiierten Studentenobjekte zählen. Dies ist jedoch keine Eigenschaft eines einzelnen Objektes. Vielmehr gehört die Eigenschaft zu der Gesamtheit aller Studentenobjekte.

Mehr

Programmieren II. Remote Method Invocation (RMI) Heusch -- Ratz. Institut für Angewandte Informatik

Programmieren II. Remote Method Invocation (RMI) Heusch -- Ratz.  Institut für Angewandte Informatik Programmieren II Remote Method Invocation (RMI) Heusch -- Ratz KIT Universität des Landes Baden-Württemberg und nationales Großforschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu Remote Method

Mehr

Javakurs zu Informatik I. Henning Heitkötter

Javakurs zu Informatik I. Henning Heitkötter Javakurs zu Informatik I Arrays vergleichen Implementieren Sie folgende Methode, die prüft, ob die Elemente der beiden Arrays an jeder Position übereinstimmen: public static boolean identisch(int[] a,

Mehr

Kapitel 9: Klassen und höhere Datentypen. Klassen und höhere. Objekte, Felder, Methoden. Küchlin/Weber: Einführung in die Informatik

Kapitel 9: Klassen und höhere Datentypen. Klassen und höhere. Objekte, Felder, Methoden. Küchlin/Weber: Einführung in die Informatik Klassen und höhere Datentypen Objekte, Felder, Methoden Küchlin/Weber: Einführung in die Informatik Klassen Klasse (class) stellt einen (i.a. benutzerdefinierten) Verbund-Datentyp dar Objekte sind Instanzen

Mehr

4. Vererbung Die Klasse Object. Die Klasse Object

4. Vererbung Die Klasse Object. Die Klasse Object 4. Vererbung Die Klasse Object Die Klasse Object Alle Klassen ohne explizit deklarierte Superklasse haben die Klasse Object als Superklasse. Object gehört zum Paket java.lang. Object verfügt über einige

Mehr

Institut für Programmierung und Reaktive Systeme. Java 7. Markus Reschke

Institut für Programmierung und Reaktive Systeme. Java 7. Markus Reschke Institut für Programmierung und Reaktive Systeme Java 7 Markus Reschke 14.10.2014 Vererbung in Java Vererbung ermöglicht es, Klassen zu spezialisieren Wiederverwendung vorhandener Klassen Kindsklasse erhält

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 41 Einstieg in die Informatik mit Java Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 41 1 Überblick: Vererbung 2 Grundidee Vererbung 3 Verdeckte Variablen

Mehr

Institut für Programmierung und Reaktive Systeme. Java 6. Markus Reschke

Institut für Programmierung und Reaktive Systeme. Java 6. Markus Reschke Institut für Programmierung und Reaktive Systeme Java 6 Markus Reschke 13.10.2014 OOP Objekte = Verhalten (durch Methoden) + Daten (durch Attribute) Klassen = Baupläne für Objekte Kapselung von Programmteilen

Mehr

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden Kapitel 8 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Methoden Überladen von Methoden Der this-zeiger Konstruktoren Vererbung WS 07/08

Mehr

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung Javakurs FSS 2012 Lehrstuhl Stuckenschmidt Tag 3 - Objektorientierung Warum Objektorientierung Daten und Funktionen möglichst eng koppeln und nach außen kapseln Komplexität der Software besser modellieren

Mehr

Abstrakte Klassen, Interface. DVG Abstrakte Klassen, Interface

Abstrakte Klassen, Interface. DVG Abstrakte Klassen, Interface Abstrakte Klassen, Interface Beispiel: Vögel Definition von Klassen enthält Abstraktion von den konkreten Objekten. Z.B.: Klasse: Vogel Kann ein Objekt der Klasse Vogel instanziiert werden? Nein, es gibt

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung WS 2006/2007 Klassen und Vererbung in Java Walter Binder Universität Lugano 2006-11-23 Objektorientierte Programmierung 1 Überblick Konstruktoren Verdecken versus Überschreiben

Mehr

1 Einleitung Generizität Syntax... 2

1 Einleitung Generizität Syntax... 2 Inhaltsverzeichnis Inhaltsverzeichnis 1 Einleitung 1 1.1 Generizität................................ 1 1.2 Syntax.................................. 2 2 Realisierung 2 2.1 Compilierung generischer Klassen...................

Mehr

Tag 4 Repetitorium Informatik (Java)

Tag 4 Repetitorium Informatik (Java) Tag 4 Repetitorium Informatik (Java) Dozent: Michael Baer Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2017/2018 Übersicht Arrays (Reihungen)

Mehr

Konzepte von Betriebssystem-Komponenten Middleware RMI

Konzepte von Betriebssystem-Komponenten Middleware RMI Konzepte von Betriebssystem-Komponenten Middleware RMI Mario Kiefer 21. Januar 2005 1 Einführung RMI (Remote Method Invocation) ermöglicht es mit relativ einfachen Mitteln verteilte Anwendungen zu erstellen.

Mehr

Dr. Monika Meiler. Inhalt

Dr. Monika Meiler. Inhalt Inhalt 15 Parallele Programmierung... 15-2 15.1 Die Klasse java.lang.thread... 15-2 15.2 Beispiel 0-1-Printer als Thread... 15-3 15.3 Das Interface java.lang.runnable... 15-4 15.4 Beispiel 0-1-Printer

Mehr

Implementieren von Klassen

Implementieren von Klassen Implementieren von Klassen Felder, Methoden, Konstanten Dr. Beatrice Amrhein Überblick Felder/Mitglieder (Field, Member, Member-Variable) o Modifizierer Konstanten Methoden o Modifizierer 2 Felder und

Mehr

Überblick. Class-Objekte. Bietet die Möglichkeit das Laufzeitverhalten von Applikationen zu analysieren und es gegebenenfalls sogar zu beeinflussen

Überblick. Class-Objekte. Bietet die Möglichkeit das Laufzeitverhalten von Applikationen zu analysieren und es gegebenenfalls sogar zu beeinflussen Überblick Bietet die Möglichkeit das Laufzeitverhalten von Applikationen zu analysieren und es gegebenenfalls sogar zu beeinflussen Stubs & Skeletons Aufgabe 2 Tutorial: http://download.oracle.com/javase/tutorial/reflect/index.html

Mehr

Überblick. Beispiel: get()-methodenaufruf am VSBoard aus Übungsaufgabe 1. Analyse einer Methode: java.lang.reflect.method

Überblick. Beispiel: get()-methodenaufruf am VSBoard aus Übungsaufgabe 1. Analyse einer Methode: java.lang.reflect.method Überblick Bietet die Möglichkeit das Laufzeitverhalten von Applikationen zu analysieren und es gegebenenfalls sogar zu beeinflussen Stubs & Skeletons Aufgabe 2 Tutorial: http://docs.oracle.com/javase/tutorial/reflect/index.html

Mehr

Durch die Teil-von-Beziehung soll ausgedrückt werden, dass ein Objekt A als (physikalischer) Teil eines Objekts B angesehen wird. Insbesondere kann ei

Durch die Teil-von-Beziehung soll ausgedrückt werden, dass ein Objekt A als (physikalischer) Teil eines Objekts B angesehen wird. Insbesondere kann ei Lösungsvorschläge zur Klausur zum Kurs 1618 Sommersemester 2001 am 22.9.2001 Aufgabe 1 a) Benutzungsbeziehung: class Kennzeichen class Fahrzeug boolean gueltigeskennzeichen (Kennzeichen kz) Objekte der

Mehr

Programmieren in Java

Programmieren in Java Einführung in die Objektorientierung Teil 4 Interfaces, Polymorphie und innere Klassen 2 Vererbung im Klassendiagramm (Wiederholung) Vererbung repräsentiert eine ist ein Beziehung zwischen Klassen Object

Mehr

Realisierungsmöglichkeiten für parametrische Polymorphie

Realisierungsmöglichkeiten für parametrische Polymorphie 4. Parametrisierbare Klassen Realisierung von Generics Realisierungsmöglichkeiten für parametrische Polymorphie heterogen Für jeden konkreten Typ wird individueller Code erzeugt (type expansion). Diesen

Mehr

Software Entwicklung 1

Software Entwicklung 1 Software Entwicklung 1 Annette Bieniusa AG Softech FB Informatik TU Kaiserslautern Klassenattribute und -methoden Bieniusa Software Entwicklung 1 2/ 23 Beispiel: Klassenattribute I class Uebungsgruppe

Mehr

Präsentation Interfaces

Präsentation Interfaces Einführung in Java Präsentation Interfaces Nozar Delassaei Marvi Inhalt 1. Erinnerung Klasse Objekte Beispiel Klasse Abstrakte Klasse Beispiel Abstrakte Klasse Mehrfachvererbung-1 Mehrfachvererbung-2 2.

Mehr

12 Abstrakte Klassen, finale Klassen und Interfaces

12 Abstrakte Klassen, finale Klassen und Interfaces 12 Abstrakte Klassen, finale Klassen und Interfaces Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält,

Mehr

Klassenmethoden. Klassenvariablen. Für das Auslesen des Studentenzählers definieren wir eine öffentliche Klassenmethode:

Klassenmethoden. Klassenvariablen. Für das Auslesen des Studentenzählers definieren wir eine öffentliche Klassenmethode: Klassenvariablen Klassenmethoden Wir wollen die Zahl der instantiierten Studentenobjekte zählen. Dies ist jedoch keine Eigenschaft eines einzelnen Objektes. Vielmehr gehört die Eigenschaft zu der Gesamtheit

Mehr

II.4.4 Exceptions - 1 -

II.4.4 Exceptions - 1 - n 1. Unterklassen und Vererbung n 2. Abstrakte Klassen und Interfaces n 3. Modularität und Pakete n 4. Ausnahmen (Exceptions) n 5. Generische Datentypen n 6. Collections II.4.4 Exceptions - 1 - Ausnahmen

Mehr

Info B VL 14: Java Collections/Reflections

Info B VL 14: Java Collections/Reflections Info B VL 14: Java Collections/Reflections Objektorientiere Programmierung in Java 2003 Ute Schmid (Vorlesung) Elmar Ludwig (Übung) FB Mathematik/Informatik, Universität Osnabrück Info B VL 14: Java Collections/Reflections

Mehr

Objektorientierte Programmierung Studiengang Medieninformatik

Objektorientierte Programmierung Studiengang Medieninformatik Objektorientierte Programmierung Studiengang Medieninformatik Hans-Werner Lang Hochschule Flensburg Vorlesung 5 12.04.2017 Was bisher geschah... Objektorientierte Programmierung Klassen und Objekte, Attribute

Mehr

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Wiederholung: Gerüstbeispiel. Vererbungshierarchie: Typ 0

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Wiederholung: Gerüstbeispiel. Vererbungshierarchie: Typ 0 9 Objektorientierte Programmierung in Java Prof. Dr. Ing. André Stuhlsatz Wiederholung: Gerüstbeispiel Ein Duo, Quarto oder Sexto ist ein Gerüst. Die Klassen Duo, Quarto und Sexto sollen durch Vererbung

Mehr

Vorkurs Informatik WiSe 15/16

Vorkurs Informatik WiSe 15/16 Java 7 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe, 21.10.2015 Technische Universität Braunschweig, IPS Überblick OO in Java Vererbung Abstrakte Klassen und Interfaces 21.10.2015 Dr. Werner Struckmann

Mehr

Verteilte Systeme. Verteilte Objektorientierte Systeme I. Prof. Dr. Oliver Haase

Verteilte Systeme. Verteilte Objektorientierte Systeme I. Prof. Dr. Oliver Haase Verteilte Systeme Verteilte Objektorientierte Systeme I Prof. Dr. Oliver Haase 1 Überblick Verteilte Objektorientierte Systeme 1 RPC verteilte objektorientierte Architekturen Java RMI Verteilte Objektorientierte

Mehr

IUG DRESDEN ERSTELLUNG VON ROBUSTEN NATURAL SERVICES Software AG. All rights reserved. For internal use only

IUG DRESDEN ERSTELLUNG VON ROBUSTEN NATURAL SERVICES Software AG. All rights reserved. For internal use only IUG DRESDEN ERSTELLUNG VON ROBUSTEN NATURAL SERVICES 2016 Software AG. All rights reserved. For internal use only DIGITAL BUSINESS APPLICATIONS DRIVE THE DIGITAL BUSINESS Partner Lieferanten Kunden SaaS

Mehr

Internetanwendungstechnik (Übung)

Internetanwendungstechnik (Übung) Internetanwendungstechnik (Übung) JacORB S. Bissell, G. Mühl Technische Universität Berlin Fakultät IV Elektrotechnik und Informatik Kommunikations- und Betriebssysteme (KBS) Einsteinufer 17, Sekr. EN6,

Mehr

Beispiel: die Klasse Brüche

Beispiel: die Klasse Brüche Universität München, Hans-Peter Kriegel und Thomas Seidl Informatik II -138 Beispiel: die Klasse Brüche class Fraction { int num; Int denom; // numerator // denominator Fraction (int n, int d) { num =

Mehr

Silke Trißl Wissensmanagement in der Bioinformatik. Objektorientierte Programmierung (OOP) Vorstellung wie in der realen Welt: Farbe Hubraum Tank...

Silke Trißl Wissensmanagement in der Bioinformatik. Objektorientierte Programmierung (OOP) Vorstellung wie in der realen Welt: Farbe Hubraum Tank... Methoden und Klassen Silke Trißl Wissensmanagement in der Bioinformatik Objektorientierte Programmierung (OOP) Vorstellung wie in der realen Welt: hat Farbe Hubraum Tank kann man Gas geben Bremsen Hoch

Mehr

Erste Java-Programme (Java Wiederholung & Vererbung)

Erste Java-Programme (Java Wiederholung & Vererbung) Lehrstuhl Bioinformatik Konstantin Pelz Erste Java-Programme (Java Wiederholung & ) Tutorium Bioinformatik (WS 18/19) Konstantin: Konstantin.pelz@campus.lmu.de Homepage: https://bioinformatik-muenchen.com/studium/propaedeutikumprogrammierung-in-der-bioinformatik/

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 13: Interfaces Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme 1. Teil: Interfaces Motivation Eigenschaften Besonderheiten Anonyme Klassen Lambda-Ausdrücke Praxis:

Mehr