slide1 l.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Einführung in Java PowerPoint Presentation
Download Presentation
Einführung in Java

Loading in 2 Seconds...

play fullscreen
1 / 125

Einführung in Java - PowerPoint PPT Presentation


  • 257 Views
  • Uploaded on

Trainingsunterlage. Einführung in Java. Teil 1 : Übersicht. Einführung in Java. 1 : Übersicht 2 : Objektorientierte Systembeschreibung 3 : Java als Programmiersprache 4 : Die Java Architektur 5 : Java Releases 6 : Der Java Baukasten 7 : Realisierung verteilter Anwendungen

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Einführung in Java' - calum


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
slide1

Trainingsunterlage

Einführung in Java

Teil 1 :

Übersicht

einf hrung in java

Einführung in Java

  • 1 : Übersicht
  • 2 : Objektorientierte Systembeschreibung
  • 3 : Java als Programmiersprache
  • 4 : Die Java Architektur
  • 5 : Java Releases
  • 6 : Der Java Baukasten
  • 7 : Realisierung verteilter Anwendungen
  • 8 : Peer-to-Peer Netze
  • 9 : Ausblick
bersicht

Übersicht

  • 1.0 : Konzept
  • 1.1 : Historische Entwicklung
  • 1.2 : Prozesse zur Standardisierung
  • 1.3 : Heutige Ensatzgebiete
  • 1.4 : Zukunftsperspektiven
was ist java

Was ist Java?

  • Eine Programmiersprache
  • Ein Baukasten für Anwendungen
  • Eine Umgebung für portable Anwendungen
  • Entwicklungswerkzeuge
  • Eine Software-Technologie
  • Nach Bedarf ladbare Anwendungsprogramme
konzept write once run anywhere
Die Eigenschaften von Java:

portabel: ladbarer “Bytecode” wird auf unterschiedlichen Systemen von einer virtuellen Maschine interpretiert

robust: Programme bleiben bei einfachen Änderungen stabil

sicher: Schutz des Zielsystems vor unerlaubten und unerwünschten Eingriffen durch die geladene Anwendung

verteilt: Standardbibliothek enthält Klassen für TCP/IP und HTTP, sowie Unterstützung durch Remote Method Invocation

objektorientiert: Java ist auf dem Stand der Technik

multithreaded: Unterstützung nebenläufiger Prozesse inkl. Synchronisation und Inter-Prozess-Kommunikation

Konzept “Write once, run anywhere”
die geschichte von java
Wurde ab 1990 bei SUN Mikrosystems entwickelt in einer Gruppe von James Gosling.

Ursprüngliches Ziel waren “embedded systems”, d.h. Systeme im Haushalt und in der Consumer-Elektronik (um z.B. den Türknopf mit dem Lichtschalter intelligent zu verbinden)

Populär wurde Java durch die “Applets” im Internet (kleine Applikationen, die den Web-Browser interaktiv machen). Applets gibt es seit 1993 und wurden ab 1995 durch den Netcape-Browser unterstützt.

Heute: komplette Technologie für Internet-basierende Anwendungen, speziell auch für Software in Unternehmen.

Die Geschichte von Java
java community process
Offene Organisation von Java Entwicklern und Lizenznehmnern weltweit

Ziel: Entwicklung und Weiterentwicklung technischer Spezifikationen, Referenzimplementierungen, sowie Tools und Testspezifikationen für die Kompatibiltität von Java Technologien

Von SUN Microsystems 1995 initiiert und inzwischen eine eigenständige Organisation, siehe www.jcp.org

Hauptprodukt für Entwickler: Java Specification Requests (JSRs), z.B. JSR-82 für künftige Bluetooth APIs oder JSR-118 über die Programmierung mobiler Telefone (MIDP, mobile independent device profile)

Java Community Process
heutige einsatzgebiete
Internet-basierende Anwendungen

Client-Applikationen auf Desktop-Systemen

Präsentation interaktiver und dynamischer Web-Seiten (Applets, Java Server Pages, Servlets, HTML, XML)

Anwendungsprogramme auf dem Server (Geschäfts-logik unterstützt durch standardisierte Funktionen für die Verteilung, Transaktionen und Administration)

Datenbandanbindung

Beginnender Einsatz auf Mobiltelefonen (vor allem Spiele) und digitalen Set-Top-Boxen (MHP)

Heutige Einsatzgebiete
die absehbare entwiclung
Heute : vorherrschend PC als Desktop-System

100 Mio. vernetze PCs weltweit

vorwiegend Client-Server Systeme

aber bereits 1000 Mio. Mobiltelefone weltweit

Morgen: verteilte Anwendungen auf vielen spezialisierten Geräten

Mobiltelefon als persönlicher Universalcomputer

viele prozessorgesteuerte, vernetzte Geräte pro Nutzer

spontane Peer-to-Peer Netze und verteilte Anwendungen (pervasive Computing, der ursprüngliche Zweck von Java)

Die absehbare Entwiclung
zukunftsperspektiven
Java bietet eine vernünftige Basis für die Anwendungssoftware der Zukunft

technologisch z.Zt. am weitesten entwickelte Lösung

gesellschaftlich vernünftig, da offene Architektur, kommunale Prozesse zur Spezifikation und technologischen Weiterentwicklung und vorwiegend Open-Source Politik bzw. Wettbewerb für Lösungen und Produkte

Zukunftsperspektiven
slide11

Trainingsunterlage

Einführung in Java

Teil 2 :

Objektorientierte Systembeschreibung

einf hrung in java12

Einführung in Java

  • 1 : Übersicht
  • 2 : Objektorientierte Systembeschreibung
  • 3 : Java als Programmiersprache
  • 4 : Die Java Architektur
  • 5 : Java Releases
  • 6 : Der Java Baukasten
  • 7 : Realisierung verteilter Anwendungen
  • 8 : Peer-to-Peer Netze
  • 9 : Ausblick
objektorientierte systembeschreibung

Objektorientierte Systembeschreibung

  • 2.0 : Objekte, Eigenschaften und Methoden
  • 2.1 : Objektorientierte Systembeschreibung
  • 2.3 : Beispiel: der springende Punkt
  • 2.4 : Objektorientitere Programmierung
objekte eigenschaften und methoden
Objekte, Eigenschaften und Methoden

Auto

Telefon

wählen,

auflegen,

annehmen,

SMS schicken,

...

fahren,

anhalten,

überholen,

Tür öffnen,

...

Methoden

Methoden

TV

an, aus,

lauter,

leiser,

Kanal wechseln,

...

Eigenschaften

Methoden

objektorientierte beschreibung 1
Entspricht intuitiv unserer Erfahrung im Alltagsleben.

Ein Objekt besitzt Eigenschaften (ein Auto z.B. die Motorleistung, die Geschwindigkeit und sonstige im Autoquartett aufgeführten Attribute).

Ein Objekt stellt Methoden für den Umgang mit dem Objekt zur Verfügung (mit einem Auto z.B. kann man fahren).

Das Objekt enthält auch diejenigen Methoden, mit denen sich Attribute des Objektes beeinflussen lassen (die Methode “beschleunigen” bzw. “bremsen” beeinflusst beispielsweise die aktuelle Geschwindigkeit)

Objektorientierte Beschreibung (1)
objektorientierte beschreibung 2
Ein Objekt ist ein Exemplar seiner Klasse (die Klasse “Auto” ist eine Abstraktion, fahren kann man nur mit Exemplaren von Autos).

Unsere Umgebung lässt sich durchgängig objektorientiert beschreiben und als Modell nachbilden.

Modelle lassen sich in Bibliotheken dokumentieren.

Durch Zugriff auf Bibliotheken ist ein Austausch von Modellen für jeden Anwendungszweck möglich.

Objektorientierte Beschreibung (2)
objektorientierte beschreibung 3
Die objektorientierte Beschreibung lässt sich auf die Systembeschreibung bei der Software-Entwicklung übertragen.

Der Entwicklungsprozess erfolgt iterativ und beinhaltet die Beschreibung des Problems und den Entwurf einer Lösung.

Aus den in der Software vorgegebenen Klassen und ihren Beziehungen werden zur Laufzeit des Programmes Objekte erzeugt, die miteinander wechselwirken.

Durch die Kapselung von Attributen und Methoden innerhalb der Objekte (bzw. Klassen) wird objektorientierte Software sehr modular.

Objektorientierte Beschreibung (3)
objektorientierte beschreibung 4
Module sind leicht einzubinden und zwischen Entwicklern auszutauschen.

Dadurch wird die Teamarbeit und der Rückgriff auf bereits vorhandene Komponenten.

Speziell bei komplexen Programmen reduziert sich dadurch der Aufwand für die Pflege und Weiterentwiclung.

Die Verwendung erprobter Module erhöht die Zuverlässigkeit der Software.

Objektorientierte Beschreibung (4)
der springende punkt
Der springende Punkt

y

x

Objekt: Punkt

Punkt, bewege dich nach rechts!

Eigenschaft: Ort (xp,yp)

Aufgabe: einen Punkt in der Ebene program-mieren

Daten

  • Methoden:
  • move
  • stop
  • move_a_bit

Methode: Aufforderung an das Objekt

Prozeduren

objektorientierte programmierung
Immer mehr elektronische Geräte

enthalten einen Mikroprozessor und sind daher softwaregesteuert

basieren auf unterschiedlich ausgestatteten Plattformen (Prozessor, Speicher, Betriebssystem)

haben ähnliche Komponenten (Display, Tasten und Knöpfe, Schnittstellen zur Vernetzung, Möglichkeiten zur Wiedergabe und Kontrolle von Audio und Video, ...)

Ein objektorientierter Ansatz für Software schafft Synergien, sofern es gelingt, eine universelle Plattform für portable Anwendungen zu schaffen.

Objektorientierte Programmierung
slide21

Trainingsunterlage

Einführung in Java

Teil 3 :

Java als Programmiersprache

einf hrung in java22

Einführung in Java

  • 1 : Übersicht
  • 2 : Objektorientierte Systembeschreibung
  • 3 : Java als Programmiersprache
  • 4 : Die Java Architektur
  • 5 : Java Releases
  • 6 : Der Java Baukasten
  • 7 : Realisierung verteilter Anwendungen
  • 8 : Peer-to-Peer Netze
  • 9 : Ausblick
java als programmiersprache

Java als Programmiersprache

  • 3.0 : Sprachelemente von Java
  • 3.1 : Programmieren in Java
sprachelemente von java

Sprachelemente von Java

  • Anweisungen
  • Namensräume
  • Quelltexte
  • Datentypen
  • Garbage Collector
quelltexte
Java-Quelltexte werden in Dateien mit der Endung .java abgelegt. Eine Datei darf mehrer Klassen enthalten, jedoch nur eine Klasse vom Typ public, die der Datei dann ihren Namen gibt (z.B. AudioPlayer.java).

Der Compiler übersetzt Quelltextdateien in Bytecode. Dabei wird jede Klasse in einer eigenen Datei mit der Endung .class abgelegt.

Java verwendet intern den Unicode Zeichensatz. Unicode ist ein international standardisierter Zeichensatz mit 16 Bit pro Zeichen, der den nur 7 Bit breiten ASCII Zeichensatz als Untermenge enthält. Vor der Kompilierung wird ASCII Quelltext in Unicode umgewandelt.

Quelltexte
namensr ume
Ein Namensraum ist der Bereich, in dem eine Bezeichnung (z.B. für eine Klasse oder Methode) gültig ist.

Grundregel: lokale Bezeichnung überdeckt übergeordnete Bezeichnung.

Für Namensräume gilt folgende Hierarchie:

Namensraum des Paketes für Klassen

Namensraum der Klassen

Namensräume der Methoden der Klasse

Namensräume der Blöcke innerhalb der Methoden

Der Compiler löst Bezeichnungen „von innen nach aussen“ auf bis zum ersten Treffer.

Namensräume
anweisungen
Wie andere Programmiersprachen auch gibt es in Java Anweisungen bzw. Anweisungsblöcke, z.B:

if (bedingung) {

tuDieses();

}

Weitere Anweisungen sind switch (Verschachtelung), while, do und for (Schleifen), return (für Methoden mit Rückgabeparameter, d.h. für Methoden, die nicht vom Typ void sind).

Ausserdem implementiert Java arithmetrische Operatoren und eine Fehlerbehandlung für numerisch bedingte Laufzeitfehler, sowie mathematische Funktionen.

Anweisungen
datentypen
Java kennt die einfachen Datentypen logisch (boolean) ganze Zahlen (int, byte, short, long), Gleitpunktzahlen (float, double) und Zeichen (char).

Konstanten werden mit dem Attribut final deklariert.

Zeigertypen (Pointer) gibt es in Java nicht.

Datenelemente in Objekten werden automatisch initialisiert.

Ausserdem unterstützt Java Operationen auf den Datentypen String (Zeichenketten) und Arrays (Matrizen). Zu den String-Operationen z.B. gehören die Erzeugung, Verkettung, Literale, Konvertierung Umwandlung in einfache Datentypen.

Datentypen
garbage collector
Objekte werden in Java mit dem Operator new erzeugt. Um das Aufräumen des Arbeitspeichers (d.h. das löschen nicht mehr benötigter Objekte mit einem eigenen Operator) muss sich der Programmierer allerdings nicht kümmern.

Der Garbage Collector ist die Müllabfuhr des Java Interpreters zur Entsorgung nicht mehr benötigter Objekte zur Laufzeit im Arbeitspeicher.

Dadurch entfällt eine der grössten Fehlerquellen für Anwendungsprogramme.

Garbage Collector
programmieren mit java

Programmieren mit Java

  • Vererbung
  • Konstruktoren
  • Klassendefinition
  • Methoden
  • Interfaces
klassendefinition 1
Die Definition einer Klasse erfolgt in Java durch das Schlüsselwort class, gefolgt vom gewünschten Namen der Klasse. In Klammern eingefasst folgen die Methoden und Datenelemente der Klasse, z.B:

public class Punkt {

public int x,y;

public void moveTo(int posX, int posY) {

x = posX;

y = posY;

}

}

Die Reihenfolge von Vereinbarungen über Daten und Methode ist beliebig.

Klassendefinition (1)
klassendefinition 2
Die Klasse erzeugt ihr Exemplar mit der Anweisung „new“:

Punkt myPunkt; (definiert Variable mit Objekttyp Punkt)

myPunkt = new Punkt(); (Zuweisung des Exemplars an die Variable)

myPunkt ist ein Verweistyp auf das neue Objekt Punkt.

Auf Methoden und Datenelemente des neuen Objekts kann zugegriffen werden, indem der Name des Objekts voran-gestellt wird:

myPunkt.moveTo(17,4);

int xKoordinate = myPunkt.x

Der Operator „new“ sorgt dafür, dass für das neue Objekt Speicherbereich belegt wird. „new“ ruft den Konstruktor der Klasse auf, von der das Objekt erzeugt werden soll.

Klassendefinition (2)
konstruktoren
Konstruktoren versorgen die Datenelemente eines Objektes mit Initialwerten und erledigen sonstige Aktionen im Zusammenhang mit der Initialisierung.

Konstruktor haben den Namen ihrer Klasse (siehe myPunkt = new Punkt()). Wird kein Konstruktor explizit definiert, so werden die Datenelemente der Klasse mit den Initialwerten ihrer Datentypen initialisiert.

Eine explizite Definition eines Konstruktors wäre z.B:

public Punkt() {

x = 10;

y = 10;

}

Statische Daten initialistert der Operator „static“.

Konstruktoren
vererbung
Aus einer Klasse kann durch „extends“ eine Unterklasse abgeleitet werden, die die Methoden ihrer Oberklasse erbt.

Die neue Klasse kann weitere Methoden und Datenelemente einführen, bzw. Methoden überschreiben.

Beispiel: aus dem Punkt wird ein farbiger Punkt abgeleitet

public class FarbKlecks extends Punkt {

int colour;

public FarbKlecks(int x, int y, int colour) {

super(x, y);

this.colour = colour;

}

public void setColour(int colour)

this.colour = colour;

}

}

Vererbung
methoden
Ein Methodenaufruf ist eine Aufforderung an ein Objekt, etwas zu tun. Das Objekt reagiert nur auf Aufforderungen, die es kennt, d.h. die in seinen Methoden abgelegt sind.

Eine Methode hat einen Ergebnistyp (Rückgabewert), einen Bezeichner (in Unicode) und eine Parameterliste, z.B. void setX (int x) { this.x = x; }

Eine Klasse kann mehrere Varianten einer Methode haben.

Eine Methode kann lokale Variable besitzen.

Eine Methode wird mit Angabe ihrer Parameter aufgerufen, z.B. setX(42);

Methoden
interfaces
Interfaces sind Schnittstellen im Sinne der Definition von Attributen und Methoden, jedoch ohne deren fertige Implementierung (z.B. werden nur die Namen der Methoden vorgegeben).

Interfaces ermöglichen eine Generalisierung (Abstraktion) für unterschiedliche Typen abgeleiteter Klassen.

Die Implementierung erfolgt durch den Operator „implements“. Klassen von Punkten, Klecksen, Sprites z.B. könnten aus einer Interface-Klasse graphicObject abgeleitet sein, die eine einheitliche Terminologie für Methodenaufrufe definiert (wie z.B. showObject(), setColor(), hideObject(), moveObject()).

Interfaces
slide37

Trainingsunterlage

Einführung in Java

Teil 4 :

Die Java Architektur

einf hrung in java38

Einführung in Java

  • 1 : Übersicht
  • 2 : Objektorientierte Systembeschreibung
  • 3 : Java als Programmiersprache
  • 4 : Die Java Architektur
  • 5 : Java Releases
  • 6 : Der Java Baukasten
  • 7 : Realisierung verteilter Anwendungen
  • 8 : Peer-to-Peer Netze
  • 9 : Ausblick
die java architektur

Die Java Architektur

  • 4.0 : Einführung
  • 4.1 : Laufzeitumgebung
  • 4.2 : Spezifikationen für Anwendungen (API)
was ist java40
Eine objektorientierte Sprache.

Ein kommunaler Prozess zur Spezifikation objektorientierter Modelle, zur Entwicklung von Konzepten und technologischer Lösungen für alle für die Entwicklung von Software interessanten Bereiche (der Java-Baukasten).

Ein Baukasten für Entwickler (Spezifikationen für Application Program Interfaces, Bibliotheken, Quelltexte, Beispiele, Referenzimplementierungen)

Eine Software-Umgebung für portable Anwendungen (virtuelle Maschine, ladbarere Bytecode, Absicherung der Systeme durch Beschränkungen der Rechte der Anwendungen)

Was ist Java?
die java architektur41
Die Java Architektur

Java Applications and Applets

Java API + Libraries

Java

Plattform

Java Virtual Machine

System

Plattform

Operating Sytem

Hardware Drivers

Hardware

was ist eine programmierschnittstelle api
Spezifikation von Objektklassen, Methoden und Attributen

Nach Anwendungspaketen geordnet, wie z.B.

graphische Benutzerschnittstellen (z.B. Swing)

Kommunikation über Netze

Verwendung von Datenbanken (z.B. JDBC)

verteilte Anwendungen (z.B. RMI, JINI)

Verarbeitung von Medien (z.B. Java Media Framework)

Intranet, Internet, Software-Integration in Unternehmen, mobile Endgeräte, TV, Chip-Karten, ...

Was ist eine Programmierschnittstelle (API)?
slide45

Trainingsunterlage

Einführung in Java

Teil 5 :

Java Releases

einf hrung in java46

Einführung in Java

  • 1 : Übersicht
  • 2 : Objektorientierte Systembeschreibung
  • 3 : Java als Programmiersprache
  • 4 : Die Java Architektur
  • 5 : Java Releases
  • 6 : Der Java Baukasten
  • 7 : Realisierung verteilter Anwendungen
  • 8 : Peer-to-Peer Netze
  • 9 : Ausblick
java releases

Java Releases

  • 5.0 : Einführung
  • 5.1 : Übersicht über die Java Releases
  • 5.2 : Anwendungen in Unternehmen
  • 5.3 : Anwendungen auf Desktop-Systemen
  • 5.4 : Anwendungen für mobile Geräte und für Geräte im Haushalt
was ben tigt man f r die anwendungsentwicklung
Das geeignete Java Release:

für Desktop Anwendungen die Standard Edition

für Mobiltelefone und Consumer-Elektronik die Micro Edition

für Anwendungen in Unternehmen die Enterprise Edition

Laufzeitungebung (Virtual Machine, Compiler, Bibliotheken, Referenzimplementierung, ...)

Entwicklungs-Toolkit (Integrierte Tools, Emulatoren, gerätespezifische Tools)

Dokumentation (API-Spezifikationen, ...)

Was benötigt man für die Anwendungsentwicklung?
java releases49
Java Releases

Workstation

Network

Computer

Communicator

Server

Mobile phone

PC,

Notebook

Set-Top

Box

PDA

Java 2

Enterprise

Edition

Point of

Sales

Screenphone

Java 2

Standards

Edition

Smartcard

CDC

CLDC

Java 2 Micro Edition

Java Programming Language

Hot Spot

JVM

KVM

Card VM

Physical memory:

Processor:

10 MB

64 Bit

1 MB

32 Bit

512 kB

32 Bit

32 kB

16 Bit

8 Bit

was ist die standard edition j2se
Zweck der Java Releases ist die Ordnung der mit der Zeit stark gewachsenen APIs nach Anwendungsgruppen.

Die Java Standard Edition beinhaltet alles, was zur Entwickung von Client-Anwendungen benötigt wird.

Zielsysteme für J2SE sind vorwiegend Desktop-Systeme bzw. mobile Computer und Netzcomputer.

J2SE entspricht weitgehend dem Funktionsumfang des Development Kits JDK 1.2 (ca. 1500 Klassen in 1999) und enthält ausserdem die Laufzeitumgebung (JRE).

Inzwischen stehen mit JSE 1.4 zusätzliche Funktionen bereit, wie z.B. die HotSpot Virtual Machine und APIs zur Verarbeitung von XML Dokumenten.

Was ist die Standard Edition (J2SE)?
was ist die enterprise edition j2ee
Ein Konzept zur Realisierung und Integration von Anwendungen im Web und in Unternehmen.

Alle dazu benötigten Komponenten, die über den Bedarf der Standard Edition hinausgehen, sind in der Enterprise Edition enthalten.

Die Architektur unterscheidet folgende Schichten:

Client für Präsentation und Benutzerschnittstellen z.B. in einem Browser (Applet Container), bzw. in einer Client-Anwendung (Application Client Container)

Server im Web bzw. im Unternehmen (Web-Container bzw. Enterprise Java Beans Container)

Datenverwaltung (Datenbank)

Was ist die Enterprise Edition (J2EE)?
j2ee architektur und komponenten

JMS

JMS

JNDI

JNDI

JTA

JTA

JMS

J-Mail

J-Mail

JNDI

JAF

JAF

RMI

RMI

RMI

JDBC

JDBC

JDBC

J2EE Architektur und Komponenten

Applet

Container

HTTP

Applet

Web

Container

EJB

Container

JSP Page

J2SE

Enterprise Bean

HTTP

Servlet

Client

Application

Container

Database

Client

Application

J2SE

J2SE

RMI-IIOP

J2SE

erl uterungen zu j2ee 1
J2EE beinhaltet die J2SE und bietet weitere Funkionen.

Zu den zusätzlichen Funktionen gehören:

Servlets (Server-seitige Anwendungen für Web-Server) und die Server-seitige Unterstützung von Java Server Pages (zur Erzeugung dynamischer Web-Seiten)

Server-Applikationen mit Hilfe von Enterprise Java Beans. Der Anwendungsentwickler konzentriert sich dabei auf seine Anwendung. Infrastruturaufgaben (wie z.B. die Behandlung von Transaktionen und die Behandlung persistenter Daten) übernimmt der EJB-Container.

CORBA und Transaktionsdienste

Erläuterungen zu J2EE (1)
erl uterungen zu j2ee 2
Zur J2EE gehören:

die Spezifikationen

die Referenzimplementierung von SUN Microsystems

die Test-Suite zur Kompatibilität von J2EE Technologien

Design Richtlinien für Anwendungen

Server für die J2EE Technologie werden von Technologiepartnern realisiert und angeboten.

Die Funktion der in der Abbildung aufgeführten Komponenten werden im folgenden Abschnitt 6 erläutert (Java Baukasten).

Erläuterungen zu J2EE (2)
was ist die java micro edition j2me
Eine kleine virtuelle Maschine KVM (benötigt nur ca. 100 kBytes Arbeitsspeicher)

Prä-verifizierter Bytecode zur Entlastung des Zielsystems

Konfigurationen (Systemeigenschaften):

CDC (Connected Device Profile): 32/64 Bit-Prozessor, 2MB

CLDC (Connected Limited Device): 16 Bit Prozessor, 256 kB

Profile (Gebrauchsmuster für Anwendungen):

MIDP (Mobile Interconnected Device Profile) für CLDC: z.B. Mobiltelefon mit kleinem Display und Telefon-Tastatur

Wireless Toolkit für die Entwickung und Tests von MIDlets

Was ist die Java Micro Edition (J2ME)?
eingeschr nkter funktionsumfang von j2me
Eingeschränkter Funktionsumfang von J2ME

J2SE (Standard Edition)

J2ME

CDC

J2ME

CLDC

Funktionen ausserhalb des java.* Namens-raumes, z.B.

Power Management

CDC: Connected Device Configuration

CLDC: Connected Limited Device Configuration

slide58

Trainingsunterlage

Einführung in Java

Teil 6 :

Der Java Baukasten

einf hrung in java59

Einführung in Java

  • 1 : Übersicht
  • 2 : Objektorientierte Systembeschreibung
  • 3 : Java als Programmiersprache
  • 4 : Die Java Architektur
  • 5 : Java Releases
  • 6 : Der Java Baukasten
  • 7 : Realisierung verteilter Anwendungen
  • 8 : Peer-to-Peer Netze
  • 9 : Ausblick
der java baukasten

Der Java Baukasten

  • 6.0 : Übersicht
  • 6.1 : APIs der Standard-Edition
  • 6.2 : Komponenten der J2EE
  • 6.3 : Komponenten der J2ME
  • 6.4 : Telekommunikation mit JAIN
  • 6.5 : Java Media Framework (JMF)
  • 6.6 : Sonstige (Java Card, Java TV, Java Phone)
bersicht61
Als Java Baukasten bezeichnen wir alle Komponenten, die zur Entwicklung einer Anwendunge benötigt werden.

Dazu gehören Spezifikationen (APIs), Bibliotheken, Toolkits Anwendungsbeispiele, Referenzimplementierungen und Informationen bzw. Komponenten aus anderen für den Entwickler zugänglichen Projekten.

Ausser der Programmierumgebung liefert Java auch eine jeweils passende Laufzeitungebung (siehe Container in der Architektur von J2EE in Abschnitt 5).

Zur Entwicklung komplexerer Projekte wird auf integrierte Entwicklungsumgebungen zurückgegriffen (z.B. den Jbuilder von Borland oder Forte von SUN Microsystems).

Übersicht
die apis der standard edition 1
java.applet - Entwicklung von Applets

java.awt - Advanced Windowing Toolkit für graphische Benutzeroberflächen, mittlerweile vorwiegend javax.swing

java.beans - für die Client-Seite von Java Beans

java.io - Datenaustausch mit Systemfunktionen (SysIn/Out)

java.lang - die grundlegende Klasse der Java Language (z.B. die „Object“-Klasse als Uraprung der Klassenhierarchie, die „Class“-Klasse für Instanzen zur Laufzeit, Datentypen, mathematische Funktionen, String-Operationen, Systemoperationen für die Java Umgebung und das Hostsystem, Fehlerbehandlung)

Die APIs der Standard Edition (1)
die apis der standard edition 2
java.math - Erweiterung für das Rechnen mit beliebiger Genauigkeit für Dezimalzahlen und Integerwerte

java.net - für vernetzte Applikationen über „Socket“-Klassen, Unterstützung für URLs

java.rmi - Remote Method Invocation zur Unterstützung der Verteilung von Anwendungen auf unterschiedliche Systeme

java.security - kryptographische Verfahren, Generation von Signaturen und sicherer Zufallszahlen, signierte Objekte

java.sql - Client-funktionen für den Zugriff auf Datenbanken mit Hilfe des JDBC APIs (Java Data Base Connectivity)

Die APIs der Standard Edition (2)
die apis der standard edition 3
java.text - Verarbeitung von Textformaten (Umformatierung, Sortierung, Suche nach Wörtern und Zeichen)

java.util - Utilities (Hilfsfunktionen) für Kalenderfunktionen, Ereignisbehandlung, Datum und Zeit, Strings usw.

java.accessability - für die Verwendung von Eingabehilfen, Vergösserung der Darstellung am Bildschirm usw.

javax.naming - Zugang zu Naming und Directory Services für namentlich bezeichnete Objekte wie z.B. LDAP oder JNDI (Java Naming und Directory Interface)

javax.rmi - Erweiterung des RMI für den Export abgesetzter Objekte, z.B. für die Verwendung der CORBA-Schnittstelle

Die APIs der Standard Edition (3)
die apis der standard edition 4
javax.sound - Unterstützung für MIDI-Anwendungen (Musical Instrumental Digital Interface) und Audio-Clips

javax.swing - ein umfangreiches Paket für portable graphische Benutzeroberflächen (Bildschirmfenster usw.)

org.omg.CORBA - Klassen für den CORBA Object Request Broker zur Realisierung verteilter Anwendungen

Java Web Start (JWS) - laden und starten von Java Applikationen über einen Link auf einer Web-Seite

javax.xml - Parser und Verarbeitung von XML-Dokumenten (XML und Java passen gut zusammen nach dem Prinzip „portable data, portable code“)

Die APIs der Standard Edition (4)
zus tzliche komponenten der j2ee
JMS (Java Message Service) - Ein API für den asynchronen Austausch von Messages für die Integration von Systemen im Unternehmensbereich.

Java Mail - Ein API für den Aufbau und die Integration von e-Mail Systemen mit unterschiedlichen Message-Formaten und Methoden für den Transport und die Speicherung.

JAF (Java Beans Activation Framework) - Wird von Java Mail für e-mail Anhänge (MIME-Types) verwendet.

JTA (Java Transaction API and Service) - Unterstützung „atomarer“ (unteilbarer) Operationen für Enterprise Java Beans und Web-Komponenten (Servlets und Java Server Pages über JNDI).

Zusätzliche Komponenten der J2EE
komponenten der j2me midp
Das MIDP API stellt Funktionen bereit für

die Benutzerführung am Display (Menülisten, Textboxen, Alarmboxen, Checklisten, Radio-Buttons, Graphiken, usw)

die Eingabe per Telefontastatur (12 Tasten) und herstellerspezifische Tasten. Über „Abstract Commands“ werden Funktionen wie „back“, „ok“, „cancel“, „help“ hersteller-spezifischen Bedienelementen automatisch zugeordnet, bzw. über eine Menüauswahl umgesetzt

die Vernetzung über HTTP (mit oder ohne IP-Stack).

die Verwaltung persistenter Daten (Record Manamement System) auf dem Mobiltelefon.

Komponenten der J2ME (MIDP)
telekommunikation mit jain
Thema des JAIN-Paketes ist Programmierung von Telekommunikationsanwendungen.

Methode von JAIN ist die Abstraktion der diversen in Telekommunikationsnetzen benötigten Protokolle auf eine einheitliche Architektur (siehe Abbildung nächste Seite).

JAIN stand ursprünglich für „Java Architecture for Intelligent Networks“, gilt aber inzwischen generell für Anwendungen in Telekommunikationsnetzen.

Für Anwendungsentwickler am interessantesten dürfte das sogenannte „Session Initiation Protocol“ (SIP) sein, das für künftige multimediale Anwendungen in TK-Netzen eingesetzt wird (API unter jain.protocol.ip.sip).

Telekommunikation mit JAIN
slide69

Die Software-Architektur von JAIN

Applikation

Listener

Stack

Event

Abstraktion

Provider

Diverse TK-Protokolle (CS7-basierend wie z.B. ISUP, INAP, MAP oder IP basierend wie z.B.SIP)

Protocol Stack

java media framework jmf
Zweck des Media Frameworks ist die Verarbeitung multi- medialer Audio- und Video-Formate (z.B. Aufnehmen, Abspielen, Speichern, Transformieren, Steuern).

JMF basiert auf einem generellen Konzept für den Umgang mit Medien (Datenquellen, Senken, Formate, Player, Prozessor, Management, Sessions, Streaming usw.).

JMF bietet ein umfangreiches Paket für Bedienelemente, Datenquelle, Medienformate und Protokolle für vernetzte Anwendungen und Medien (z.B. RTP).

Als funktionsfähiges Beispiel einer JMF-Implementierung lässt sich von SUN Microsystems das Java Media Studio laden und auf dem PC ausprobieren (s. nächste Seite)

Java Media Framework (JMF)
java card
Das Java Card Development Kit enthält

die Java Card Virtual Machine und Java Card Runtime Environment (wird als C-Code zur Verfügung gestellt)

Vorab-Verifikation des Bytecodes (Offline Verifikation)

Java Card API und technische Spezifikationen.

Einsatzgebiete von Chip-Karten: Authentisierung und Autorisierung im Mobilfunk, in TV Set-Top-Boxen, für finanzielle Transaktionen, Zugang zu geschützten Räumen

Vorteile der Java Card: Modifizierbarkeit der geladenen Anwendungen und Betrieb mehrerer individueller Anwendungen auf einer Karte.

Java Card
java tv
Java TV unterstützt die Programmierung interaktiver TV-Anwendungen, Video-on-Demand, elektronische Programmführer, Zugangskontrolle (Conditional Access), Steuerungsfunktionen für Tuner und Set-Top-Box usw.

Für Audio und Videomedien verwendet Java TV JMF.

Spannend wird Java als Standard künftiger digitaler Receiver bzw. Set-Top-Boxen (STB) werden (z.B. als Multi-Media Home Plattform, MHP).

Konzept: Laden und Verwalten von „Xlets“ auf der STB, Abstraktion der wesentlichen Funktionen der STB als API

Den Aufbau einer Set-Top-Box zeigt die nächste Seite.

Java TV
slide74

Video

Aufbau einer digitalen TV Set-Top Box

MPEG2

Transport

MPEG2

Encrypted

MPEG2

Decrypted

Eingang

Bild-speicher

Dekoder

Tuner

De-Mux

CA

select

select

Daten

Audio

CA = Conditional Access Modul

java phone
Das Java Phone enthält Klassen zur Unterstützung von Telefondiensten auf dem Endgerät.

Dazu gehören die JTAPI (Telephone API), ein Messaging Dienst, Adressbuch und Kalender, Benutzerprofile, Abfrage des Zusatendes der Spannungsversorgung, Laden und Löschen von Anwendungen, Kommunikation über vorhandene serielle und parallele Ports usw.

Das Konzept unterscheidet Endgeräteadresse (Address), Anschlussadresse (Connection), Anruf (Call), Basis für Applikationen (Provider), Verbindungsäste zu den Teilnehmern eines Anrufs (Legs) und die zugehörige Verwaltung von Zuständen von Anrufen und Applikationen mit Hilfe von Finite State Machines.

Java Phone
slide76

Trainingsunterlage

Einführung in Java

Teil 7 :

Realisierung verteilter Anwendungen

einf hrung in java77

Einführung in Java

  • 1 : Übersicht
  • 2 : Objektorientierte Systembeschreibung
  • 3 : Java als Programmiersprache
  • 4 : Die Java Architektur
  • 5 : Java Releases
  • 6 : Der Java Baukasten
  • 7 : Realisierung verteilter Anwendungen
  • 8 : Peer-to-Peer Netze
  • 9 : Ausblick
realisierung verteilter anwendungen

Realisierung verteilter Anwendungen

  • 7.0 : Einführung
  • 7.1 : Kommunikation verteilter Systeme
  • 7.2 : Der Kontext der Kommunikation
  • 7.3 : Java RMI (Remote Method Invocation)
  • 7.4 : Bluetooth Ad-Hoc Netze
  • 7.5 : JINI Netze
  • 7.6 : CORBA und Web-Services
verteilte funktionen in einer anwendung
Verteilte Funktionen in einer Anwendung

Set-Top-Box

Fernbedienung

Kommunikation ?

Bedienung des Gerätes

Kontext ?

Gemeinsamer Kontext (Daten und Abläufe innerhalb der Software)

auftrennung von funktionen einer anwendung
Innerhalb eines geschlossenen Systemes korrespondieren Module einer Software miteinander.

Die Kommunikation und der Kontext (z.B. Datentypen, Übergabeparameter, Rückgabewerte) werden durch die Entwicklungsumgebung und das Laufzeitsystem bereitgestellt, ohne dass der Anwendungsprogrammierer sich darum zu kümmern braucht.

Löst man eine Funktion aus dem System heraus (z.B. die Fernbedienung des Receivers auf der letzten Seite), muss sich der Programmierer um eine geeignete Schnittstelle kümmern, über die sich die verteilten Teile der Anwendung miteiannder verständigen können.

Auftrennung von Funktionen einer Anwendung
kommunikation durch austausch von nachrichten
Kommunikation durch Austausch von Nachrichten

Anfrage

Sender

Empfänger

System A

System B

Kommunikation durch Austausch von Nachrichten

Antwort

Kontext ?

arten von nachrichten
Signale (Events): Die elementare Form der Interaktion. Ein Signal wird direkt vom Empfänger interpretiert (z.B. Timer abgelaufen, Türkontakt geschlossen, ...) und löst dort die vorgesehene Reaktion aus.

Nachrichten (Messages): tragen eine Bedeutung

asynchron: Sender arbeitet nach Empfangsbestätigung der Nachricht durch den Empfänger sofort weiter

synchron: Sender wartet, bis der Empfänger den Abschluss des mit der Nachricht ausgelösten Prozesses meldet

Ausser den Nachrichten sind weitere Vereinbarungen über den Kontext erforderlich (z.B. Datentypen, beabsichtigte Reaktionen, sinnvolle Sequenzen von Nachrichten).

Arten von Nachrichten
methoden zur kontextvereinbarung
Spezifikation der Schnittstelle zwischen den Systemen durch ein Kommunikationsprotokoll und durch Spezifikation der Funktionen innerhalb der Systeme.

Einheitliche Programmierumgebung bzw. Laufzeit-umgebung für verteilte Systeme.

Verzeichnis über die Anwendungen zur Suche geeigneter Clients bzw. Treiber (Plug & Play-Methode).

Formale Beschreibung des Kontextes im Server-System zur manuellen bzw. automatischen Rekonstruktion von Clients.

Einige Beispiele aus der Praxis folgen.

Methoden zur Kontextvereinbarung
kontextvereinbarung in einer verteilten java umgebung rmi
Kontextvereinbarung in einer verteilten Java-Umgebung (RMI)

Client Java interface

Server implements

Client Java interface

Anwendungs-

programm

RMI Compiler

Client

Server

Server-Objekt

Proxy-Objekt

(Stub)

java rmi remote method invocation
Kontextvereinbarung über eine einheitliche Programmierumgebung und Laufzeitumgebung.

Anwendungsprogrammierer definiert die Client-Anwendung als Java Interface, deren Implementierung in der Server-Anwendung erfolgt..

Den Rest erledigt der Compiler (Java RMIC).

Zur Kommunikation lässt sich als standardisiertes Protokoll z.B. IIOP verwenden (das Internet Inter ORB Protokoll der OMG, das bei CORBA eingesetzt wird).

Durch die Verwendung des IIOP lassen sich auch CORBA-Server und Clients in Java RMI Anwendungen einbinden.

Java RMI (Remote Method Invocation)
bewertung von java rmi
Verteilung ist bereits seit Release 1.1 Bestandteil der Java Plattform (d.h. seit 1997).

Java Enterprise Beans verwenden ebenfalls IIOP zwischen EJB-Clients und Servern.

Client-Proxies (bzw. Stubs) sind eine generelle Methode zur Verteilung, die auch bei CORBA und Web-Services verwendet werden. Der Vorteil von RMI ist der, dass sich der Anwendungsprogrammierer nicht mit einer expliziten Kontextvereinbarung (z.B. durch IDL oder WSDL) auseinanderzusetzen braucht.

RMI unterstützt Service Discovery durch eine RMI-Registry.

Bewertung von Java RMI
kontextvereinbarung bei bluetooth netzen service discovery
Kontextvereinbarung bei Bluetooth-Netzen (Service Discovery)

UUID*) “Service

Katalog”

Client Applikation

Server Applikation

SDP Request

SDP

Client

SDP

Server

UUID: Universal Uniform Identifier

SDP: Service Discovery Protocol

SDP Response

UUID

UUID

bluetooth service discovery
Bluetooth-Geräte müssen sich in ständig wechselnden Umgebungen zurechtfinden (Ad-hoc Netze)

Zum Finden und Identifizieren von Anwendungen in der Umgebung verwendet Bluetooth ein eigenes Protokoll (SDP, Service Discovery Protocol).

Alle Anwendungen sind durch eine eindeutige Kennung identifizierbar (UUID, Universal Uniform Identifier). Es existiert also ein virtuelles Verzeichnis über Dienste.

Der Client muss über eine zur UUID passende Software verfügen, um die Server-Applikation zu benutzen (entspricht der vom PC bekannten Plug & Play-Methode, bei der ein passender Treiber installiert werden muss).

Bluetooth Service Discovery
kontextvereinbarung bei jini
Kontextvereinbarung bei JINI

5

4

3

2

1

Lookup Server

Discovery (suche Lookup Server)

Lookup (suche Anwendung im Lookup Server)

Service

Join (erzeuge Lookup-Eintrag und Proxy-Objekt)

Proxy-Objekt

Lade Proxy-Objekt vom Lookup Server

Server

Client

Nutze die Anwendung

auf den Server

Proxy-Objekt

Server-Objekt

jini netze 1
JINI ist eine offene Architektur für dynamisch veränderliche vernetzte Anwendungen (Quellen siehe www.jini.org bzw. www.sun.com/software/jini).

Jini erweitert das Konzept von RMI auf das dynamische Laden von Client-Proxies auf die Clients (d.h. Verteilung von Bytecode, wie im Prinzip bereits von Applets bekannt).

JINI setzt also eine einheitliche Laufzeitumgebung für verteilte Anwendungen voraus.

Wegen der mit dynamisch ladbaren Anwendungen verbundenen Sicherheitsprobleme ist eine einheitliche Laufzeitumgebung eine sinnvolle Voraussetzung (z.B. bietet Java Sicherheit und Robustheit).

JINI Netze (1)
jini netze 2
JINI unterstützt das Konzept der dynamischen “Föderation” verteilter Anwendungen durch:

Vereinbarungen über Angebot und Nachfrage von Diensten (Service Discovery, Service Look-Up)

Mechanismen zur Allokation von Beziehungen auf Zeit (Leasing), zur Synchronisation kooperierender Anwendungen (Events und Notification) und zur Verarbeitung von Transaktionen (nach der 2 Phasen Commit Methode)

einen Baukasten (Spezifikationen, APIs, Anwendungsbeispiele, Referenzimplementierungen)

Weiterentwicklung von Konzepten und Projekten durch einen Community-Prozess

JINI Netze (2)
beispiel f r eine jini anwendung 1
Ein Drucker bietet sich als Print-Server im lokalen Netz an:

Discovery-Phase: Meldung zum Dienst über Look-up Request Nachrichten (gemäss JINI API als IP-Multicast Messages)

Join-Lookup-Server: Nachdem ein Lookup-Server gefunden ist, lädt der Drucker zunächst das Proxy-Objekt des Lookup-Servers, mit dessen Methoden er einen Eintrag seiner Dienste im Lookup-Server vornimmt (z.B. Name, Icons, Beschreibung, Dienstattribute wie Farbdrucker, Auflösung, Papierformate,...). Ausserdem lädt der Drucker sein eigenes Proxy-Objekt auf den Lookup-Server.

Eine Digitalkamera möchte ein Foto ausdrucken:

Die Kamera registriert sich beim Lookup-Server (mit Hilfe der Service-Klasse LookupDiscovery aus dem JINI API).

Beispiel für eine JINI Anwendung (1)
beispiel f r eine jini anwendung 2
Die Kamera ist nun Mitglied der Föderation der Anwendungen.

Die Kamera startet eine Anfrage nach einem Drucker-Dienst beim Lookup-Server.

Der Lookup-Server identifiziert den Drucker und stellt das Drcker-Proxy zum Laden auf die Kamera bereit.

Die Kamera kann nun direkt mit dem Drucker korrespondieren.

Die Kamera ruft Druckmethoden auf und übergibt das Foto als Parameter.

Sofern im Netz vorgesehen, erhält die Kamera Meldungen über den Fortschritt der Transaktion.

Beispiel für eine JINI Anwendung (2)
rekonstruktion des kontextes bei corba und web services
Rekonstruktion des Kontextes bei Corba und Web-Services

1

3

2

Client

Server

Kontextabfrage

Kontext-Definition

System A

System B

Service Anfrage

Rekonstruktion der Service Anfrage aus der Kontext-Definition

corba und web services 1
Der Kontext der Server-Anwendung ist auf dem Server explizit abgelegt und kann von Clients abgefragt werden.

Die Beschreibung erfolgt durch eine formale Sprache:

IDL (Interface Definition Language) bei CORBA

WSDL (Web-Services Definition Language) bei Web-Services (eine XML basierende Sprache)

Aus der formalen Beschreibung kässt sich die Client-Anwendung rekonstruieren (manuell durch den Anwendungsprogrammierer bzw. automatisch durch Verwendung von Tools, die z.B. ein WSDL-Dokument in einen Java Client umwandeln).

CORBA und Web-Services (1)
corba und web services 2
CORBA und Web-Services verwenden universelle Kommunikationsprotokolle

CORBA verwendet das IIOP (Internet Inter ORB Protokoll)

Web-Services verwenden XML basierende Dokumente, die über Protokolle wie SOAP (Simple Objekt Access Protocol) z.B. mit Hilfe von HTTP übertragen werden

Web-Services besitzen ebenfalls einen Verzeichnis für die Regisitrierung und die Suche nach Anwendungen (UDDI-Server, Universal Description Discovery and Integration)

Wie der Name andeutet, zielen Web-Services auf eine Erweiterung der Angebote im WWW, und daher derzeit vor allem auf Server und Desktop-Systeme.

CORBA und Web-Services (2)
slide97

Trainingsunterlage

Einführung in Java

Teil 8 :

Peer-to-Peer Netze

einf hrung in java98

Einführung in Java

  • 1 : Übersicht
  • 2 : Objektorientierte Systembeschreibung
  • 3 : Java als Programmiersprache
  • 4 : Die Java Architektur
  • 5 : Java Releases
  • 6 : Der Java Baukasten
  • 7 : Realisierung verteilter Anwendungen
  • 8 : Peer-to-Peer Netze
  • 9 : Ausblick
peer to peer netze

Peer-to-Peer Netze

  • 8.1 : Peer-to-Peer Anwendungen heute
  • 8.1 : Projekt JXTA
  • 8.2 : Abgrenzung gegen andere Lösungen
  • 8.3 : Das Prinzip von Peer-to-Peer Netzen
  • 8.4 : Das Konzept von JXTA
  • 8.5 : JXTA Protokolle
  • 8.6 : Einige Abläufe in JXTA Netzen
peer to peer netze heute
populäre Anwendungen heutiger Peer-to-Peer Netze:

Messenger-Dienste: ICQ (I seek you), AOL Messenger, Microsoft-Messenger & Co. Bei diesen Diensten gesellt man sich zu Chat-Gruppen und organisiert eigene Buddy-Listen. Die On-Line Präsenz der Mitglieder seiner Gruppe bekommt man angezeigt. Ausser Chat gibt es Telegramme (Instant Message), Audio- und Video, gemeinsame Whiteboards usw. Die Dienste sind wegen unterschiedlicher Implementierungen zueinander inkompatibel. Integrationsmöglichkeiten an die unterschiedlichen Formate bietet „Jabber“.

Tauschbörsen: Gnutella & Co. Peer-to-Peer Tauschbörsen z.B. für Musik kommen ohne zentralen Server aus (wie z.B. Napster). Die Dienste sind wegen unterschiedlicher Implementierungen zueinander inkompatibel.

Peer-to-Peer Netze heute
projekt jxta
JXTA ist ein von SUN Microsystems initiitertes Open Source Projekt für Peer-to-Peer Netze.

JXTA ist trotz des „J“ keine Java-Spezifikation, sondern sprachunabhängig. Sein Name ist abgeleiteit von dem Begriff „Juxtapose“, d.h. gegenüberstellen bzw. sich als Peer gegenüberstehen.

Inhalte von JXTA sind die Spezifikation eines universellen Konzeptes für Peer-to-Peer Netzen, d.h. Mechanismen und Protokolle zum Aufbau von P2P-Netzen und zur Verbindung aller möglichen Geräte mit diesem Netz.

SUN Mircosystems stellt ausserdem eine Referenz-implementierung zur Verfügung.

Projekt JXTA
abgrenzung von jxta gegen web services
Web-Services:

JXTA benutzt einen verteiltenen Mechanismus zur Registrierung und zum Nachschlagen von Diensten. Es gibt keinen zentralen Mechanismus wie UDDI bei Web-Services (Universal Description, Discovery and Integration).

Die Bekanntmachung von Angeboten über Dienste ist bei JXTA dynamisch und erfolgt über Anzeigen (Advertisements), deren Format allerdings nicht vorgegeben ist (u.a. könnte auch WSDL verwendet werden). Alle Angebote sind durch eine eindeutigen Kennung zu identifizieren (virtuelles Katalogvervahren, siehe UUIDs bei Bluetooth).

SOAP: Alle Protokolle bei JXTA beruhen wie SOAP ebenfalls auf dem Austausch von XML-Dokumenten.

Abgrenzung von JXTA gegen Web-Services
abgrenzung von jxta gegen rmi
Java RMI:

RMI ist auf Transportebene auf TCP/IP fixiert. JXTA ist technologieunabhängig durch Abstraktion der Verbindungen als sogenannte „Pipes“, die auf unterschiedliche Transportprotokolle abgebildet werden können (z.B, HTTP nicht über IP, sondern bei Mobiltelefonen z.B. über WAP).

RMI erfordert eine Java Programmierumgebung bzw. Laufzeitumgebung. JXTA ist ein technologieunabhängiges Konzept.

JXTA macht keine Vorgaben über die Client-Proxies (Stubs) und über Kommunikationsprotokolle. Auch Formate für die Kontextvereinbarung (wie z.B. IDL oder WSDL) sind nicht vorgegeben.

Abgrenzung von JXTA gegen RMI
abgrenzung von jxta gegen jini
JINI:

JINI wurde für lokale Ad-Hoc Netze konzipiert. JXTA ist ein Konzept für die Organisation weltweiter Peer-to-Peer Netze.

Weltweite Ad-hoc Netze benötigen andere Suchmechanismen, Sicherheitsanforderungen, Routingmechanismen, Methoden zur Überwinden von Firewalls und NAT, Proxies für weniger leistungefähige Endgeräte wie Low-End Mobiltelefone.

Ein wesentliches Merkmal von JINI ist das Anbieten, Finden und Laden von Client-Proxies (Stubs), d.h der Client-Applikationen selber. JXTA trifft hierüber keine Festlegungen, ist aber grundsätzlich orientiert an einer formalen Beschreibung des Kontextes der Angebote (Advertisements). Über die Formate der Kontextbeschreibung (wie z.B. IDL oder WSDL) macht JXTA keine Vorgaben.

Abgrenzung von JXTA gegen JINI
peer to peer netze als gruppen von anwendungen
Peer-to-Peer Netze als Gruppen von Anwendungen

Virtuelle Peer-to-Peer Netze

Peer

Peer

Peer

Peer

Peer

Peer

Peer

Peer

Gruppe

Peer

Gruppe

Physikalische Netze

prinzip peer to peer netze 1
Das Internet wird durch IPAdressen aufgespannt, Telefon-netze durch Telefonnummern, das Web durch die Domains.

Peer-to-Peer Netze werden durch die Addressen bzw. die Identifikation der Peers aufgespannt (PeerIDs, die z.B. als 128-Bit UUIDs realisiert werden können).

Ein Peer ist z.B. eine Anwendungsoftware, die auf denem Desktop-System, einem Server oder auf einem PDA oder Mobiltelefon läuft. Statt Client und Server stellt ein Peer beide Funktionen bereit (ist alse Client und Server).

Peer-Netze ändern sich ständig bzgl. der vorhandenen Peers, deren Angebote und der Bildung von Gruppen.

Prinzip Peer-to-Peer Netze (1)
prinzip peer to peer netze 2
Peer-Netze organisieren sich selbst, d.h. Funktionen wie DNS (Auflösung von Web-Domains in IP Adressen), Suche von Teilnehmern im Telefonnetz, bzw. Auflösung von IP-Adressen nach MAC-Adressen im LAN, sind auf einzelne Peers verteilt. Diese Funktion wird als Resolution (Auflösung) bezeichnet und umfasst bei Peer-Netzen alle angebotenen Dienste, Inhalte und Schnittstellen.

Peer-Netze nutzen die Resolution-Verfahren und Routing-Verfahren der unterlegten Netze mit. Die eigenen Verfahren liegen auf Anwendungsebene.

Ein Peer besitzt Kenntnisse seiner Umgebung, die er gelegentlich auffrischen muss. Für neue Anliegen muss sich durch seine Umgebung durchfragen.

Prinzip Peer-to-Peer Netze (2)
konzept jxta
Einheitliches Adressierungsschema für Peers

eindeutige PeerIDs, Kapselung aller Kommunikations-schnittstellen in Endpunkte (Endpoints)

Selbstorganisierende Peer-Gruppen

Peer-Gruppen als geschlossene Gesellschaften über physikalische Netzgrenzen hinweg (virtuelle Netze)

Formale Angebote (Advertisements) für alle Ressourcen

Peers, Peer-Gruppen, Endpunkte, Dienste, Inhalte, ...

Universeller Auflösungsmechanismus (Resolver)

Peer zu IP Adresse, Anfrage (Discovery) an Angebot, ...

Verallgemeinerte Kommunikationskanäle (Pipes)

virtuelle Verbindungen über verfügbare physikalische Kanäle

Konzept JXTA
die anatomie eines peers
Die Anatomie eines Peers

Adv.

  • Advertisement:
  • Peer
  • Peer Group
  • Module
  • Inhalte
  • Endpunkte
  • Rendevous

Inhalte

(Content)

  • Module:
  • Services
  • Applikationen

PeerID

Peer

Endpunkte für die Kommunikation

Bei Rendevous Peers: Cache mit öffentlichen Einträgen über andere Peers

Cache mit internen Einträgen über andere Peers

zur anatomie eines peers
Ein Peer ist ein System, das über Kommunikations-schnittstellen mit seiner Aussenwelt kommunizieren kann.

Was der Peer über seine Umgebung weiss (über andere Peers), behält er in seinem lokalen Cache.

Was den Peer für die Aussenwelt interessant macht, ist was er weiss und was er kann. Was der Peer seiner Umgebung an Wissen und Können zur Verfügung stellen möchte, teilt er über Anzeigen (Advertisements) mit.

Zu den Angeboten eines Peers an andere gehören:

Module: Dienstleistungen und Anwendungsprogramme

Inhalte (Content): z.B. Informationen, Dokumente

Wissen über Angebote anderer Peers (bei Rendevous Peers)

Zur Anatomie eines Peers
die protokolle von jxta 1
Die Protokolle von JXTA (1)

Lokaler Peer

Entfernter Peer

Peer Discovery Protocol

Peer Discovery Protocol

Peer Information Protocol

Peer Information Protocol

Standard Services

Pipe Binding Protocol

Pipe Binding Protocol

Peer Resolver Protocol

Peer Resolver Protocol

Rendevous Protocol

Rendevous Protocol

Core Protokolle

Endpoint Routing Prot.

Endpoint Routing Prot.

Network Transport

Network Transport

die protokolle von jxta 2
Core Protokolle (obligatorisch für eine Implementierung)

Endpoint Routing Protokoll: finden eines Weges zu anderen Peers. Der Transport erfolgt über TCP, HTTP oder andere.

Rendevous Protokoll: Subskription eines Informationsdienstes bei einem Rendevous Peer (bzw. Angebot eines solchen Dienstes). Wird vom Peer Resolver Protokoll für den Austausch von Nachrichten benutzt. Die Beziehungen sind über zeitliche „Leases“ temporär und müssen gelegentlich erneuert werden. Spezielle Formate für Messages sind nicht vorgegeben (z.B. könnte XML verwendet werden).

Peer Resolver Protokoll: Abbildung beliebiger Anfragen (Queries) auf Angebote. Die Inhalte der Anfrage werden von den Modulen der abgefragten Peers interpretiert gemäss ihrer Bezeichnung (handler name). PRP kümmert sich um die formalen Beziehungen zu den Advertisments.

Die Protokolle von JXTA (2)
die protokolle von jxta 3
Standard Services (optional)

Pipe Binding Protokoll: zur Publikation und zur Suche (Discovery) nach Anzeigen (Advertisements) bei anderen Peers. Baut auf dem PRP auf.

Peer Information Protokoll: Liefert Statusinformationen über andere Peers, z.B. Status, Verbindungszeit, Verkehraus-lastung, Eigenschaften. Baut auf PRP auf.

Peer Discovery Protokoll: Aufbau virtueller Verbindungs-kanäle zwischen Peers über deren Endpunkte zum Austausch von Nachrichten. Baut auf PRP auf für Verbindungswünsche (pipe binding requests).

Die Protokolle von JXTA (3)
die discovery phase
Die Discovery Phase

Lokaler Peer

Rendevous

Peer

Router

Peer

Lokaler Peer

  • Methoden:
  • getConnectedPeers()
  • getConnected RdvPeers()

Firewall/NAT

Relay Peer

Lokaler Peer

vorg nge in der discovery phase
Lokaler Peer (allgemeiner Fall):

Der lokale Peer nimmt Verbindung zu einem ihm bekannten Rendevous Peer bzw. anderen bekannten Peers auf und startet von dort aus seine Suche bzw. die Publikation seiner Angebote.

Lokaler Peer hinter einer Firewall bzw. NAT:

Network Adress Translation lässt dem Peer keine andere Möglichkeit, als selber einen Proxy-Peer ausserhalb des abgesicherten Bereiches zu kontaktieren und als Relay zu verwendet. Wegen der Firewall muss die Kommunikation in der Regel über HTTP Requests geführt werden.

Lokaler Peer in einem Low-End Gerät:

Unter dem Titel „JXTA für J2ME“, bzw. „JXME“, gibt es ein Konzept zur Verbindung von MIDP-Geräten über JXTA-Relays als sog. „Edge-Peers“ ohne eigenen XML-Parser, ohne rechenintensive Prozeduren und mit einer effektiveren Nutzung der Luftschnittstelle.

Vorgänge in der Discovery Phase
discovery updates und lebensdauern
Discovery Updates und Lebensdauern

Adv.

Adv.

Publiziere neues

Angebot (Modul)

lokal

Publiziere Modul

im Rendevous Peer (für begrenzte Dauer z.B. 2 Stunden)

Lokaler

Peer

Leases

(Beziehungen

auf Zeit)

Lösche das

lokale Angebot

abl ufe im discovery alltag
Schalten eines neuen Angebotes:

Ein Peer kann ein Angebot lokal publizieren und auf Anfragen warten. Ausserdem kann er das Angebot in einem Rendevous-Peer publizieren, bzw. ihm bekannten Peers mitteilen.

Die Lebensdauer von Angeboten:

Lokale Angebote bleiben lo lange gültig, bis ihr Angebot gelöscht wird, bzw. bis der Peer seine Beziehungen auflöst. Angebote in Rendevous-Peers sind grundsätzlich zeitlich begrenzt, z.B. auf 2 Stunden und müssen ggf. erneuert werden.

Der Horizont von Ereignissen:

Beziehungen sind grundsätzlich temporär und müssen zu gegebener Zeit erneuert werde. Die Ausbreitung von Nachrichten ist durch einen Zeitstempel begrenzt (Time to live), sowie durch Informationen über ihren Weg zur Vermeidung von Schleifen (loop detection).

Abläufe im Discovery Alltag
zuschalten von kommunikationskan len
Zuschalten von Kommunikationskanälen

Adv.

1. Publiziere Pipe-

Advertisement

2. Entdecke Pipe und

verbinde mit Endpunkt

(Pipe Binding)

Enterfenter

Peer

Lokaler

Peer

out

in

3. Übertragung von Nach-richten über die Verbindung

bitte eine verbindung
Im Grunde gemommen arbeitet JXTA wie die etablierten Netze der Telekommunikation in zwei Ebenen:

Signalisierung bzw. Discovery: Alle systemspezifischen Vorgänge (neue Angebote, neue Anfragen). Im Unterschied zu TK-Netzen geht JXTA aber deutlich weiter, da die Discovery-Phase auch den Aufbau und die Änderung der Netztopologie umfasst.

Verbindung bzw. Einrichten einer Pipe: Auf Anfrage einer Anwendung wird ein geeigneter Verbindungskanal „geschaltet“, über den kommuniziert werden kann. Die „Pipes“ bleiben dabei eine reine Abstraktion für die existierende Verbindung. Die Bereitstellung eines geeigneten Kanals erledigen die Endpunkte der Peers gemäss der verfügbaren Transportmöglichkeiten.

Bitte eine Verbindung
slide120

Trainingsunterlage

Einführung in Java

Teil 9 :

Ausblick

einf hrung in java121

Einführung in Java

  • 1 : Übersicht
  • 2 : Objektorientierte Systembeschreibung
  • 3 : Java als Programmiersprache
  • 4 : Die Java Architektur
  • 5 : Java Releases
  • 6 : Der Java Baukasten
  • 7 : Realisierung verteilter Anwendungen
  • 8 : Peer-to-Peer Netze
  • 9 : Ausblick
ausblick

Ausblick

  • 9.0 : Ausblick
  • 9.1 Literaturhinweise
ausblick 1
Java liefert die derzeit ausgereifteste Technologie für die Integration von Systemen im Internet und in Unternehmen.

Ausserdem bietet Java und seine Gemeinde interessante Konzepte und Lösungsansätze für die künftige Vernetzung vieler intelligenter Geräte in Haushalt und Alttagsleben (pervasive Computing).

Speziell die hohe Zahl mobiler Telefone (heute ca. 1000 Mio. im Vergleich zu ca. 100 Mio. vernetzter PCs) machen Java als Plattform für Mobiltelefone interessant. Hinzu kommen neue Möglichkeiten zur Nutzung des Mobiltelefons als Universalcomputer mit Hilfe von Bluetooth.

Ausblick (1)
ausblick 2
Die Offenheit der Technologie und der echte Wettbewerb für Java basierende Lösungen machen Java symphatisch für Open Source Fans.

Die weitere Entwicklung ist u.a. abhängig von folgenden Faktoren:

Marktanteile von Microsoft .NET als Wettbewerber im Internet und Unternehmensbereich (Server, Integration, Clients)

Erfolg der Java Technologie auf Mobiltelefonen, speziell bei der Umsetzung der Perspektive „Mobiltelefon als Universal-computer und Kommunikationsmedium für jedermann“

Erfolg der Java Technologie zur Realisierung kunden-spezifischer Lösungen im Geschäftsleben und Alltagsleben.

Ausblick (2)
literaturhinweise
[1] S. Middenhof, R. Singer, J. Heid, Java Programmierhandbuch für die Java-2-Plattform Standard Edition, 3. Auflage, dPunkt Verlag Heidelberg, 2002, ISBN 3-89864-157-0

[2] N. Kassen, Design Enterprise with the Java 2 Platform, Enterprise Edition, Addison Wesley, 4. Ausgabe, 2001, ISBN 0-201-70277-0

[3] R. Riggs, Programming wireless devices with the Java 2 Platform, Micro Edition, Addison Wesley, 2001, ISBN 0-201-74627-1

[4] M. Hitz, G. Kappel, UML@Work, Von der Analyse zur Realisierung, 2. Auflage, dPunkt Verlag, Heidelberg, 2003, ISBN 3-89864-194-5

[5] P. Hruschka, C. Rupp, Agile Softwareentwicklung für Embedded Real-Time-Systems mit der UML, Carl Hanser Verlag, München, 2002, ISBN-3-446-21997-8

[6] W. Keller, Enterprise Application Integration, Erfahrungen aus der Praxis, dpunkt Verlag, Heidelberg, 2002, ISBN 3-89864-186-4

[7] G. Glass, Web Services - Building Blocks for Distributed Systems, Prentice Hall, NJ, 2002, ISBN 0-13-066256-9

[8] S. Rupp, G. Siegmund, W. Lautenschlager, SIP - Multimediale Dienste im Internet, dPunkt Verlag, Heidelberg, 2002, ISBN 3-89864-167-8

[9] Bluetooth APIs der JSR-82: http://www.jcp.org/en/jsr/detail?id=82

[10] Bluetooth Resource Center: www.palowireless.com/infotooth

[11] S. Rupp, Sammlung einiger URLs und Beispiele über Anwendungen mit der Java Mobile Edition: www.linecity.de

Literaturhinweise