Nebenläufige Anwendungen in Java (J2SE, Rich Client, J2EE)
|
|
- Pamela Kaufer
- vor 8 Jahren
- Abrufe
Transkript
1 CNAM Wintersemester 2014 / 2015 Nebenläufige Anwendungen in Java (J2SE, Rich Client, J2EE) Im Rahmen von: Betriebssysteme und nebenläufige Anwendungen
2 Agenda Nebenläufigkeit in Java Anwendungen Basisfunktionen in allen Java Objekten Threads Thread Pools Fork/Join Monitor Semaphores Besonderheiten in Container Managed und Plug-In Umgebungen WorkManager Job APIs
3 Java unterstützt Nebenläufigkeit seit der ersten Version Basisfunktionen in Object Java wurde als Sprache für nebenläufige Anwendungen konzipiert Jedes Java Objekt erbt von java.lang.object notifyall wait notify Jedes Objekt erhält durch die Objektspezialisierung automatisch die Methoden wait, notify und notifyall Dadurch hat jedes Objekt eine einfache start/stop- Logik im Bauch java.lang. Object Thread Programmierung - Basics Threads werden durch Vererbung von Thread oder durch Implementierung des Runnable Interfaces angelegt Objekte, welche Runnable implementieren müssen über eine Instance von Thread gestartet werden Die Laufzeitlogik wird durch Überschreibung der run Methode implementiert Callable (ab 1.5) ermöglicht Rückgabewerte Über die statische Methode sleep kann ein Thread schlafen gelegt werden java.lang. Runnable run java.lang. Thread start sleep
4 Einfache Threads public class SetupThreads public class Runner implements Runnable public void run() //do something useful public class MyFirstThread extends Thread public void run() //do something useful public SetupThreads() new MyFirstThread().start(); new Thread(new Runner()).start(); public static void main(string[] args) new SetupThreads();
5 Threads mit Schlafzeit public class SetupThreadsTwo public static final int SLEEP_TIME = 200; public class MySecondThread extends Thread public void run() try Thread.sleep(SetupThreadsTwo.SLEEP_TIME); catch (InterruptedException e) e.printstacktrace(); public SetupThreadsTwo(int count) MySecondThread thread [] = new MySecondThread[count]; for (int i=0; i < thread.length;i++) thread[i] = new MySecondThread(); thread[i].start(); for (MySecondThread handle : thread) try handle.join(); catch (InterruptedException e) e.printstacktrace();
6 Werten wir das letzte Beispiel mit Zahlen aus. public static void main(string[] args) for(int i=1000;i<=10000; i=i+1000) new SetupThreadsTwo(i); long timetaken = System.currentTimeMillis() - start; long offsettoruntime = timetaken - SetupThreadsTwo.SLEEP_TIME; double setuptimeperthread = (double)offsettoruntime/(double) count; System.out.println("Result: Number threads "+count+" Time taken " + timetaken + " ms Offset to sleep time "+offsettoruntime+" ms Setup time per Thread "+setuptimeperthread+" ms"); Gebrauchte Zeit = Endzeit Startzeit Offset Zeit = Gebrauchte Zeit Wartezeit Thread Thread Management Zeit = Offset Zeit Anzahl Threads Result: Number threads 1000 Time taken 267 ms Offset to sleep time 67 ms Setup time per Thread ms Result: Number threads 2000 Time taken 315 ms Offset to sleep time 115 ms Setup time per Thread ms Result: Number threads 3000 Time taken 374 ms Offset to sleep time 174 ms Setup time per Thread ms Result: Number threads 4000 Time taken 447 ms Offset to sleep time 247 ms Setup time per Thread ms Result: Number threads 5000 Time taken 502 ms Offset to sleep time 302 ms Setup time per Thread ms Result: Number threads 6000 Time taken 567 ms Offset to sleep time 367 ms Setup time per Thread ms Result: Number threads 7000 Time taken 638 ms Offset to sleep time 438 ms Setup time per Thread ms Result: Number threads 8000 Time taken 702 ms Offset to sleep time 502 ms Setup time per Thread ms Result: Number threads 9000 Time taken 779 ms Offset to sleep time 579 ms Setup time per Thread ms Result: Number threads Time taken 852 ms Offset to sleep time 652 ms Setup time per Thread ms
7 Was bringen Threads. Beispiel: Zerlegen von 1000 Zahlen Lauf/ Threadanzahl Summe Durchschnitt 19,2 Sek 8,5 Sek 6,3 Sek 3,4 Sek 3,2 Sek
8 Pooling von Threads Basisfunktionen von Thread Pools Thread Pools sind fester Bestandteil der Concurency API in Java Pools können fix, dynamisch oder scheduled sein Wurde wie viele Erweiterungen über den JSR Prozess in Java aufgenommen (JSR 166) Seit Java 5 im Framework verankert Ältere Java Versionen benötigen externe Frameworks new Cached Thread Pool new Fixed Thread Pool java.util. concurrent.executors new Scheduled Thread Pool Das Framework enthält neben den allgemeinen Vorteilen von Thread Pools auch diese Vorteile: Entlastung des Entwicklers (Thread Handling ist im Framework gekapselt) Damit ebenfalls eine best-practise Implementierung Man spart sich den manuellen Umgang mit notify, wait, synchronize etc. java.util. concurren. Executor Service shutdown execute
9 Verwendung von Thread Pools public class SetupThreadPool public class Runner implements Runnable public void run() try Thread.sleep(200); catch (InterruptedException e) e.printstacktrace(); public void startallthreads(int poolsize) long start = System.currentTimeMillis(); ExecutorService executor = Executors.newFixedThreadPool(poolsize); for (int i = 0; i < 20; i++) executor.execute(new Runner()); executor.shutdown(); while (!executor.isterminated()) System.out.println("Pool: "+poolsize+" take: "+ (System.currentTimeMillis()-start)); public static void main(string[] args) for(int i=1;i<=20;i++) new SetupThreadPool().startAllThreads(i); Pool: 1 take: 4005 Pool: 2 take: 2001 Pool: 3 take: 1400 Pool: 4 take: 1000 Pool: 5 take: 800 Pool: 6 take: 800 Pool: 7 take: 600 Pool: 8 take: 600 Pool: 9 take: 600 Pool: 10 take: 401 Pool: 11 take: 400 Pool: 12 take: 401 Pool: 13 take: 401 Pool: 14 take: 400 Pool: 15 take: 401 Pool: 16 take: 400 Pool: 17 take: 400 Pool: 18 take: 400 Pool: 19 take: 400 Pool: 20 take: 203
10 Weitere Implementierungen in Java 1.5 Barrieren class WorkerRun implements Runnable private CyclicBarrier barrier; Barrieren ermöglichen das Warten auf eine Gruppe von Threads Üblicherweise wird der CyclicBarrier verwendet Der CyclicBarrier gibt eine Anzahl an Threads an, welche durchlaufen werden müssen Nach Abschluß wird ein weiterer Thread angestoßen public WorkerRun(CyclicBarrier barrier) this.barrier = barrier; public void run() try barrier.await(); catch (Exception e) Queue Über Queues können ThreadSafe Queues generiert werden Dies bietet sich besonders für Consumer Provider Anwendungen an Beispiel: Eine BlockingQueue aufbauen und mit take und put aus mehreren Threads arbeiten public void start() CyclicBarrier barrier = new CyclicBarrier (3, new AbschlussRun()); for (int i = 0; i < 3; i++) new Thread( new WorkerRun(barrier) ).start();
11 Fork Join Ab Java 1.7 sind Funktionen ForkJoin neu im Java SDK Die Grundidee ist die work-stealing Prinzip Im Gegensatz zum ThreadPool warten sie nicht per join auf das Ergebnis von allen Workern. Die Teil der Arbeit wird auf die freien Arbeitsprozesse verteilt. In der Java Doku wird angegeben, dass damit die Systemressourcen besser aufgeteilt werden java.util. concurrent.recursive Task java.util. concurrent.forkjoin Pool java.util. concurrent.forkjoin Task java.util. concurrent.recursive Action Im Code wird ein ForkJoinPool aufgebaut Die Arbeit und der fork() wird durch eine RecursiveAction oder RecursiveTask durchgeführt (Action hat kein Return)
12 Arbeiten mit Monitor Es ist möglich kritische Bereiche in Java anzulegen Einzelne Abschnitte können mit synchronized gesichert werden Ebenfalls kann das Schlüsselwort auf ganze Methoden angewendet werden Durch den wait / notify Mechanismus können andere Threads über den nun freien kritischen Bereich benachrichtigt werden public class Runner implements Runnable int criticalvariable; public void run() synchronized (this) criticalvariable ++; Ebenfalls kann das Schlüsselwort volatile auf Variablen angewendet werden Diese Variablen haben das Prinzip lesen vor schreiben und erst den Cache leeren criticalarea(2); //non critical code public synchronized void criticalarea(int v) CriticalVariable += v;
13 Sperren Ab Java 1.5 sind ebenfalls Lock Interfaces und Lock Klassen in der Implementierung Mit diesen Implementierungen wird das sperren und entsperren mittels Bedingungen ermöglicht Im Gegensatz zum klassischen Monitor gibt es zahlreiche Vorteile Funktioniert trylock nicht, blockiert der Code nicht Locking kann an einzelne Bedingungen geknüpft werden Lock / Unlock ist Methodenübergreifend Schreib- und Leselock Lock sperre = new ReentrantLock(); sperre.trylock(); //something critical sperre.unlock(); ReadWriteLock readwritelock = new ReentrantReadWriteLock(); readwritelock.readlock().lock(); readwritelock.readlock().unlock(); readwritelock.writelock().lock(); readwritelock.writelock().unlock();
14 Atomic Implementierungen Ab Java 1.5 sind verschiedene atomare Objekte in der JVM vorhanden Die Implementierungen betreffen Repräsentationen von primitiven Datentypen wie z.b. int, long, boolean Arrays HashMaps FieldUpdater (als wrapper) Die atomaten Klassen bieten einen Angebot an nicht unterbrechbaren Funktionen zur Verfügung. Dazu gehört zum Beispiel das lesen und addieren, erhöhen und lesen, lesen und erhöhen public class AtomicSample private AtomicInteger zaehler = new AtomicInteger(0); public void hochzaehlen() zaehler.incrementandget(); public int getzaehler() return zaehler.get();
15 Alternative zum Monitor Semaphoren Mit der Concurrency API haben auch die Semaphoren Einzug in Java gehalten. Sie bieten eine gute Alternative zum Monitor (synchronized) Semaphoren sollten static definiert werden, um übergreifend verwendet zu werden Mit acquire und release können Semaphoren gebucht werden. Bei Acquire blockt der Code bis die semaphore wieder frei ist Alternativ gibt es den tryacquire Aufruf, der ein boolean zurückliefert import java.util.concurrent.semaphore; public class SemaHandling extends Thread private static Semaphore semaphore = new Semaphore(1); public void run() try semaphore.acquire(); //Alternative: semaphore.tryacquire(); catch (InterruptedException e) e.printstacktrace(); //Kritischer Code semaphore.release(); public static void main(string[] args) new SemaHandling().start();
16 Nebenläufigkeit in J2EE und Eclipse Apps Auf dem Application Server In J2EE Umgebungen sollten alle Threads vom Container verwaltet werden und ein Wildwuchs an Threads muss vermieden werden Bei hosted AppServern und Cloud-Lösungen wird dieser Ansatz um so wichtiger. Der Server benötigt die volle Kontrolle über alle Arbeitsprozesse Aktuell steigt in der Industrie allerdings auch der Bedarf nach Konsolidierung Ebenfalls stieg der Wunsch nach Batch Processing in den letzten Jahren deutlich an Interessante Alternativen bieten ebenfalls die Async Schnittstellen von J2EE Komponenten wie Services, Servlets und Beans JSR 237 Timer & WorkManager wurde zurückgezogen und mit JSR 236 zusammengeführt JSR 236 Concurrency Utilities for Java EE Teil von JEE 7 Im Rich Client Eclipse hat sich in den letzten Jahren als bevorzugte Komponente für viele Rich Client Lösungen durchgesetzt Leider verwenden viele Anwendungen Threads direkt und einige Plug-Ins starten nach dem Laden bis zu 20 Threads auf Vorrat Gerade für nebenläufige Arbeitsvorgänge bietet Eclipse neben den Unit of Work, Jobs, Progress Monitor noch viele andere Build-in Funktionen Die direkte Verwendung von Threads umgeht dabei diese Standardfunktionen und bestpractise Patterns
17 Setup von WorkManager WorkManager werden im AppServer (z.b. IBM WebSphere) bekanntgemacht. Jede Anwendung referenziert die entsprechenden Einträge in der Deployment Description <resource-ref> <res-ref-name>wm/utlul</res-ref-name> <res-type>commonj.work.workmanager</res-type> <res-auth>container</res-auth> <res-sharing-scope>shareable</res-sharing-scope> </resource-ref>
18 Beispiele CommonJ WorkManager public class MyWorker implements Work public void run () //logic InitialContext ctx = new InitialContext(); WorkManager wm = (WorkManager) ctx.lookup( java:comp/env/wm/meinwm ); MyWorker work1 = new MyWorker(); WorkItem item1; Item1=wm.schedule(work1 ); Collection col1 = new ArrayList(); col1.add(item1); wm.waitforall(col1, WorkManager.INDEFINITE); Collection finished = wm.waitforany(col1, 1000);
19 Beispiel für den Rich Client Eclipse Jobs Job job = new Job("My protected IStatus run(iprogressmonitor monitor) // do something long running //... // If you want to update the UI sync.asyncexec(new public void run() // do something in the user interface // e.g. set a text field ); return Status.OK_STATUS; ; // Start the Job job.schedule();
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
MehrSchedulingund Thread-Ausführer
Schedulingund Thread-Ausführer Scheduling Ein Scheduler arbeitet Programmstücke nach einer festen Zeitspanne oder zu einer fixen Zeitpunkt wiederholt oder einmal ab. Notwendigkeiten für Scheduling sind
MehrJava 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(),
MehrProgrammieren 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
MehrEinführung in die Programmierung
Technische Universität München WS 2003/2004 Institut für Informatik Prof. Dr. Christoph Zenger Testklausur Einführung in die Programmierung Probeklausur Java (Lösungsvorschlag) 1 Die Klasse ArrayList In
MehrVerteilte Systeme CS5001
Verteilte Systeme CS5001 Th. Letschert TH Mittelhessen Gießen University of Applied Sciences Client-Server-Anwendungen: Vom passiven (shared state) Monitor zum aktiven Monitor Monitor (Hoare, Brinch-Hansen,
MehrÜbung: Verwendung von Java-Threads
Übung: Verwendung von Java-Threads Ziel der Übung: Diese Übung dient dazu, den Umgang mit Threads in der Programmiersprache Java kennenzulernen. Ein einfaches Java-Programm, das Threads nutzt, soll zum
MehrObjektorientierte Programmierung. Kapitel 12: Interfaces
12. Interfaces 1/14 Objektorientierte Programmierung Kapitel 12: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2012/13 http://www.informatik.uni-halle.de/ brass/oop12/
MehrMultithreading ab Java 5: Die neuen Concurrency APIs
Multithreading ab Java 5: Die neuen Concurrency APIs Java Concurrency Spezifiziert in JSR166 Ab Java 5 fester Bestandteil von Java Durch zusätzliche Library auch vor Java 5 vorhanden backport-util-concurrent
MehrJava: Vererbung. Teil 3: super() www.informatikzentrale.de
Java: Vererbung Teil 3: super() Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und IMMER zuerst den Konstruktor der Elternklasse auf! Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und
MehrJava Einführung Collections
Java Einführung Collections Inhalt dieser Einheit Behälterklassen, die in der Java API bereitgestellt werden Wiederholung Array Collections (Vector, List, Set) Map 2 Wiederholung Array a[0] a[1] a[2] a[3]...
MehrVerhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...
PIWIN I Kap. 8 Objektorientierte Programmierung - Vererbung 31 Schlüsselwort: final Verhindert, dass eine Methode überschrieben wird public final int holekontostand() {... Erben von einer Klasse verbieten:
MehrC# im Vergleich zu Java
C# im Vergleich zu Java Serhad Ilgün Seminar Universität Dortmund SS 03 Gliederung Entstehung von C# und Java Überblick von C# und Java Unterschiede und Gemeinsamkeiten Zusammenfassung und Ausblick Entstehung
MehrEinführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005
Einführung in Java PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005 Gliederung 1. Was ist Java / Geschichte von Java 2. Prinzip der Plattformunabhängigkeit 3. Wie kommt man vom Quellcode zum Programm
MehrÜbung 8: Semaphore in Java (eigene Implementierung)
Übung 8: Semaphore in Java (eigene Implementierung) Ziel der Übung: Diese Übung dient dazu, eine eigene Implementierung einer Semaphore-Klasse in der Programmiersprache Java kennenzulernen. Anschließend
MehrDer 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
MehrWebService in Java SE und EE
Schlüsselworte Java, JAX-WS, JAX-RS, JAXB, XML. Einleitung WebService in Java SE und EE Wolfgang Nast MT AG Ratingen Es werden die Mölichkeiten von WebServices in Java SE und EE, mit SOAP und REST gezeigt.
MehrKlausur zur Einführung in die objektorientierte Programmierung mit Java
Klausur zur Einführung in die objektorientierte Programmierung mit Java im Studiengang Informationswissenschaft Prof. Dr. Christian Wolff Professur für Medieninformatik Institut für Medien-, Informations-
MehrMobile 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
Mehr5. 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
MehrInnere Klassen in Java
Innere Klassen in Java SS 2012 Prof. Dr. Margarita Esponda Innere Klassen Klassen- oder Interfacedefinitionen können zur besseren Strukturierung von Programmen verschachtelt werden Eine "Inner Class" wird
Mehram Beispiel von JUnit
Aufbau eines Testwerkzeugs am Beispiel von JUnit Üblicher Ansatz für Tests und Fehlersuche: Print-Befehle, Debugger-Ausdrücke, Test-Skripte möglichst über globale Variable debug steuerbar Command Pattern
MehrMusterlösungen zur Klausur Informatik 3
Musterlösungen zur Klausur Informatik 3 Justus-Liebig-Universität Gießen Wintersemester 2003/2004 Aufgabe 1 (6 Punkte) Man kreuze bei den folgenden Deklarationen und Definitionen jeweils an, ob sie aus
MehrJava Einführung Umsetzung von Beziehungen zwischen Klassen. Kapitel 7
Java Einführung Umsetzung von Beziehungen zwischen Klassen Kapitel 7 Inhalt Wiederholung: Klassendiagramm in UML Java-Umsetzung von Generalisierung Komposition Assoziationen 2 Das Klassendiagramm Zweck
MehrMCRServlet Table of contents
Table of contents 1 Das Zusammenspiel der Servlets mit dem MCRServlet... 2 1 Das Zusammenspiel der Servlets mit dem MCRServlet Als übergeordnetes Servlet mit einigen grundlegenden Funktionalitäten dient
MehrKapitel 4. Monitore und wechselseitiger Ausschluss
Seite 1 Kapitel 4 Monitore und wechselseitiger Ausschluss Prof. Dr. Rolf Hennicker 28.05.2015 4.1 Interferenzen Seite 2 Parallel ablaufende Prozesse können sich gegenseitig (störend) beeinflussen. Beispiel
MehrDas erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.
Einfache Ein- und Ausgabe mit Java 1. Hallo-Welt! Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden. /** Die Klasse hello sendet einen
MehrProf. Dr. Uwe Schmidt. 21. August 2007. Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252)
Prof. Dr. Uwe Schmidt 21. August 2007 Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252) Zeit: 75 Minuten erlaubte Hilfsmittel: keine Bitte tragen Sie Ihre Antworten und fertigen
MehrEinführung in die Java- Programmierung
Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Wichtig... Mittags keine Pommes... Praktikum A 230 C 207 (Madeleine + Esma) F 112 F 113
MehrJava Kurs für Anfänger Einheit 5 Methoden
Java Kurs für Anfänger Einheit 5 Methoden Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 22. Juni 2009 Inhaltsverzeichnis Methoden
MehrProgrammierkurs Java
Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen
MehrÜber die Internetseite www.cadwork.de Hier werden unter Download/aktuelle Versionen die verschiedenen Module als zip-dateien bereitgestellt.
Internet, Codes und Update ab Version 13 Um Ihnen einen möglichst schnellen Zugang zu den aktuellsten Programmversionen zu ermöglichen liegen Update-Dateien für Sie im Internet bereit. Es gibt drei Möglichkeiten
MehrKapitel 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
MehrMobile 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
MehrHow-to: Webserver NAT. Securepoint Security System Version 2007nx
Securepoint Security System Inhaltsverzeichnis Webserver NAT... 3 1 Konfiguration einer Webserver NAT... 4 1.1 Einrichten von Netzwerkobjekten... 4 1.2 Erstellen von Firewall-Regeln... 6 Seite 2 Webserver
MehrJavadoc. 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
MehrSession Beans & Servlet Integration. Ralf Gitzel ralf_gitzel@hotmail.de
s & Servlet Integration Ralf Gitzel ralf_gitzel@hotmail.de 1 Themenübersicht Ralf Gitzel ralf_gitzel@hotmail.de 2 Übersicht Motivation Das Interface Stateful und Stateless s Programmierung einer Stateful
MehrEinrichtung des Cisco VPN Clients (IPSEC) in Windows7
Einrichtung des Cisco VPN Clients (IPSEC) in Windows7 Diese Verbindung muss einmalig eingerichtet werden und wird benötigt, um den Zugriff vom privaten Rechner oder der Workstation im Home Office über
MehrAnleitung. 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
MehrLineargleichungssysteme: Additions-/ Subtraktionsverfahren
Lineargleichungssysteme: Additions-/ Subtraktionsverfahren W. Kippels 22. Februar 2014 Inhaltsverzeichnis 1 Einleitung 2 2 Lineargleichungssysteme zweiten Grades 2 3 Lineargleichungssysteme höheren als
MehrMonitore. Klicken bearbeiten
Sascha Kretzschmann Institut für Informatik Monitore Formatvorlage und deren Umsetzung des Untertitelmasters durch Klicken bearbeiten Inhalt 1. Monitore und Concurrent Pascal 1.1 Warum Monitore? 1.2 Monitordefinition
MehrAK-Automatisierungs und Kommunikationstechnik TI Technische Informatik. NWT Netzwerktechnik www.munz-udo.de
Stand FTE2 Anfang 4. Semester plus Projekt Multiuhren_Thread Ich gehe im Hinblick auf Klassenarbeiten und der Abschlussprüfung davon aus, dass Sie das Skript OOP JAVA2 durchgearbeitet haben. Wir haben
MehrZur Erinnerung: Threads. Threadverwaltung. Threads: Prioritäten. Beispiel Flugbuchungsprogramm. Nichtdeterminismus
Zur Erinnerung: Threads Programmierung (fortgeschrittene Konzepte) Threads, Monitore, Semaphore und speisende en Wolf-Ulrich Raffel (uli@wuraffel.de) Möglichkeiten, Threads zu definieren Bildung einer
MehrRemote 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
MehrGroß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,
MehrSynchronisations- Assistent
TimePunch Synchronisations- Assistent Benutzerhandbuch Gerhard Stephan Softwareentwicklung -und Vertrieb 25.08.2011 Dokumenten Information: Dokumenten-Name Benutzerhandbuch, Synchronisations-Assistent
MehrLokale Installation von DotNetNuke 4 ohne IIS
Lokale Installation von DotNetNuke 4 ohne IIS ITM GmbH Wankelstr. 14 70563 Stuttgart http://www.itm-consulting.de Benjamin Hermann hermann@itm-consulting.de 12.12.2006 Agenda Benötigte Komponenten Installation
MehrJava-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
MehrClient-Server-Beziehungen
Client-Server-Beziehungen Server bietet Dienste an, Client nutzt Dienste Objekt ist gleichzeitig Client und Server Vertrag zwischen Client und Server: Client erfüllt Vorbedingungen eines Dienstes Server
Mehr3 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
MehrProblemstellung. 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
MehrNathan Burgener. Design by Contract. Modul SWE
NathanBurgener DesignbyContract ModulSWE NathanBurgener Inhaltsverzeichnis 1 WasistDesignbyContract...3 1.1 Überblick...3 1.2 DesignbyContractmitMethoden...4 1.3 DesignbyContractmitKlassen...5 1.4 Vererbung...6
MehrFachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6
Gudrun Fischer Sascha Kriewel programmierung@is.informatik.uni-duisburg.de Anmeldung zur Klausur! Übungsblatt Nr. 6 Um an der Klausur teilzunehmen, müssen sich Studierende der angewandten Informatik in
MehrObjektorientierte 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
MehrTutorium 5 - Programmieren
Tutorium 5 - Programmieren Grischa Liebel Uni Karlsruhe (TH) Tutorium 11 1 Einleitung 2 Abschlussaufgaben 3 Vorlesungsstoff 4 Ergänzungen zum Vorlesungsstoff Grischa Liebel (Uni Karlsruhe (TH)) c 2008
MehrBinäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen
Binäre Bäume 1. Allgemeines Binäre Bäume werden grundsätzlich verwendet, um Zahlen der Größe nach, oder Wörter dem Alphabet nach zu sortieren. Dem einfacheren Verständnis zu Liebe werde ich mich hier besonders
Mehr2015-06-11 Tagesprogramm
1 2015-06-11 Tagesprogramm Design-by-Contract 2 Vertragspartner Anbieter (Server) bietet Leistungen (Services) an Kunde (Client) nimmt von Anbietern angebotene Leistungen in Anspruch Details der Inanspruchnahme
Mehr2A Basistechniken: Weitere Aufgaben
2A Basistechniken: Weitere Aufgaben 2A.3 Programmierung unter UNIX/Linux 1. Gegeben sind einige Ausschnitte von C-Programmen, die unter UNIX/Linux ausgeführt werden sollen. Beantworten Sie die zugehörigen
MehrEJB Beispiel. JEE Vorlesung 10. Ralf Gitzel ralf_gitzel@hotmail.de
EJB Beispiel JEE Vorlesung 10 Ralf Gitzel ralf_gitzel@hotmail.de 1 Stundenkonzept Gemeinsame Übung Stoff der letzten Stunde wird gemeinsam in einem Beispiel umgesetzt Details werden nochmals erklärt bzw.
MehrOOP: Nebenläufigkeiten Threads. Dipl.-Inform. Arnold Willemer
OOP: Nebenläufigkeiten Threads Dipl.-Inform. Arnold Willemer arnold.willemer@hs-flensburg.de Schlafen für Profis Die C-64-Lösung kocht und blockiert den Prozessor while (!fertig) // nichts tun: busy waiting
MehrÜberblick. Lineares Suchen
Komplexität Was ist das? Die Komplexität eines Algorithmus sei hierbei die Abschätzung des Aufwandes seiner Realisierung bzw. Berechnung auf einem Computer. Sie wird daher auch rechnerische Komplexität
MehrProgrammiermethodik. Übung 13
Programmiermethodik Übung 13 Sommersemester 2010 Fachgebiet Software Engineering andreas.scharf@cs.uni-kassel.de Agenda Vorstellung Musterlösung HA9 Mancala Showroom Client/Server Kommunikation in Java
Mehr5. Tutorium zu Programmieren
5. Tutorium zu Programmieren Dennis Ewert Gruppe 6 Universität Karlsruhe Institut für Programmstrukturen und Datenorganisation (IPD) Lehrstuhl Programmierparadigmen WS 2008/2009 c 2008 by IPD Snelting
Mehr2.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.
MehrDVD Version 9.1. Netzwerkinstallation + VDE-Admin-Tool. www.vde-verlag.de
DVD Version 9.1 Netzwerkinstallation + VDE-Admin-Tool Installation DVD wird eingelegt ggf. folgt der Autostart der DVD Ansonsten manuell die Installation starten (Doppelklick auf Setup.exe). Installation
MehrWillkommen zur Vorlesung. Objektorientierte Programmierung Vertiefung - Java
Willkommen zur Vorlesung Objektorientierte Programmierung Vertiefung - Java Zum Dozenten Mein Name: Andreas Berndt Diplom-Informatiker (TU Darmstadt) Derzeit Software-Entwickler für Web- Applikationen
Mehr14.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...
MehrEinführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005
Einführung in die objektorientierte Programmierung mit Java Klausur am 19. Oktober 2005 Matrikelnummer: Nachname: Vorname: Semesteranzahl: Die Klausur besteht aus drei Frageblöcken zu den Inhalten der
MehrPrinzipien Objektorientierter Programmierung
Prinzipien Objektorientierter Programmierung Valerian Wintner Inhaltsverzeichnis 1 Vorwort 1 2 Kapselung 1 3 Polymorphie 2 3.1 Dynamische Polymorphie...................... 2 3.2 Statische Polymorphie........................
MehrPrint2CAD 2017, 8th Generation. Netzwerkversionen
Installation der Netzwerkversion Kazmierczak Software Print2CAD 2017, 8th Generation Print2CAD 2017, 8th Generation Netzwerkversionen Einführung Installationshinweise Die Programme von Kazmierczak Software
MehrSoftware-Engineering und Optimierungsanwendungen in der Thermodynamik
Software-Engineering und Optimierungsanwendungen in der Thermodynamik Software-Engineering 5 Programmentwicklung und Debuggen mit IDE und CASE-Tools Übungen Prof. Dr. Rolf Dornberger OPTSWE_SWE: 5 Programmentwicklung
MehrKapitel 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
MehrM-net E-Mail-Adressen einrichten - Apple iphone
M-net E-Mail-Adressen einrichten - Apple iphone M-net Telekommunikations GmbH Emmy-Noether-Str. 2 80992 München Kostenlose Infoline: 0800 / 7 08 08 10 M-net E-Mail-Adresse einrichten - iphone 05.03.2013
MehrKonfigurationslanleitung für J2EE und Eclipse im KBS-Pool
Konfigurationslanleitung für J2EE und Eclipse im KBS-Pool JBoss vorbereiten Wir haben ein zip-archiv mit JBoss 4.0.5 in /opt/jboss-4.0.5.zip hinterlegt. Entpacken Sie dieses in ihrem Homeverzeichnis an
MehrTCP/IP Programmierung. C# TimeServer Java6 TimeClient
TCP/IP Programmierung C# TimeServer Java6 TimeClient Stand 19.10.11 21:24:32 Seite 1 von 16 Inhaltsverzeichnis Erläuterung...3 Software...3 C#TimeServer...4 Klasse ServerThread...6 Starten und Beenden...7
MehrJava Einführung Packages
Java Einführung Packages Inhalt dieser Einheit Packages (= Klassenbibliotheken) Packages erstellen Packages importieren Packages verwenden Standard Packages 2 Code-Reuse Einbinden von bereits (selbst-/fremd)
MehrWeb Services stellen eine Integrationsarchitektur dar, die die Kommunikation zwischen verschiedenen Anwendungen
9 3 Web Services 3.1 Überblick Web Services stellen eine Integrationsarchitektur dar, die die Kommunikation zwischen verschiedenen Anwendungen mit Hilfe von XML über das Internet ermöglicht (siehe Abb.
MehrObjektorientierte Programmierung
Universität der Bundeswehr Fakultät für Informatik Institut 2 Priv.-Doz. Dr. Lothar Schmitz FT 2006 Zusatzaufgaben Lösungsvorschlag Objektorientierte Programmierung Lösung 22 (Java und UML-Klassendiagramm)
MehrThomas Wagner 2009 (im Rahmen der TA) Installation von MySQL 5.0 und Tomcat 5.5
Thomas Wagner 2009 (im Rahmen der TA) Installation von MySQL 5.0 und Tomcat 5.5 Im Folgenden wird die Installation von MySQL 5.0 und Tomcat 5.0 beschrieben. Bei MySQL Server 5.0 handelt es sich um ein
MehrTechnische Universität München SS 2006 Fakultät für Informatik 12. Oktober 2006 Prof. Dr. A. Knoll. Aufgabe 1 Transferfragen (Lösungsvorschlag)
Technische Universität München SS 2006 Fakultät für Informatik 12. Oktober 2006 Prof. Dr. A. Knoll Lösungsvorschläge der Klausur zu Einführung in die Informatik II Aufgabe 1 Transferfragen (Lösungsvorschlag)
MehrU08 Entwurfsmuster (II)
U08 Entwurfsmuster (II) Inhalt der Übung Diskussion und Implementierung von Entwurfsmustern Übungsaufgaben Aufgabe 1 (Queue) Gegeben ist das folgende Analysemodell einer Warteschlange (Queue): Eine Warteschlange
MehrAufgabenblatt Nr. 5 Generizität und TicTacToe
Aufgabenblatt Nr. 5 Generizität und TicTacToe 1 Generische Sortier-Methode 1.1 Aufgabe: Entwickeln einer generischen Sortiermethode für Objekte mit der Schnittstelle Comparable Ihnen ist aus der Vorlesung
Mehrec@ros2-installer ecaros2 Installer procar informatik AG 1 Stand: FS 09/2012 Eschenweg 7 64331 Weiterstadt
ecaros2 Installer procar informatik AG 1 Stand: FS 09/2012 Inhaltsverzeichnis 1 Download des ecaros2-installer...3 2 Aufruf des ecaros2-installer...3 2.1 Konsolen-Fenster (Windows)...3 2.2 Konsolen-Fenster
MehrProfessionelle Seminare im Bereich MS-Office
Der Name BEREICH.VERSCHIEBEN() ist etwas unglücklich gewählt. Man kann mit der Funktion Bereiche zwar verschieben, man kann Bereiche aber auch verkleinern oder vergrößern. Besser wäre es, die Funktion
MehrAuszug aus JAX-WS Folien
Auszug aus JAXWS Folien Dieses Dokument ist ein Auszug aus unserem Skript zur Java Web Services Schulung. Es dient lediglich als Beispiel für unsere Kursunterlagen. Thomas Bayer Hauptstraße 33 75050 Gemmingen
MehrSchritt 1 - Ein Spielfeld
Schritt 1 - Ein Spielfeld Wir beginnen mit zwei einfachen Java-Klassen, dem eigentlichen Spielfeld und dem Applet zum Anzeigen des Spielfeldes (und später der Buttons und der anderen Bedienelemente). Hier
MehrÜbung Grundlagen der Programmierung. Übung 03: Schleifen. Testplan Testergebnisse
Übung 03: Schleifen Abgabetermin: xx.xx.xxxx Name: Matrikelnummer: Gruppe: G1 (Prähofer) G2 (Prähofer) G3 (Wolfinger) Aufgabe Punkte gelöst abzugeben schriftlich abzugeben elektronisch Aufgabe 03.1 12
MehrCode wiederverwenden: Objektorientierte Programmierung (OOP) sinnvoll nutzen Roland Wagner Automatisierungstreff IT & Automation 2015
Code wiederverwenden: Objektorientierte Programmierung (OOP) sinnvoll nutzen Roland Wagner Automatisierungstreff IT & Automation 2015 CODESYS a trademark of 3S-Smart Software Solutions GmbH Agenda 1 Warum
MehrSoftware Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015
Software Engineering Zur Architektur der Applikation Data Repository Franz-Josef Elmer, Universität Basel, HS 2015 Software Engineering: Mit acht bewährten Praktiken zu gutem Code 2 Schichtarchitektur
MehrTesten mit JUnit. Motivation
Test First Design for Test in Eclipse (eigentlich: ) zu einer Klasse Beispiel zur Demonstration Ergänzungen Test First "Immer dann, wenn Du in Versuchung kommst, etwas wie eine print- Anweisung oder einen
MehrGrundlagen zur nebenläufigen Programmierung in Java
Grundlagen zur nebenläufigen Programmierung in Java Karlsruher Entwicklertag 2013 5. Juni 2013 Referent: Christian Kumpe Inhalt des Vortrags Was zeigt dieser Vortrag? Ein einfaches Beispiel mit allerlei
MehrProbeklausur Softwareengineering SS 15
Probeklausur Softwareengineering SS 15 Hinweis: Die Bearbeitungsdauer entspricht dem Punktewert. Aufgabe 1 (10 min) Beschreiben Sie das Vorgehensmodell Test-Driven-Development (TDD) a) Erläutern Sie das
MehrDokumentation Schedulingverfahren
Dokumentation Schedulingverfahren von Norbert Galuschek Gordian Maugg Alexander Hahn Rebekka Weissinger June 23, 2011 1 Contents 1 Aufgabe 3 2 Vorgehensweise 4 2.1 Warum Android.......................
MehrMatrix42. Use Case - Sicherung und Rücksicherung persönlicher Einstellungen über Personal Backup. Version 1.0.0. 23. September 2015 - 1 -
Matrix42 Use Case - Sicherung und Rücksicherung persönlicher Version 1.0.0 23. September 2015-1 - Inhaltsverzeichnis 1 Einleitung 3 1.1 Beschreibung 3 1.2 Vorbereitung 3 1.3 Ziel 3 2 Use Case 4-2 - 1 Einleitung
MehrRekursion. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung
Rekursion Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-12-13/infoeinf WS12/13 Aufgabe 1: Potenzfunktion Schreiben Sie eine Methode, die
MehrIT in der Arztpraxis Technisches Handbuch zum Kodierassistenten
Technisches Handbuch zum Kodierassistenten [KBV_ITA_AHEX_Handbuch_Kodierassistent] Dezernat 6 Informationstechnik, Telematik und Telemedizin 10623 Berlin, Herbert-Lewin-Platz 2 Kassenärztliche Bundesvereinigung
MehrEinstieg in die Informatik mit Java
1 / 14 Einstieg in die Informatik mit Java Swing Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 14 1 Einführendes Beispiel 2 Eigenschaften von Swing 3 Typisches Swing-Applet
MehrÜ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,
Mehr5. Abstrakte Klassen. Beispiel (3) Abstrakte Klasse. Beispiel (2) Angenommen, wir wollen die folgende Klassenhierarchie implementieren:
5. Abstrakte Klassen Beispiel 5. Abstrakte Klassen 5. Abstrakte Klassen Beispiel Beispiel (3) Angenommen, wir wollen die folgende Klassenhierarchie implementieren: Probleme des Implementierungsvorschlags:
MehrSEP 114. Design by Contract
Design by Contract SEP 114 Design by Contract Teile das zu entwickelnde Programm in kleine Einheiten (Klassen, Methoden), die unabhängig voneinander entwickelt und überprüft werden können. Einheiten mit
Mehr