Mobile App Development - Multitasking -

Save this PDF as:
 WORD  PNG  TXT  JPG

Größe: px
Ab Seite anzeigen:

Download "Mobile App Development - Multitasking -"

Transkript

1 Mobile App Development - Multitasking -

2 Inhalt Threading Services Service Lifecycle Gestartete Services Gebundene Services

3 Threading

4 Threading Standard Java Threads Thread Runnable volatile & synchronized

5 Threading Was ist Threading?

6 Threading Was ist Threading? Threading ist die quasi-parallele Ausführung von Programm-Code Ein Thread ist ein Faden / Ausführungsstrang

7 Threading Wie wird Threading in Java bewerkstelligt?

8 Threading Wie wird Threading in Java bewerkstelligt? Zentrale Java-Objekte zum Threading sind die Klasse Thread und das Interface Runnable

9 Threading Wie wird Threading in Java bewerkstelligt? public class MyThread extends Thread public void run() {!! /* Ausführung der Operationen */! Verwendung public void usemythread() {! MyThread thread = new MyThread();! thread.start();

10 Threading Was ist das Runnable Interface

11 Threading Was ist das Runnable Interface Runnable schreibt die Methode run() vor Runnables werden an Threads übergeben, die diese ausführen

12 Threading Runnable verwenden! public void usemythread() {!! Thread thread = new Thread(new Runnable() public void run() {!!!! /* Ausführung der Operationen */!!!!! );!! thread.start();!

13 Threading Was bedeutet das volatile-schlüsselwort?

14 Threading Was bedeutet das volatile-schlüsselwort? greifen mehrere Thread auf eine Variable zu, kann es durch Zwischenspeichern zu Inkonsistenzen kommen volatile Variablen werden zwischen allen Threads synchron gehalten

15 Threading Wofür wird das synchronized Schlüsselwort verwendet?

16 Threading synchronized synchronisiert den Zugriff auf... gemeinsam genutzte Resourcen... gemeinsame Methoden public class Test {! public static List list;!! public synchronized void dosomeaction1() {!! /* irgendeine Berechnung */!! public void dosomeaction2() {!! Object obj = list.get(0);!! synchronized (list) {!!! list = new ArrayList();!!!

17 Threading in Android

18 Threading Ausführung langer Operationen public class MainActivity extends Activity public void oncreate(bundle savedinstancestate) {!! super.oncreate(savedinstancestate);!! setcontentview(r.layout.activity_main);!!! dosomework()!!! private void dosomework() {!! /*!! * lang andauernde Berechnungen!! */!! String text = "result.of.my.operation";!! TextView txt = (TextView) findviewbyid(r.id.textview);!! txt.settext(text);!

19 Threading Werden lang andauernde Operationen auf dem MainThread ausgeführt, entstehen zwei Probleme: MainThread wird blockiert Application Not Responding (ANR), wenn es zu lange dauert Aulagerung der Operationen in Threads

20 Threading Auslagerung lang andauernder Operationen public class MainActivity extends Activity {! private void externalizesomthing() {!! final TextView txt = (TextView) findviewbyid(r.id.textview);!! // Auslagerung in einen Thread!! Thread thread = new Thread(new Runnable() public void run() {!!!! // lang andauernde Operationen!!!! txt.settext("new text");!!!!! );!! thread.start();!

21 Threading Auslagerung lang andauernder Operationen public class MainActivity extends Activity {! private void externalizesomthing() {!! final TextView txt = (TextView) findviewbyid(r.id.textview);!! // Auslagerung in einen Thread!! Thread thread = new Thread(new Runnable() public void run() {!!!! // lang andauernde Operationen!!!! txt.settext("new text");!!!!! );!! thread.start();! Problem???

22 Threading UI Manipulationen dürfen nur auf dem MainThread durchgeführt werden! Android bietet verschiedene Möglichkeiten View.post(Runnable) AsyncTask

23 Threading Jede View besitzt eine post-methode, der ein Runnable-Objekt üergeben werden kann, das auf dem MainThread ausgeführt wird

24 Threading Modifikation von UI-Elementen public class MainActivity extends Activity {! private void externalizesomthing() {!! final TextView txt = (TextView) findviewbyid(r.id.textview);!! Thread thread = new Thread(new Runnable() public void run() {!!!! // lang andauernde Operationen!!!! txt.post(new Runnable() public void run() {!!!!!! txt.settext("new text");!!!!!!!!! );!!!!! );!! thread.start();!

25 Threading AyncTask ermöglicht die Ausführung von Hintergrundoperationen bietet Zugriff auf den MainThread enthält Methoden um die Hintergrundausführung zu steuern

26 Threading AyncTask Methode execute() - wird aufgerufen, um die AsyncTask zu starten onpreexecute() - wird vor der Ausführung auf dem MainThread aufgerufen

27 Threading AyncTask Methode doinbackground() - enthält die eigentliche Hintergrundarbeit und wird in seperatem Thread ausgeführt publishprogress() - wird in doinbackground verwendet, um den aktuellen Fortschritt zu veröffentlichen onprogressupdate()

28 Threading AyncTask Methode onprogressupdate() - wird als Folge von publishprogress aufgerufen onpostexecute() - wird auf dem MainThread aufgerufen nachdem doinbackground fertig ist cancel() - wird zum Abbruch der Task verwendet

29 Threading AyncTask - Methoden-Parameter Params - Typ der execute() Parameter Progress - Typ für den Progress Result - Typ des Rückgabewerts von doinbackground()

30 Threading AyncTask - Beispiel private class DownloadFilesTask extends AsyncTask<URL, Integer, Long> {! protected void onpreexecute() { setupprogressbar(); protected Long doinbackground(url... urls) { int count = urls.length; long totalsize = 0; for (int i = 0; i < count; i++) { totalsize += Downloader.downloadFile(urls[i]); publishprogress((int) ((i / (float) count) * 100)); if (iscancelled()) break; return totalsize; protected void onprogressupdate(integer... progress) { setprogresspercent(progress[0]); protected void onpostexecute(long result) { showdialog("downloaded " + result + " bytes");

31 Threading AyncTask - starten und stoppen private void startdownloadtask() throws Exception {! // --- starten ---! DownloadFilesTask task = new DownloadFilesTask(); task.execute(new URL(!!! " // --- stoppen ---! task.cancel(true);

32 Threading AyncTask - Regeln AsyncTask muss auf dem MainThread erstellt werden execute() muss von MainThread aufgerufen werden onpreexecute(), onpostexecute() nicht manuell aufrufen Task kann nur einmal ausgeführt werden

33 Services

34 Services Services sind Anwendungsbausteine, die zur Ausführung von Hintergrundoperationen verwendet werden haben kein eigenes UI Start nicht nur bei bestimmten Ereignissen

35 Services Verwendung von Services Senden von großen s Musik-Streaming Downloads

36 Services Android unterscheidet zwei Arten Gestartet Services Gebunden Services

37 Services Gestartete Services werden von einer anderen Komponente mit startservice() gestartet können beliebig lange laufen laufen weiter, wenn die startende Komponente zerstört wird Beendung durch stopservice() oder stopself()

38 Services Gebundene Services werden durch bindservice() mit anderen Komponenten verbunden bieten eine Kommunikationsschnittstelle läuft nur solange mindestens eine andere Komponente verbunden ist

39 Services Services können sowohl gestartet als auch gebunden sein, um beliebig lange zu laufen und eine Kommunikationsschnittstelle zur Verfügung zu stellen

40 Services Ein Service läuft im Main Thread der Anwendung Längere Operationen sollten daher immer in einen eigenen Thread ausgelagert werden

41 Services Manifesteintrag Genauso wie Activities müssen Services im Android manifest deklariert werden Informationen Name Erreichbarkeit von außen Filter

42 Services Manifesteintrag <manifest xmlns:android=" package="de.htwds.emrolab.mada.services" android:versioncode="1" android:versionname="1.0" > <application > <service android:name=".testservice" android:enabled="true" android:exported="false" > <intent-filter > <action android:name="my.service.action"/> </intent-filter> </service> </application> </manifest>

43 Service Lifecycle

44 Service Lifecycle

45 Service Lifecycle onstart() / onstartcommand() wird immer aufgerufen, wenn ein Service durch startservice() gestartet wird sobald onstartcommand() ausgeführt ist, ist der Service gestartet Service muss explizit gestoppt werden

46 Service Lifecycle onbind() wird aufgerufen, wenn sich eine andere Komponente mit bindservice() verbindet gibt eine Kommunikationsschnittstelle in Form eines IBinders zurück muss immer implementiert werden

47 Service Lifecycle oncreate() wird aufgerufen, wenn der Service das erste mal erzeugt wird wird nicht aufgerufen, wenn der Service bereits läuft Verwendung für initiales Setup

48 Service Lifecycle onunbind() wird aufgerufen, wenn kein Client mehr mit dem Service verbunden ist Verwendung für Aufräumarbeiten

49 Service Lifecycle ondestroy() wird aufgerufen, wenn der Service gestoppt wird oder nicht mehr gebunden ist Verwendung für Aufräumarbeiten

50 Gestartete Services

51 Gestartete Services Implementierung public class TestService extends Service public void oncreate() { // initiales public int onstartcommand(intent intent, int flags, int startid) {!! return public IBinder onbind(intent intent) { // default Impl.!! return public void ondestroy() { // Aufräumarbeiten!

52 Gestartete Services onstartcommand / onstart Parameter intent: Intent, mit dem der Service gestartetet wurde, kann bei Neustart null sein flags: gibt an, wie der Service gestartet wurde (siehe return)

53 Gestartete Services onstartcommand / onstart Parameter startid: fortlaufende ID für die Start requests return Wert: legt fest wie der Service nach Beendung behandelt werden soll START_NOT_STICKY START_STICKY START_REDELIVER_INTENT

54 Gestartete Services Service starten public class MainActivity extends Activity {... /* Methode zum Starten eines Service */ private void startmyservice() {! /* Intent erstellen, der den aktuellen Context und! * den zu startenden Service erhält */! Intent intent = new Intent(this, MyService.class);!! /* Der Service wird analog zu Activities gestartet */! startservice(intent);

55 Gestartete Services Service stoppen public class MainActivity extends Activity {... /* Methode zum Starten eines Service */ private void stopmyservice() {! /* Intent erstellen, der den aktuellen Context und! * den zu stoppenden Service erhält */! Intent intent = new Intent(this, MyService.class);! /* Stoppen des Services */! stopservice(intent);

56 Gestartete Services Service stoppen public class MyService extends Service {! private Thread mythread;!! public IBinder onbind(intent intent) { return null;!!! public int onstartcommand(intent intent, int flags, int startid) {!! if (mythread == null) {!!! mythread = new MyThread();!!! mythread.start();!!!! return START_STICKY;!!!! private class MyThread extends Thread {!! public void run() {!!! /* lange andauernde Operationen ausführen */!!! stopself(); /* Service stoppen */!!!

57 Gestartete Services Nachteile onbind() muss üebrschrieben werden eigener Thread muss erstellt werden Multithreading Probleme durch gleichzeitige Service Requests

58 Gestartete Services Alternative: IntentService erstellt automatisch einen Worker thread keine Multithreading Probleme Service wird automatisch gestoppt, wenn alle Requests abgearbeitet sind Standard-Implementierung von onbind()

59 Gestartete Services Implementierung /* Intent services werden von IntentService abgeleitet */ public class MyIntentService extends IntentService {! public MyIntentService() {!! /* Super Konstruktor wird der Name für den worker!! * thread übergeben */!! protected void onhandleintent(intent intent) {!! for (int i = 0; i < 100; i++) {!!! //... download file i...!!!

60 Gebundene Services

61 Gebundene Services Gebundene Services stellen eine Kommunikaitonsschnittstelle zur Verfügung Bei der Implementierung wird unterschieden zwischen Services für lokale und remote Benutzung

62 Gebundene Services Implementierung /* gebundene Services leiten ebenfalls von Service ab */ public class MyService extends Service public void oncreate() {!! /* initiales Setup public IBinder onbind(intent intent) {!! return public void ondestroy() {!! /* Aufräumarbeiten */!!

63 Gebundene Services Lokale Implementierung Service stellt über onbind() eine Implementierung von IBinder zur Verfügung Binder Objekt enthält Methoden zum Zugriff auf den Service oder Binder gibt Service Referenz mit öffentlichen Methoden zurück

64 Gebundene Services public class MyService extends Service {! /* der LocalBinder */! private final IBinder mbinder = new LocalBinder();!! /* Binder implementieren, der die Service Instanz zurück gibt*/! public class LocalBinder extends Binder {!! /* gibt eine Referenz auf den Service zurück */!! public MyService getservice() {!!! return MyService.this;!!!!! /* Liefert die Referenz auf den LocalBinder zurück */! public IBinder onbind(intent intent) {!! return mbinder;!! /* Service Methode */! public double getrandomnumber() {!! return Math.random();!

65 Gebundene Services mit dem Service verbinden public class MainActivity extends Activity {! private MyService myservice; // Service Referenz! private boolean mbound = false; // gibt an, ob Service verbunden ist!! /* Enthält callbacks für die Service Verbindung */! private ServiceConnection mconn = new ServiceConnection() {!! /* Wird aufgerufen, wenn der Service verbunden ist public void onserviceconnected(componentname name, IBinder service) {!!! LocalBinder binder = (LocalBinder) service;!!! myservice = binder.getservice();!!! mbound = true;!!!! /* Wird aufgerufen, wenn der Service nicht mehr verbunden ist public void onservicedisconnected(componentname name) {!!! mbound = false;!!! ;

66 Gebundene Services public class MainActivity extends Activity {! private MyService myservice; // Service Referenz! private boolean mbound = false; // gibt an, ob Service verbunden ist!! private ServiceConnection mconn = new ServiceConnection() {!! public void onserviceconnected(componentname name, IBinder service) {!!! LocalBinder binder = (LocalBinder) service;!!! myservice = binder.getservice();!!! mbound = true;!!!! public void onservicedisconnected(componentname name) {!!! mbound = false;!!! ;! public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); /* Intent erstellen, um mit dem Service zu verbinden */! Intent intent = new Intent(this, MyService.class); /* mit dem Service verbinden */ bindservice(intent, mconn, Context.BIND_AUTO_CREATE);

67 Gebundene Services den Service verwenden public class MainActivity extends Activity {! private MyService myservice; // Service Referenz! private boolean mbound = false; // gibt an, ob Service verbunden ist!! private ServiceConnection mconn = new ServiceConnection() {!! /* callbacks für Service connect implementieren */! ;! public void oncreate(bundle savedinstancestate) {!! /* mittels bindservice() mit dem Service verbinden */!! /* Methode zur Benutzung des Service */! private void usemyservice() {! if (mbound) {!! double number = myservice.getrandomnumber();!! /* das Ergebnis verwenden... */!!

68 Gebundene Services Service Verbindung schließen public class MainActivity extends Activity {! private MyService myservice; // Service Referenz! private boolean mbound = false; // gibt an, ob Service verbunden ist!! private ServiceConnection mconn = new ServiceConnection() {!! /* callbacks für Service connect implementieren */! ;! public void oncreate(bundle savedinstancestate) {!! /* mittels bindservice() mit dem Service verbinden */!! private void usemyservice() {!! /* den Service verwenden... */!!! protected void ondestroy() {! super.ondestroy();! /* Service Verbindung trennen */! unbindservice(mconn);!

69 Gebundene Services Alternativ können die Schnittstellen über den LocalBinder bereitgestellt werden In diesem Fall wird nicht die Service Referenz zurück gegeben, sondern über Methoden des Binders Methoden der Services angesteuert

70 Gebundene Services public class MyService extends Service {! private final IBinder mbinder = new LocalBinder();!! /* Binder als Schnittstelle zum Service */! public class LocalBinder extends Binder {!! public double getarandomnumber() {!!! return getrandomnumber();!!!! public double getanotherrandomnumber() {!!! return getrandomnumber();!!!!! /* Liefert die Referenz auf den LocalBinder zurück */! public IBinder onbind(intent intent) {!! return mbinder;!! /* Service Methode */! public double getrandomnumber() {!! return Math.random();!

71 Gebundene Services Die Kommunikation mittels LocalBinder kann nur innerhalb des gleichen Prozesses verwendet werden! Für Remote Prozess Kommunikation werden Messenger oder AIDL verwendet

72 Gebundene Services Messenger Kommunikation Service erhält Messenger Objekt an das Nachrichten gesendet werden können Messenger erhält einen Handler, der die Nachrichten behandelt onbind() gibt das Binder-Objekt des Messengers zurück

73 Gebundene Services Messenger Kommunikation public class MessengerService extends Service {! public static final int MSG_SAY_HELLO = 0;! private Messenger messenger = new Messenger(myHandler);!! private Handler myhandler = new Handler() {!! public void handlemessage(message msg) {!!! if (msg.what == MSG_SAY_HELLO) {!!!! sayhello();!!!!! ;! public IBinder onbind(intent intent) { return messenger.getbinder(); private void sayhello() {! Toast.makeText(this, "Hello!", Toast.LENGTH_SHORT).show();

74 Gebundene Services Messenger Kommunikation public class MessengerActivity extends Activity {! private boolean mbound = false; private Messenger servicemessenger = null; private ServiceConnection mconn = new ServiceConnection() {!! public void onservicedisconnected(componentname name) {!!! mbound = false;!!! servicemessenger = null;!!!! public void onserviceconnected(componentname name, IBinder service) {!!! servicemessenger = new Messenger(service);!!! mbound= true;!! ;! public void oncreate(bundle savedinstancestate) { /* bindservice() wie beim LocalBinder */ protected void ondestroy() { /* unbindservice() wie beim LocalBinder */

75 Gebundene Services Messenger Kommunikation public class MessengerActivity extends Activity {! private boolean mbound = false; private Messenger servicemessenger = null; private ServiceConnection mconn = new ServiceConnection() { /* Impl */ ; private void sayhello() {! if (mbound) {!! try {!!! Message message = Message.obtain( null, MessengerService.MSG_SAY_HELLO);!!!! servicemessenger.send(message);!!! catch (RemoteException e) {!!!! /* Handle exception */!!!!! /* Implementierung von oncreate und ondestroy */

76 Gebundene Services Auf Nachrichten antworten Soll die gesendete Nachricht vom Service beantwortet werden, muss der Nachricht ein eigener Messenger mitgegeben werden, an den die Antwort gesendet wird

77 Gebundene Services Auf Nachrichten antworten public class MessengerActivity extends Activity {! /* Erstellen eines eigenen Messengers, der die Antworten behandelt */! private Messenger mymessenger = new Messenger(new Handler() {!! public void handlemessage(message msg) {!!! if (msg.what == MessengerService.MSG_RAND_REPLY) {!!!! Log.d("my.tag", "value: " + msg.getdata().getdouble("rand"));!!!!! ;! ); public void getrand(view view) {! if (mbound) {!! try {!!! Message message = Message.obtain();!!! message.replyto = mymessenger; /* Messenger setzen */!!! message.what = MessengerService.MSG_RAND;!!!! servicemessenger.send(message);!!! catch (RemoteException e) { /* Handle exception */!

78 Gebundene Services Auf Nachrichten antworten public class MessengerService extends Service {! public static final int MSG_RAND = 0;! public static final int MSG_RAND_REPLY = 1;!! private Handler myhandler = new Handler() {!! public void handlemessage(message msg) {!!! if (msg.what == MSG_RAND) {!!!! try {!!!!! Message reply = Message.obtain();!!!!! Bundle bundle = new Bundle();!!!!! bundle.putdouble("rand", Math.random());!!!!! reply.setdata(bundle);!!!!! reply.what = MSG_RAND_REPLY;!!!!! msg.replyto.send(reply);!!!! catch (RemoteException e) { /* Handle exception */!!!!! ;! ;

79 Gestartet & Gebunden

80 Gestartet & Gebunden Services können gestartet und gebunden sein Das Starten, Binden, Stoppen und Schließen der Verbindung erfolgt wie bei gestarteten und gebundenen Services Auch die Verwendung des Service erfolgt analog

81 Gestartet & Gebunden Implementierung public class StartedBoundService extends Service {! public void oncreate() {!! public int onstartcommand(intent intent, int flags, int startid) {!! new Thread(new Runnable() public void run() {!!!! // do some work!!!! stopself();!!!!!, "my.thread.name").start();!! return START_STICKY;!! public void ondestroy() {!

82 Gestartet & Gebunden Implementierung public class StartedBoundService extends Service {! public class LocalBinder extends Binder {!! public StartedBoundService getservice() {!!! return StartedBoundService.this;!!!! private LocalBinder binder = new LocalBinder();! public IBinder onbind(intent intent) {!! return binder;!! public boolean onunbind(intent intent) {!! return true;!! public int onstartcommand(intent intent, int f, int sid) {...! public void oncreate() {...! public void ondestroy() {...

83 Gestartet & Gebunden public class StartedBoundActivity extends Activity { private StartedBoundService myservice; private boolean mbound = false;! private ServiceConnection mconn = new ServiceConnection() { public void onserviceconnected(componentname name, IBinder service) {!!! LocalBinder binder = (LocalBinder) service;!!! myservice = binder.getservice(); mbound = true; public void onservicedisconnected(componentname name) { mbound = false; ;! public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); Intent intent = new Intent(this, StartedBoundService.class); startservice(intent); bindservice(intent, mconn, Context.BIND_AUTO_CREATE); protected void ondestroy() {! super.ondestroy();! stopservice(new Intent(this, StartedBoundService.class));! unbindservice(mconn);

84 Gestartet & Gebunden Wann wird der Service gestoppt? Bei stopself() oder unbind()?

85 Gestartet & Gebunden Wann wird der Service gestoppt? Ist kein Client mehr verbunden, wird bei stopself()/stopservice() gestoppt Ist noch mindestens ein Client verbunden, wird der Service bei stopself()/stopservice() noch nicht gestoppt, erst bei unbind()

86 AIDL

87 AIDL Android Interface Definition Language dient der Definition von Schnittstellen zur Interprozesskommunikation Methodenaufrufe aus anderen Prozessen vergleichbar mit Java RMI, RPC

88 AIDL Erzeugen einer.aidl-datei enthält Schnittstellen, die von außen erreichbar sind vergleichbar mit einem Java Interface wird im src-verzeichnis angelegt

89 AIDL Erzeugen einer.aidl-datei src/de/htwds/emrolab/mada/aidltest/itest.aidl /* package in dem die AIDL Datei angelegt wurde */ package de.htwds.emrolab.mada.aidltest; /* Beispiel Service interface */ interface ITest {! /* gibt einen zufälligen Integer aus der Range zurück */! int getrandomint(int range);

90 AIDL Aus der.aidl-datei wird nach dem Speichern ein gleichnamiges Java Interface im gen-ordner erzeugt Interface enthält abstrakte Stub-Implementierung der Interfaces

91 AIDL den Stub implementieren public class TestImpl extends ITest.Stub {! private Random random = new public int getrandomint(int range) throws RemoteException {!! return random.nextint(range);!!

92 AIDL Veröffentlichung der Schnittstelle Das Interface wird den externen Prozessen über einen Service zur Verfügung gestellt Da die Stub-Klasse von Binder ableitet, kann die Stub-Implementierung direkt in onbind() im Service zurückgegeben werden

93 Gestartet & Gebunden Datentypen Unterstützte Datentypen primitive Datentype (int, double,...) String, CharSequence, List, Map Für alle anderen Datentypen müssen imports geschrieben werden

94 AIDL Service Implementierung public class TestService extends Service {! public class TestImpl extends ITest.Stub public int getrandomint(int range) throws RemoteException {!!! return random.nextint(range);!!!!! private ITest.Stub mbinder = new TestImpl();! private Random random = new public IBinder onbind(intent intent) { return mbinder; /* oncreate(), ondestroy(), onunbind(),... */

95 AIDL Der Service muss im Manifest eingetragen werden <manifest xmlns:android=" package="de.htwds.emrolab.mada.aidltest" android:versioncode="1" android:versionname="1.0" > <application > <service android:name=".testservice" android:enabled="true" android:exported="true" > <intent-filter> <action android:name="de.htwds.emrolab.mada.aidlservice"/> </intent-filter> </service> </application> </manifest>

96 AIDL Den AIDL Service verwenden Nun kann der Service über das AIDL Interface aus anderen Apps genutzt werden Die andere App muss eine Kopie der AIDL-Datei erhalten, um auf die Schnittstellen zugreifen zu können

97 AIDL Den AIDL Service verwenden In der benutzenden App wird eine Kopie der AIDL Datei abgelegt Package beachten! ServiceConnection wie gehabt

98 AIDL Den AIDL Service verwenden public class AidlTestUserActivity extends Activity {! private ITest mtestservice;! private boolean mbound = false;! private ServiceConnection mconn = new ServiceConnection() {!!!! public void onservicedisconnected(componentname name) {!!! mbound = false;!!! mtestservice = null;!!!!!! public void onserviceconnected(componentname name, IBinder service) {!!! mtestservice = ITest.Stub.asInterface(service);!!! mbound = true;!!! ;

99 AIDL Den AIDL Service verwenden public class AidlTestUserActivity extends Activity {! private ITest mtestservice;! private boolean mbound = false;! private ServiceConnection mconn = new ServiceConnection() {... ; public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_aidl_test_user); /* Hier wird Name aus dem Manifest action Attribut eingetragen */ Intent intent = new Intent("de.htwds.emrolab.mada.aidlService"); bindservice(intent, mconn, BIND_AUTO_CREATE); protected void ondestroy() {! unbindservice(mconn);! super.ondestroy();

100 AIDL Den AIDL Service verwenden public class AidlTestUserActivity extends Activity {! private ITest mtestservice;! private boolean mbound = false;! private ServiceConnection mconn = new ServiceConnection() {... ; public void oncreate(bundle savedinstancestate) {... protected void ondestroy() {... private void useservice() {! /* Service Schnittstelle benutzen */! try {!!! mtestservice.getrandomint(10);!! catch (RemoteException e) {!!! /* Handle exception */!!

101 Zusammenfassung

102 Zusammenfassung Gestartete Services Gebundene Services in App extern Gestartete und gebundene Services AIDL

103 Literatur I. Sven Haiges: Android Schnelleinstieg entwickler.press, 2011 II. Thomas Künneth: Android 3 - Apps entwickeln mit dem Android SDK Galileo Press, 2011 III. IV.

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

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

Einführung in die Android App-Entwicklung. Patrick Treyer und Jannis Pinter

Einführung in die Android App-Entwicklung. Patrick Treyer und Jannis Pinter Einführung in die Android App-Entwicklung Patrick Treyer und Jannis Pinter Agenda Was ist Android? Android Versionen Layout, Strings und das Android Manifest Activities, Intents und Services Entwicklungsumgebung

Mehr

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

2. Hintergrundverarbeitung in Android: Services und Notifications Grundlagen zu Services. Service 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

Mehr

Übungen zur Android Entwicklung

Übungen zur Android Entwicklung Übungen zur Android Entwicklung Aufgabe 1 Hello World Entwickeln Sie eine Hello World Android Applikation und laden diese auf den Emulator. Leiten Sie hierfür die Klasse android.app.activity ab und entwerfen

Mehr

Java-Schulung Grundlagen

Java-Schulung Grundlagen Java-Schulung Grundlagen Java 2 Standard Edition JDK 5 / 6 31.05.2008 Marcel Wieczorek 1 Themenübersicht Basiswissen Objektorientierung Datentypen Fehlerbehandlung Sonstiges Einführung Klassen, Strings

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

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

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

Accounts und Kontakte in Android

Accounts und Kontakte in Android Accounts und Kontakte in Android Die letzten Wochen habe ich daran gearbeitet, die Kontakte der AddressTable von Leonardo und mir ins Android Adressbuch zu bringen. Dazu habe ich die AddressManagement-Applikation

Mehr

Mobile App Development. - Activities -

Mobile App Development. - Activities - Mobile App Development - Activities - Inhalt Activity Lifecycle Erstellen Starten & Stoppen Spezielle Activities Ac3vi3es Ac3vi3es Definition Eine Aktivität repräsentiert eine Interaktion mit einem Benutzer

Mehr

Android Theading Android Kurs Stufe 2 (Orangegurt)

Android Theading Android Kurs Stufe 2 (Orangegurt) Android Kurs Stufe 2 (Orangegurt) Inhaltsverzeichnis 1 Threading... 2 2 Umzusetzende Funktionalität... 3 3 Lösung mit eigenem Thread... 4 3.1 Die einfache Thread Lösung... 4 3.2 Thread Lösung mit eigener

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

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum

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 Vorlesung vom 18.4.07, Grundlagen Übersicht 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White Space Zeichen 4 Wortsymbole 5 Interpunktionszeichen 6 Operatoren 7 import Anweisungen 8 Form

Mehr

14.4.2016. Technische Hochschule Georg Agricola WORKSHOP TEIL 3. IKT (Informations- und Kommunikationstechnik) an einer MorseApp erklärt

14.4.2016. Technische Hochschule Georg Agricola WORKSHOP TEIL 3. IKT (Informations- und Kommunikationstechnik) an einer MorseApp erklärt 14.4.2016 Technische Hochschule Georg Agricola WORKSHOP TEIL 3 IKT (Informations- und Kommunikationstechnik) an einer MorseApp erklärt Inhaltsverzeichnis 1. Kurzfassung zur Projekterstellung... 2 2. Morse-Tabelle...

Mehr

Android Apps. Mentoring SS 16. Nicolas Lehmann, Sönke Schmidt, Alexander Korzec, Diane Hanke, Toni Draßdo 03.06.2016

Android Apps. Mentoring SS 16. Nicolas Lehmann, Sönke Schmidt, Alexander Korzec, Diane Hanke, Toni Draßdo 03.06.2016 Android Apps Mentoring SS 16 Nicolas Lehmann, Sönke Schmidt, Alexander Korzec, Diane Hanke, Toni Draßdo 03.06.2016 Wichtige Dateien MainActivity.java activity_main.xml AndroidManifest.xml Die Dateien MainActivity.java,

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

Überleben im Funkloch

Überleben im Funkloch Überleben im Funkloch Offlinefähige Apps für Android entwickeln Christian Janz (@c_janz ) christian.janz@bridging-it.de Christian Janz Consultant im Bereich Softwareentwicklung Java/JEE bei Bridging IT

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

1 Polymorphie (Vielgestaltigkeit)

1 Polymorphie (Vielgestaltigkeit) 1 Polymorphie (Vielgestaltigkeit) Problem: Unsere Datenstrukturen List, Stack und Queue können einzig und allein int-werte aufnehmen. Wollen wir String-Objekte, andere Arten von Zahlen oder andere Objekttypen

Mehr

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden. Grundwissen Informatik Objekt Attribut Methoden Als Objekte bezeichnet man alle Gegenstände, Dinge, Lebewesen, Begriffe oder Strukturen unserer Welt ( Autos, Räume, Bakterien, Lehrer, Schüler, Kunden,

Mehr

Entwickeln für Android OS

Entwickeln für Android OS Entwickeln für Android OS Am Beispiel der WAPLA Wissenschaftliche Arbeitstechniken und Präsentation Lern Applikation Christian Kain Kevin Kain Wolfgang Kremser Gregor Bankhamer Warum Android? Verbreitung

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

3 Objektorientierte Konzepte in Java

3 Objektorientierte Konzepte in Java 3 Objektorientierte Konzepte in Java Bisherige Beobachtungen zu Objekten: werden in Klassen zusammengefasst besitzen Eigenschaften und Verhalten verbergen private Informationen werden geboren, leben und

Mehr

Musterlösung Übungsblatt 2 Netzprogrammierung WS 05/06

Musterlösung Übungsblatt 2 Netzprogrammierung WS 05/06 Musterlösung Übungsblatt 2 Netzprogrammierung WS 05/06 Aufgabe 1 Bitte schreiben Sie ein RMI Objekt, das eine Person repräsentiert. Es soll die folgende Schnittstelle implementieren: public interface Person

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

Programmieren in Java

Programmieren in Java Programmieren in Java objektorientierte Programmierung 2 2 Zusammenhang Klasse-Datei In jeder *.java Datei kann es genau eine public-klasse geben wobei Klassen- und Dateiname übereinstimmen. Es können

Mehr

2.2 Prozesse in Java

2.2 Prozesse in Java 2.2 Prozesse in Java! Java sieht kein Schlüsselwort für Prozesse vor, sondern bestimmte Klassen und Schnittstellen. Mit anderen Worten: der Prozessbegriff wird mit Mitteln der Objektorientierung eingeführt.

Mehr

i n g e n i e u r b ü r o f ü r s o f t w a r e t e c h n o l o g i e w w w. v o e l t e r. d e Servlet Debugging

i n g e n i e u r b ü r o f ü r s o f t w a r e t e c h n o l o g i e w w w. v o e l t e r. d e Servlet Debugging Servlet Debugging Markus Völter, voelter@acm.org, www.voelter.de Bei der Arbeit mit Servlets kommt man recht schnell an den Punkt, an dem man Servlets vernünftig testen oder debuggen will. Mit Hilfe des

Mehr

5. Threads, Serverprozesse und Benachrichtigungen

5. Threads, Serverprozesse und Benachrichtigungen 5. Threads, Serverprozesse und Benachrichtigungen Threads allgemein Threads in Android: Handler und Messages Services: Local, Remote, Binding Benachrichtigungen Entwicklung mobiler Anwendungen Europäische

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

Java Einführung Methoden in Klassen

Java Einführung Methoden in Klassen Java Einführung Methoden in Klassen Lehrziel der Einheit Methoden Signatur (=Deklaration) einer Methode Zugriff/Sichtbarkeit Rückgabewerte Parameter Aufruf von Methoden (Nachrichten) Information Hiding

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

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

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

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

Fragen zur OOP in Java

Fragen zur OOP in Java - 1 - Inhalt Was bedeutet OOP?... 2 Was versteht man unter einer Klasse?... 2 Wie nennt man die Mitglieder einer Klasse?... 2 Wie erzeugt man Objekte?... 2 Wie greife ich auf Member einer Klasse zu?...

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

14 Abstrakte Klassen, finale Klassen, Interfaces

14 Abstrakte Klassen, finale Klassen, Interfaces Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält, heißt ebenfalls abstrakt. Für eine abstrakte Klasse

Mehr

SEMINARVORTRAG ANDROID ENTWICKLUNG ETIENNE KÖRNER EMBEDDED SYSTEMS SS2013 - HSRM

SEMINARVORTRAG ANDROID ENTWICKLUNG ETIENNE KÖRNER EMBEDDED SYSTEMS SS2013 - HSRM SEMINARVORTRAG ANDROID ENTWICKLUNG ETIENNE KÖRNER EMBEDDED SYSTEMS SS2013 - HSRM ÜBERSICHT Android Android Dalvik Virtuelle Maschine Android und Desktop Applikationen Android Entwicklung Tools R Activity

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

Mobile App Development. - Alarm -

Mobile App Development. - Alarm - Mobile App Development - Alarm - Inhalt Alarme AlarmManger Wake locks 2 Alarm Alarm Oft ist es notwendig eine App zu starten, auch wenn der Benutzer nicht mit ihr interagiert Starten von Activities zu

Mehr

14 Abstrakte Klassen, finale Klassen, Interfaces. Auswertung von Ausdrücken. Beispiel. Abstrakte Methoden und Klassen

14 Abstrakte Klassen, finale Klassen, Interfaces. Auswertung von Ausdrücken. Beispiel. Abstrakte Methoden und Klassen Auswertung von Ausdrücken Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält, heißt ebenfalls abstrakt.

Mehr

EINFÜHRUNG IN DIE PROGRAMMIERUNG

EINFÜHRUNG IN DIE PROGRAMMIERUNG EINFÜHRUNG IN DIE PROGRAMMIERUNG FORTGESCHRITTENE KONZEPTE Tobias Witt 26.03.2014 tobias.witt@hhu.de 25.12.01.30 Bürozeiten: 09 Uhr - 12 Uhr FEHLERBEHANDLUNG KLASSISCHER ANSATZ Fehlercode als Rückgabewert

Mehr

Android GUI Entwicklung

Android GUI Entwicklung Android GUI Entwicklung Aktuelle Technologien verteilter Java Anwendungen Referent: Stefan Haupt Hello World! Agenda Einführung & Motivation Android Applikationen UI-Komponenten Events Ressourcen Kommunikation

Mehr

Kurzanleitung RMI-Beispiel: gettime Seite 1 / 7. RMI Projekt gettime 1

Kurzanleitung RMI-Beispiel: gettime Seite 1 / 7. RMI Projekt gettime 1 Kurzanleitung RMI-Beispiel: gettime Seite 1 / 7 Inhaltsverzeichnis RMI Projekt gettime 1 Schritt 1: Interface Klasse definieren 1 Schritt 2: Implementation Class definieren 2 Schritt 3: RMI Compiler erstellen

Mehr

Naviki GPS-Anwendungsentwicklung für Mobiltelefone www.naviki.org

Naviki GPS-Anwendungsentwicklung für Mobiltelefone www.naviki.org Naviki GPS-Anwendungsentwicklung für Mobiltelefone www.naviki.org Fachhochschule Münster Labor für Software Engineering luzar@fh-muenster.de www.naviki.org 1 Naviki die Idee www.naviki.org 2 Wie funktioniert

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

Einführung in die Programmierung Blockkurs Java

Einführung in die Programmierung Blockkurs Java Michael Bader 8. 12. April 2002 Freitag Inhaltsübersicht Exceptions und Errors Ausnahmebehandlung: try/catch/finally Threads Zugriffskontrolle bei gemeinsamen Variablen: synchronized, wait(), notify()

Mehr

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

Übung 1 mit C# 6.0 MATTHIAS RONCORONI Übung 1 mit C# 6.0 MATTHIAS RONCORONI Inhalt 2 1. Überblick über C# 2. Lösung der Übung 1 3. Code 4. Demo C# allgemein 3 aktuell: C# 6.0 mit.net-framework 4.6: Multiparadigmatisch (Strukturiert, Objektorientiert,

Mehr

Anleitung. Ein einfaches RMI-Beispiel. (ab Java 5.0) c Y. Pfeifer. (Juni 2014)

Anleitung. Ein einfaches RMI-Beispiel. (ab Java 5.0) c Y. Pfeifer. (Juni 2014) Anleitung Ein einfaches RMI-Beispiel (ab Java.0) c Y. Pfeifer (Juni 014) 1 Ein einfaches RMI-Beispiel Vorgehensweise: 1. Java Projekt anlegen. Zwei Packages server & client erstellen Auf der Server-Seite

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung Kapitel 6 Vererbung Vererbung 1 Ziele Das Vererbungsprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen

Mehr

Parallele und funktionale Programmierung Wintersemester 2015/ Übung Abgabe bis , 10:00 Uhr

Parallele und funktionale Programmierung Wintersemester 2015/ Übung Abgabe bis , 10:00 Uhr 3. Übung Abgabe bis 10.11.2015, 10:00 Uhr Aufgabe 3.1: Java-Synchronisation a) An welchen Stellen im Code kann das Schlüsselwort synchronized verwendet werden? b) Wie nennt sich die Synchronisations-Art,

Mehr

Datenmanagement in Android-Apps. 16. Mai 2013

Datenmanagement in Android-Apps. 16. Mai 2013 Datenmanagement in Android-Apps 16. Mai 2013 Überblick Strukturierung von datenorientierten Android-Apps Schichtenarchitektur Möglichkeiten der Datenhaltung: in Dateien, die auf der SDCard liegen in einer

Mehr

Problemstellung. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 24: Reflection 1. IDE und automatische Tests.

Problemstellung. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 24: Reflection 1. IDE und automatische Tests. Universität Osnabrück 1 Problemstellung 3 - Objektorientierte Programmierung in Java Vorlesung 24: Reflection 1 SS 2006 Prof. Dr. Frank M. Thiesing, FH Osnabrück Um ein Objekt anzulegen, eine seiner Methoden

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

Kapitel 6. Vererbung

Kapitel 6. Vererbung 1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben

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

Einführung in Javadoc

Einführung in Javadoc Einführung in Javadoc Johannes Rinn http://java.sun.com/j2se/javadoc Was ist Javadoc? Javadoc ist ein Werkzeug, dass eine standardisierte Dokumentation für die Programmiersprache Java unterstützt. Vorteil:

Mehr

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java: Technische Informatik für Ingenieure (TIfI) WS 2005/2006, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Datenstrukturen 9. Datenstrukturen Daten zusammenfassen

Mehr

JOGGA Der Jogging-Companion

JOGGA Der Jogging-Companion JOGGA Der Jogging-Companion GLIEDERUNG: (1) Idee (2) Funktionen (3) Codebeispiele IDEE: Jeder Jogger kennt das Problem: Man rafft sich auf um eine Runde zu laufen, schwitzt während dessen ohne Ende und

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung 1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben

Mehr

Der lokale und verteilte Fall

Der lokale und verteilte Fall Lokale Beans Der lokale und verteilte Fall RemoteClient Lokaler Client (JSP) RemoteSession/Entity-Bean Lokale Session/Entity-Bean 2 Lokale Beans Die bisher vorgestellten EJBswaren immer in der Lage auf

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java Dateien lesen und schreiben 2 Übersicht der heutigen Inhalte File Streams try-with-resources Properties csv-dateien 3 Klasse File Die Klasse java.io.file bietet Unterstützung im Umgang

Mehr

Java Concurrency Utilities

Java Concurrency Utilities Java Concurrency Utilities Java unterstützt seit Java 1.0 Multithreading Java unterstützt das Monitorkonzept mittels der Schlüsselworte synchronized und volatile sowie den java.lang.object Methoden wait(),

Mehr

Vorkurs C++ Programmierung

Vorkurs C++ Programmierung Vorkurs C++ Programmierung Klassen Letzte Stunde Speicherverwaltung automatische Speicherverwaltung auf dem Stack dynamische Speicherverwaltung auf dem Heap new/new[] und delete/delete[] Speicherklassen:

Mehr

Funktionale und Objekt-Orientierte Programmierkonzepte

Funktionale und Objekt-Orientierte Programmierkonzepte Funktionale und Objekt-Orientierte Programmierkonzepte Prof. Marc Fischlin, Wintersemester 15/16 Kapitel 17: GUI, Threads und verschachtelte Klassen 13. Oktober 2010 Dr.Marc Fischlin Kryptosicherheit 1

Mehr

Remote Method Invocation

Remote Method Invocation Remote Method Invocation Aufruf von Methoden über die Grenzen der VM hinweg. Javaprozesse der rufenden und gerufenen Methode können auf verschiedenen Hosts laufen. Eine RMI-Applikation besteht aus dem

Mehr

E.1 Object Request Brokers

E.1 Object Request Brokers E Überblick über die 4. Übung E Überblick über die 4. Übung 1 Komponenten eines ORBs Lösungsskizze Aufgabe 2 RPC und ORB Aufrufsemantiken Hinweise Aufgabe 3 Kommunikationsschicht: tauscht Daten zwischen

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

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

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

Institut für Informatik. Endterm Klausur zu Informatik I 20. Februar 2010

Institut für Informatik. Endterm Klausur zu Informatik I 20. Februar 2010 Technische Universität München Institut für Informatik Lehrstuhl für Computer Graphik & Visualisierung Prof. R. Westermann Endterm Klausur zu Informatik I 20. Februar 2010 ˆ Die Arbeitszeit beträgt 120

Mehr

Mobile Systeme Android 07.04.2011

Mobile Systeme Android 07.04.2011 Mobile Systeme Android 07.04.2011 Android Plattform/Betriebssystem für mobile Endgeräte wie z.b. Smartphones Basiert auf dem Linux Kernel Bis auf grundlegende Prozesse werden alle Anwenden mithilfe einer

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

Java - Webapplikationen

Java - Webapplikationen Java - Webapplikationen Bestandteile (HTTP,, JSP) Aufbau (Model View Controller) Datenverwaltung (Java Beans, Sessions) Entwicklung (Projektstruktur, Sysdeoplugin für Eclipse) 17. Januar 2006 Jan Hatje

Mehr

Software Engineering II

Software Engineering II Software Engineering II Codegenerierung für den SmartIO Editor mit der Modeling Workflow Engine Wintersemester 10/111 Fachgebiet Software Engineering Albert Zündorf / Wiederholung Bisher im Laufe des Semesters

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Tafelübung 04 Referenzen, Overloading, Klassen(hierarchien) Clemens Lang T2 18. Mai 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/13 Organisatorisches Nächster Übungstermin

Mehr

Distributed Computing Group

Distributed Computing Group JAVA TUTORIAL Distributed Computing Group Vernetzte Systeme - SS 06 Übersicht Warum Java? Interoperabilität grosse und gut dokumentierte Library weit verbreitet Syntax sehr nahe an C Erfahrung: Java wird

Mehr

Datenbankanwendungsprogrammierung Crashkurs Java

Datenbankanwendungsprogrammierung Crashkurs Java Datenbankanwendungsprogrammierung Crashkurs Java Denny Priebe Datenbankanwendungsprogrammierung p. Unterschiede zu C, C++ typedefs, Präprozessor Strukturen, Unions globale Funktionen Mehrfachvererbung

Mehr

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck Javadoc Programmiermethodik Eva Zangerle Universität Innsbruck Überblick Einführung Java Ein erster Überblick Objektorientierung Vererbung und Polymorphismus Ausnahmebehandlung Pakete und Javadoc Spezielle

Mehr

Java - Programmierung - Objektorientierte Programmierung 1

Java - Programmierung - Objektorientierte Programmierung 1 Java - Programmierung - Objektorientierte Programmierung 1 // Klassen und Objekte public class KlaObj public static void main(string args []) Klasse1 a; a = new Klasse1("heute", 47); Klasse1 b = new Klasse1

Mehr

Große Übung Praktische Informatik 1

Große Übung Praktische Informatik 1 Große Übung Praktische Informatik 1 2005-12-08 fuessler@informatik.uni-mannheim.de http://www.informatik.uni-mannheim.de/pi4/people/fuessler 1: Announcements / Orga Weihnachtsklausur zählt als Übungsblatt,

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

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

Mobile App Development. - Grafische Oberflächen 2 -

Mobile App Development. - Grafische Oberflächen 2 - Mobile App Development - Grafische Oberflächen 2 - Inhalt Dimensionen Layouting Menüs Activities starten Übung Dimensionen Dimensionen Analog zu Strings und Farben können Dimensionen definiert werden Dimensionen

Mehr

1 Abstrakte Klassen, finale Klassen und Interfaces

1 Abstrakte Klassen, finale Klassen und Interfaces 1 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

Synchronisation in Java. Invisible Web

Synchronisation in Java. Invisible Web Synchronisation in Java Studienprojekt Invisible Web Tang Zhihong Synchronisation in Java Synchronisationsproblem Monitore Wait und notify PipedInputStream und PipedOutputStream Synchronisation von Collections

Mehr

Ausnahmebehandlung in Java

Ausnahmebehandlung in Java Ausnahmebehandlung in Java class A { void foo() throws Help, SyntaxError {... class B extends A { void foo() throws Help { if (helpneeded()) throw new Help();... try {... catch (Help e) {... catch (Exception

Mehr

C# - Einführung in die Programmiersprache Methoden. Leibniz Universität IT Services

C# - Einführung in die Programmiersprache Methoden. Leibniz Universität IT Services C# - Einführung in die Programmiersprache Methoden Leibniz Universität IT Services 02.07.12 Methoden... sind Subroutinen in einer Klasse. können einen Wert an den Aufrufer zurückgeben. verändern die Eigenschaften

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

Betriebssysteme. Wintersemester 2015. Kapitel 2 Prozess und Threads. Patrick Kendzo ppkendzo@gmail.com

Betriebssysteme. Wintersemester 2015. Kapitel 2 Prozess und Threads. Patrick Kendzo ppkendzo@gmail.com Betriebssysteme Wintersemester 2015 Kapitel 2 Prozess und Threads Patrick Kendzo ppkendzo@gmail.com Programm Inhalt Einleitung Prozesse und Threads Speicherverwaltung Eingabe und Ausgabe Dateisysteme Zusammenfassung

Mehr

Smartphone Entwicklung mit Android und Java

Smartphone Entwicklung mit Android und Java Smartphone Entwicklung mit Android und Java predic8 GmbH Moltkestr. 40 53173 Bonn Tel: (0228)5552576-0 www.predic8.de info@predic8.de Was ist Android Offene Plattform für mobile Geräte Software Kompletter

Mehr

Codegenerierung am Beispiel des PIMAR-Projekts PhoneBook. 14. Januar 2015

Codegenerierung am Beispiel des PIMAR-Projekts PhoneBook. 14. Januar 2015 Codegenerierung am Beispiel des PIMAR-Projekts PhoneBook 14. Januar 2015 Überblick Modell- und Codegenerierung (M2C, C2M) Modellinterpretation vs. Modellübersetzung PIMAR Code-Generierung am Beispiel des

Mehr

Java Einführung Abstrakte Klassen und Interfaces

Java Einführung Abstrakte Klassen und Interfaces Java Einführung Abstrakte Klassen und Interfaces Interface Interface bieten in Java ist die Möglichkeit, einheitliche Schnittstelle für Klassen zu definieren, die später oder/und durch andere Programmierer

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

II.4.2 Abstrakte Klassen und Interfaces - 1 -

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

Mehr