Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Andreas Rozek Rechenzentrum Uni Stuttgart Abteilung PKB Telefon: (0711) 685-4514.

Ähnliche Präsentationen


Präsentation zum Thema: "Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Andreas Rozek Rechenzentrum Uni Stuttgart Abteilung PKB Telefon: (0711) 685-4514."—  Präsentation transkript:

1 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Andreas Rozek Rechenzentrum Uni Stuttgart Abteilung PKB Telefon: (0711) Einführung in Java bis

2 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Organisatorische Details Fragebogen Anwesenheitsliste Teilnahmebescheinigung (nur bei ständiger Teilnahme)

3 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Programmübersicht 1. Java im Überblick 2. Programmieren in Java 3. Java und das World-Wide Web 4. Die „Java Foundation Classes“ 5. Java‘s Welt

4 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart „Lernziele“ Java im Überblick - Überblick über Möglichkeiten und Grenzen - Vorbereitung auf die Arbeit mit Java Programmieren in Java - Erstellen Text-orientierter Programme - Interaktion mit Laufzeitumgebung und anderen Prozessen - Zugriff auf Dateien und Dateisysteme

5 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart „Lernziele“ (Fortsetzung) Java und das World-Wide Web - einfache grafische Benutzeroberflächen - Erstellen/Veröffentlichen von Applets - Kommunikation via Netzwerk die „Java Foundation Classes“ - „professionelle“ Bedienoberflächen - Erstellen von „visuellen Komponenten“ - Zwischenablage, „Drag-and-Drop“ - Ausgabe auf einen Drucker

6 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart „Lernziele“ (Fortsetzung) Java‘s Welt - Überblick über vorhandene bzw. geplante Klassenbibliotheken - Überblick über weitere Laufzeitumgebungen und Produkte

7 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Einführung in Java Teil I Java im Überblick

8 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Java im Überblick Entwicklungsgeschichte wesentliche Merkmale der Sprache Vergleich mit JavaScript (ECMAScript) unterstützte Plattformen und Umgebungen Möglichkeiten und Grenzen aktuelle Trends, laufende Entwicklungen Entwicklungsumgebungen Informationsquellen, Literatur

9 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Wie alles begann erste Studien zu Programmiersprache und Betriebssystem für „embedded systems“ - Haushaltsgeräte - Hifi- und Videoelektronik, Set-Top Boxen - Kommunikationsgeräte, Organizer Anforderungen: - Robustheit und Stabilität - Plattformunabhängigkeit - Realisierbarkeit benutzerfreundlicher Bedieneroberflächen C++ ist zu komplex und fehleranfällig

10 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Wie alles begann... (Fortsetzung) 1991Entwicklung der Programmiersprache Oak 1993Industrie ist nicht interessiert NCSA Mosaic erscheint, das WWW gewinnt an Popularität 1994Oak-Compiler und WWW-Browser in Oak 1995Oak wird in Java umbenannt Netscape lizensiert Java 1996Version 1.0 wird freigegeben

11 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Wesentliche Merkmale von Java „Java: A simple, object-oriented, network-savvy, interpreted, robust, secure, architecture neutral, portable, high-performance, multithreaded, dynamic language.“ (Zitat aus einem „Whitepaper“ von Sun)

12 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Java ist... Einfach –Java-Syntax ähnlich der von C++  einfacher Umstieg für Programmierer –Beschränkung auf wesentliche Sprachmerkmale  einfache Compiler, kompakte Programme –automatische Speicherverwaltung  einfache Programme  kein Verlust von Ressourcen –„echte“ Zeichenketten und Felder  keine Gefahr der Feldgrenzenüberschreitung

13 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Java ist... (Fortsetzung) Objekt-orientiert –Klassen und Objekte, einfache Vererbung –abstrakte Klassen und „Interfaces“ –Attribute und Methoden (für Klassen und Objekte) –Polymorphie –Klassenbibliotheken –einstellbare Sichtbarkeit von Bezeichnern –„innere“ und „anonyme“ Klassen

14 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Java ist... (Fortsetzung) Kommunikativ („network-savvy“) –die Protokolle - TCP/IP und UDP/IP (unicast und multicast) - HTTP und FTP sind bereits implementiert –Applets laden ihre Klassen „aus dem Netz“ –Unterstützung von verteilten Systemen - Remote Method Invocation - CORBA - Java Shared Data Toolkit JSDT - (und weitere)

15 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Java ist... (Fortsetzung) Robust –strenge Typ-Überprüfung durch den Compiler –Versionskontrolle beim Laden von Klassen –keine Adressen bzw. Pointer –nicht abschaltbare Feldgrenzenüberwachung Sicher –Security-Manager (für Applets, „sandbox model“) –Zertifizierung möglich –Byte Code Verification

16 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Java ist... (Fortsetzung) Architektur-unabhängig –Plattform-unabhängiger Bytecode  Virtuelle Maschine interpretiert Bytecode  Kompilat läuft auf jeder Plattform –unabhängig von „big/middle/little endian“  ermöglicht Austausch von Binärdaten Portabel –keine implementations-abhängigen Teile –POSIX-basierte System-Schnittstelle

17 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Java ist... (Fortsetzung) Schnell –Compiler unterstützt Code-Optimierungen („inlining“, Verwerfen von ungenutztem Code) –Klassen werden nur bei Bedarf geladen („late binding“) –„just-in-time“-Kompilierung möglich (Portabilität bleibt unbeeinflußt) –wohldefinierte Schnittstelle zu externen Bibliotheken („native code“)

18 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Java ist... (Fortsetzung) Multi-Threaded –einfache Programmierung von Applikationen mit mehreren Threads –Synchronisation von Threads ist Bestandteil der Programmiersprache! –Laufzeitsystem basiert selbst auf multi-threading Dynamisch –Interfaces erlauben verteilte Programmierung –Klassen werden zur Laufzeit geladen

19 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart JavaScript (im Vergleich zu Java) interpretierte Makrosprache Quelltext in HTML eingebettet (kein Compiler, keine Bibliotheken) Objekt-“basiert“ (vorgegebene Klassen und Objekte) Protoyp-basierte Vererbung Funktionsobjekte, spezielle HTML- spezifische Funktionen Syntax ähnlich der von Java

20 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Unterstützte Plattformen (Auswahl) Windows 95/NT SunOS 5.x IRIX 5.x, 6.x MacOS 7.x,8.x LINUX, FreeBSD (WindowsCE, PalmOS) Systeme mit Java-fähigen WWW-Browsern auf die Versionsnummer der Java- Laufzeitumgebung achten!

21 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Unterstützte Plattformen (Forts.) Java Ring ( ) Java für Chip-Karten (Siemens) Java für Steuerrechner (z.B. PSC1000) ( )

22 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Alternative Implementierungen Microsoft VM (JView) (http://www.microsoft.com/java) enthält etliche Windows-spezifische Erweiterungen Transvirtual Kaffe ( ) kann sowohl Sun-kompatible als auch Microsoft-kompatible Programme verarbeiten

23 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Versionsnummern 1.0.2(veraltet, jedoch beliebt für Applets) 1.1.x(Auslaufmodell, derzeit 1.1.7, 1.1.8) 1.2.x(aktuell, derzeit 1.2.1) Bugfix Release (keine API-Änderungen) Version (API-Änderungen/Erweiterungen)

24 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Laufzeitumgebungen

25 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart „Standard“-Bibliotheken (Java 2) Abstract Windows Toolkit, Swing Java Foundation Classes (JFC) Java IDL Java DataBase Connection (JDBC) JavaBeans Remote Method Invocation (RMI) Java2D

26 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart „Standard“-Erweiterungen Java Naming and Directory Interface (JNDI) JavaMail, Java Management, InfoBus Java3D, Java Media Framework Java Advanced Imaging Java Servlet Java Cryptography Extension (JCE) JavaHelp Java Serial Port (COMM)

27 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Java für „Embedded Systems“ Java 2 Platform, Micro Edition (Java2ME) K Virtual Machine PersonalJava (für Organizer und PDAs) EmbeddedJava (für Steuerrechner) Java Card (für Chip-Karten) JavaOS JavaPC (für ältere PCs)

28 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Java und das World-Wide Web Java PlugIn HotJava Browser HotJava HTML Component Java WebServer Java Embedded Server (NanoServer)

29 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Sonstige Entwicklungen (Auszug) JavaTelephony Java Shared Data Toolkit (JSDT) JavaSpeech Jini (siehe )

30 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Einsatzmöglichkeiten WWW-basierte Programme –Navigationshilfen –Visualisierung von Daten –Simulationen –VRML-Scripting –Animationen –Audio

31 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Einsatzmöglichkeiten (Fortsetzung) Grafische Benutzeroberflächen (ggfs. „FrontEnds“ für externe Programme)

32 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Einsatzmöglichkeiten (Fortsetzung) Rapid Prototyping Verteilte Applikationen

33 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Die Grenzen von (reinem) Java zeitkritische (Echtzeit-)Applikationen Numerik (Zugriff auf Arrays) Inspektion der lokalen Dateisysteme (Zugriff auf Parallel-/Seriell-Schnittstellen) Zugriff auf Umgebungsvariablen (oder die Windows Registrierdatenbank) andere Transportprotokolle (z.B. ICMP) Plattform-spezifische Eigenheiten (Clipboard, Drag‘n‘Drop, Fonts)

34 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Entwicklungsumgebungen Sun‘s Java SDK Microsoft Visual J++ IBM VisualAge for Java Borland JBuilder Symantec Café Sun Java Workshop

35 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Sun‘s Java SDK Bedienung über Kommandozeilen - Compiler, Debugger, Tools - Dokumentation im HTML-Format für Windows 95/NT und SunOS 5.x stets die neueste Version kostenlos im Internet verfügbar Laufzeitumgebung JRE

36 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Microsoft Visual J++ an Java angepaßtes Developer-Studio nur für Windows 95/NT sehr schneller Compiler mit strengem Syntax-Check sehr komfortable grafische Oberfläche voller Zugriff auf Windows 95/NT über Microsoft-spezifische Bibliotheken kostenlos im Internet verfügbar nicht Standard-konform

37 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart IBM VisualAge for Java grafische Entwicklungsumgebung gewöhnungsbedürftige Benutzeroberfläche eingeschränkte Version kostenlos im Internet verfügbar

38 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Borland JBuilder ähnlich Delphi bzw. Borland C++ unterstützt JavaBeans Ressourcen-hungrig

39 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Sun Java Workshop/Java Studio Entwicklungsumgebung in Form eines WWW-Browsers in Java realisiert (sehr langsam) Bedienung gewöhnungsbedürftig

40 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Informationsquellen Entwicklungsumgebung, Tutorials,... Quelltexte und Informationen Microsoft‘s Java-Entwicklungen developer.javasoft.com/developer/ Java Developer Connection

41 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart News-Gruppen (7 aus 11) comp.lang.java.beans comp.lang.java.corba comp.lang.java.databases comp.lang.java.gui comp.lang.java.programmer comp.lang.java.security comp.lang.java.softwaretools

42 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Tips zum Kauf von Literatur unbedingt auf 1.1 achten Hinweise (Auszug): –Druckerunterstützung –Zwischenablage (Clipboard) –Serialisierung von Objekten David Flanagan „Java in a Nutshell“ „Java Examples in a Nutshell“ O´Reilly Verlag

43 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Viel Spaß beim Stöbern!

44 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Einführung in Java Teil II Die Programmiersprache Java

45 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Die Programmiersprache Java Syntax und Semantik Erstellen eines lauffähigen Programmes Interaktion mit der Laufzeitumgebung Zugriff auf Dateisysteme Ein-/Ausgabe von/auf Dateien  Text-orientierte (eigenständige) Programme

46 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Programmieren mit Objekten Prozeduraler Ansatz –Datentypen (Strukturen) –Funktionen mit Typ-gebundenen Parametern –neue Typen verlangen neue Funktionen Objekt-orientierter Ansatz –Klassen mit Feldern und Methoden –Objekte „wissen“, was mit ihnen geschieht

47 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Begriffe Klasse Objekt, Instanz Konstruktor, (Destruktor) einfache/(mehrfache) Vererbung Oberklasse, Unterklasse, Klassenhierarchie Klassen-/Instanz-Variablen und Methoden abstrakte Klassen, Interfaces Polymorphie Überladen von Methoden

48 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Prozedurales Beispiel typedef struct GrafObj { int GrafType; int xl,yt, xr,yb; } GrafObj; *GrafObj[ ] GrafList; void moveObj (*GrafObj Item, int dx, int dy) {...}; void drawObj (*GrafObj Item) { switch (*GrafObj.GrafType) { case hollowRectangle:...; case filledRectangle:...; case hollowOval:...; case filledOval:...;... }; }; Aufgabe: Programm um Dreiecke erweitern for (int i=0,...,...) { drawObj(GrafList[i]); };

49 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Objekt-orientiertes Beispiel class GrafObj { int xl,yt, xr,yb; void move (int dx, int dy) {...}; void draw (); }; class filledRectangle extends GrafObj { void draw () {...}; }; class hollowRectangle extends filledRectangle { void draw () {...}; };... GrafObj[ ] GrafList; for (int i=0,...,...) { GrafList[i].draw(); };

50 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Vererbung im Detail class GrafObj { int xl,yt, xr,yb; void move (int dx, int dy) {...}; void draw (); }; class filledRectangle extends GrafObj { int xl,yt, xr,yb; void move (int dx, int dy) {...}; void draw () {...}; };

51 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Java-Syntax allgemein Quelltext in UniCode, erlaubt sind also auch –Umlaute, Diakritzeichen –Zeichen aus anderen Zeichensätzen (z.B. Kanji) freie Formatierung keine Leerzeichen und Tabulatoren in –Schlüsselworten –Operatoren –Bezeichnern Groß-/Kleinschreibung signifikant

52 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Java-Syntax allgemein (Forts.) Kommentare –//Kommentar bis zum Zeilenende –/*... */evtl. mehrzeiliger Kommentar nicht schachtelbar Trennung von Anweisungen mittels ‘;’ (Ausnahme: for (...;...;...) {...}) syntaktische Zusammenfassung von Anweisungen mittels {...}

53 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Bezeichner max. 255 Zeichen fast alle (Unicode-) Zeichen möglich außer –Leerzeichen, Steuerzeichen –Operatorenzeichen (z.B. ‘+’, ‘-’, ‘/’,...) –Klammern (‘(‘, ‘)’, ‘[‘, ‘]’, ‘{‘, ‘}’) –Interpunktionszeichen (‘.’, ‘,’, ‘;’,...) –von Java genutzte Sonderzeichen (‘$’, “””, “’”)

54 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Klassenbibliotheken “Sammlung” von Klassen und Schnittstellen Namensraum für enthaltene Klassen pkgname.classname schachtelbare Bibliotheksnamen Default-Klassenbibliothek  keine globalen Namen (Variablen, Klassen) Konvention für weltweit eindeutige Namen de.uni_stuttgart.rus.pkgname

55 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Klassenbibliotheken (Fortsetzung) Implizite Erstellung package de.uni_stuttgart.rus.pkgname; Compiler-Aufruf javac -d basedir classname.java Verzeichnis mit Klassendateien basedir/de/uni_stuttgart/rus/pkgname/ mögliche Erscheinungsformen –Verzeichnis mit vielen Klassendateien –zip-Archiv (unkomprimiert!) –Java-Archiv (jar-Datei, komprimiert)

56 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Klassenbibliotheken (Fortsetzung) direkter Zugriff auf Bibliotheks-Klassen de.uni_stuttgart.rus.pkgname.classname Importieren von/aus Klassen-Bibliotheken import de.uni_stuttgart.rus.pkgname.*; import de.uni_stuttgart.rus.pkgname.classname; Classpath –wird nach Klassenbibliothek durchsucht –z.B. “.:/usr/local/java/lib/classes.zip:basedir” –evtl. java -classpath “$CLASSPATH:basedir”... –sonst in JRE/lib/ext/ ablegen (nur Java 2)

57 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Interne Klassenbibliotheken (Auszug) java.appletWeb-Applets und “Zubehör” java.awt...Grafische Benutzeroberflächen java.awt.eventEreignis-Behandlung java.awt.imageBearbeiten von Rastergrafiken java.beansJavaBeans java.ioDatei-Systeme und -Ein/Ausgabe java.langzu Java gehörende Klassen java.mathbeliebig genaue Arithmetik java.netNetzwerkunterstützung java.rmi...Remote Method Invocation java.textlandesspezifische Textbehandlung java.util...Datenstrukturen etc. (zip-Archive)

58 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Primitive Datentypen boolean(true, false, 1 bit) char(Unicode Zeichen, 16 bits) byte( , 8 bits) short( , 16 bits) int( , 32 bits) long(  +/ , 64 bits) float(32 bit IEEE 754 Fließkommazahl) double(64 bit IEEE 754 Fließkommazahl)

59 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Referenz-Datentypen (Klassen) StringZeichenketten type[ ]Felder classname Objekte Arbeiten mit Referenzen –Sonderfall: null –Kopieren von Objektena = b.clone(); –Vergleich von Objektena.equals(b); keine Pointer, Garbage Collection

60 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Zeichenketten (Strings) Methoden in java.lang.String keine null-terminierten Zeichenfelder immer aus UniCode-Zeichen bestehend String selbst ist unveränderlich (Alternative: java.lang.StringBuffer) Deklaration String Test = “dies ist ein Test”; (kein Konstruktoraufruf erforderlich)

61 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Zeichenketten (Fortsetzung) inhaltlicher Vergleich “ok”.equals(Result) Aneinanderhängen von Strings String Result = “found “ + (i+1) + “ items”; –automatische Konvertierung Variablen anderer Datentypen (auch Objekte) in Zeichenketten –ggfs. impliziter Aufruf von object.toString() –ggfs. numerische Terme (o.ä.) klammern

62 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Zeichenketten (Fortsetzung) Escape-Sequenzen –\bRückschritt –\tTabulator –\nZeilenvorschub –\fSeitenvorschub –\rWagenrücklauf –\‘, \“einfaches/doppeltes Hochkomma –\\Backslash –\xxxZeichen mit angegebenem Oktalcode –\uxxxxZeichen mit angegebenem Hexcode

63 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Eindimensionale Felder Definition String[ ] ParamList; intVector [ ]; Anlegen von Feldern ParamList = new String[10]; Vector = {4, 1, 0}; new String[ ] {“zur”,“direkten”,“Verwendung”} Anlegen der Feldelemente ParamList[0] = “Test”; System.arraycopy(src,srcpos, dst,dstpos, len)

64 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Mehrdimensionale Felder Felder von Feldern von Feldern... Definition int [ ][ ] Matrix; Anlegen mehrdimensionaler Felder Matrix = new int[2][2]; Matrix = new int[2][ ]; Matrix = {{1,0}, {0,1}}; Anlegen der Feldelemente Matrix[0,1] = 0; Matrix[0] = new int[ ] {1,0};

65 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Felder (allgemein) leiten sich von Klasse “Object” ab automatische Feldgrenzenüberwachung Ermitteln der Feldlänge int RowCount = Matrix.length; int ColCount = Matrix[0].length; Beispiel für unmittelbare Verwendung method(1, new short[ ] {1, 2});

66 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Variablen und Konstanten Deklaration int a; String Text1 = “Test”, Text2; java.awt.Dimension Size; Anlegen von Objekten Size = new Dimension(40,10); Initialisierung vor Verwendung erforderlich Zugriff auf Klassen-/Objekt-Daten java.awt.SystemColor.desktop Size.width = 24;

67 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Operatoren-Hierarchie ++, --, +, -, ~, !, (type) *, /, % +, - >, >>>, >=, instanceof ==, != & ^ | && || ?: =, *=, /=, %=, +=, -=, >=, >>>=, &=, ^=, |=

68 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Operatoren (Besonderheiten) + (für Zeichenketten) String Result = “found “ + (i+1) + “ items”; >> mit “sign extension” >>> fügt links eine 0 ein variable instanceof class/interface prüft Zuweisbarkeit von Variablen && und || mit “short-circuit evaluation” cond ? trueValue : falseValue

69 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Anweisungen if/else-Anweisung if (...)...; if (...)...; else...; if (...)...; elseif (...)...; else...; switch/case-Anweisung switch (...) { case...:...; case...:...; break; default:...; };

70 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Anweisungen (Fortsetzung) while-Schleife while (...)...; do-Schleife do...; while (...); for-Schleife for (init; cond; inc)...; –mehrere Anweisungen in init, cond, inc mittels Komma trennen –lokale Schleifenvariablen ggfs. in init deklarieren

71 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Anweisungen (Fortsetzung) try/catch/finally-Anweisung try {...; } catch (Throwable Signal) {...; } finally {...; };

72 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Java Syntax (Fortsetzung) Verlassen von Anweisungen: break nächster Schleifendurchlauf: continue Anweisungsmarken test: while (...) { try { if (...) continue test; if (...) break test; } finally {...}; };

73 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Aufbau einer Klassendatei package...; import...; public class classname extends... implements... { (Daten, Klassen-Initialisierungen, Konstruktoren, Methoden, innere Klassen) }; (evtl. weitere Klassen/Schnittstellen - nicht public)

74 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Aufbau einer Schnittstellendatei package...; import...; public interface classname extends... { (Konstanten, Methoden-Deklarationen) };

75 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Klassen-Initialisierungen Definitionsmuster static {...}; Zweck z.B.: –Laden von Bibliotheken (für “native Code”) –Vorbelegen von Wertetabellen mehrere Initialisierungen pro Klasse möglich (werden aneinandergehängt) Abarbeitung unmittelbar nach Laden der Klasse

76 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Konstruktoren Definitionsmuster, z.B. public classname (...) {...}; Aufruf:... = new classname (...); ggfs. wird Default-Konstruktor erzeugt public classname() {super();}; Abhilfe durch: private classname() {...}; erste Anweisung im Konstruktor muß sein –super (...); –this (...); wird ggfs. automatisch eingefügt

77 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Methoden Definitionsmuster void paint (Graphics Graf) throws... {...}; Dimension getPreferredSize () {...}; keine variable Anzahl von Argumenten Argumente stets typ-gebunden “Abhilfe”: Object als Argument-Typ Polymorphie Argumentübergabe “by value”, “by ref.” nur Inhalte von Objekten als Argumente können modifiziert werden

78 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Innere Klassen class outer extends... implements... {... class inner extends... implements... {... };... };

79 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Innere Klassen (Forts.) unabhängig von Klassenhierarchie inner ist ggfs. nur für outer sichtbar inner “sieht” alle Attribute/Methoden in outer Klassenname nach außen: outer.inner Klassendatei outer$inner.class Konstruktoraufruf –in outer:new inner (...) –sonst:outer.new inner (...)

80 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Sichtbarkeit von Klassen/Schnittstellen public sichtbar in allen Bibliotheken (ohne Angaben) nur in derselben Bibliothek sichtbar

81 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Sichtbarkeit von Daten und Methoden sofern Klasse/Schnittstelle sichtbar: –public sichtbar in allen Klassen und Bibliotheken –protected sichtbar in derselben Klasse und allen Unterklassen (auch in anderen Bibliotheken) –(ohne Angaben) sichtbar in allen Klassen derselben Bibliothek –private nur in derselben Klasse sichtbar

82 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Weitere Objekteigenschaften abstract final native static synchronized transient volatile

83 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Java versus C/C++ kein Präprozessor –echte Konstanten –echtes “Inlining” von Methoden –Entfernung von unbenutztem Code –kein #include keine “Prototypen” keine globalen Variablen/Klassen keine Mehrfach-Vererbung keine “templates”

84 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Java versus C/C++ (Fortsetzung) Compiler kontrolliert Variablen-Initialisierung echte Zeichenketten (stets UniCode) echte logische Variablen “int” belegt stets 32 bit Gleitkomma-Arithmetik gemäß IEEE 754 Arbeiten mit “Referenzen”, Parameterübergabe von “Werten”/”Ref.” Zuweisungen/Vergleiche von Referenzen echte “null”

85 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Java versus C/C++ (Fortsetzung) keine Adressen/Pointer automatische Speicherverwaltung (kein “malloc”, kein “free”) kein “sizeof” automatische Feldgrenzenüberwachung kein Destruktor

86 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Java versus C/C++ (Fortsetzung) kein “goto” komfortable Ausnahmebehandlung –Exceptions sind eigene Klassen –try/catch/finally –Compiler kontrolliert Ausnahmebehandlung Methode “main” ohne Rückgabewert keine Umgebungsvariablen Synchronisation von Threads ist Bestandteil der Sprache

87 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Programmieren in Java Grundlegende Vorgehensweise –Erstellen des Quelltextes (meist eine Klasse pro Datei) Hauptprg.: public static void main (String argv[]) Dateiname: classname.java –Übersetzen des Quelltextes javac optionen classname.java erzeugt die Datei classname.class –Starten eigenständiger Programme java optionen classname argumente

88 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Programmieren in Java (Forts.) Verwenden von WWW-Applets –HTML-Datei erstellen (z.B. Test.html)... (Übergabeparameter, Ersatzbild, o.ä.) –HTML-Datei in WWW-Browser betrachten (Java muß aktiviert sein!) –Appletviewer starten appletviewer Test.html

89 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Programmbeispiel public class HelloWorld { public static void main (String args[ ]) { System.out.println("Hello, World!"); }; }; javac HelloWorld.java java HelloWorld

90 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Ein-/Ausgabe von/auf „Konsole“ Ausgabe auf stdout: System.out.print (text); System.out.println(text); Ausgabe auf stderr: System.err.print (text); System.err.println(text); Eingabe von stdin:... = System.in.read(); System.in.read(bytearray); System.in.read(bytearray, offset, length);

91 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Interaktion mit der Laufzeitumgebung Kommandozeilen-Argumente public static void main (String args[ ]) Rückgabewert System.exit(...); Umgebungsvariablen beim Aufruf: java -Dname=value Test im Programm: System.getProperty("name"); Starten externer Programme Runtime.getRuntime.exec("kommando");

92 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Interaktion mit der Laufzeitumgebung import java.io.*; public class Java_00 { public static void main(String args[ ]) { if (args.length == 0) { System.out.println(" no argument given"); } else { System.out.println(" got " + args.length + " arguments:"); for (int i = 0; i < args.length; i++) { System.out.println(" " + i + ") \"" + args[i] + "\""); };

93 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Interaktion mit der Laufzeitumgebung import java.io.*; public class Java_01 { public static void main(String args[ ]) { java.util.Properties SysProps = System.getProperties(); java.util.Enumeration SysKeys = SysProps.keys(); while (SysKeys.hasMoreElements()) { String KeyName = (String) SysKeys.nextElement(); System.out.println(" " + KeyName + " = \"" + SysProps.get(KeyName) + "\""); };

94 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Interaktion mit der Laufzeitumgebung String StrValue; int IntValue; StrValue = System.getProperty("name"); if (StrValue == null) StrValue = ""; if (StrValue.equals("nix")) StrValue = ""; try { IntValue = Integer.parseInt(System.getProperty("name", "1")); } catch (NumberFormatException Signal) { IntValue = 1; };

95 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Interaktion mit der Laufzeitumgebung Process Command; Command = Runtime.getRuntime().exec("/bin/sh test.sh"); if (Command == null) { Toolkit.getDefaultToolkit().beep(); System.out.println("unable to start external command"); }; Kommandoausgabe kann abgefangen und bearbeitet werden (siehe Ein-/Ausgabe mit Dateien)

96 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Zugriff auf das Dateisystem import java.io.File; Anlegen/Löschen/Umbenennen von Dateien und Verzeichnissen Ausgabe von Verzeichnisinhalten Prüfen von Verzeichniseinträgen auf –vorhanden/lesbar/beschreibbar –Datei/Verzeichnis –Zeitpunkt der letzten Modifikation (nur zu Vergleichszwecken)

97 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Zugriff auf das Dateisystem import java.io.*; public class Java_02 { public static void main(String Args[ ]) { File CurDir = new File("."); System.out.println(" scanning " + CurDir.getAbsolutePath() + ":"); String[] DirList = CurDir.list(); for (int i = 0; i < DirList.length; i++) { String EntryName = DirList[i]; File EntryFile = new File(EntryName); System.out.print(" "); System.out.print(EntryFile.canRead() ? "r" : "-"); System.out.print(EntryFile.canWrite() ? "w" : "-");

98 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Zugriff auf das Dateisystem System.out.print(" "); if (EntryFile.isDirectory()) { System.out.println(EntryName + File.separator); } else { System.out.println(EntryName + " (" + EntryFile.length() + " bytes)"); };

99 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Ein-/Ausgabe mit Dateien import java.io.*; Datenströme für –(plattformabhängigen) Text Reader/Writer –Binärdaten, Unicode-Text Input/OutputStream Klassen lassen sich verketten operieren auf Dateien, Zeichenketten, Arrays, Pipes, Sockets ProgrammFileReaderDateiLineNumberReader

100 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Ein-/Ausgabe mit Dateien (Forts.) import java.io.*; try { Reader = new BufferedReader (new FileReader("Eingabe.txt")); Writer = new BufferedWriter (new FileWriter("Ausgabe.txt")); for (int InChar = Reader.read(); InChar != -1; InChar = Reader.read()) { Writer.write(InChar); }; Reader.close(); Writer.close();

101 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Ein-/Ausgabe mit Dateien (Forts.) } catch (IOException Signal) { Toolkit.getDefaultToolkit().beep(); System.err.println("error " + Signal.getMessage()); if (Reader != null) try {Reader.close();} catch (IOException InnerSignal) {/* nop */}; if (Writer != null) try {Writer.close();} catch (IOException InnerSignal) {/* nop */}; };

102 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Java Programmierbeispiele Java Demonstrationsprogramme (im Sun JDK enthalten) Java Tutorial Programme des Autors people/Rozek/World/Java/Kurs/Examples

103 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Viel Spaß beim Ausprobieren!

104 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Einführung in Java Teil III Java und das World-Wide Web

105 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Java und das World-Wide Web Grafische Benutzeroberflächen Applets Netzwerk-Unterstützung

106 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Grafische Benutzeroberflächen DisplayManager WindowManager Applikation Dekoration Zeichenbereich der Applikation

107 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Grafische Benutzeroberflächen hinteres Fenster ist teilweise verdeckt

108 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Grafische Benutzeroberflächen verdeckter Bereich muß neu gezeichnet werden vorderes Fenster wird verschoben

109 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Ereignisorientierte Programmierung Mausbewegungen Mausklicks Tastatureingaben (weitere) Ereignis (Event) Ereigniswarteschlange (Event Queue) Ereignisbehandlung Event Handling

110 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Oberflächen-Komponenten MenuBar ToolBar Button Canvas Choice Label Grafiken

111 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Aufbau grafischer Oberflächen hierarchische Anordnung von Komponenten Anordnung der Komponenten mithilfe eines "Layout-Manager" Komponenten haben "Funktionalität", reagieren auf Events "Programmieren" von Oberflächen bedeutet Erstellen von Event- Behandlungsroutinen

112 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Verfügbare Komponenten (AWT) Component Button Canvas Checkbox Choice Label List Scrollbar TextComponent (TextArea, TextField)

113 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Verfügbare Komponenten (Forts.) Container Panel ScrollPane Window - Dialog, FileDialog - Frame

114 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Verfügbare Komponenten (Forts.) MenuComponent - MenuBar - MenuItem - Menu, PopupMenu - CheckboxMenuItem

115 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Verfügbare Layout-Manager BorderLayout CardLayout FlowLayout GridLayout GridBagLayout

116 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Ein erstes AWT-Beispiel import java.awt.*; public class AWT_00 extends Frame { public AWT_00 () { super("Fenstertitel"); // Frame erzeugen, Titelzeile definieren // Layout-Manager definieren, Komponenten erzeugen und eintragen pack(); // Komponenten arrangieren setVisible(true); // Fenster anzeigen }; public static void main (String Args[]) { AWT_00 Instance = new AWT_00(); // Frame erzeugen, AWT starten }; };

117 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Ein zweites AWT-Beispiel import java.awt.*; import java.awt.event.*; public class AWT_00 extends Frame { public AWT_00 () { super("Fenstertitel"); enableEvents(AWTEvent.WINDOW_EVENT_MASK); pack(); setVisible(true); }; protected void processWindowEvent (WindowEvent Event) { super.processWindowEvent(Event); // ermöglicht Standard-Bearbeitung if (Event.getID() == WindowEvent.WINDOW_CLOSING) { System.exit(0); // Programm beenden }; };...

118 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Farben java.awt.Color - new Color (int r, int g, int b) - new Color (int rgb) - Color.black, Color.blue,... - Color.getHSBColor(hue, sat, brightness) java.awt.SystemColor

119 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Farben (Beispiele)

120 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Zeichensätze (Fonts) java.awt.Font new Font(name, style, size) name: "Serif", "SansSerif", "Monospaced", "Dialog", "DialogInput" style: Font.PLAIN, Font.BOLD, Font.ITALIC size: (in Pixel) java.awt.FontMetrics

121 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Zeichensätze (Beispiele)

122 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Ein drittes AWT-Beispiel public AWT_00 () { super("Fenstertitel"); enableEvents(AWTEvent.WINDOW_EVENT_MASK); setFont(new Font("Helvetica", Font.BOLD, 12)); // auch für innere Komp. setBackground(Color.lightGray); // dto. // Layout-Manager definieren, Komponenten erzeugen und eintragen pack(); // Komponenten arrangieren show(); // Fenster anzeigen };...

123 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Ein drittes AWT-Beispiel (Forts.) public AWT_00 () {... setLayout(new BorderLayout()); Label TitleLabel = new Label("ein einfaches Beispiel"); add("North", TitleLabel); Canvas DrawingArea = new Canvas(); DrawingArea.setSize(160,120); DrawingArea.setBackground(Color.gray); add("Center", DrawingArea); Button OkButton = new Button(" Ok "); add("South", OkButton); pack(); // Komponenten arrangieren setVisible(true); // Fenster anzeigen };

124 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Zeichnen in einem Canvas paint(Graphics Graf) einzelne/zusammenhängende Linien leere/gefüllte Rechtecke, abgerundete Rechtecke, Ellipsen, Ellipsenbögen und Polygone Text Rastergrafiken (Bitmaps, GIF und JPEG) invertiertes Zeichnen

125 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Ein viertes AWT-Beispiel public AWT_00 () {... Area DrawingArea = new Area();... }; class Area extends Canvas { public void paint (Graphics Graf) { Graf.setColor(Color.white); Graf.drawLine(0,0, getSize().width-1,getSize().height-1); Graf.drawLine(0,getSize().height-1, getSize().width-1,0); }; };

126 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Ereignisse und deren Bearbeitung java.awt.AWTEvent - getID() - getSource() Component.processEvent(AWTEvent Event) import java.awt.event.*; - KeyEvent, MouseEvent, ActionEvent,... - KeyListener, MouseListener,... Listener AWTEvent processEvent

127 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Empfangen von Events Implementieren eines passenden Listener public class ActionHandler implements ActionListener { public actionPerformed (ActionEvent Event) {... }; }; evtl. Verwendung des passenden Adapters public class ActionHandler extends MouseAdapter {... }; "Registrierung" des Listener OkButton.addActionListener(ActionHandler)

128 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Ein fünftes AWT-Beispiel public class AWT_00 implements ActionListener { public AWT_00 () {... OkButton.addActionListener(this);... }; public actionPerformed (ActionEvent Event) { System.exit(0); }; };

129 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart java.awt.Label new Label(Text) new Label(Text, Alignment) setAlignment(Alignment) setText(Text) (von Component geerbt) setForeground(Color) setBackground(Color) setFont(Font)

130 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart java.awt.Button new Button() new Button(Label) setLabel(Label) setActionCommand(Command) addActionListener(Listener)

131 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart java.awt.Canvas, java.awt.Graphics new Canvas() paint(GrafContext)

132 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart java.awt.Checkbox new Checkbox(Label) new Checkbox(Label, State) new Checkbox(Label, State, Group) new CheckboxGroup() setLabel(Label) setState(State) setCheckboxGroup(Group)

133 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart java.awt.Choice new Choice() add(Label) remove(Position), remove(Label) removeAll() select(Position), select(Label) getItemCount() getSelectedIndex() addItemListener(Listener)

134 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart java.awt.List new List() new List(Rows) new List(Rows, MultiMode) add(Label), add(Label, Index) remove(Label), remove(Index), removeAll() replaceItem(newLabel, Position) select(Index) addActionListener(Listener) addItemListener(Listener)

135 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart java.awt.TextField new TextField(Text) new TextField(Columns) new TextField(Text, Columns) setText(Text) setEditable(OnOff) setSelectionStart(Index) setSelectionEnd(Index) setColumns(Columns) setEchoChar(Character)

136 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart java.awt.TextField (Fortsetzung) addActionListener(Listener) addTextListener(TextListener)

137 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart java.awt.TextArea new TextArea(Text) new TextArea(Rows, Cols) new TextArea(Text, Rows, Cols) new TextArea(Text, Rows, Cols, ScrollBars) setRows(Rows), setColumns(Cols) append(Text) insert(Text, Position) replaceRange(Text, StartPos, EndPos)

138 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart java.awt.TextArea (Fortsetzung) setEditable(OnOff) setSelectionStart(Index) setSelectionEnd(Index) setColumns(Columns) setEchoChar(Character) addTextListener(TextListener)

139 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart java.awt.Scrollbar new Scrollbar(Orientation) new Scrollbar(Orientation, Value, Visible, Minimum, Maximum) setBlockIncrement(Value),...Line/Page/Unit... setMinimum(Value),...Maximum setValue(Value) setValues(Value, Visible, Min, Max) addAdjustmentListener(Listener)

140 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart java.awt.Image Toolkit.getDefaultToolkit().getImage(FileName) Toolkit.getDefaultToolkit().getImage(URL) Toolkit.getDefaultToolkit().createImage(...) ImageProducer ImageObserver ImageConsumer

141 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Applets (Rekapitulation) (kleine) Java-Applikationen, die innerhalb eines WWW-Browsers ablaufen indirekter Aufruf via HTML-Seite strenge Sicherheitsbeschränkungen - kaum/kein Zugriff auf die Laufzeitumgebung - Netzverbindungen nur zum HTTP-Server - Dialoge und Fenster werden gekennzeichnet

142 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Applets Verwenden von WWW-Applets –HTML-Datei erstellen (z.B. classname.html)... (Übergabeparameter, Ersatzbild, o.ä.) –HTML-Datei in WWW-Browser betrachten (Java muß aktiviert sein!) –Appletviewer starten appletviewer classname.html

143 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Aufbau eines Applets Applets werden vom Browser instanziert kein Textmodus, nur Grafik keine main()-Methode wichtige Methoden: public void init() public void start() public void stop() public void destroy() public void paint(Graphics Graf) destroy stop start init

144 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Erscheinungsbild

145 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Hilfsinformationen für Benutzer public String getAppletInfo() { return "Informationen über das Applet\n" + "und seinen Autor"; }; public String[ ][ ] getParameterInfo() { return ParameterInfo; }; final Static String[ ][ ] ParameterInfo = { {"Name", "Typ", "Beschreibung"}, {...,...,...} };

146 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Parameter-Übergabe in der HTML-Datei:... im Applet: String Value = getParameter("param_name"); - Groß-/Kleinschreibung ist signifikant - nicht vorhandene Parameter liefern null

147 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Kommunikation zwischen Applets in der HTML-Datei: im Applet: String Name = getParameter("Name"); AppletContext Context = getAppletContext(); Applet AppletInstance = Context.getApplet(Name);

148 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Kommunikation zwischen Applets im Applet: Enumeration AppletSet = Context.getApplets(); while (AppletSet.hasMoreElements()) { Applet Neighbour = (Applet) AppletSet.nextElement(); String Name = Neighbour.getParameter("Name"); }; Kommunikation durch Methodenaufrufe Neighbour.stop();

149 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Steuerung des Browsers Aufruf weiter HTML-Dokumente: showDocument(URL) showDocument(URL, target) mögliche Darstellungsweisen: - im aktuellen "frame" - im "parent frame" - im obersten "frame" - in einem neuen Fenster mit/ohne Namen

150 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Rastergrafiken und Musikstücke Rastergrafiken: Image Bitmap = getImage(URL) Image Bitmap = getImage(URL, Name) Musikstücke: play(URL); java.applet.AudioClip Music = getAudioClip(URL); Music.loop(); Music.stop();

151 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Netzwerkunterstützung import java.net.*; numerische/symbolische IP-Adressen URLs Sockets (TCP/IP und UDP/IP, IP Multicast) URLConnection (HTTP und FTP)

152 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart IP-Adressen (java.net.InetAddress) try { InetAddress Address = InetAddress.getByName(hostname); } catch (UnknownHostException Signal) {... }; InetAddress.getLocalHost(); InetAddress[ ] AdressList = InetAddress.getAllByName(name); byte[ ] numericAddress = Adress.getAddress(); String IPAddress = Address.getHostAddress();

153 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Sockets I (UDP) new DatagramSocket() new DatagramSocket(localPort) new DatagramSocket(localPort, localAddr) getLocalPort() getLocalAddress() setSoTimeout(milliSecs) send(Packet) receive(Packet) close() Socket anlegen Socket definieren Pakete senden Pakete empfangen Socket schließen

154 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Sockets I (UDP Pakete) new DatagramPacket(Buffer,Length) new DatagramPacket(Buffer,Length, Address,Port) setAddress(Address) setPort(Port) setData(Buffer) setLength(Length)

155 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Sockets I (UDP Beispiel) try { DatagramSocket UDPSocket = new DatagramSocket(...); DatagramPacket UDPPacket = new DatagramPacket() UDPPacket.setData(...); UDPPacket.setLength(...); UDPSocket.send(UDPPacket); UDPSocket.receive(UDPPacket); UDPSocket.close(); } catch (SocketException Signal) { } catch (IOException Signal) { };

156 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Sockets II (TCP) Server legt "ServerSocket" an Client legt "Socket" an Server wartet auf eingehende Vbdg.wünsche Client kontaktiert Server Server nimmt Vbdg.wunsch entgegen Server legt "Socket" für Datenverkehr an Client und Server kommunizieren via "Socket" Client und Server schließen "Socket" Client Server

157 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Sockets II (ServerSocket) new ServerSocket(Port) new ServerSocket(Port, BackLog) new ServerSocket(Port, BackLog, localAddr) getLocalPort() getInetAddress() setSoTimeout(milliSecs) accept() -> Socket close()

158 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Sockets II (Socket) new Socket(remoteHostName, remotePort) new Socket(remoteHostAddr, remotePort) new Socket(remoteHostName, remotePort, localAddr, localPort) new Socket(remoteHostAddr, remotePort, localAddr, localPort) getLocalAddress(), getLocalPort() getInetAddress(), getPort() setSoLinger(OnOff, milliSecs) setTcpNoDelay(OnOff) setSoTimeout(milliSecs) getInputStream() getOutputStream() close()

159 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Sockets II (Beispiel Server) try { ServerSocket ContactSocket = new ServerSocket(...); Socket IOSocket = ContactSocket.accept();... // IO siehe nächste Folie IOSocket.close(); ContactSocket.close(); } catch (IOException Signal) { };

160 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Sockets II (Beispiel Client) try { Socket IOSocket = new Socket(...); DataInputStream InStream = IOSocket.getInputStream(); DataOutputStream OutStream = IOSocket.getOutputStream(); OutStream.writeInt(...); InStream.readInt(); OutStream.close(); InStream.close(); IOSocket.close(); } catch (IOException Signal) { };

161 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart URLs new URL(Protocol, Host, Port, File) new URL(Protocol, Host, File) new URL(URLString) new URL(Context, URLString) getProtocol(), getHost(), getPort(), getFile(), usw. sameFile(URL) openConnection() -> URLConnection openStream() -> InputStream unterstützte Protokolle: HTTP, FTP, File

162 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart URLConnection URL.openConnection() getContentEncoding(), getExpiration(), getLastModified(), usw. getInputStream(), getOutputStream() getContent() try { URL NetURL = new URL("http://www-ks.../people/...); InputStream URLStream = NetURL.openStream();... URLStream.close(); NetURL.close(); } catch (IOException Signal) { };

163 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Viel Spaß beim Ausprobieren!

164 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Einführung in Java Teil IV Die „Java Foundation Classes“

165 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Die „Java Foundation Classes“ JFC/Swing - „Model-View-Controller“-Ansatz (MVC) - einstellbares „Look-and-Feel“ - die Komponenten und deren Verwendung Verwendung der Zwischenablage Implementierung von „Drag-and-Drop“ Druckerunterstützung Erstellung und Verwendung von JavaBeans

166 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart JFC/Swing

167 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart JFC/Swing Bestandteil der Java Foundation Classes (JFC) - Java “Accessibility” - Java 2D (nur Java 1.2) - Drag-and-Drop (nur Java 1.2) Klassenbibliothek mit neuen GUI-Komponenten (einigermaßen) aufwärts-kompatibel zu AWT (AWT- und Swing-Komponenten NICHT MISCHEN!) nutzt “Model-View-Controller”-Ansatz (genauer: “Model-Delegate”) plattform-unabhängiges Look-and-Feel, umschaltbar

168 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart JFC/Swing (Fortsetzung) für Java 1.1.x - SwingSet (1.1beta3 als Bestandteil des JFC 1.1) herunterladen und installieren (swingall.jar) - Klassenbibliotheken (evtl.) com.sun.java.swing... für Java SwingSet (1.1) ist in Java 1.2 enthalten - Klassenbibliotheken javax.swing... Beispiele (im Quelltext) werden mitgeliefert Tutorial unter

169 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Besondere Eigenschaften (Auszug) gleiches Aussehen auf allen Plattformen beliebig geformte Komponenten Schaltflächen o.ä. mit Rastergrafiken frei wählbare Rahmen um Komponenten „Double Buffering“ (abschaltbar) „Tool Tips“ Bedienung mittels Tastatur Unterstützung von Sprachanpassungen (Lokalisierungen)

170 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Model-View-Controller Model View Controller Rohdaten Ansicht Funktionalität Trennung von Daten, Ansicht und Funktion ermöglicht z.B. mehrere Ansichten desselben Datensatzes wird meist als “Model-Delegate” realisiert

171 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Look-and-Feel regelt - Aussehen, - Bedienung und - Verhalten von Benutzeroberflächen in Swing implementiert - Windows - Motif - „Cross Plattform“ (Metal) - (Macintosh)

172 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Swing Komponenten I JProgressBar JLabel JButton JTextField JTextArea JList JChoice JScrollPane JSlider JMenu... JTree JTabbedPane JTable JSplitPane JToolTip JToolBar

173 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Swing Komponenten II JFrame.showInputDialog.showConfirmDialog JColorChooser JFileChooser JDialog.showMessageDialog.showWarningDialog JInternalFrame

174 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Swing Komponenten III

175 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Einsatz von Swing-Komponenten import java.awt.*; import java.awt.event.*; import com.sun.java.swing.*; public class Hello extends JFrame implements ActionListener { public Hello () { super("Hello, Swing!"); enableEvents(AWTEvent.WINDOW_EVENT_MASK); Container ContentPane = getContentPane(); ContentPane.setLayout(new BorderLayout()); ((JPanel) ContentPane).setDoubleBuffered(false); JLabel TitleLabel = new JLabel("ein Swing-Beispiel:"); ContentPane.add("North", TitleLabel);

176 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Einsatz von Swing-Komponenten Canvas DrawingArea = new Canvas(); DrawingArea.setSize(160,120); DrawingArea.setBackground(Color.gray); ContentPane. add("Center", DrawingArea); JButton OkButton = new JButton("Ok"); OkButton.addActionListener(this); Content Pane.add("South", OkButton); setContentPane(Pane); }; public actionPerformed (ActionEvent Event) { System.exit(0); };...

177 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Einsatz von Swing-Komponenten protected void processWindowEvent (WindowEvent Event) { super.processWindowEvent(Event); // ermöglicht Standard-Bearbeitung if (Event.getID() == WindowEvent.WINDOW_CLOSING) { System.exit(0); // Programm beenden }; }; };

178 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Einstellen des “Look-and-Feel” public class Hello extends JFrame implements ActionListener { public Hello () { super("Hello, Swing!"); enableEvents(AWTEvent.WINDOW_EVENT_MASK); try { UIManager.setLookAndFeel ( UIManager.getCrossPlatformLookAndFeelClassName() ); } catch (Exception Signal) { /* nop */ }; JPanel Pane = new JPanel();... };... };

179 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Vewendung der Zwischenablage import java.awt.datatransfer.*; lokale und system-weite Zwischenablagen ClipboardOwner Transferable Clipboard

180 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Clipboard, ClipboardOwner Clipboard(Name) Toolkit.getDefaultToolkit().getSystemClipboard() setContents(Transferable, Owner) getContents(Requestor); ClipboardOwner lostOwnership(Clipboard, Transferable)

181 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart DataFlavour DataFlavour(MimeType) DataFlavour(MimeType, Name) DataFlavour(RepresentationClass, Name); DataFlavour.plainTextFlavour DataFlavour.stringFlavour DataFlavour.javaFileListFlavour getHumanPresentableName(), getMimeType(),... getRepresentationClass()

182 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Transferable, StringSelection getTransferDataFlavours() isDataFlavourSupported(Flavour) getTransferData(Flavour) StringSelection(Text) implementiert Transferable und ClipboardOwner

183 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Zwischenablage (Beispiel) public class CopyPasteTest implements ClipboardOwner { public void copy (String Text) { Clipboard SysClip = Toolkit.getDefaultToolkit().getSystemClipboard(); StringSelection Contents = new StringSelection(Text); SysClip.setContents(Contents, this); }; public void lostOwnership (Clipboard Clip, Transferable Data) {/*nop*/};...

184 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Zwischenablage (Fortsetzung) public String paste () { Clipboard SysClip = Toolkit.getDefaultToolkit().getSystemClipboard(); Transferable Data = SysClip.getContents(this); if ((Data != null) && Data.isDataFlavourSupported(DataFlavour.stringFlavour)) { try { return (String) Data.getTransferData(DataFlavour.stringFlavour); } catch (Exception Signal) {... }; } else return „“; }; };

185 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Drag-and-Drop import java.awt.dnd.*; DragGestureRecognizer, DragGestureListener DragSource, DragSourceListener DropTarget, DropTargetListener DNDConstants - ACTION_COPY, ACTION_COPY_OR_MOVE - ACTION_MOVE, ACTION_NONE - ACTION_LINK, ACTION_REFERENCE

186 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart DragGestureListener dragGestureRecognized (DragGestureEvent)

187 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart DragSource DragSource() createDefaultDragGestureRecognizer (Component, Actions, DragGestureListener) startDrag (DragGestureEvent, Cursor, Transferable, DragSourceListener) startDrag (DragGestureEvent, Cursor, Image, Point, Transferable, DragSourceListener)

188 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart DragSourceListener dragDropEnd(DragSourceDropEvent) dragEnter (DragSourceDropEvent) dragExit (DragSourceDropEvent) dragOver (DragSourceDropEvent) dropActionChanged(DragSourceDropEvent)

189 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart DropTarget DropTarget (Component, DropTargetListener) DropTarget (Component, Actions, DropTargetListener) dragEnter (DropTargetDragEvent) dragOver (DropTargetDragEvent) dragExit (DropTargetDragEvent) drop (DropTargetDragEvent) dropActionChanged (DropTargetDragEvent)

190 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart DropTargetDragEvent acceptDrag (DragOperation) rejectDrag () getCurrentDataFlavours() isDataFlavourSupported (DataFlavour)

191 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart DropTargetDropEvent acceptDrop (DropAction) rejectDrop () dropComplete (Success) getCurrentDataFlavours() isDataFlavourSupported (DataFlavour) getTransferable()

192 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Drag-and-Drop (Beispiel) public class DnDTester extends Frame implements DragGestureListener, DragSourceListener, DropTargetListener { DragSource Source = new DragSource(); DropTarget Target = new DropTarget ( TargetCtrl, DnDConstants.ACTION_COPY_OR_MOVE, this ); DragGestureRecognizer Recognizer = Source.createDefaultDragGestureRecognizer ( DragCtrl, DnDConstants.ACTION_COPY_OR_MOVE, this );...

193 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Drag-and-Drop (Fortsetzung) public void dragGestureRecognized (DragGestureEvent Event) { Event.startDrag (Source.DefaultCopyDrop, Transferable, this); }; public void dragDropEnd (DragSourceDropEvent Event) {/* nop */}; public void dragEnter (DragSourceDragEvent Event) {/* nop */}; public void dragExit (DragSourceDragEvent Event) {/* nop */}; public void dragOver (DragSourceDragEvent Event) {/* nop */}; public void dropActionChanged (DragSourceDragEvent Event) { };...

194 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Drag-and-Drop (Fortsetzung) public void dragEnter (DropTargetDragEvent Event) { Event.acceptDrag(DnDConstants.ACTION_COPY_OR_MOVE); }; public void drop (DropTargetDropEvent Event) { try { if (Event.isDataFlavourSupported(DataFlavour)) {... Event.getTransferable(); Event.acceptDrop(DnDConstants.ACTION_COPY_OR_MOVE);.... Event.dropComplete(true); } else { Event.rejectDrop(); }; };

195 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Drucken mit Java Grundprinzip: Zeichnen im passenden Grafik-Kontext java.awt.PrintJob - Toolkit.getDefaultToolkit().getPrintJob(Frame,Title,Properties) - getGraphics() - getPageDimension() -> Ausmaße in Pixel - getPageResolution() -> Auflösung in dpi - end() java.awt.Graphics - dispose() für Seitenfortschaltungen

196 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Drucken mit Java (Fortsetzung) PrintJob Job = Toolkit.getDefaultToolkit().getPrintJob(...); if (Job != null) { Graphics JobContext = Job.getGraphics(); for (int PageNum = 0; PageNum < 5; PageNum++) { JobContext.setColor(Color.black); JobContext.setFont(new Font("Helvetica", Font.BOLD, 14)); JobContext.drawString("Seite: " + PageNum, 20,20); JobContext.dispose(); }; Job.end(); };

197 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Java Reflection Ermöglicht - Untersuchung von Bibliotheken & Klassen - expliziten Aufruf von Konstruktoren/Methoden - expliziten Zugriff auf Attribute PackageZugriff auf Klassenbibliothek ClassLaden/Untersuchen von Klassen ConstructorZugriff auf Konstruktoren FieldZugriff auf Attribute MethodZugriff auf Methoden

198 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart JavaBeans Komponenten mit wohldefinierten Schnittstellen zur Verwendung in visuellen Entwicklungsumgebungen JavaBean darf “unsichtbar” sein

199 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart JavaBeans allgemein Schnittstelle einer JavaBean definiert - Konstruktoren - Attribute - Methoden - Ereignisse (Events) „Export“ geschieht durch - Einhalten von Namenskonventionen - Erstellen von Descriptorklassen (BeanInfo) „Import“ geschieht durch „Java Reflection“

200 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart JavaBeans allgemein (Fortsetzung) „Customizer“ erlauben Einstellungen von JavaBean-Parametern Speicherung des JavaBean-Zustands Bereitstellung einer JavaBean als - Java Archive (JAR-Datei) - mit passendem „manifest.mf“ siehe „JavaBeans“-Abschnitt im Java- Tutorial

201 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart JavaBeans allgemein (Fortsetzung) Beans Development Kit (Java BDK)

202 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Viel Spaß beim Ausprobieren!

203 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Einführung in Java Teil V Java‘s Welt

204 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Begleitmaterial zum Kurs Folien im HTML-Format World/Java/Kurs/ Folien als ZIP-Archiv World/Java/Kurs.zip Beispielprogramme des Autors World/Java/Kurs/Examples Beispielprogramme als ZIP-Archiv World/Java/Kurs/Examples/Examples.zip

205 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Java PlugIn WWW-Browser haben Probleme mit der Unterstützung von Java –neue Versionen nur mit Verzögerung verfügbar –unvollständige Unterstützung –fehlerhafte Implementierung (jeder Browser mit anderen Fehlern)  Sun liefert Java VM als - ActiveX-Control (für Internet Explorer) bzw. - PlugIn (für Netscape Communicator)

206 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Java PlugIn (Fortsetzung) Version verfügbar unter (oder als Bestandteil des Sun JDK 1.2) Beschreibung der HTML-Direktiven unter HTML-Konverter verfügbar unter Beschreibung der PlugIn-Eigenschaften unter

207 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Java PlugIn (Fortsetzung) Aufruf im Netscape Communicator:... (Ersatztexte oder -grafiken)

208 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Java PlugIn (Fortsetzung) Aufruf im Internet Explorer:... (Ersatztexte oder -bilder)

209 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Direktive --> ... (Ersatztexte oder -grafiken)

210 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart JavaBeans Bridge for ActiveX macht aus JavaBeans - ActiveX Controls - OLE Automation Server verwendbar z.B. in VisualBasic, VisualC++, Delphi, Windows Scripting Host Zugriff auf - Daten (die meisten Datentypen) - Methoden Events/Exceptions JavaBean -> ActiveX-Host

211 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart JavaBeans Bridge for ActiveX ist Bestandteil des Java PlugIn Anleitung siehe JavaBean Packager Registry File TypeLib

212 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Java2D

213 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Java2D

214 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Java2D

215 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Java2D

216 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Java2D

217 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Java2D

218 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Java2D

219 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Java2D

220 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Java2D

221 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Java3D Modellierung, Manipulation und Darstellung drei-dimensionaler Szenen (VRML) Version verfügbar unter für - Windows (OpenGL und DirectX) - SunOS (OpenGL)

222 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart JavaSound Bestandteil von Java 1.2 ( ) 64 Kanäle, 8/16 bit, 8kHz...48kHz Sample Rate Audio-Berechnung in Software MIDI-Unterstützung Dateiformate: AIFF, AU, WAV, MIDI 1/2, RMF (unkomprimiert, linear PCM)

223 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart JavaSpeech Sprachausgabe und Spracherkennung ( ) JavaSpeech Grammar Format (JSGF) JavaSpeech Markup Language (JSML) verfügbare Implementierungen siehe forDevelopers/jsapifaq.html#implementation - IBM „Speech for Java“ für Win95/98/NT (verlangt ViaVoice Gold, auch Spracherkennung) - Lernout & Hauspie für SunOS, Java 1.1.x (nur Wiedergabe)

224 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart JavaSpeech (Beispiel) import javax.speech.*; import javax.speech.synthesis.*; import java.util.locale; public class HelloWorld { public static void main (String ArgList[]) { try { Synthesizer SpeechSynth = Central.createSynthesizer ( new SynthesizerModeDesc(Locale.ENGLISH) );...

225 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart JavaSpeech (Beispiel, Fortsetzung)... SpeechSynth.allocate(); SpeechSynth.resume(); SpeechSynth.speakPlainText(„Hello, world!“, null); SpeechSynth.waitEngineState(Synthesizer.QUEUE_EMPTY); SpeechSynth.deallocate(); } catch (Exception Signal) { /* nop */ }; }; };

226 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Java Media Framework Laden und Abspielen von - Audio-Datenströmen - Video-Datenströmen (MPEG, AVI) Empfang und Versand von Audio-/Video- Datenströmen via RTP/RTCP (Video Conferencing) erweiterbar z.B. durch - eigene CODECs - eigene Paketformate

227 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Java Shared Data Toolkit einfache API für „verteilte Applikationen“ Versand von Nachrichten an mehrere Kommunikationspartner implementierte Protokolle - TCP/IP - RMI (Remote Method Invocation) - LRMP (Lightweight Reliable Multicast)

228 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart JavaMail Senden, Empfangen und Verwalten von -Nachrichten –Unterstützung von SMTP, POP3 & IMAP4 –Unterstützung von MIME-kompatiblen „Attachment“s Programmierschnittstelle ist stabil Beta-Version der Implementierung verfügbar

229 Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Viel Spaß beim Ausprobieren!


Herunterladen ppt "Einführung in Java Andreas RozekAbteilung PKB, Rechenzentrum Uni Stuttgart Andreas Rozek Rechenzentrum Uni Stuttgart Abteilung PKB Telefon: (0711) 685-4514."

Ähnliche Präsentationen


Google-Anzeigen