NIO Channels SYSTEM SOFTWARE 1

Größe: px
Ab Seite anzeigen:

Download "NIO Channels SYSTEM SOFTWARE 1"

Transkript

1 NIO Channels SYSTEM SOFTWARE 1

2 Networking Grundlagen Channels und Buffers Nicht-blockierendes Arbeiten mit Selectors Asynchrone Channels Locks SYSTEM SOFTWARE 2

3 Motivation Mit NIO und NIO.2 wurden Channels als Alternative zu Input/OutputStreams eingeführt Channels bieten ein elementares API (low-level API) unterstützen effizienteres Lesen und Schreiben auf Files und Sockets erlauben asynchrone Verarbeitung Operationen der Input/OutputStreams sind heute mit Channels im Hintergrund realisiert Package java.nio.channels SYSTEM SOFTWARE 3

4 Konzepte Channels: Channels werden von Datenquellen und senken Files Sockets erzeugt und erlauben dann bidirektionales Lesen und Schreiben Buffer: Channels arbeiten grundsätzlich mit Buffer; folgende Buffer werden unterstützt: ByteBuffer CharBuffer ShortBuffer IntBuffer LongBuffer FloatBuffer DoubleBuffer Selectors: Selectors erlauben auf mehrere Channels zu horchen und damit in einem Thread mehrere Channels zu bedienen Asynchronous Channels für asynchrone Verarbeitung Locken von Dateien über Channels SYSTEM SOFTWARE 4

5 Networking Grundlagen Channels und Buffers Nicht-blockierendes Arbeiten mit Selectors Asynchrone Channels Locks SYSTEM SOFTWARE 5

6 Channels Channels werden von Files oder Input/OutputStreams erzeugt Zum Beispiel durch: Files.newByteChannel(Path path) try ( ByteChannel srcchnl = Files.newByteChannel(srcPath, StandardOpenOption.READ); ByteChannel destchnl = Files.newByteChannel(destPath, StandardOpenOption.WRITE); ) { Des Weiteren gibt es eine Vielzahl von Methoden, die Channels mit unterschiedlichen Eigenschaften erzeugen Channel Zoo: Interfaces: ByteChannel, ReadableByteChannel, WritableByteChannel, SeekableByteChannel, ScatteringByteChannel, GatheringByteChannel, AsynchronousByteChannel, AsynchronousChannel,... Classes: FileChannel, SocketChannel, ServerSocketChannel, AsynchronousFileChannel, AsynchronousSocketChannel, AsynchronousServerSocketChannel, DatagramChannel, SelectableChannel,... SYSTEM SOFTWARE 6

7 Lesen und Schreiben mit Channels Lesen und Schreiben erfolgt grundsätzlich über Buffer, d.h., es wird in Buffer gelesen und von Buffer geschrieben -1 für End of Stream int bytesread = channel.read( buffer ); int byteswritten = channel.write( buffer ); Buffers sind eine Abstraktion von Arrays mit spezieller API für Channels Bufffer werden über statische Methoden allokiert ByteBuffer buffer = ByteBuffer.allocate( 1024 ); Channel Buffer write read Data source/sink SYSTEM SOFTWARE 7

8 Buffer API Channel Wesentliche Methoden bei Buffers: put: Füllen eines Buffers mit Daten put get Buffer write read Data source/sink public ByteBuffer put(byte[] src) public ByteBuffer put(byte[] src, int offset, int length) public ByteBuffer put(bytebuffer src) get: Lesen der Daten aus Buffer public byte get() public ByteBuffer get(byte[] dst) public ByteBuffer get(byte[] dst, int offset, int length) public byte get(int index) public char getchar() public double getdouble()... clear: Löschen des Inhalts public final Buffer clear() flip und rewind: Lese- und Schreibposition zurückstellen public Buffer flip() public Buffer rewind() SYSTEM SOFTWARE 8

9 Buffer API Eigenschaften: capacity: Kapazität des Buffers public int capacity() position: Aktuelle Lese- oder Schreibposition public int position() public Buffer position(int newposition) limit: Position, wie weit Buffer geschrieben oder gelesen werden kann public int limit() public Buffer limit(int newlimit) SYSTEM SOFTWARE 9

10 Arbeitsweise Buffer Interpretation von position und limit abhängig, ob vom Buffer gelesen (Read Mode) oder in den Buffer geschrieben (Write Mode) wird Write Mode: position: nächste Position für neues Zeichen limit: gleich capacity Read Mode: position: nächste Position zum Lesen limit: bis wohin gelesen werden kann (exklusiv) flip, clear, rewind setzen Position und Limit flip: Setzt Limit auf aktuelle Position und Position auf 0 clear: Setzt Limit auf Capacity und Position auf 0 rewind: Setzt Position auf 0 flip SYSTEM SOFTWARE 10

11 Beispiel: Datei kopieren try ( ByteChannel srcchnl = Files.newByteChannel(srcPath, StandardOpenOption.READ); ByteChannel destchnl = Files.newByteChannel(destPath, StandardOpenOption.WRITE); ) { } ByteBuffer buffer = ByteBuffer.allocate(16); int nread = srcchnl.read(buffer); while (nread > 0) { buffer.flip(); destchnl.write(buffer); buffer.clear(); nread = srcchnl.read(buffer); } neuer Buffer Lesen der Daten und Füllen des Buffers flip für Entnehmen der Daten Schreiben der Daten aus Buffer Buffer löschen für neue Daten Lesen neuer Daten SYSTEM SOFTWARE 11

12 Sockets und Channels Für das Arbeiten mit Channels gibt es spezielle Methoden bei Sockets ServerSocketChannel für Verbindungsaufbau beim Server ServerSocketChannel server = ServerSocketChannel.open(); server.socket().bind(new InetSocketAddress(port)); SocketChannel channel = server.accept(); Öffnen des Channels Binden an Adresse Verbinden mit Clients SocketChannel für Client/Server Kommunikation SocketChannel channel = SocketChannel.open(); channel.connect(new InetSocketAddress(SERVER_IP, PORT)); bidirektionale Kommunikation channel.write( buffer ); channel.read( buffer ); Öffnen des Channels Binden an Adresse Schreiben auf Channel Lesen von Channel Schließen notwendig channel.close(); SYSTEM SOFTWARE 12

13 Networking Grundlagen Channels und Buffers Nicht-blockierendes Arbeiten mit Selectors Asynchrone Channels Locks SYSTEM SOFTWARE 13

14 Nicht-blockierende Channel-Operationen (1/2) Channels ermöglichen eine nicht-blockierendes Arbeiten, Operationen werden asynchron ausgeführt Channels müssen in non-blocking Mode gesetzt werden channel.configureblocking(false); Ergebnisse durch Ereignisse gemeldet Selector zum Arbeiten mit Ereignissen Öffnen eines Selectors Selector selector = Selector.open(); Registrierung von Channel-Operationen bei Selector SelectionKey dient dabei als Zugriff auf Registrierung SelectionKey key = channel.register(selector, SelectionKey.OP_READ); SelectionKey.OP_READ SelectionKey.OP_WRITE SelectionKey.OP_OPEN SelectionKey.OP_ACCEPT Mehrere Channels können beim gleichen Selector registriert werden damit kann man durch eine Selector mehrere (viele) Channels bedienen SYSTEM SOFTWARE 14

15 Nicht-blockierende Channel-Operationen (2/2) Behandlung der Ereignisse Abrufen der Ereignisse vom Selector int n = selector.select(); int n = selector.select(500); Zugriff auf Menge der aufgetretenen Ereignisse Set<SelectionKey> keys = selector.selectedkeys(); Iteration und Behandlung der Ereignisse blockiert bis Ereignisse vorhanden!! mit Timeout in ms Iterator<SelectionKey> keyiterator = keys.iterator(); while (keyiterator.hasnext()) { SelectionKey key = keyiterator.next(); if (key.isreadable()) {... } else if (key.iswritable()) {... }... keyiterator.remove(); remove des Keys notwendig!! } SYSTEM SOFTWARE 15

16 Beispiel: Horchen auf mehere Sockets Behandlung von Inputs von mehrere Socket-Connections Server erlaubt mehrere Verbindungen aufzubauen ServerSocketChannel server = null; try { server = ServerSocketChannel.open(); server.socket().bind(new InetSocketAddress(port)); server.configureblocking(true); while (!stopserver) { SocketChannel channel = server.accept(); Channel wird in non-blocking Mode versetzt und beim Selector für Read-Operationen registriert channel.configureblocking(false); SelectionKey key = channel.register(selector, SelectionKey.OP_READ); } } catch (IOException e1) {... } finally { try { server.close(); } catch (IOException e) { } } SYSTEM SOFTWARE 16

17 Beispiel: Horchen auf mehere Sockets Inputs aller Channels können dann in einer Schleife behandelt werden while (! stopserver) { try { int n = selector.select(500); Set<SelectionKey> keys = selector.selectedkeys(); Iterator<SelectionKey> keyit = keys.iterator(); while (keyit.hasnext()) { SelectionKey key = keyit.next(); if (key.isreadable()) { SocketChannel chnl = (SocketChannel)key.channel(); buffer.clear(); chnl.read(buffer); buffer.flip(); byte[] data = new byte[buffer.limit()]; buffer.get(data); System.out.println(Arrays.toString(bytes)); } keyit.remove(); } } catch (IOException e) { } } Reaktion von Inputs Zugriff auf auslösenden Channel Lesen von Channel Ausgabe auf Konsole SYSTEM SOFTWARE 17

18 Attachments bei SelectionKeys SelectionKey erlaubt Objekt als Attachment mitzuführen kann man gut für benötigte Informationen zur Behandlung des Ereignisses verwenden Anfügen von Attachment bei Registrierung Beachte: Behandlung von unterschiedlichen Channels Object attachment =... ; SelectionKey key = channel.register(selector, SelectionKey.OP_READ); key.attach( attachment ); Abrufen des Attachment beim Auftreten des Ereignisse int n = selector.select(500); Set<SelectionKey> keys = selector.selectedkeys(); Iterator<SelectionKey> keyit = keys.iterator(); while (keyit.hasnext()) { SelectionKey key = keyit.next(); Object attachment = key.attachment(); Beachte: Channel, bei dem Ereignis aufgetreten ist, durch key.channel() SocketChannel chnl = (SocketChannel)key.channel(); SYSTEM SOFTWARE 18

19 Networking Grundlagen Channels und Buffers Nicht-blockierendes Arbeiten mit Selectors Asynchrone Channels Locks SYSTEM SOFTWARE 19

20 Asynchrone Channel Asynchrone Channels unterstützen asynchrones Arbeiten entweder unter Verwendung von Futures oder mit CompletionHandler Vorgehen: Öffnen eines AynchronousChannels, z.b. AsynchronousFileChannel AsynchronousFileChannel filechannel = AsynchronousFileChannel.open(path, StandardOpenOption.READ); Asynchrones Lesen mit Verwendung von Future Future<Integer> future = filechannel.read(buffer, 0); Abholen des Ergebnisses blockiert! int nread = future.get(); // Verarbeitung der Daten buffer.flip(); byte[] data = new byte[buffer.limit()]; buffer.get(data); analog AsynchronousSocketChannel, AsynchronousServerSocketChannel SYSTEM SOFTWARE 20

21 CompletionHandler Mit CompletionHandler kann Callback realisiert werden CompletionHandler bei Operation mitgegeben Nach Ausführung der Operation wird Methode completed oder failed aufgerufen Über attachment kann von Aufruf zur Behandlung ein Objekt durchgereicht werden CompletionHandler generisch bezüglich Resultat- und Attachment-Objekt filechannel.read(buffer, position, attachment, new CompletionHandler<Integer, Object>() { public void completed(integer result, Object attachment) { buffer.flip(); byte[] data = new byte[buffer.limit()]; buffer.get(data); public void failed(throwable exc, Object attachment) { // handle failed read operation } }); SYSTEM SOFTWARE 21

22 Networking Grundlagen Channels und Buffers Nicht-blockierendes Arbeiten mit Selectors Asynchrone Channels Locks SYSTEM SOFTWARE 22

23 Locks Locking von Dateien über Channels FileLock lock = filechannel.lock( ); FileLock lock = filechannel.trylock( ); blockiert liefert null Lock-Objekt für Freigeben des Locks lock.release(); SYSTEM SOFTWARE 23

Jan Distel. Im Rahmen der Veranstaltung Fortgeschrittene Programmierung in Java

Jan Distel. Im Rahmen der Veranstaltung Fortgeschrittene Programmierung in Java Jan Distel Im Rahmen der Veranstaltung Fortgeschrittene Programmierung in Java Jan Distel - Diplomarbeitskolloquium 02.07.2010 1. Allgemeines 2. Datagram-Sockets 3. Sockets 4. Server-Sockets 5. Socket-Channels

Mehr

Netzwerkprogrammierung mit Java

Netzwerkprogrammierung mit Java Netzwerkprogrammierung mit Java Eine Übersicht über Java NIO Andre Ufer [email protected] Zusammenfassung. Diese Ausarbeitung beschreibt die Netzwerkprogrammierung unter Java. Der Schwerpunkt

Mehr

II.4.4 Exceptions - 1 -

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

Mehr

Client-Server TCP/IP - Kodierung

Client-Server TCP/IP - Kodierung Client-Server TCP/IP - Kodierung Die klassen Ein (engl. Sockel) ist eine bidirektionale Netzwerk-Kommunikationsschnittstelle, deren Verwaltung das Betriebssystem übernimmt. Die Kombination aus IP-Adresse

Mehr

Teil 5 - Java. Programmstruktur Operatoren Schlüsselwörter Datentypen

Teil 5 - Java. Programmstruktur Operatoren Schlüsselwörter Datentypen Teil 5 - Java Programmstruktur Operatoren Schlüsselwörter Datentypen 1 Kommentare in Java In Java gibt es drei Möglichkeiten zur Kommentierung: // Kommentar Alle Zeichen nach dem // werden ignoriert. für

Mehr

Programmiermethodik. Übung 10

Programmiermethodik. Übung 10 Programmiermethodik Übung 10 Sommersemester 2011 Fachgebiet Software Engineering [email protected] Agenda Vorstellung Musterlösung HA 6 Client/Server Kommunikation in Java Vorstellung HA 7

Mehr

Arten von Streams. Daten. Bytes (8-Bits) Java Programm. Daten. Java Programm. Characters (16 - Bits)

Arten von Streams. Daten. Bytes (8-Bits) Java Programm. Daten. Java Programm. Characters (16 - Bits) Datenströme Arten von Streams Daten 0 1 1 0 1 0 1 0 Java Programm Bytes (8-Bits) Daten 0 1 1 0 1 0 1 0 1 0 1 1 0 0 1 1 Java Programm Characters (16 - Bits) Byteströme(InputStream/OutputStream) I Java Programm

Mehr

! 1. Unterklassen und Vererbung! 2. Abstrakte Klassen und Interfaces! 3. Modularität und Pakete! 4. Ausnahmen (Exceptions) II.4.

! 1. Unterklassen und Vererbung! 2. Abstrakte Klassen und Interfaces! 3. Modularität und Pakete! 4. Ausnahmen (Exceptions) II.4. ! 1. Unterklassen und Vererbung! 2. Abstrakte Klassen und Interfaces! 3. Modularität und Pakete! 4. Ausnahmen (Exceptions) II.4.4 Exceptions - 1 - Ausnahmen (Exceptions( Exceptions) Treten auf, wenn zur

Mehr

Javakurs für Fortgeschrittene

Javakurs für Fortgeschrittene Javakurs für Fortgeschrittene Einheit 02: Streams filtern Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Datenströme (Streams) Filtern FilterWriter, - Reader Praxis:

Mehr

EINFÜHRUNG IN DIE PROGRAMMIERUNG

EINFÜHRUNG IN DIE PROGRAMMIERUNG EINFÜHRUNG IN DIE PROGRAMMIERUNG FORTGESCHRITTENE KONZEPTE Tobias Witt 26.03.2014 [email protected] 25.12.01.30 Bürozeiten: 09 Uhr - 12 Uhr FEHLERBEHANDLUNG KLASSISCHER ANSATZ Fehlercode als Rückgabewert

Mehr

Java I/O, Serialisierung und Netzwerkprogrammierung

Java I/O, Serialisierung und Netzwerkprogrammierung Java I/O, Serialisierung und Netzwerkprogrammierung Philipp Güttler 16. Dezember 2009 Universität Ulm, Abt. SGI Progwerkstatt 2 19 Gliederung Java I/O, Serialisierung und Netzwerkprogrammierung 16. Dezember

Mehr

2 Eine einfache Programmiersprache

2 Eine einfache Programmiersprache 2 Eine einfache Programmiersprache Eine Programmiersprache soll Datenstrukturen anbieten Operationen auf Daten erlauben Kontrollstrukturen zur Ablaufsteuerung bereitstellen Als Beispiel betrachten wir

Mehr

2 Eine einfache Programmiersprache

2 Eine einfache Programmiersprache 2 Eine einfache Programmiersprache Eine Programmiersprache soll Datenstrukturen anbieten Operationen auf Daten erlauben Kontrollstrukturen zur Ablaufsteuerung bereitstellen Als Beispiel betrachten wir

Mehr

2 Eine einfache Programmiersprache. Variablen. Operationen Zuweisung. Variablen

2 Eine einfache Programmiersprache. Variablen. Operationen Zuweisung. Variablen Variablen Eine Programmiersprache soll Datenstrukturen anbieten Operationen auf Daten erlauben Kontrollstrukturen zur Ablaufsteuerung bereitstellen Variablen dienen zur Speicherung von Daten. Um Variablen

Mehr

Interface. So werden Interfaces gemacht

Interface. So werden Interfaces gemacht Design Ein Interface (=Schnittstelle / Definition) beschreibt, welche Funktionalität eine Implementation nach Aussen anzubieten hat. Die dahinter liegende Algorithmik wird aber der Implementation überlassen.

Mehr

Verteilte Systeme - Java Networking (Sockets) -

Verteilte Systeme - Java Networking (Sockets) - Verteilte Systeme - Java Networking (Sockets) - Prof. Dr. Michael Cebulla 30. Oktober 2014 Fachhochschule Schmalkalden Wintersemester 2014/15 1 / 36 M. Cebulla Verteilte Systeme Gliederung Grundlagen TCP/IP

Mehr

Versuchsziele Konzepte der parallelen Programmierung am Beispiel von Threads anwenden können. Einbau von Kontrollmechanismen mittels Semaphore.

Versuchsziele Konzepte der parallelen Programmierung am Beispiel von Threads anwenden können. Einbau von Kontrollmechanismen mittels Semaphore. Hochschule Harz Versuch: fcopy Mit Java FB Automatisierung und Informatik Betriebssysteme Thema: Kopieren einer Datei unter der Kontrolle von Semaphoren Versuchsziele Konzepte der parallelen Programmierung

Mehr

Beispiel: Temperaturumwandlung. Imperative Programmierung. Schwerpunkte. 3. Grundlegende Sprachkonstruktionen imperativer Programme

Beispiel: Temperaturumwandlung. Imperative Programmierung. Schwerpunkte. 3. Grundlegende Sprachkonstruktionen imperativer Programme Schwerpunkte 3. Grundlegende Sprachkonstruktionen imperativer Programme Java-Beispiele: Temperature.java Keyboard.java Imperative Programmierung Beispiel für ein Programm aus drei Komponenten Variable,

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

Oracle & Java HOW TO

Oracle & Java HOW TO Oracle & Java HOW TO Helge Janicke, Niels-Peter de Witt, Karsten Wolke 21. Januar 2002 Inhaltsverzeichnis 1 Java-Anbindung an Oracle-DB 2 2 Benötigte Programme und Daten 2 3 Einbinden der Klassen 2 4 Aufbau

Mehr

Kapitel 10. Programmierkurs. Grundlagen von Exceptions Behandlung von Exceptions

Kapitel 10. Programmierkurs. Grundlagen von Exceptions Behandlung von Exceptions Kapitel 10 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Exceptions Behandlung von Exceptions Der finally-block catch or throw WS 07/08 1/ 23 2/ 23 Grundlagen von Exceptions

Mehr

Java Fehlerbehandlung

Java Fehlerbehandlung Java Fehlerbehandlung 1 Fehlerbehandlung In jedem nicht-trivialen Programm kann es während der Laufzeit zu Fehlersituationen kommen. Dabei handelt es sich nicht unbedingt um Programmierfehler: z. B.: Programm

Mehr

Ein-/Ausgabe, Dateisystem. Kapitel 9: Ein-/Ausgabe. Programmieren in C für Elektrotechniker. Programmieren in C. Dateisystem. Programmieren in C

Ein-/Ausgabe, Dateisystem. Kapitel 9: Ein-/Ausgabe. Programmieren in C für Elektrotechniker. Programmieren in C. Dateisystem. Programmieren in C für Elektrotechniker Kapitel 9: Dateisystem, Dateisystem E/A-Konzept in UNIX und C UNIX (und damit auch C) verwendet Datenströme (streams) als Konzept zur Verbindung von Programmen mit E/A-Geräten und

Mehr

2 Eine einfache Programmiersprache

2 Eine einfache Programmiersprache 2 Eine einfache Programmiersprache Eine Programmiersprache soll Datenstrukturen anbieten Operationen auf Daten erlauben Kontrollstrukturen zur Ablaufsteuerung bereitstellen Als Beispiel betrachten wir

Mehr

Client-Server TCP/IP - Kodierung

Client-Server TCP/IP - Kodierung Client-Server TCP/IP - Kodierung Die Socketklassen Ein Socket (engl. Sockel) ist eine bidirektionale Netzwerk-Kommunikationsschnittstelle, deren Verwaltung das Betriebssystem übernimmt. Die Kombination

Mehr

Exceptions. CoMa-Übung VII TU Berlin. CoMa-Übung VII (TU Berlin) Exceptions / 1

Exceptions. CoMa-Übung VII TU Berlin. CoMa-Übung VII (TU Berlin) Exceptions / 1 Exceptions CoMa-Übung VII TU Berlin 7.11.013 CoMa-Übung VII (TU Berlin) Exceptions 7.11.013 1 / 1 Themen der Übung 1 Compilezeit- und Laufzeitfehler Exceptions 3 Try-Catch-Finally CoMa-Übung VII (TU Berlin)

Mehr

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 1. Kapitel 11. Listen. Listen

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 1. Kapitel 11. Listen. Listen Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 1 Kapitel 11 Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 2 Ziele Implementierungen für

Mehr

2 Eine einfache Programmiersprache

2 Eine einfache Programmiersprache 2 Eine einfache Programmiersprache Eine Programmiersprache soll Datenstrukturen anbieten Operationen auf Daten erlauben Kontrollstrukturen zur Ablaufsteuerung bereitstellen Als Beispiel betrachten wir

Mehr

Kapitel 5: Iterierbare Container

Kapitel 5: Iterierbare Container Kapitel 5: Iterierbare Container Foreach-Schleife Interface Iterator Interface Iterable Iterator-Schleife und Foreach-Schleife Generische Liste mit Iteratoren Prof. Dr. O. Bittel, HTWG Konstanz Programmiertechnik

Mehr

1 Fehler-Objekte: Werfen, Fangen, Behandeln

1 Fehler-Objekte: Werfen, Fangen, Behandeln 1 Fehler-Objekte: Werfen, Fangen, Behandeln Tritt während der Programm-Ausführung ein Fehler auf, wird die normale Programm-ausführung abgebrochen und ein Fehler-Objekt erzeugt (geworfen). Die Klasse Throwable

Mehr

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 16/17. Kapitel 13. Listen. Listen 1

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 16/17. Kapitel 13. Listen. Listen 1 Kapitel 13 Listen Listen 1 Ziele Implementierungen für Listen kennenlernen Einfach verkettete und doppelt verkettete Listen verstehen Listen-Implementierungen in der Java-Bibliothek kennenlernen Durch

Mehr

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 15/16. Kapitel 12. Listen. Listen 1

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 15/16. Kapitel 12. Listen. Listen 1 Kapitel 12 Listen Listen 1 Ziele Implementierungen für Listen kennenlernen Einfach verkettete und doppelt verkettete Listen verstehen Listen-Implementierungen in der Java-Bibliothek kennenlernen Durch

Mehr

1 Organisatorisches. 2 Compilezeit- und Laufzeitfehler. 3 Exceptions. 4 Try-Catch-Finally

1 Organisatorisches. 2 Compilezeit- und Laufzeitfehler. 3 Exceptions. 4 Try-Catch-Finally Themen der Übung CoMa-Übung VI 1 Organisatorisches Compilezeit- und Laufzeitfehler 3 Try-Catch-Finally TU Berlin 8.11.01 Bewertung der OA 5 fehlerhaft, Madeleine arbeitet dran CoMa-Übung VI (TU Berlin)

Mehr

Ausnahmen. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Ausnahmen. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-13-14/infoeinf WS13/14 Fehlerarten Bei der Programmierung können viele Arten von Fehlern auftreten:

Mehr

Network Communication. Dr. Jürgen Eckerle WS 06/07

Network Communication. Dr. Jürgen Eckerle WS 06/07 Network Communication Dr. Jürgen Eckerle WS 06/07 1 Thread-Programmierung ist wichtig um Nebenläufigkeit bei der Netzwerkprogrammierung zu realisieren Typisches Muster beim Server: Server-Handler. Der

Mehr

Klausur Grundlagen der Programmierung

Klausur Grundlagen der Programmierung Klausur Grundlagen der Programmierung Aufgabenstellung: Martin Schultheiß Erreichte Punktzahl: von 60 Note: Allgemeine Hinweise: Schreiben Sie bitte Ihren Namen auf jedes der Blätter Zugelassene Hilfsmittel

Mehr

Erste Java-Programme (Arrays und Schleifen)

Erste Java-Programme (Arrays und Schleifen) Lehrstuhl Bioinformatik Konstantin Pelz Erste Java-Programme (Arrays und Schleifen) Tutorium Bioinformatik (WS 18/19) Konstantin: [email protected] Homepage: https://bioinformatik-muenchen.com/studium/propaedeutikumprogrammierung-in-der-bioinformatik/

Mehr

Programmieren 2 12 Netzwerke

Programmieren 2 12 Netzwerke Programmieren 2 12 Netzwerke Bachelor Medieninformatik Sommersemester 2015 Dipl.-Inform. Ilse Schmiedecke [email protected] 1 Motivation Datenaustausch zwischen Programmen Spielstand Chat

Mehr

Exceptions und Vererbung

Exceptions und Vererbung Exceptions und Vererbung Marc Satkowski 20. November 2016 C# Kurs Gliederung 1. Vererbung Polymorphie Methoden- & Eigenschaftsüberschreibung Weitere Schlüsselwörter 2. Exceptions Eigene Exceptions Handling

Mehr

Connection Pooling. Was ist das?? Unter Connection Pooling versteht man generell die Wiederverwendung physischer Datenbankverbindungen.

Connection Pooling. Was ist das?? Unter Connection Pooling versteht man generell die Wiederverwendung physischer Datenbankverbindungen. Connection Pooling Was ist das?? Unter Connection Pooling versteht man generell die Wiederverwendung physischer Datenbankverbindungen. Wo wird es eingesetzt?? Connection Pooling wird vor allem in Verbindung

Mehr

Delegates. «Delegierter» Methoden Schablone Funktionszeiger. Dr. Beatrice Amrhein

Delegates. «Delegierter» Methoden Schablone Funktionszeiger. Dr. Beatrice Amrhein Delegates «Delegierter» Methoden Schablone Funktionszeiger Dr. Beatrice Amrhein Überblick Definition eines Delegat Einfache Delegate Beispiele von Delegat-Anwendungen 2 Definition 3 Definition Ein Delegat

Mehr

Java Einführung Exception Handling. Kapitel 17

Java Einführung Exception Handling. Kapitel 17 Java Einführung Exception Handling Kapitel 17 Inhalt Was sind Exceptoins? Wie werden sie ausgelöst? Wie kann man Exceptions behandeln? Erweiterung von Exceptions Spezialfall IO 2 Ausnahmezustände Im Ablauf

Mehr

Java - Programmierung - Prozedurale Programmierung 1

Java - Programmierung - Prozedurale Programmierung 1 Java - Programmierung - Prozedurale Programmierung 1 // elementare Datentypen public class el_dt public static void main(string args []) byte b = 127; short s = 32767; int i = 2147483647; long l = 9223372036854775807L,

Mehr

Software Engineering I (IB) Node.js. Prof. Dr. Oliver Braun. Fakultät für Informatik und Mathematik Hochschule München

Software Engineering I (IB) Node.js. Prof. Dr. Oliver Braun. Fakultät für Informatik und Mathematik Hochschule München Software Engineering I (IB) Fakultät für Informatik und Mathematik Hochschule München Letzte Änderung: 15.11.2018 08:01 Inhaltsverzeichnis JavaScript auf dem Server!?............................ 1 Hello

Mehr

Primitive Datentypen

Primitive Datentypen Primitive Datentypen 2 Arten von Datentypen: primitive Datentypen (heute) Objekte (später) Java ist streng typisiert, d.h. für jede Variable muß angegeben werden was für eine Art von Wert sie aufnimmt.

Mehr

Ausdrucksbäume in verschiedenen Darstellungen

Ausdrucksbäume in verschiedenen Darstellungen Ausdrucksbäume in verschiedenen Darstellungen SWE-42 Infix mit notwendigen Klammern: (a + b) / (c - d) Infix vollständig geklammert: (((a) + (b)) / ((c) - (d))) Postfix a b + c d - / Präfix / + a b - c

Mehr

Grundlagen der Programmierung. Kapitel 11: Ein- und Ausgabe. Ziele dieses Kapitels. Das Problem. Datei

Grundlagen der Programmierung. Kapitel 11: Ein- und Ausgabe. Ziele dieses Kapitels. Das Problem. Datei Ziele dieses Kapitels Grundlagen der ierung Dr. Christian Herzog Technische Universität München! Sie verstehen das Konzept der Ströme Sie können n wie,, Input und Output benutzen.! Sie können in Java Dateien

Mehr

Wie kann man es verhindern das Rad immer wieder erneut erfinden zu müssen?

Wie kann man es verhindern das Rad immer wieder erneut erfinden zu müssen? Generic Programming without Generics from JAVA5 Motivation Wie kann man es verhindern das Rad immer wieder erneut erfinden zu müssen? Ein Bespiel: sie haben bereits eine Klasse zur Multiplikation von Matrizen

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

Handbuch konsultieren!

Handbuch konsultieren! Zeichenketten Klasse String Enthält zahlreiche Methoden z.b.: int length(): Anzahl der Zeichen in Zeichenkette String substring(int start): Unterzeichenkette ab Position start boolean equalsignorecase(string

Mehr

Lesen und Schreiben von Dateien

Lesen und Schreiben von Dateien Lesen und Schreiben von Dateien Pfade, Text-Dateien und Binäre Dateien Dr. Beatrice Amrhein Überblick Der Verzeichnis-Pfad Kopieren, Verschieben, Ändern oder Löschen von Dateien Lesen und Schreiben von

Mehr

high level I/O/ low level I/O

high level I/O/ low level I/O Dateiarbeit in C Datei(engl. File) ist ein Menge von Daten (Bytes) auf einem geeigneten Datenträger. Festplatte USB-Stick Früher: Magnetband, Lochband, Lochkartenstapel, Diskette Eine Datei enthält Daten

Mehr

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Referenzen. Referenzen

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Referenzen. Referenzen 5 Objektorientierte Programmierung in Java Prof. Dr. Ing. André Stuhlsatz Referenzen Beispiel an der einfachen Klasse Walze: public class Walze { int id; public Walze(int id) { this.id = id; Verwenden

Mehr

Erste Java-Programme (Scopes und Rekursion)

Erste Java-Programme (Scopes und Rekursion) Lehrstuhl Bioinformatik Konstantin Pelz Erste Java-Programme (Scopes und Rekursion) Tutorium Bioinformatik (WS 18/19) Konstantin: [email protected] Homepage: https://bioinformatik-muenchen.com/studium/propaedeutikumprogrammierung-in-der-bioinformatik/

Mehr

Zeiger in C und C++ Zeiger in Java und C/C++

Zeiger in C und C++ Zeiger in Java und C/C++ 1 Zeiger in Java und C/C++ Zeigervariable (kurz: Zeiger, engl.: pointer): eine Variable, die als Wert eine Speicheradresse enthält Java: Zeiger werden implizit für Referenztypen (Klassen und Arrays) verwendet,

Mehr

7. Java Fehler und Ausnahmen

7. Java Fehler und Ausnahmen Fehler und Ausnahmen in Java 7. Java Fehler und Ausnahmen Fehler und Ausnahmen unterbrechen die normale Programmausführung abrupt und stellen eine nicht geplantes Ereignis dar. Ausnahmen sind böse, oder

Mehr

Ausnahmen. Exceptions. Definition Ausnahmen erzeugen Ausnahmen abfangen Ausnahmen weiterleiten. Dr. Beatrice Amrhein

Ausnahmen. Exceptions. Definition Ausnahmen erzeugen Ausnahmen abfangen Ausnahmen weiterleiten. Dr. Beatrice Amrhein Ausnahmen Exceptions Definition Ausnahmen erzeugen Ausnahmen abfangen Ausnahmen weiterleiten Dr. Beatrice Amrhein Definition 2 Definition: Ausnahme (Exception) In C# werden Fehler, die zur Laufzeit im

Mehr

Grundlagen der Programmierung Prof. H. Mössenböck. 16. Ausnahmen (Exception Handling)

Grundlagen der Programmierung Prof. H. Mössenböck. 16. Ausnahmen (Exception Handling) Grundlagen der Programmierung Prof. H. Mössenböck 16. Ausnahmen (Exception Handling) Motivation Fehler können nicht immer dort behandelt werden, wo sie auftreten void p() { q(); Lösung void q() { r();

Mehr

ÜBUNGS-BLOCK 7 LÖSUNGEN

ÜBUNGS-BLOCK 7 LÖSUNGEN ÜBUNGS-BLOCK 7 LÖSUNGEN Aufgabe 1: Gegeben ist folgender Code: Auto[] array = new Auto[3]; // Alle Autos im Array tunen: for (int i = 1; i

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

Beispiel Time Client/Server

Beispiel Time Client/Server Beispiel Time Client/Server /** * * Programmbeschreibung: * --------------------- * Dieses Programm ermittelt über eine TCP/IP-Verbindung die Uhrzeit eines * entfernten Rechners, wobei es sowohl die Rolle

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 15 Einstieg in die Informatik mit Java Collections Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 15 1 Überblick Collections 2 Hierarchie von Collections 3 Verwendung

Mehr

Programmieren I + II Regeln der Code-Formatierung

Programmieren I + II Regeln der Code-Formatierung Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme WS 2016/2017, SS 2017 Programmieren I + II Regeln der Code-Formatierung In diesem Dokument finden

Mehr