Client-Server-Architektur

Slides:



Advertisements
Ähnliche Präsentationen
der Universität Oldenburg
Advertisements

der Universität Oldenburg
Ein Beispiel in Java.
Anwendungen des OODM auf die ADB / NDB
Programmierkurs Java WS 98/99 Vorlesung 15 Dietrich Boles 17/02/99Seite 1 Programmierkurs Java Vorlesung im WS 1998/1999 am FB Informatik der Universität.
Prof. Dr.-Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik Verteilte Software - Java -
Prof. Dr.-Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik Verteilte Software - Java -
Prof. Dr.-Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik Verteilte Software - Java -
Grundlagen der Programmierung (GP) Prof. Dr. H. Schlingloff Joachim Hänsel
Threads Richard Göbel.
Java2D Richard Göbel.
AUFGABE 1: Ein Wagen (dargestellt durch ein Rechteck) soll sich von links nach rechts bewegen. Tipp: Timer benutzen AUFGABE 2: Zusätzlich zu Aufgabe.
Wie überwacht man Objekte im "Alltag" ?. Indem man "Wanzen" an diese anbringt.
Ein Beispiel in Java.
FOR Anweisung. Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm.
DO...WHILE Anweisung.
Benötigte Applets Startseite: in HTML-Format Applet auf der Startseite Das Applet, das auf der Startseite geladen wird, wird die vier Buttons und die eine.
Sommersemester 2003 Lars Bernard
Sommersemester 2004 Jan Drewnak Entwicklung und Einsatz von Geosoftware I Praktikum Sitzung 8 Sitzung 8: Zeichnen in Java.
Dynamische Webseiten Java servlets.
Objektorientierte Programmierung JDK-Klassenbibliothek
AWT – Detailbetrachtung Java 3D – Seminar im Wintersemester 2002/2003 Christian Schneider.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Gerhard Gröger, Dipl.-Ing. D. Dörschlag Einführung in die Programmierung mit Java.
Java-Kurs Grafik Julian Drerup.
Vortrag - Kenny Schlör Applets Einführung in die Appletprogrammierung.
1DVG3 - Paint Paint ein Zeichenprogramm. DVG3 - Paint 2 Paint – ein Zeichenprogramm.
DVG1 - Applets1 Applets. DVG1 - Applets2 Die Klasse Applet n Applets sind Grafikobjekte, die unter Steuerung eines anderen Programms (z.B. eines Browsers,
1DVG3 - anonyme Klassen Anonyme Klassen. DVG3 - anonyme Klassen 2 Syntax new BasisKlasse(Parameterliste) { Modifikationen und Erweiterungen der Basisklasse.
07-GraphischeObjekte Graphische Objekte in EMMA301Paint.
03 - Paint Das Zeichenprogramm EMMA Paint2 Aufgabenstellung Entwicklung eines ausschließlich in JAVA programmierten Graphikprogrammes. Vergleichsprodukte:
04 - Actions Actions Actions 2 Motivation In verschiedenen Swing-Komponenten werden ausgelöste Aktionen durch ActionListener behandelt. Häufig werden.
Java in 9 Folien Besser: Online-Buch Go to Java 2.
© 2002 Dr. Cavelius - Ley - Pohlig - Taulien Step by step zum JFrame 1 Zum JFrame Step by step by step by step by step by step by step by step by.
© 2005 Pohlig GK Informatik K Zum JFrame Step by step by step by step by step by step by step by step by.
© 2006 MPohlig Grundkurs Informatik mit Java 1 JFrame-Vorlage Step by step by step by step by step by step by step by step by.
© 2005 Pohlig – Taulien: Die Matheamatik-GUI als Applet Come Together 1 April 2005 Was ist ein Applet Ein Applet ist ein Javaprogramm, das die VM benutzt,
FH-Hof Java2D - Grundlagen Richard Göbel. FH-Hof Java2D - Funktionen Java2D unterstützt: das Zeichnen von Grafiken die Darstellung von Texten die Darstellung.
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Sommersemester 2004 Jan Drewnak Entwicklung und Einsatz von Geosoftware I Praktikum Sitzung 7 Sitzung 7: User Interfaces in Java.
AWT und JFC Abstract Windowing Toolkit
Java ohne Kara. Java ohne Kara Ab jetzt: Java ohne Kara Ziel: Erfahrungen sammeln mit ersten Java Programmen.
Applets Java für’s Web.
OO implementieren Teil IV Objekte erzeugen. © René ProbstModul 226IV - 2 Von der Klasse zum Objekt Plan Bau Objekt Klasse Instanzierung Objekt Das Objekt.
Jigugegl Java isch guet u git e guete Luun! (frei nach Figugegl) Jigugegl.
CuP - Java Elfte Vorlesung Montag, 11. November 2002.
Informatik – Programmierpraktikum Alexander Volodarski Gruppe 14
Parallel Programming Thread Synchronization. Heute 1. Lösung zu Assignment 2 2. Erstellen und Starten von Threads in Java 3. Das synchronized Schlüsselwort.
Objektorientiertes Konstruieren
Variablenkonzept Klassisch, in Java Basistyp
Übungen zum 2. Tag unter dem Motto Events
Programmierpraktikum Java SS 2005
Klassenhierarchien, Vererbung
CuP - Java Achzehnte (und LETZTE. ) Vorlesung : 1
Learning By Doing Ereignissteuerung (Events) prozedural ereignisgesteuert Unterprogrammaufruf an fest codierter Stelle Wann immer der Event auftritt, führe.
Starten der Entwicklungsumgebung (IDE)
Learning By Doing Ausnahmebehandlung Exceptions (Ausnahmebehandlung) Typische Fehlverhalten zur Laufzeit: s. Buch S. 287ff -Verwendung von null-Objekten.
Learning By Doing Konstruktoren Gleicher Name wie die Klasse Zur Initialisierung des Objekts, insbesondere mit Parametern Wir immer bei der Objekterzeugung.
Learning By Doing Übungen GPanel Quadratfenster mit pixelunabhängigen Windowkoordinaten (doubles) Zweckmässige Standardwerte (defaults) 01 x 0 1 y // WbzEx5.java.
Learning By Doing Parallelverarbeitung Multithreading (Nebenläufigkeit) Alte Idee der Parallelverarbeitung statt rein sequentieller Prozesse Parallelverarbeitung.
Lind 02/2005 Einführung in JAVA. Lind 02/2005 Beispiel: Mittelwert Es soll ein Programm erstellt werden, das den Mittelwert zweier reeller Zahlen berechnet.
Java Thread Scheduling Jin Zhou Proseminar Java Thread Scheduling November 2000.
Programmiervorkurs WS 2014/15 Methoden
© 2005 Pohlig Informatik Jg. 11 mfH Michael Pohlig 1 Zum JFrame Step by step by step by step by step by step by step by step by.
Java-Kurs Übung Benutzeroberflächen und Graphik Frames (Fenster)
Java-Applets und URLs APP Philip Graf, Andreas Bößl.
Einführung in die OOP in Java
, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 1 Beispiel class SpreadSheet { int cellA1, cellA2, cellA3; synchronized.
Vererbung in Java. public abstract class Form { protected int breite; protected int hoehe; protected String farbe; /** * Erzeuge eine Form der Breite.
Java-Kurs Übung Grafik in Java - das Abstract Windowing Toolkit
Java-Kurs Übung Klassen und Objekte: Vererbung (Fortsetzung)
 Präsentation transkript:

Client-Server-Architektur Learning By Doing Client-Server-Architektur Web-Browser Dünner Client-Dünner Server Web-Browser Dünner Client-Dicker Server CGI, JSP, PHP, ASP, ... Web-Browser Hilfsprogramm Dicker Client-Dünner Server JavaScript, Applet, ActiveX

Applets Learning By Doing Beispiele auf www.aplu.ch/applets 2 Sorten Applets Learning By Doing Applets In Browserfenster eingebettet Eigenes Applikationsfenster Beispiele auf www.aplu.ch/applets

Callbackmechanismen bei Applets Learning By Doing Callbackmechanismen bei Applets Ein Applet ist ein eventgesteuertes Java-Programm Die Events werden vom Browser über Callbackmethoden dem Applet mitgeteilt Damit ein Applet in den Genuss dieser Aufrufe kommt, muss es eine Klasse sein, die aus der Klasse Applet oder JApplet abgeleitet wird, und nach Bedarf folgende Callbackmethoden überschreibt: Methode Ereignis/Aufruf Typische Verwendung void init() Nach Initialisierungsphase. Informiert, dass die Klassen geladen sind und der Applet-Kontext erstellt ist ·      Initialisierung von GUI-Komponenten ·      Registrierung von Listener ·      Hinzufügen von Komponenten (Buttons, usw.) ·      Holen von HTML-Parameterwerten void start() Nach init() und immer, wenn man auf die HTML-Seite zurückkommt ·  Starten oder Reaktivieren eines eigenen Threads ·      Startwert-Initialisierung void stop() Beim Verlassen der HTML-Seite ·      Stoppen des eigenen Threads ·      Anhalten des Abspielens von Sound void destroy() Beim Beenden des Browsers (Normalerweise nicht verwendet) s. Buch S. 624ff

Zeichnen/Ausschreiben in ein Applet-Fenster Paint, update Learning By Doing Zeichnen/Ausschreiben in ein Applet-Fenster Die aus Applet abgeleitete eigene Appletklasse besitzt als Oberklasse auch die Klasse Container, welche die Methode paint() enthält. Diese wird immer dann vom System aufgerufen, wenn ein Neuzeichnen des Appletfensters notwendig ist Um in das Appletfenster zu zeichnen oder Text auszuschreiben, überschreibt man in der eigenen Appletklasse diese Methode und führt darin die gewünschten Aktionen aus Damit wir der paint() immer dann ausgeführt, wenn das System ein Neuzeichnen verlangt (systemgetriggertes Rendern) oder wenn das Programm repaint() aufruft Bei der Verwendung von JApplet (Swing) ist statt paint() die Methode paintComponent() zu verwenden. Das Applet wird mit einem Applet-Tag auf einer HTML-Seite aufgerufen. Dieses enthält einige Parameter (Appletklassendatei, Grösse des Fensters, usw.) <html> <head> <title>AppletEx1</title> </head> <body> AppletEx1<br> <applet code="AppletEx1.class" width="401" height="401"> </applet> </body> </html> s. Buch S. 624ff

Das erste Applet Learning By Doing überflüssig: // AppletEx1.java import java.applet.*; import java.awt.*; public class AppletEx1 extends Applet { private int paintCounter; public void init() paintCounter = 0; } public void paint(Graphics g) paintCounter++; g.drawOval(0, 0, 400, 400); g.drawString("WBZ-1 \"Java im Unterricht\"", 130, 200); showStatus("paint: " + Integer.toString(paintCounter)); public void start() public void stop() public void destroy() überflüssig: Nummer zur Sicherstellung, dass richtige Version geladen ist Das erste Applet Editieren Compilieren HTML-Datei in gleiches Verzeichnis wie AppletEx1.class kopieren Mit Browser HTML-Datei laden. Internet Explorer: Mit Ctrl-Reload die neue Version holen Eventuell mit FTP auf Web-Server kopieren

Das zweite Applet ... oh je, der Browser hängt! Learning By Doing AppletEx2 Learning By Doing Das zweite Applet // AppletEx2.java import java.applet.*; import java.awt.*; public class AppletEx2 extends Applet { public void paint(Graphics g) for (int i = 0; i < 100; i++) g.drawOval(i, i, i+10, i+10); } Extrem einfach (auf den ersten Blick) Erst vollständiges Bild sichtbar Analog wie bei Applikation main() aufgerufen wird, ist es hier paint(), aber auch jedesmal wenn Fenster zerstört wird Verständnis von extends nötig Gefährliche Applets einfach zu erstellen while (true) {} ... oh je, der Browser hängt!

Das dritte Applet - 1. Teil AppletEx3 – 1. Teil Learning By Doing Das dritte Applet - 1. Teil // AppletEx3.java import java.applet.*; import java.awt.*; import java.awt.image.*; public class AppletEx3 extends Applet implements Runnable { private boolean isRunning = false; private BufferedImage bi; private Graphics2D g2D; public void init() bi = new BufferedImage(401, 401, BufferedImage.TYPE_INT_RGB); g2D = bi.createGraphics(); g2D.setColor(Color.green); g2D.fillRect(0, 0, 401, 401); } public void start() isRunning = true; new Thread(this).start(); public void stop() isRunning = false; Kann ein Thread sein (implementiert run-Methode) Doppelbufferung (Offscreen Buffer) Grapik-Kontext des Buffers Hintergrundfarbe setzen (Löschen mit Rechteck) Run-Flag setzen Thread starten Run-Flag zurücksetzen

Das dritte Applet – 2. Teil AppletEx3 – 2. Teil Learning By Doing Das dritte Applet – 2. Teil public void run() { while(isRunning) for(int i = 0; i < 100000; i++) Math.sin(1); int x = (int)(500*Math.random()); int y = (int)(500*Math.random()); Color c = new Color((float)Math.random(), (float)Math.random(), (float)Math.random()); g2D.setColor(c); g2D.fillArc(x-100, y-100, 50, 50, 0, 360); repaint(); } public void paint(Graphics g) g.drawImage(bi, 0, 0, null); run-Methode des Threads run-Loop Wartenschleife (unelegant) Kreise mit zufälliger Farbe Aufforderung, paint() aufzurufen paint-Methode Kopieren der Offscreen- Buffers auf Bildschirm Component.update() löscht den Bildschirm und ruft paint() auf. update() überschreiben und paint() aufrufen, ohne zu löschen. public void update(Graphics g) { paint(g); } Flacker, flacker, ... warum?

Das dritte Applet – Ausführung AppletEx3 – Ausführung Learning By Doing Das dritte Applet – Ausführung Geschafft!

AppletEx4 – GPanel APPLETFRAME Learning By Doing Das vierte Applet – GPanel (APPLETFRAME) // AppletEx4.java import javax.swing.*; import ch.aplu.util.*; public class AppletEx4 extends JApplet { GPanel p; public void start() p = new GPanel(GPanel.APPLETFRAME); p.title("Java - exemplarisch"); p.window(0, 8, 0, 8); for (int i = 0; i < 8; i++) for (int j = 0; j < 8; j++) if ((i + j) % 2 == 0) p.fillRectangle(i, j, i + 1, j + 1); } Eigenständiges Fenster Konstruktor mit speziellem Parameter <html> <head> <title>AppletEx4</title> </head> <body> AppletEx4<br> <applet code="AppletEx4.class" archive="aplu.jar" width="0" height="0"> </applet> </body> </html> AppletEx4.html jar-Datei muss im gleichen Verzeichnis sein Grösse durch GPanel gegeben

AppletEx5 – GPanel EMBEDDED Learning By Doing Das fünfte Applet – GPanel (EMBEDDED) // AppletEx5.java import javax.swing.*; import ch.aplu.util.*; public class AppletEx5 extends JApplet implements Runnable { GPanel p; public void start() p = new GPanel(GPanel.EMBEDDED); p.window(0, 8, 0, 8); getContentPane().add(p); new Thread(this).start(); } public void run() for (int i = 0; i < 8; i++) for (int j = 0; j < 8; j++) if ((i + j) % 2 == 0) p.fillRectangle(i, j, i + 1, j + 1); Eingebettet im Browserfenster Konstruktor mit speziellem Parameter Hinzufügen zur ContentPane des Applets (Browserfenster) Keine Zeichenbefehle in start() Zeichnen im run() des Threads <html> <head> <title>AppletEx4</title> </head> <body> AppletEx4<br> <applet code="AppletEx4.class" archive="aplu.jar" width="400" height="400"> </applet> </body> </html> AppletEx4.html Grösse in Pixel des Browsers