
Parallele und verteilte Anwendungen in Java
Description
Alles über E-Books | Antworten auf Fragen rund um E-Books, Kopierschutz und Dateiformate finden Sie in unserem Info- & Hilfebereich.
More details
Other editions
Additional editions


Person
ISNI: 0000 0000 1140 2081
Content
- Intro
- Vorwort zur 6. Auflage
- Inhaltsverzeichnis
- 1 Einleitung
- 1.1 Parallelität, Nebenläufigkeit und Verteilung
- 1.2 Programme, Prozesse und Threads
- 2 Grundlegende Synchronisationskonzepte in Java
- 2.1 Erzeugung und Start von Java-Threads
- 2.1.1 Ableiten der Klasse Thread
- 2.1.2 Implementieren der Schnittstelle Runnable
- 2.1.3 Einige Beispiele
- 2.1.4 Parallele Abläufe
- 2.2 Probleme beim Zugriff auf gemeinsam genutzte Objekte
- 2.2.1 Erster Lösungsversuch
- 2.2.2 Zweiter Lösungsversuch
- 2.3 synchronized und volatile
- 2.3.1 Synchronized-Methoden
- 2.3.2 Synchronized-Blöcke
- 2.3.3 Wirkung von synchronized
- 2.3.4 Notwendigkeit von synchronized
- 2.3.5 volatile
- 2.3.6 Regel für die Nutzung von synchronized
- 2.4 Ende von Java-Threads
- 2.4.1 Asynchrone Beauftragung mit Abfragen der Ergebnisse
- 2.4.2 Zwangsweises Beenden von Threads
- 2.4.3 Asynchrone Beauftragung mit befristetem Warten
- 2.4.4 Asynchrone Beauftragung mit Rückruf (Callback)
- 2.4.5 Asynchrone Beauftragung mit Rekursion
- 2.5 wait und notify
- 2.5.1 Erster Lösungsversuch
- 2.5.2 Zweiter Lösungsversuch
- 2.5.3 Dritter Lösungsversuch
- 2.5.4 Korrekte und effiziente Lösung mit wait und notify
- 2.6 NotifyAll
- 2.6.1 Erzeuger-Verbraucher-Problem mit wait und notify
- 2.6.2 Erzeuger-Verbraucher-Problem mit wait und notifyAll
- 2.6.3 Faires Parkhaus mit wait und notifyAll
- 2.7 Prioritäten von Threads
- 2.8 Thread-Gruppen
- 2.9 Vordergrund- und Hintergrund-Threads
- 2.10 Weitere gute und schlechteThread-Methoden
- 2.11 Thread-lokale Daten
- 2.12 Zusammenfassung
- 3 Fortgeschrittene Synchronisationskonzepte in Java
- 3.1 Semaphore
- 3.1.1 Einfache Semaphore
- 3.1.2 Einfache Semaphore für den gegenseitigen Ausschluss
- 3.1.3 Einfache Semaphore zur Herstellung vorgegebener Ausführungsreihenfolgen
- 3.1.4 Additive Semaphore
- 3.1.5 Semaphorgruppen
- 3.2 Message Queues
- 3.2.1 Verallgemeinerung des Erzeuger-Verbraucher-Problems
- 3.2.2 Übertragung des erweiterten Erzeuger-Verbraucher-Problems auf Message Queues
- 3.3 Pipes
- 3.4 Philosophen-Problem
- 3.4.1 Lösung mit synchronized - wait - notifyAll
- 3.4.2 Naive Lösung mit einfachen Semaphoren
- 3.4.3 Einschränkende Lösung mit gegenseitigem Ausschluss
- 3.4.4 Gute Lösung mit einfachen Semaphoren
- 3.4.5 Lösung mit Semaphorgruppen
- 3.5 Leser-Schreiber-Problem
- 3.5.1 Lösung mit synchronized - wait - notifyAll
- 3.5.2 Lösung mit additiven Semaphoren
- 3.6 Schablonen zur Nutzung der Synchronisationsprimitive und Konsistenzbetrachtungen
- 3.7 Concurrent-Klassenbibliothek aus Java 5
- 3.7.1 Executors
- 3.7.2 Locks und Conditions
- 3.7.3 Atomic-Klassen
- 3.7.4 Synchronisationsklassen
- 3.7.5 Queues
- 3.8 Das Fork-Join-Framework von Java 7
- 3.8.1 Grenzen von ThreadPoolExecutor
- 3.8.2 ForkJoinPool und RecursiveTask
- 3.8.3 Beispiel zur Nutzung des Fork-Join-Frameworks
- 3.9 Das Data-Streaming-Framework von Java 8
- 3.9.1 Einleitendes Beispiel
- 3.9.2 Sequenzielles Data-Streaming
- 3.9.3 Paralleles Data-Streaming
- 3.10 Die CompletableFutures von Java 8
- 3.11 Ursachen für Verklemmungen
- 3.11.1 Beispiele für Verklemmungen mit synchronized
- 3.11.2 Beispiele für Verklemmungen mit Semaphoren
- 3.11.3 Bedingungen für das Eintreten von Verklemmungen
- 3.12 Vermeidung von Verklemmungen
- 3.12.1 Anforderung von Betriebsmitteln auf einen Schlag
- 3.12.2 Anforderung von Betriebsmitteln gemäß einer vorgegebenen Ordnung
- 3.12.3 Weitere Verfahren
- 3.13 Zusammenfassung
- 4 Parallelität und grafische Benutzeroberflächen
- 4.1 Einführung in die Programmierung grafischer Benutzeroberflächen mit JavaFX
- 4.1.1 Allgemeines zu grafischen Benutzeroberflächen
- 4.1.2 Erstes JavaFX-Beispiel
- 4.1.3 Ereignisbehandlung
- 4.2 Properties, Bindings und JavaFX-Collections
- 4.2.1 Properties
- 4.2.2 Bindings
- 4.2.3 JavaFX-Collections
- 4.3 Elemente von JavaFX
- 4.3.1 Container
- 4.3.2 Interaktionselemente
- 4.3.3 Grafikprogrammierung
- 4.3.4 Weitere Funktionen von JavaFX
- 4.4 MVP
- 4.4.1 Prinzip von MVP
- 4.4.2 Beispiel zu MVP
- 4.5 Threads und JavaFX
- 4.5.1 Threads für JavaFX
- 4.5.2 Länger dauernde Ereignisbehandlungen
- 4.5.3 Beispiel Stoppuhr
- 4.5.4 Tasks und Services in JavaFX
- 4.6 Zusammenfassung
- 5 Verteilte Anwendungen mit Sockets
- 5.1 Einführung in das Themengebiet der Rechnernetze
- 5.1.1 Schichtenmodell
- 5.1.2 IP-Adressen und DNS-Namen
- 5.1.3 Das Transportprotokoll UDP
- 5.1.4 Das Transportprotokoll TCP
- 5.2 Socket-Schnittstelle
- 5.2.1 Socket-Schnittstelle zu UDP
- 5.2.2 Socket-Schnittstelle zu TCP
- 5.2.3 Socket-Schnittstelle für Java
- 5.3 Kommunikation über UDP mit JavaSockets
- 5.4 Multicast-Kommunikation mit JavaSockets
- 5.5 Kommunikation über TCP mit JavaSockets
- 5.6 Sequenzielle und parallele Server
- 5.6.1 TCP-Server mit dynamischer Parallelität
- 5.6.2 TCP-Server mit statischer Parallelität
- 5.6.3 Sequenzieller, verzahnt arbeitender TCP-Server
- 5.6.4 Horizontale Skalierung mit Lastbalancierung
- 5.7 Verschlüsselte Kommunikation über TLS
- 5.8 Zusammenfassung
- 6 Verteilte Anwendungen mit RMI
- 6.1 Prinzip von RMI
- 6.2 Einführendes RMI-Beispiel
- 6.2.1 Basisprogramm
- 6.2.2 RMI-Client mit grafischer Benutzeroberfläche
- 6.2.3 RMI-Registry
- 6.3 Parallelität bei RMI-Methodenaufrufen
- 6.4 Wertübergabe für Parameter und Rückgabewerte
- 6.4.1 Serialisierung und Deserialisierung von Objekten
- 6.4.2 Serialisierung und Deserialisierung bei RMI
- 6.5 Referenzübergabe für Parameter und Rückgabewerte
- 6.6 Transformation lokaler in verteilte Anwendungen
- 6.6.1 Rechnergrenzen überschreitende Synchronisation mit RMI
- 6.6.2 Asynchrone Kommunikation mit RMI
- 6.6.3 Verteilte MVP-Anwendungen mit RMI
- 6.7 Dynamisches Umschalten zwischen Wert- und Referenzübergabe Migration von Objekten
- 6.7.1 Das Exportieren und Unexportieren von Objekten
- 6.7.2 Migration von Objekten
- 6.7.3 Eintrag eines Nicht-Stub-Objekts in die RMI-Registry
- 6.8 Realisierung von Stubs und Skeletons
- 6.8.1 Realisierung von Skeletons
- 6.8.2 Realisierung von Stubs
- 6.9 Verschiedenes
- 6.10 Zusammenfassung
- 7 Verteilte Anwendungenmit indirekter Kommunikation
- 7.1 Prinzip der indirekten Kommunikation
- 7.2 Kommunikationsmodelle
- 7.2.1 Kommunikationsmodell Queue
- 7.2.2 Kommunikationsmodell Topic
- 7.3 Nutzung der indirekten Kommunikation in Java
- 7.4 Unidirektionale Kommunikation
- 7.5 Bidirektionale Kommunikation mithilfe eines Rückkanals
- 7.6 Empfangsbestätigungen
- 7.7 Transaktionen
- 7.8 Verschiedenes
- 8 Webbasierte Anwendungen mit Servlets und JSF
- 8.1 HTTP und HTML
- 8.1.1 GET
- 8.1.2 Formulare in HTML
- 8.1.3 POST
- 8.1.4 Format von HTTP-Anfragen und -Antworten
- 8.2 Einführende Servlet-Beispiele
- 8.2.1 Allgemeine Vorgehensweise
- 8.2.2 Erstes Servlet-Beispiel
- 8.2.3 Zugriff auf Formulardaten
- 8.2.4 Zugriff auf die Daten der HTTP-Anfrage und -Antwort
- 8.3 Parallelität bei Servlets
- 8.3.1 Demonstration der Parallelität von Servlets
- 8.3.2 Paralleler Zugriff auf Daten
- 8.3.3 Anwendungsglobale Daten
- 8.4 Sessions und Cookies
- 8.4.1 Sessions
- 8.4.2 Realisierung von Sessions mit Cookies
- 8.4.3 Direkter Zugriff auf Cookies
- 8.4.4 Servlets mit länger dauernden Aufträgen
- 8.5 Asynchrone Servlets
- 8.6 Filter
- 8.7 Übertragung von Dateien mit Servlets
- 8.7.1 Herunterladen von Dateien
- 8.7.2 Hochladen von Dateien
- 8.8 JSF (Java Server Faces)
- 8.8.1 Einführendes Beispiel
- 8.8.2 Managed Beans und deren Scopes
- 8.8.3 MVP-Prinzip mit JSF
- 8.8.4 AJAX mit JSF
- 8.9 RESTful WebServices
- 8.9.1 Definition von RESTful WebServices
- 8.9.2 JSON
- 8.9.3 Beispiel
- 8.10 WebSockets
- 8.11 Zusammenfassung
- 9 Verteilte Anwendungen in der Cloud
- 9.1 Cloud Computing
- 9.2 AWS (Amazon Web Services)
- 9.2.1 AWS-Infrastruktur
- 9.2.2 AWS-Dienste
- 9.2.3 Nutzung der AWS-Dienste
- 9.3 Nutzung der AWS-Dienste von außerhalb der Cloud
- 9.3.1 Nutzung des AWS-Dienstes S3
- 9.3.2 Nutzung des AWS-Dienstes DynamoDB
- 9.3.3 Nutzung des AWS-Dienstes Translate
- 9.4 Nutzung von EC2 als Server
- 9.5 Nutzung von ECS als Server
- 9.5.1 Isolationsstufen
- 9.5.2 Linux-Grundlagen für die Realisierung von Containern
- 9.5.3 Docker
- 9.5.4 ECS
- 9.6 Nutzung von Lambda als Server
- 9.6.1 Idee der zu entwickelnden Anwendung
- 9.6.2 Lambda-Funktion
- 9.6.3 API Gateway
- 9.6.4 Kommandozeilenbasierter Client
- 9.6.5 Java-basierter Client mit grafischer Benutzeroberfläche
- Literatur
- Index
System requirements
File format: PDF
Copy protection: Watermark-DRM (Digital Rights Management)
System requirements:
- Computer (Windows; MacOS X; Linux): Use the free software Adobe Reader, Adobe Digital Editions, or any other PDF viewer of your choice (see eBook Help).
- Tablet/Smartphone (Android; iOS): Install the free app Adobe Digital Editions or another reading app for eBooks, e.g., PocketBook (see eBook Help).
- E-reader: Bookeen, Kobo, Pocketbook, Sony, Tolino and many more (only limited: Kindle).
The file format PDF always displays a book page identically on any hardware. This makes PDF suitable for complex layouts such as those used in textbooks and reference books (images, tables, columns, footnotes). Unfortunately, on the small screens of e-readers or smartphones, PDFs are rather annoying, requiring too much scrolling.
This eBook uses Watermark-DRM, a „soft” copy protection. This means that there are no technical restrictions to prevent illegal distribution. However, there is a personalised watermark embedded in the eBook that can be used to identify the purchaser of the eBook in the event of misuse and to provide evidence for legal purposes.
For more information, see our eBook Help page.