Web-Anwendungen mit Java -...

50
1 Web-Anwendungen mit Java Universität Dortmund Web-Anwendungen mit Java Rainer Klute [email protected] http://www.rainer-klute.de/

Transcript of Web-Anwendungen mit Java -...

1Web−Anwendungen mit Java

Universität Dortmund

Web−Anwendungen mit Java

Rainer Kluteklute@rainer−klute.de

http://www.rainer−klute.de/

2Web−Anwendungen mit Java

Übersicht

� Java im Server

� Web−Anwendungen� Applikation läuft im Web−Server� Web−Browser als Benutzeroberfläche

� Überblick� Pakete in Java 2 (Klassenbibliotheken)� Standarderweiterungen

� Vertiefung ausgewählter Pakete

� Keine Programmierreferenz

→ Spezifikationen, API−Dokumentationen usw.

3Web−Anwendungen mit Java

Themen

� Java aus der Flugzeugperspektive

� Java aus der Vogelperspektive

� Collections� Servlets� Java Server Pages� JDBC� J2EE−Überblick� Serialisierung� Remote Method

Invocation (RMI)

1−2

3−4, 6−9

4−6, 12−13

10−11

13

13

14

4Web−Anwendungen mit Java

Java 2 im Überblick

� Graphische Benutzeroberflächen� Anwendungen, Applets, Drucken� javax.swing, java.awt, java.applet

� Java−Beans� java.beans, java.lang.reflect

� Ein− und Ausgabe� Streams, Dateien, JAR− und ZIP−Archive� Netz� java.io

� java.nio (neu in J2SDK 1.4)

5Web−Anwendungen mit Java

Java 2 im Überblick

� Basisfunktionalitäten� Object

� Datentypen (Klassen)� Boolean, Byte, Character, Double, Float, Integer, Long, Number, Short, String, StringBuffer, Void

� Mathematische Funktionen� Math, StrictMath

� Threads� Thread, ThreadGroup,ThreadLocal, InheritableThreadLocal

6Web−Anwendungen mit Java

Java 2 im Überblick

� Basisfunktionalitäten� Klassen laden usw.

� Class, ClassLoader, Compiler, Package

� Laufzeitsystem, Betriebssystem usw.� Runtime, System, Process, Throwable

� Sicherheit� SecurityManager, RuntimePermission

� java.lang

7Web−Anwendungen mit Java

Java 2 im Überblick

� Reflection� Analyse von Klassen, Interfaces und Methoden� Methodenaufrufe konstruieren und ausführen� java.lang.reflect

� Referenzobjekte� java.lang.ref

8Web−Anwendungen mit Java

Java 2 im Überblick

� Netzkommunikation auf unterer Ebene� Internet−Protokolle TCP, UDP� HTTP (Zugriff auf Web−Server)� Zugriff auf JAR−Dateien� Internet−Adressen

� Adressen (111.222.111.222)� Domain−Namen (rechner.rainer−klute.de)

� Multicasting� Kommunikation in der Gruppe

� java.net

9Web−Anwendungen mit Java

Java 2 im Überblick

� RMI: Objekte im Netz� Objekte von einer JVM zur anderen übertragen� Objekte in anderer JVM referenzieren� java.rmi

� CORBA: Portable Objekte im Netz� Es ist nicht alles Java, was glänzt.

� Remote−Objekte in anderen Sprachen

� org.omg.CORBA

� RMI/IIOP� RMI−Zugriff auf CORBA−Objekte� javax.rmi

10Web−Anwendungen mit Java

Java 2 im Überblick

� Sicherheit� Verschlüsselung� Signierung (�Digitale Unterschrift�)� Prüfen von Signaturen und Zertifikaten� SSL, HTTPS� Ausführungsrechte von Java−Klassen� u.v.a.m.� java.security

11Web−Anwendungen mit Java

Java 2 im Überblick

� Zugriff auf Datenbanken� java.sql

� Textverarbeitung� Datums− und Zahlenformate� Worten und Sätze analysieren� java.text

12Web−Anwendungen mit Java

Java 2 im Überblick

� Logging� Formatierung als Text oder XML (erweiterbar)� Ausgabe in OutputStreams usw.� Konfigurationsdatei� Interaktion mit vorhandenen Logging−Systemen� Neu in J2SDK 1.4� java.util.logging

� Siehe aber auch Jakarta−Projekt Log4j� org.apache.log4j

13Web−Anwendungen mit Java

Java 2 im Überblick

� Objekt−»Sammlungen«� Mengen, Listen, Zuordnungen (Collections)� Suchen und sortieren� Siehe auch Klasse java.util.arrays

� Bit−Vektor

� Kalender− und Datumsfunktionen

� Ereignisobjekte� EventListener, EventObject

� Voreinstellungen� Neu in J2SDK 1.4

14Web−Anwendungen mit Java

Java 2 im Überblick

� Internationalisierung� ResourceBundle, ListResourceBundle, Locale

� Properties� Parameter für Java−Anwendungen� System−Properties

� Pseudozufallszahlen� Random

� Aufgaben ressourcenschonend im Hintergrund bearbeiten� Timer, TimerTask statt Threads

� java.util

15Web−Anwendungen mit Java

Java 2 im Überblick

� Zugriff auf Verzeichnisdienste� LDAP, DNS usw.� javax.naming

� Sound� javax.sound.midi (MIDI)� javax.sound.sampled (AIFF, AU, SND, WAVE)

� XML (1.4)� javax.xml

� Druckservices (1.4)� javax.print

16Web−Anwendungen mit Java

Produkte und Quellen

� Development Kits (Compiler, Laufzeitsystem usw.)� JavaTM 2 Platform, Standard Edition (J2SETM)� JavaTM 2 Platform, Enterprise Edition (J2EETM)� JavaTM 2 Platform, Micro Edition (J2METM)

� Hersteller� Sun Microsystems (http://java.sun.com/products/)� IBM (http://www−106.ibm.com/developerworks/java/jdk)� Blackdown (http://www.blackdown.org/)� Apple (http://developer.apple.com/java/)� u.a.

Produkte und Quellen

� Integrierte Entwicklungsumgebungen (IDEs)� ForteTM for Java (Sun Microsystems,

http://www.sun.com/forte/ffj/)� AnyJ (Netcomputing,

http://www.netcomputing.de/html/main.html)� JBuilder (Borland, http://www.borland.com/jbuilder/)� Visual Age for Java (IBM, http://www−

3.ibm.com/software/ad/vajava/)� JDEE − Java Development Environment for Emacs

18Web−Anwendungen mit Java

Produkte und Quellen

� Sonstiges� Apache Jakarta (http://jakarta.apache.org/)

� Hochwertige Produkte und Projekte für den Einsatz von Java im Server, u.a. Tomcat

� Apache XML (http://xml.apache.org/)� Hochwertige Produkte und Projekte rund um XML� Überwiegend in Java

� SourceForge (http://sourceforge.net/)� Offene Plattform für verteilte Projektentwicklungen im Internet

� Alphaworks (IBM, http://www.alphaworks.ibm.com/java)� Gamelan (http://softwaredev.earthweb.com/java/)� u.v.a.m

19Web−Anwendungen mit Java

Informationen

� Die Mutter aller Java−Informationen� Links zu Sun−Produkten, Dokumentation, Infos usw.� http://java.sun.com/

� Java Developer Connection (JDC)� Informationen und Early−Access−Software� http://developer.java.sun.com/

� Das Java−Tutorium� http://java.sun.com/docs/books/tutorial/

� u.s.v.a.m.

20Web−Anwendungen mit Java

Collections (Teil 1)

Collections(Teil 1)

21Web−Anwendungen mit Java

Collections: Beispiele

� »Sammlung von Objekten«

� Beispiele:� Namensliste der Hörer dieser Vorlesung

� Unsortiert oder sortiert

� Orderbuch (Kauf− und Verkaufaufträge für Wertpapiere)� Unsortiert� Aufträge können mehrfach vorkommen

� Menge� Unsortiert, keine Duplikate

� Telefonbuch� Abbildung Name → Tel.−Nummer

(oder: Name → Menge von Nummern)

22Web−Anwendungen mit Java

Collections: Operationen

� Objekt hinzufügen

� Objekt lesen

� Objekt löschen

� Suchen

� Sortieren

� Minimum/Maximum ermitteln

� Größe ermitteln

� Iterieren

23Web−Anwendungen mit Java

Collections: Vorteile

� Interfaces spezifizieren häufig benötigte Datenstrukturen� Collection, List, Set, Map

� Standardimplementierungen bieten effiziente, häufig benötigte Algorithmen� Binäre Suche, Sortieren usw.

� Geringerer Programmieraufwand

� Geringerer Lernaufwand bei anderen Application Programming Interfaces (APIs), die Collections verwenden

� Weitere Implementierungen siehe z.B. http://jakarta.apache.org/commons/collections.html

24Web−Anwendungen mit Java

Collection: Interfaces

25Web−Anwendungen mit Java

Collections: Collection

� Ansammlung von Elementen

� Kleinster gemeinsamer Nenner

� Mit oder ohne Duplikate

� Geordnet oder ungeordnet

� JDK bietet keine Implementierung dieses Interfaces.

� Standardkonstruktoren� Collection()

� Collection(Collection c)

� Lassen sich leider nicht durch Interfaces erzwingen

26Web−Anwendungen mit Java

Beispiel: Collection

public void addNames(Collection coll){ coll.add("Priska"); coll.add("Aquila"); coll.add("Epänetus"); coll.add("Maria"); coll.add("Andronikus"); coll.add("Junias"); coll.add("Rainer"); coll.add("Ampliatus"); coll.add("Urban"); coll.add("Stachys"); coll.remove("Rainer"); System.out.println("Elemente: " + coll.size());}public static void main(String args[]){ Collection c = new HashSet(); addNames(c); printNames(c);}

27Web−Anwendungen mit Java

Beispiel: Iterator

public static void printNames(Collection coll){

/* Collection ausgeben: */ Iterator i = coll.iterator(); while (i.hasNext()) { String s = (String) i.next(); System.out.println(s); }

/* Oder kürzer: */ for (Iterator i2 = coll.iterator(); i2.hasNext();) System.out.println((String) i2.next());}

28Web−Anwendungen mit Java

Collections: Set

� Keine Duplikate

� Modelliert mathematischen Mengenbegriff

� Undefinierte Reihenfolge (siehe aber SortedSet)

� Keine zusätzlichen Methoden zu Collection

� Vorsicht bei Elementen mit sich ändernden Werten!� Verhalten des Sets undefiniert

29Web−Anwendungen mit Java

Collections: List

� Elemente geordnet (definierte Reihenfolge)

� Duplikate in der Regel möglich, aber nicht zwingend

� Zugriff über Index� add(int index, Object obj)

� remove(int index)

� get(int index)

� set(int index, Object obj)

� indexOf(Object obj)

� lastIndexOf(Object obj)

� listIterator()

� subList(int from, int to)

30Web−Anwendungen mit Java

Collections: List−Navigation

� Iterator−Methoden:� boolean hasNext()

� Object next()

� void remove()

� ListIterator−Methoden:� hasPrevious()

� previous()

� nextIndex()

� previousIndex()

� add(Object o)

� remove()

� set(Object o)

31Web−Anwendungen mit Java

Beispiel: List, ListIterator

public static void printNamesReverse(List list){ ListIterator i = list.listIterator(list.size()); while (i.hasPrevious()) { System.out.print(i.previousIndex() + ": "); String s = (String) i.previous(); System.out.println(s); }}

...

Collection c = ......List l = new ArrayList(c);Collections.sort(l);printNamesReverse(l);

32Web−Anwendungen mit Java

Collections und Objekte

� Essentiell für das Verwalten von Objekten in Collections: Object−Methoden equals() und hashCode()

� Bei eigenen Klassen Gedanken über diese Methoden machen!� Kann ich sie von der Oberklasse erben?� Muß ich equals() und hashCode() überschreiben?

33Web−Anwendungen mit Java

Object.equals

� public boolean Object.equals(Object obj)

� Vergleicht das aktuelle Objekt (this) mit dem Objekt obj.

� Vergleich der Referenzen reicht nicht aus.� String s1 = "Hugo";String s2 = "Hugo";

� Vergleich s1 == s2 liefert false.� Vergleich s1.equals(s2) liefert true.

� Methode kann in Unterklassen überschrieben werden.� Beim Überschreiben von equals() Anforderungen an

die Methode beachten!

34Web−Anwendungen mit Java

Object.equals

� Anforderungen an equals()

� Reflexivität: x.equals(x) ist true.� Symmetrie: x.equals(y) ist genau dann true, wenn y.equals(x) true ist.

� Transitivität: Falls x.equals(y) true ist und y.equals(z) true ist, dann ist auch x.equals(z) true.

� Konsistenz: Mehrfache Aufrufe von x.equals(y) liefern stets das gleiche Ergebnis, solange sich die Vergleichsdaten in den Objekten selbst nicht ändern.

� x.equals(null) ist false.

35Web−Anwendungen mit Java

String und StringBuffer

� Die Implementierung von Object.equals(obj) liefert true, falls this und obj auf das gleiche Objekt verweisen.

� Die Klasse String überschreibt equals(Object obj):

� Liefert true, falls obj ebenfalls ein String ist und die gleiche Zeichensequenz enthält.

� Die Klasse StringBuffer überschreibt equals(Object obj) nicht:

� Die Implementierung von Object gilt.� Liefert nur dann true, falls this und obj auf das

gleiche Objekt verweisen.

36Web−Anwendungen mit Java

String und StringBuffer

� StringBuffer b1 = new StringBuffer("Hugo");StringBuffer b2 = new StringBuffer("Hugo");if (b1.equals(b2)) System.out.println("gleich");else System.out.println("ungleich");

37Web−Anwendungen mit Java

Object.hashCode

� public int Object.hashCode()

� Liefert einen objektspezifischen Hash−Wert.

� Hash−Funktion bildet �viele� Objekte auf �wenige� Hash−Werte ab (int−Wertebereich).

� Ideal: Gleichverteilung

38Web−Anwendungen mit Java

Object.hashCode

� Anforderungen:� Konsistenz: Mehrfache Aufrufe von x.hashCode()

liefern stets das gleiche Ergebnis, solange sich die Vergleichsdaten im Objekt selbst nicht ändern.

� Falls x.equals(y) true ist, ist x.hashCode() gleich y.hashCode().� Gleiche Objekte liefern gleiche Hash−Werte.

� Falls x.equals(y) false ist, darf dennoch x.hashCode() gleich y.hashCode() sein.� Ungleiche Objekte dürfen gleiche Hash−Werte haben

39Web−Anwendungen mit Java

Übungsaufgaben 1: Fingerübungen

� Machen Sie sich mit den Übungsrechnern und der installierten Software vertraut!

� Schreiben Sie ein einfaches Java−Programm und bringen Sie es zum Laufen, z.B. »Hello World«!

40Web−Anwendungen mit Java

Collections (Teil 2)

Collections(Teil 2)

41Web−Anwendungen mit Java

Collections: SortedSet� Definiert Ordnung der Elemente

� Elemente müssen Interface Comparable implementieren...public interface Comparable{ int compareTo(Object o);}

� ...oder den dem Set zugeordneten Comparator unterstützenpublic interface Comparator{ int compare(Object o1, Object o2); boolean equals(Object obj);}

42Web−Anwendungen mit Java

Collection: SortedSet� Object first(), Object last()

� Kleinstes (größtes) Objekt

� SortedSet headSet(Object toElement), SortedSet tailSet(Object fromElement)

� Menge der kleinsten (größten) Objekte

� SortedSet subSet(Object fromElement, Object toElement)

� Geordnete Teilmenge

� Comparator comparator()

� Für Vergleiche verwendeter Comparator

43Web−Anwendungen mit Java

Beispiel: SortedSet

Collection c = ......printNames(c);SortedSet ss = new TreeSet(c);printNames(ss.subSet("E", "N"));

PriskaAquilaEpänetus MariaAndronikusJuniasAmpliatusUrbanStachys

EpänetusJuniasMaria

44Web−Anwendungen mit Java

Collections: Map

� Abbildung Schlüsselmenge → Wertebereich

� Leitet nicht von Collection ab

� Vorsicht bei sich ändernden Schlüsseln!

Schlüssel(keySet)

Werte(entrySet)

Map

45Web−Anwendungen mit Java

Beispiel: Map (1)� Vereinsvorstand

� Abbildung Vorstandsfunktion → Personimport java.util.*;

public class BeispielMap{ class Person { final static int MALE = 0; final static int FEMALE = 1; String name; int sex; int yearOfBirth;

46Web−Anwendungen mit Java

Beispiel: Map (2) Person(String name, int sex, int yearOfBirth) { this.name = name; this.sex = sex; this.yearOfBirth = yearOfBirth; }

public String toString() { return (sex == MALE ? "Herr" : "Frau") + " " + name + " (" + yearOfBirth + ")"; } }

public static void main(String args[]) { new BeispielMap().run(); }

47Web−Anwendungen mit Java

Beispiel: Map (3) void run() { Map map = new HashMap(); map.put("Vorsitzender", new Person("Bettina Boss", Person.FEMALE, 1961)); map.put("Kassierer", new Person("Karl Knauser", Person.MALE, 1975)); // ... for (Iterator i = map.keySet().iterator(); i.hasNext();) { Object key = i.next(); Object value = map.get(key); System.out.println(key + ": " + value); } }}

48Web−Anwendungen mit Java

Collections: Implementierungen� Array

� Verkettete Liste

� Hash

� Siehe hashCode() und equals()

0...

1 2 3 n−2 n4 5 6 n−1

...

...

49Web−Anwendungen mit Java

Collections: Implementierungen

50Web−Anwendungen mit Java

Collections: HashSet (Set)� Speichert Elemente in Hash−Tabelle

� Siehe hashCode(), equals()� Element null erlaubt

� Initial capacity: Platz für diese Anzahl von Elementen

� Load factor: Kapazitätserweiterung, sobald für Kapazität c und Größe s gilt: s > c * lf

� cneu

Y 2calt