Netzwerkprogrammierung mit Java
|
|
|
- Damian Kästner
- vor 8 Jahren
- Abrufe
Transkript
1 Netzwerkprogrammierung mit Java Eine Übersicht über Java NIO Andre Ufer Zusammenfassung. Diese Ausarbeitung beschreibt die Netzwerkprogrammierung unter Java. Der Schwerpunkt liegt dabei auf einem Vergleich zwischen den Bibliotheken bzw. Frameworks java.net und java.nio. bezüglich ihrer Fähigkeiten, Vor- und Nachteile. Betrachtet werden dabei Umsetzungen einfacher Server und Einsatzzwecke und implementierende Frameworks. 1 Einführung 1.1 Motivation Das Internet ist heute aus der modernen Kommunikation nicht mehr wegzudenken und dabei größter und bekanntester Vertreter und Grundlage sogenannter Verteilter Systeme. Dabei meint die Kommunikation nicht nur den Austausch von Informationen zwischen verschiedenen Personen, sondern auch der ständige Datenaustausch nahezu beliebiger (Software-)Komponenten. Durch den hohen Grad der Vernetzung von Hard- und Software benötigt man klare Strukturen, einheitliche Schnittstellen und Konzepte, um diese Kommunikation zu ermöglichen. Sie lässt sich dabei aus technischer Sicht aus mehreren Blickwinkeln betrachten. Auf der einen Seite gibt es die technische bzw. hardwarebasierte Sicht. Hierunter fallen alle Komponenten, die die technische Basis dieser Kommunikation bilden. Im ISO-OSI-Schichtenmodell würden wir von der Physical Layer oder Schicht 1 reden. Auf der anderen Seite steht die Software. Unter Software ist in diesem Zusammenhang nicht nur ein ausführbares Stück Programmcode zu verstehen, sondern alle Schichten des ISO/OSI-Modells von zwei bis sieben. Darunter fallen Adressierungskonzepte (z.b. MAC), Übertragungsprotokolle (z.b. TCP/IP, HTTP) sowie beliebig abstrakte Implementierungen, die eine Kommunikation zwischen vernetzen Komponenten bzw. Verteilten Systemen ermöglichen. Java NIO gehört zur letzteren Kategorie und soll im Rahmen dieser Arbeit mit der alten Java Netzwerk-API 1 2 mit Bezug auf Nutzen, Vor- und Nachteile verglichen werden. 1 Java NIO befindet sich im Paket java.nio, die alte API in java.net 2 Im weiteren Verlauf wird die java.net API inkl. der benötigten Klasen aus java.io als NET, die java.nio API als NIO bezeichnet
2 1.2 Was ist Java NIO Die Java new I/O (NIO) API wurde mit dem JDK v1.4 veröffentlicht und erweitert die Java API vor allem um Funktionen zur Dateibehandlung und zur Netzwerkkommunikation. Sie ist Buffer-orientiert und nicht-blockierend. Die alten APIs java.io und java.net hingegen sind Stream-orientert und blockierend. Der Schwerpunkt dieser Arbeit liegt auf den neuen Möglichkeiten in der Netzwerkprogrammierung, die um Funktionen wie Channels für Buffer, Selectors für non-blocking I/O und Erweiterungen zur klassischen Socket-Programmierung ergänzt wurden. Ziele von NIO sind vor allem eine bessere Performance und Skalierbarkeit durch die nicht-blockierenden Implementierung der neuen Funktionen. 2 Grundlagen der Netzwerkprogrammierung 2.1 Java NET und Java NIO Die Netzwerkprogrammierung mittels NET erfolgt über klassische Programmierung mittels Sockets. Dabei fordert der Client eine Verbindung an, indem eine Instanz der java.net.socket-klasse erstellt wird. Als Parameter werden i.d.r. Server-Url und Portnummer verwendet. Der Server arbeitet mit einer Instanz der Klasse java.net.serversocket. Dieser bekommt als Parameter den Port, auf den er lauschen soll. Der Verbindungsaufbau findet über die accept()-methode des ServerSockets statt. Nach Verbindungsaufbau findet anschließend ein Nachrichtenaustausch statt. Dieser erfolgt in der java.net API streamorientiert. Jeder Socket bzw. ServerSocket besitzt dazu Input- sowie einen OutputStream, mit dem Daten via Byte-Arrays übertragen werden können. NIO arbeitet (zumindest an der Oberfläche) grundsätzlich anders. Die Datenübertragung erfolgt nicht mehr stream- sondern blockorientiert über sogenannte Channels. Die übertragenen Daten werden mittels Buffer gekapselt. Ein einfaches NIO-Beispiel folgt im nächsten Kapitel. 2.2 Beipsiel: einfacher Server Es folgt ein einfacher Server, der ausschließlich mit den Klassen aus der java.net API programmiert wurde. Das Lesen und Schreiben geschieht über Streams, die Verbindung wird explizit über Sockets hergestellt. 1 public class SimpleNetServer { 2 public static void main ( String [] args ) throws Exception { 3 ServerSocket server = new ServerSocket (21312) ; 4 5 while ( true ) { 6 Socket client = server. accept () 7 byte [] rawdata = new byte [1024]; 8 int numread = server. getinputstream (). read ( rawdata ); 9 if( numread > 0) { 10 System. out. println ( new String ( rawdata ));
3 11 client. getoutputstream (). write ( rawdata ); 12 } 13 } 14 } 15 } Listing 1.1. Einfacher Server mit java.net Dieses Code-Beispiel entspricht einem minimalen Server, der mittels java.net API entwickelt wurde. Der ServerSocket lauscht auf Port und nimmt in einer Endlosschleife Verbindungen an (accept()), ließt über seinen InputStream und schreibt auf den OutputStream des verbundenen Clients. Diese Art der Netzwerkprogrammierung ist blockierend. Das heißt, dass der Server an den Stellen read(rawdata) und write(rawdata) wartet, bis das Lesen bzw. Schreiben abgeschlossen ist und währenddessen keine neue Verbindung annehmen kann. Abb. 1. Klassischer multithreaded Server Der nächste Schritt wäre nun, eine Klasse von Thread oder Runnable abzuleiten, die den Client-Socket als Parameter übernimmt und die Kommunikation in der Methode run() des Threads/Runnable-Objekts abarbeitet. Damit wäre das Problem des Blockierens zwar umgangen, jedoch skaliert diese Lösung sehr schlecht, da für jede Verbindung ein Thread erstellt wird. Dieser wartet in der Regel einen großen Teil der Zeit auf I/O und verschwendet währenddessen Speicher des Stacks. 3 Features von NIO Nachdem nun die klassiche Netzwerkprogrammierung mit Sockets beschrieben wurde, sollen nun die Vorzüge der Netzwerkprogrammierung mit NIO beschrieben werden. Vorgestellt werden das Prinzip des select()-calls inkl. der SelectionKeys (zusammengefasst als Select-Pattern ) und das Reactor-Pattern als Entwurfsmuster für Anwendungen, die die Abarbeitung der SelectionKeys quasi-verteilt vornehmen.
4 3.1 Select-Pattern Der Selector wird dazu verwendet, um nicht-blockierende Netzwerkprogrammierung zu ermöglichen. Das Selector-Pattern verfolgt dabei einen ereignisorientierten Ansatz. Channels, die die Verbindung zwischen den Endpunkten darstellen, werden bei einem Selektor registriert. Durch einen select()-call erhält man die Anzahl der Events, die bei allen registrierten Channels eingetreten sind. Die Abarbeitung der Events erfolgt über ein Abfragen der Events mittels selectedkeys() und dem anschließendem, iterativen bearbeiten. Hierfür bietet der Selector die Methode iterator() an. Es folgt ein Beispiel für einen einfachen Server mit Selector und ServerSocket- Channel als Basis: 1 public class SimpleNioServer { 2 3 public static void main ( String [] args ) { 4 Selector selector = Selector. open (); 5 6 ServerSocketChannel server = ServerSocketChannel. open (); 7 server. socket (). bind ( new InetSocketAddress (21312) ); 8 server. configureblocking ( false ); 9 10 while ( true ) { 11 if( selector. select () > 0) { 12 Iterator it = selector. selectedkeys (). iterator (); while (it. hasnext ()) { 15 SelectionKey key = ( SelectionKey ) it. next (); 16 it. remove (); 17 if(key. isacceptable ()) { 18 SocketChannel client = server. accept (); 19 client. configureblocking ( false ); 20 SelectionKey clientkey = client. register ( selector, SelectionKey. OP_READ ); 21 } else if( key. isreadable ()) { 22 SocketChannel client = key. channel (); 23 ByteBuffer buffer = ByteBuffer. allocate (1024) ; 24 int numread = client. read ( buffer ); 25 System. out. println (" Client meldet : " + new String ( buffer. array ())); 26 } 27 } 28 } 29 } 30 } 31 } Listing 1.2. Einfacher Server mit java.net 3.2 Reactor-Pattern Das Reactor-Pattern stellt ein Designmuster dar, bei dem die Aufgaben der Verbindungsannahme und der Bearbeitung ausgelagert bzw. verteilt werden (Stich-
5 wort: dispatcher). Dieses Prinzip ähnelt damit dem AWT-Event-Dispatching [Lea12]. Der Reactor stellt dabei die zentrale Einheit der Serveranwendung dar. Bei Verbindungswünschen durch Clients an den Reactor gibt dieser die Anfragen an einen Acceptor weiter. Die Bearbeitung von darauffolgenden I/O-Operationen werden anschließend durch den Acceptor weiterdeligiert. Der schematische Aufbau eines Reactors ist in Abb. 2 zu sehen. Abb. 2. Schematischer Aufbau des Reactor-Patterns Das Reactor-Pattern verfolgt dabei den Ansatz, pro auftretendem Event einen Thread zu erstellen anstatt pro Client-Verbindung [JNet12] und arbeitet so nach dem Divide and Conquer Prinzip. Dafür verwendet die Reactor-Klasse die attach()-methode der SelectionKey-Klasse um dem SelectionKey, der bei der Registrierung des ServerSocketChannels zurückgegeben wird, eine Acceptor- Instanz als eine Art Callback übergibt. Das Reactor-Pattern erhöht dabei die Skalierbarkeit noch weiter, als der einfache Ansatz, wie er bereits oben beschrieben wird. Ein Nachteil, der sich durch die Verwendung des Reactor-Patterns ergibt, ist die Gefahr eines potenziellen Memoryleaks. Das Problem dabei wird z.b. von Jeanfrancois Arcand [Arc12] beschrieben. Es entsteht dadurch, dass das Attachement eines SelectionKeys möglicherweise für längere Zeit ungebraucht im Speicher liegt. Bei mehreren Tausend Verbindungen entsteht dabei ein immer größerer Speicherbedarf für Objekte, die nicht gebraucht werden. Dem lässt sich jedoch dadurch entgegenwirken, indem z.b. der Reactor als Singleton implementiert wird. Damit kann sichergestellt werden, dass es insgesamt nur ein Acceptor-Attachement innerhalb der Serveranwendung gibt. 4 Einsatzgebiete von Java NIO Die NIO-API kann bzw. sollte überall dort in der Netzwerkprogrammierung eingesetzt werden, wo eine hohe Anzahl an Verbindungen erwartet wird und eine hohe Skalierbarkeit benötigt wird. Die Arbeit mit NIO gestaltet sich dabei
6 jedoch grundsätzlich etwas komplexer als mit NET. Aus diesem Grund sind einige Frameworks am Markt zu finden, die auf NIO aufbauen. Eines dieser Frameworks ist Netty, dass urpsrünglich zu JBoss gehörte und ein asynchrones, ereignisbasiertes Framework für RAD von Netzwerkanwendungen darstellt [Nety12]. Als Beispiel ist unter summary.html (letzter Zugriff: ) ein Echoserver zu finden, der mit Netty implementiert wurde. 5 Fazit und Ausblick NIO spielt seine Stärken, also die nicht-blockierende API und die damit verbundene, bessere Skalierbarkeit vor allem dort aus, wo in der Netzwerkprogrammierung viele hunderte oder tausenden Verbindungen gleichzeitig behandelt werden müssen. Hier stößt NET an ihre Grenzen. Zwar lassen sich mit NET auch multithreaded Anwendungen entwickeln, jedoch muss der Entwickler hier noch viel Arbeit selbst erledigen. Selector, Channels und Buffer stehen unter NIO bereits out of the box zur Verfügung und ermöglichen zwar etwas komplexere aber besser skalierende und flexiblere Lösungen. Literaturverzeichnis [Arc12] Tricks and Tips with NIO part II: Why SelectionKey.attach() is evil Letzter Zugriff: [JNet12] Architecture of a Highly Scalable NIO-Based Server Letzter Zugriff: [Lea12] Scalable I/O in Java, Dough Lea State University of New York at Oswego Letzter Zugriff: [Nety12] Netty - the Java NIO Client Server Socket Framework Letzter Zugriff:
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
Referat: Netzwerkprogrammierung in Java
1.)ISO/OSI und Internet Referenzmodell Referat: Netzwerkprogrammierung in Java ISO/OSI 7 Schichtenmodell (1-Bitübertragung, 2-Sicherung, 3-Netzwerk, 4-Transport, 5-Sitzung, 6- Darstellung, 7-Anwendung)
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
Java und Netzwerkkommunikation
Java und Netzwerkkommunikation Ziel: Kommunikation über Rechnergrenzen hinweg Grundlagen Sockets in Java Java-Netzwerk-Einführung Seite 1 Grundbegriffe Senden und Empfangen von Daten! Frau B Herr A Sender
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
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
Programmieren II. Timer. Vorlesung 11. Handout S. 1. Martin Schultheiß. Hochschule Darmstadt Sommersemester 2011. Timer. Sockets.
Programmieren II Martin Schultheiß Hochschule Darmstadt Sommersemester 2011 1 / 26 Timer Sockets SMTP-Client 2 / 26 Timer Mit einem Timer können bestimmte Aktionen periodisch wiederkehrend durchgeführt
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
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
TCP und UDP Sockets in Java
TCP und UDP Sockets in Java Grundlegende Mechanismen Server reserviert Port: Klient: - Server: bind Server nimmt Verbindungswünsche an Klient: - Server: listen Klient möchte sich verbinden Klient: connect;
Softwarepraktikum Sommersemester 2006
Softwarepraktikum Sommersemester 2006 Netzwerkprogrammierung in Java Ralf Wienzek [email protected] Ulrich Loup [email protected] Grundlagen Netzwerkprogrammierung TCP/IP
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
Transmission Control Protocol (TCP)
Transmission Control Protocol (TCP) Verbindungsorientiertes Protokoll, zuverlässig, paketvermittelt stream-orientiert bidirektional gehört zur Transportschicht, OSI-Layer 4 spezifiziert in RFC 793 Mobile
Netzwerkprogrammierung
Netzwerkprogrammierung 1 Netzwerkverbindungen Das Entwurfsziel von Java war: Einfache Verbindung zwischen Rechnern und SetBox-Systemen. Das Standardpaket java.net hilft bei allen Netzwerkverbindungen.
Probeklausur: Programmierung WS04/05
Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,
Programmieren II. Sockets. Vorlesung 16. Handout S. 1. Dr. Klaus Höppner. Hochschule Darmstadt Sommersemester 2010. Sockets.
Programmieren II Dr. Klaus Höppner Hochschule Darmstadt Sommersemester 2010 1 / 19 2 / 19 Über einen Socket kann eine Anwendung die Implementierung des Netzwerkprotokolls des darunter liegenden Betriebssystems
Socket-Programmierung unter Java
Datenströme -Programmierung unter Java 1 - Grundlagen: Datenströme JAVA unterscheidet Streams und Reader/Writer Zur Dateneingabe: InputStream oder Reader Zur Datenausgabe: OutputStream oder Writer Verwende
Tag 8 Repetitorium Informatik (Java)
Tag 8 Repetitorium Informatik (Java) Dozent: Michael Baer Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2017/2018 Informatik-Repetitorium
Advanced Network Programming
1 Advanced Network Programming Inhalt Netzwerkkommunikation Protokolle Verbindungsaufbau, -kontrolle, Datentransfer Socketprogrammierung TPC und UDP Client- und Serversockets verbindungsorientierte Server
Serielle Kommunikation - Kodierung
Serielle Kommunikation - Kodierung (1.) Erstellen Sie nachfolgende Klasse: Dabei haben die Methoden folgende Funktionen: exists(): Überprüft, ob eine serielle Schnittstelle existiert getproperties(): Liefert
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
Netzwerkprogrammierung & Threads
& Threads Praktikum aus Softwareentwicklung 2 Netzwerp. - 1 & Threads URL, URLConnection, UDP, TCP Threads Parallele Programme, Synchronisation, Netzwerp. - 2 Grundlagen (1/2) Kommunikation zwischen verteilten
Verbindungen zu mehreren Clients. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 23: Netzwerkprogrammierung/ Kommunikation 2
Universität Osnabrück 1 Verbindungen zu mehreren Clients 3 - Objektorientierte Programmierung in Java Vorlesung 23: Netzwerkprogrammierung/ Kommunikation 2 Wie könnte das bereits vorgestellte Programm
Rechnernetze und verteilte Systeme Programmieraufgabe
Fakultät für Informatik Lehrstuhl 4 M. Sc.-Inf. Dimitri Scheftelowitsch Wintersemester 2016/17 M. Sc.-Math. Alexander Frank Ausgabe: 12. Dezember, Rechnernetze und verteilte Systeme Programmieraufgabe
Einführung Verteilte Systeme - Java Threads I -
Einführung Verteilte Systeme - Java Threads I - Prof. Dr. Michael Cebulla 20. November 2014 Fachhochschule Schmalkalden Wintersemester 2014/15 1 / 38 M. Cebulla Verteilte Systeme Gliederung Wiederholung:
NIO Channels SYSTEM SOFTWARE 1
NIO Channels SYSTEM SOFTWARE 1 Networking Grundlagen Channels und Buffers Nicht-blockierendes Arbeiten mit Selectors Asynchrone Channels Locks SYSTEM SOFTWARE 2 Motivation Mit NIO und NIO.2 wurden Channels
Client-Server TCP/IP - Kodierung
Client-Server TCP/IP - Kodierung (1.) (a.) Testen Sie das erste Beispiel aus dem Ordner 01: Starten Sie Client und Server auf dem gleichen PC, aber den Server zuerst! (b.) In welchem Bereich müssen die
Daniel Warneke [email protected] 08.05.2006. Ein Vortrag im Rahmen des Proseminars Software Pioneers
Design Patterns Daniel Warneke [email protected] 08.05.2006 Ein Vortrag im Rahmen des Proseminars Software Pioneers Design Patterns 1/23 Übersicht Einleitung / Motivation Design Patterns Beispiele Rolle des
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
1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen
1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen II.2.3 Datenabstraktion - 1 - public class Rechteck { Selektoren
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
Netzwerkprogrammierung unter Linux und UNIX
Netzwerkprogrammierung unter Linux und UNIX Bearbeitet von Stefan Fischer, Walter Müller 2. Auflage 1999. Buch. XII, 228 S. Hardcover ISBN 978 3 446 21093 6 Format (B x L): 14 x 20,9 cm Gewicht: 329 g
ebusiness Übung 3a Spezifikation und Nutzung von Web-APIs (Services) Prof. Dr. Andreas Schmietendorf 1
ebusiness Übung 3a Spezifikation und Nutzung von Web-APIs (Services) 14.03.2017 Prof. Dr. Andreas Schmietendorf 1 Aufgabenstellung 14.03.2017 Prof. Dr. Andreas Schmietendorf 2 Ziele der Übung Spezifikation
Programmiermethodik 1. Klausur
Programmiermethodik 1. Klausur 27. 6. 2013 Name Matrikelnummer Aufgabe mögliche Punkte erreichte Punkte 1 21 2 20 3 19 4 19 5 21 6 20 Gesamt 120 1 Seite 2 von 18 Aufgabe 1) Objekt-Orientierung und Vererbung
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,
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.
Erzeugungsmuster. Kapselung der Objekt-Erzeugung
Erzeugungsmuster Kapselung der Objekt-Erzeugung Definition Erzeugungsmuster dienen für die Lose Koppelung, bei der erst zur Laufzeit der Typ des zu erzeugenden Objekts festgelegt wird. Abstract Factory
4. Thread- und Netzwerk- Programmierung
4. Thread- und Netzwerk- Programmierung 4.1 Ziel dieses Kapitels 4.2 Prozeß versus Thread 4.3 Thread-Programmierung 4.4 TCP/IP Grundlagen 4.5 TCP Programmierung 3. TCP/IP und Threads 3-1 4.1 Ziel dieses
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
Kommentare, Client-Server, Protokolle
Kommentare, Client-Server, Protokolle Grundlagen für die erste Praktikumswoche 19. Oktober 2006 Dokumentationsziel Zweck und Funktionsweise sollten so dokumentiert werden, dass ein Programmierer eine Klasse
Projektarbeit Java. 4-Gewinnt. Berner Fachhochschule. 2004, Labor für Technische Informatik
Berner Fachhochschule Hochschule für Technik und Informatik, HTI Fachbereich Elektro- und Informatik Labor für technische Informatik Projektarbeit Java 4-Gewinnt 2004, Labor für Technische Informatik Dateiname:
Programmiermethodik. Übung 13
Programmiermethodik Übung 13 Sommersemester 2010 Fachgebiet Software Engineering [email protected] Agenda Vorstellung Musterlösung HA9 Mancala Showroom Client/Server Kommunikation in Java
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
Vorkurs Informatik WiSe 17/18
Java Rekursion Dr. Werner Struckmann / Stephan Mielke, Nicole Naczk, 10.10.2017 Technische Universität Braunschweig, IPS Überblick Einleitung Türme von Hanoi Rekursion Beispiele 10.10.2017 Dr. Werner Struckmann
II.3.1 Rekursive Algorithmen - 1 -
1. Grundelemente der Programmierung 2. Objekte, Klassen und Methoden 3. Rekursion und dynamische Datenstrukturen 4. Erweiterung von Klassen und fortgeschrittene Konzepte II.3.1 Rekursive Algorithmen -
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
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
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
Programmiermethodik 3. Klausur Lösung
Programmiermethodik 3. Klausur Lösung 9. 1. 2014 Name Matrikelnummer Aufgabe mögliche Punkte erreichte Punkte 1 20 2 16 3 45 4 19 5 20 Gesamt 120 1 Seite 2 von 10 Aufgabe 1) Objekt-Orientierung und Vererbung
Vorkurs Informatik WiSe 16/17
Java Rekursion Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe, 11.10.2016 Technische Universität Braunschweig, IPS Überblick Einleitung Beispiele 11.10.2016 Dr. Werner Struckmann / Stephan Mielke,
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,
TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK
TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen WS 2006/2007 Praktikum Grundlagen der Programmierung Lösungsvorschläge zu Blatt 3 F. Forster, M.
Handbuch für die Erweiterbarkeit
Handbuch für die Erweiterbarkeit Inhalt Pakete für die Erweiterbarkeit... 2 Actions... 2 Items... 2 Itemset... 2 Die UseCaseNewAction... 3 Eigene Shapes... 4 Der Shape Container... 5 User Objects... 6
Java: Kapitel 1. Überblick. Programmentwicklung WS 2008/2009. Holger Röder Holger Röder
Java: Kapitel 1 Überblick Programmentwicklung WS 2008/2009 Holger Röder [email protected] Was ist Java? Die Java-Technologie umfasst die Programmiersprache Java sowie die Java-Plattform
Einführung in Java. Ausgewählte Quellen zu Java
Einführung in Java Wesentliche Eigenschaften und Merkmale der Programmiersprache Java Prof. Dr. Stefan Böttcher Universität Paderborn im Rahmen der Vorlesung: Webbasierte Informationssysteme SS 2004 Einführung
Creational Patterns. Seminar Software-Entwurf. Thomas Liro WS 2004/05.
Creational Patterns Seminar Software-Entwurf WS 2004/05 Thomas Liro Inhaltsüberblick Einordnung des Themas Beschreibung von Design Pattern Auswahl von Design Patterns Was sind Creational
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
II. Grundlagen der Programmierung. Beispiel: Merge Sort. Beispiel: Merge Sort (Forts. ) Beispiel: Merge Sort (Forts. )
Technische Informatik für Ingenieure (TIfI) WS 2006/2007, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Rekursion Datenstrukturen Merge S ( split, s, merge ) Beispiel:
Zentralübung Grundlagen der Programmierung
Zentralübung Grundlagen der Programmierung Bastian Cramer Standardbelegungen für Variablen lokale Variablen müssen initialisiert werden! Ansonsten gilt: 2 Aufgabe 1: while Schleife Quersumme einer beliebigen
Objektorientierte Programmierung und Modellierung
Objektorientierte Programmierung und Modellierung Einführung, Teil 2 24.10.17 - WS17/18 Hakan Aksu 1 Raumänderung beachten Dienstag 14:15-15:45 Uhr in M001 (anstatt K101) 2 Ausfalltermine 31.10 Vorlesung
Grundlagen der Programmierung Prof. H. Mössenböck. 15. Pakete
Grundlagen der Programmierung Prof. H. Mössenböck 15. Pakete Idee Paket = Sammlung zusammengehöriger Klassen (Bibliothek) Zweck mehr Ordnung in Programme bringen bessere Kontrolle der Zugriffsrechte (wer
Programmierkurs Java
Programmierkurs Java Java Generics und Java API (1/2) Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck https://www.itm.uni-luebeck.de/people/fischer Datenstrukturen In vielen Sprachen
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
Objektorientierte Programmierung. Kapitel 22: Aufzählungstypen (Enumeration Types)
Stefan Brass: OOP (Java), 22. Aufzählungstypen 1/20 Objektorientierte Programmierung Kapitel 22: Aufzählungstypen (Enumeration Types) Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester
Netzwerkprogrammierung & Threads
& Praktikum aus 1 & URL, URLConnection, UDP, TCP Parallele Abläufe, Synchronisation, 2 Grundlagen (1/4) Kommunikation zwischen verteilten Programmen Host Computer Java Virtuelle Maschine Host Computer
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,
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
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
6 Speicherorganisation
Der Speicher des Programms ist in verschiedene Speicherbereiche untergliedert Speicherbereiche, die den eigentlichen Programmcode und den Code der Laufzeitbibliothek enthalten; einen Speicherbereich für
Heap vs. Stack vs. statisch. 6 Speicherorganisation. Beispiel Statische Variablen. Statische Variablen
Heap vs. vs. statisch Der Speicher des Programms ist in verschiedene Speicherbereiche untergliedert Speicherbereiche, die den eigentlichen Programmcode und den Code der Laufzeitbibliothek enthalten; einen
TCP/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
Problem: Was ist, wenn der Stapel voll ist? Idee: Erzeuge dynamisch ein grösseres Array und kopiere um. Dynamische Anpassung der Größe
Maximale Größe?! Problem: Was ist, wenn der Stapel voll ist? Idee: Erzeuge dynamisch ein grösseres Array und kopiere um Dynamische Anpassung der Größe Praktische Informatik I, HWS 2009, Kapitel 10 Seite
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.
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
JUnit. Software-Tests
JUnit Software-Tests Übersicht Einleitung JUnit Jia Li Grundlegendes Diana Howey Hendrik Kohrs Praktische Einbindung Benjamin Koch Zili Ye Einleitung in allgemeines Testen Automatische Tests Testen ist
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
Heap vs. Stack vs. statisch. 6 Speicherorganisation. Beispiel Statische Variablen. Statische Variablen
Heap vs. vs. statisch Der Speicher des Programms ist in verschiedene Speicherbereiche untergliedert Speicherbereiche, die den eigentlichen Programmcode und den Code der Laufzeitbibliothek enthalten; einen
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
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
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
Info B VL 8: Abstrakte Klassen & Interfaces
Info B VL 8: Abstrakte Klassen & Interfaces Objektorientiere Programmierung in Java 2003 Ute Schmid (Vorlesung) Elmar Ludwig (Übung) FB Mathematik/Informatik, Universität Osnabrück Info B VL 8: Abstrakte
Unified-E Standard WebHttp Adapter
Unified-E Standard WebHttp Adapter Version: 1.5.0.2 und höher Juli 2017 Inhalt 1 Allgemeines... 2 2 Adapter-Parameter in Unified-E... 2 3 Symbolische Adressierung... 3 3.1 ReadValues-Methode... 4 3.2 WriteValues
Objektorientierung. Klassen und Objekte. Dr. Beatrice Amrhein
Objektorientierung Klassen und Objekte Dr. Beatrice Amrhein Überblick Konzepte der Objektorientierten Programmierung Klassen und Objekte o Implementierung von Klassen o Verwendung von Objekten 2 Konzepte
Grundkurs Programmieren in Java
Dietmar Ratz Jens Scheffler Detlef Seese Jan Wiesenberger Grundkurs Programmieren in Java Band 2: Programmierung kommerzieller Systeme HANSER Inhaltsverzeichnis Vorwort 15 1 Einleitung 17 1.1 Java - definitiv
