30
Themen Threading Netzwerk Techniken der Projektentwicklung Threading & Netzwerkprogrammierung Ingo L¨ utkebohle Termin 13 Ingo L¨ utkebohle Techniken der Projektentwicklung 1

Techniken der Projektentwicklung - uni-bielefeld.deiluetkeb/2005/session13.pdf · → java.net.URI Java beherrscht mindestens: http, ftp, file L¨ange der URI prinzipiell unbeschr

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Techniken der Projektentwicklung - uni-bielefeld.deiluetkeb/2005/session13.pdf · → java.net.URI Java beherrscht mindestens: http, ftp, file L¨ange der URI prinzipiell unbeschr

Themen Threading Netzwerk

Techniken der ProjektentwicklungThreading & Netzwerkprogrammierung

Ingo Lutkebohle

Termin 13

Ingo Lutkebohle Techniken der Projektentwicklung 1

Page 2: Techniken der Projektentwicklung - uni-bielefeld.deiluetkeb/2005/session13.pdf · → java.net.URI Java beherrscht mindestens: http, ftp, file L¨ange der URI prinzipiell unbeschr

Themen Threading Netzwerk

Themen heute

Kurze Wiederholung von und Praxis-Beispiele zu:

Threading Synchronisation zwischen Threads

HTTP Verwendung von HTTP und URLs

Sockets Netzwerkkommunikation mit TCP-Sockets

Ingo Lutkebohle Techniken der Projektentwicklung 2

Page 3: Techniken der Projektentwicklung - uni-bielefeld.deiluetkeb/2005/session13.pdf · → java.net.URI Java beherrscht mindestens: http, ftp, file L¨ange der URI prinzipiell unbeschr

Themen Threading Netzwerk Management Synchronisation Beispiel Aufgabe

Motivation: Threading

Anwendungsfalle fur unabhangige Ablaufe mit geteilten Daten.

GUIs Benutzerinteraktion wahrend zeitraubenderHintergrundaktivitaten

Server Ein Netzwerk-Server, mehrere Clients gleichzeitig

Performance Verteilung von Berechnungen uber mehrere CPUs(wenn vorhanden)

Ingo Lutkebohle Techniken der Projektentwicklung 3

Page 4: Techniken der Projektentwicklung - uni-bielefeld.deiluetkeb/2005/session13.pdf · → java.net.URI Java beherrscht mindestens: http, ftp, file L¨ange der URI prinzipiell unbeschr

Themen Threading Netzwerk Management Synchronisation Beispiel Aufgabe

Threads erzeugen

Thread Unabhangiger Ausfuhrungskontext

Runnable Das, was ausgefuhrt wird.

1 In eigener Klasse Runnable implementieren

2 Thread erzeugen, Instanz der Klasse aus (1) ubergeben

3 Thread starten

http://java.sun.com/docs/books/tutorial/essential/threads/

Ingo Lutkebohle Techniken der Projektentwicklung 4

Page 5: Techniken der Projektentwicklung - uni-bielefeld.deiluetkeb/2005/session13.pdf · → java.net.URI Java beherrscht mindestens: http, ftp, file L¨ange der URI prinzipiell unbeschr

Themen Threading Netzwerk Management Synchronisation Beispiel Aufgabe

Komplikationen

Gleichzeitige Verwendung von Datenstrukturen aus mehrerenThreads kann zu Konflikten fuhren, sog. Race Conditions→ Synchronisation notwendig

Synchronisation beinhaltet wartenfehlerhafte Synchronisation → sog. Deadlock

”Gleichzeitige“ Ausfuhrung auf einer CPU nur angenahert,

Scheduler unterbricht nur an bestimmten Punkten (z.B. IO)→ Thread.yield()

Ingo Lutkebohle Techniken der Projektentwicklung 5

Page 6: Techniken der Projektentwicklung - uni-bielefeld.deiluetkeb/2005/session13.pdf · → java.net.URI Java beherrscht mindestens: http, ftp, file L¨ange der URI prinzipiell unbeschr

Themen Threading Netzwerk Management Synchronisation Beispiel Aufgabe

Race Conditions

Textproblem Zwischen zwei atomaren Operationen konnen andereThreads Daten andern. Ein Trivialbeispiel:

Thread 1

if(val < 0) {int exp = 2val;...

}

Thread 2

if(val < 0) {val = abs(val);...

}

Was passiert in der Zeit zwischen Test und Verwendung derVariable?

Ingo Lutkebohle Techniken der Projektentwicklung 6

Page 7: Techniken der Projektentwicklung - uni-bielefeld.deiluetkeb/2005/session13.pdf · → java.net.URI Java beherrscht mindestens: http, ftp, file L¨ange der URI prinzipiell unbeschr

Themen Threading Netzwerk Management Synchronisation Beispiel Aufgabe

Einfache Synchronisation

Critical Sectionnur ein Thread kann gleichzeitig in der critical section sein

In Java: synchronized objektbasierte critical sectionsPro Instanz kann nur ein Thread in irgendeiner critical section dieser

Instanz sein

wait/notifywait() halt an, bis notify() aufgerufen wird

→ muss in critical section ausgefuhrt werden

Ingo Lutkebohle Techniken der Projektentwicklung 7

Page 8: Techniken der Projektentwicklung - uni-bielefeld.deiluetkeb/2005/session13.pdf · → java.net.URI Java beherrscht mindestens: http, ftp, file L¨ange der URI prinzipiell unbeschr

Themen Threading Netzwerk Management Synchronisation Beispiel Aufgabe

Dining Philosophers

Situation n Philosophen sitzen um einen runden Tisch. Zwischenjedem liegt ein Besteckteil. Jeder benotigt zwei, um essenzu konnen. Wie sollten sie sich organisieren?

Ansatz Jeder greift zuerst nach dem rechten Besteckteil, dannnach dem Linken. Hat er beide, nimmt er einen Bissen,legt beide Teile wieder ab und wartet eine zufallige Zeitbevor er von vorne beginnt. Hat er nur ein Besteckteil,wartet er mit diesem in der Hand solange, bis das Andereverfugbar wird.

/vol/tdpe/share/material/session13/examples/thread/dining/

Finde das Problem und implementiere eine bessere Losung!

Ingo Lutkebohle Techniken der Projektentwicklung 8

Page 9: Techniken der Projektentwicklung - uni-bielefeld.deiluetkeb/2005/session13.pdf · → java.net.URI Java beherrscht mindestens: http, ftp, file L¨ange der URI prinzipiell unbeschr

Themen Threading Netzwerk Management Synchronisation Beispiel Aufgabe

Aufgabe: Zugriff auf Datenstruktur synchronisieren

Problem

Ring-Buffer, zirkular Schreiben und Lesen

Mogliche Probleme:

Datenverlust (Producer zu schnell)Mehrfaches Lesen (Consumer zu schnell)

Ringbuffer

ReadWrite

Aufgabe

1 Definiere Bedingungen fur Schreib-/Leseposition

2 Implementiere die notigen Synchronisationsmechanismen

Siehe /vol/tdpe/share/material/session13/examples/thread/race/

Ingo Lutkebohle Techniken der Projektentwicklung 9

Page 10: Techniken der Projektentwicklung - uni-bielefeld.deiluetkeb/2005/session13.pdf · → java.net.URI Java beherrscht mindestens: http, ftp, file L¨ange der URI prinzipiell unbeschr

Themen Threading Netzwerk HTTP Beispiel Sockets Aufgabe

HyperText Transfer Protocol

Aufbau

Details RFC 2616 (v1.1)

Request/Response-Schema

einheitlichesNachrichtenformat

Anfrage

Befehl, Request-URI,Protokoll

Header

optional Body

Beispielrequest

POST /foo%20?n=v HTTP/1.1Host: www.techfak.uni-bielefeld.deContent-Length: 12

Hello World!

Ingo Lutkebohle Techniken der Projektentwicklung 10

Page 11: Techniken der Projektentwicklung - uni-bielefeld.deiluetkeb/2005/session13.pdf · → java.net.URI Java beherrscht mindestens: http, ftp, file L¨ange der URI prinzipiell unbeschr

Themen Threading Netzwerk HTTP Beispiel Sockets Aufgabe

HyperText Transfer Protocol

Aufbau

Details RFC 2616 (v1.1)

Request/Response-Schema

einheitlichesNachrichtenformat

Anfrage

Befehl, Request-URI,Protokoll

Header

optional Body

Beispielrequest

POST /foo%20?n=v HTTP/1.1Host: www.techfak.uni-bielefeld.deContent-Length: 12

Hello World!

Ingo Lutkebohle Techniken der Projektentwicklung 10

Page 12: Techniken der Projektentwicklung - uni-bielefeld.deiluetkeb/2005/session13.pdf · → java.net.URI Java beherrscht mindestens: http, ftp, file L¨ange der URI prinzipiell unbeschr

Themen Threading Netzwerk HTTP Beispiel Sockets Aufgabe

HyperText Transfer Protocol

Aufbau

Details RFC 2616 (v1.1)

Request/Response-Schema

einheitlichesNachrichtenformat

Anfrage

Befehl, Request-URI,Protokoll

Header

optional Body

Beispielrequest

POST /foo%20?n=v HTTP/1.1Host: www.techfak.uni-bielefeld.deContent-Length: 12

Hello World!

Ingo Lutkebohle Techniken der Projektentwicklung 10

Page 13: Techniken der Projektentwicklung - uni-bielefeld.deiluetkeb/2005/session13.pdf · → java.net.URI Java beherrscht mindestens: http, ftp, file L¨ange der URI prinzipiell unbeschr

Themen Threading Netzwerk HTTP Beispiel Sockets Aufgabe

HyperText Transfer Protocol

Aufbau

Details RFC 2616 (v1.1)

Request/Response-Schema

einheitlichesNachrichtenformat

Anfrage

Befehl, Request-URI,Protokoll

Header

optional Body

Beispielrequest

POST /foo%20?n=v HTTP/1.1Host: www.techfak.uni-bielefeld.deContent-Length: 12

Hello World!

Ingo Lutkebohle Techniken der Projektentwicklung 10

Page 14: Techniken der Projektentwicklung - uni-bielefeld.deiluetkeb/2005/session13.pdf · → java.net.URI Java beherrscht mindestens: http, ftp, file L¨ange der URI prinzipiell unbeschr

Themen Threading Netzwerk HTTP Beispiel Sockets Aufgabe

HyperText Transfer Protocol

Aufbau

Details RFC 2616 (v1.1)

Request/Response-Schema

einheitlichesNachrichtenformat

Anfrage

Befehl, Request-URI,Protokoll

Header

optional Body

Beispielrequest

POST /foo%20?n=v HTTP/1.1Host: www.techfak.uni-bielefeld.deContent-Length: 12

Hello World!

Ingo Lutkebohle Techniken der Projektentwicklung 10

Page 15: Techniken der Projektentwicklung - uni-bielefeld.deiluetkeb/2005/session13.pdf · → java.net.URI Java beherrscht mindestens: http, ftp, file L¨ange der URI prinzipiell unbeschr

Themen Threading Netzwerk HTTP Beispiel Sockets Aufgabe

Befehle und Ergebnisse

Wichtige Befehle:

GET ohne Seiteneffekte, idempotentPOST Seiteneffekte erlaubt, mit Request-BodyHEAD wie GET, liefert nur Header

HTTP-Status: Numerischer Code + Nachricht

2xx OK, Inhalt folgt (z.B. 200 OK)3xx Inhalt woanders (siehe Location-Header)4xx Client-Fehler (z.B. 404 No resource at URL)5xx Server-Fehler (z.B. 500 Internal Server

Error)

Ingo Lutkebohle Techniken der Projektentwicklung 11

Page 16: Techniken der Projektentwicklung - uni-bielefeld.deiluetkeb/2005/session13.pdf · → java.net.URI Java beherrscht mindestens: http, ftp, file L¨ange der URI prinzipiell unbeschr

Themen Threading Netzwerk HTTP Beispiel Sockets Aufgabe

URI/URL

http://www.techfak.uni-bielefeld.de:80/foo%20bar#c09?name=value&n2=v2

Bestandteile

1 Protokoll

2 Hostname

3 Port

4 Pfad

5 Fragment

6 Query-String

7 Seperatoren

Hinweise

Erforderlich: Protokoll, Host, Pfad

Rest ist optional

Leerzeichen und viele Andere: encoden!→ java.net.URI

Java beherrscht mindestens: http, ftp, file

Lange der URI prinzipiell unbeschranktab 255 Zeichen Vorsicht

Siehe auch RFC 1783: Uniform Resource Locators

Ingo Lutkebohle Techniken der Projektentwicklung 12

Page 17: Techniken der Projektentwicklung - uni-bielefeld.deiluetkeb/2005/session13.pdf · → java.net.URI Java beherrscht mindestens: http, ftp, file L¨ange der URI prinzipiell unbeschr

Themen Threading Netzwerk HTTP Beispiel Sockets Aufgabe

URI/URL

http://www.techfak.uni-bielefeld.de:80/foo%20bar#c09?name=value&n2=v2

Bestandteile

1 Protokoll

2 Hostname

3 Port

4 Pfad

5 Fragment

6 Query-String

7 Seperatoren

Hinweise

Erforderlich: Protokoll, Host, Pfad

Rest ist optional

Leerzeichen und viele Andere: encoden!→ java.net.URI

Java beherrscht mindestens: http, ftp, file

Lange der URI prinzipiell unbeschranktab 255 Zeichen Vorsicht

Siehe auch RFC 1783: Uniform Resource Locators

Ingo Lutkebohle Techniken der Projektentwicklung 12

Page 18: Techniken der Projektentwicklung - uni-bielefeld.deiluetkeb/2005/session13.pdf · → java.net.URI Java beherrscht mindestens: http, ftp, file L¨ange der URI prinzipiell unbeschr

Themen Threading Netzwerk HTTP Beispiel Sockets Aufgabe

URI/URL

http://www.techfak.uni-bielefeld.de:80/foo%20bar#c09?name=value&n2=v2

Bestandteile

1 Protokoll

2 Hostname

3 Port

4 Pfad

5 Fragment

6 Query-String

7 Seperatoren

Hinweise

Erforderlich: Protokoll, Host, Pfad

Rest ist optional

Leerzeichen und viele Andere: encoden!→ java.net.URI

Java beherrscht mindestens: http, ftp, file

Lange der URI prinzipiell unbeschranktab 255 Zeichen Vorsicht

Siehe auch RFC 1783: Uniform Resource Locators

Ingo Lutkebohle Techniken der Projektentwicklung 12

Page 19: Techniken der Projektentwicklung - uni-bielefeld.deiluetkeb/2005/session13.pdf · → java.net.URI Java beherrscht mindestens: http, ftp, file L¨ange der URI prinzipiell unbeschr

Themen Threading Netzwerk HTTP Beispiel Sockets Aufgabe

URI/URL

http://www.techfak.uni-bielefeld.de:80/foo%20bar#c09?name=value&n2=v2

Bestandteile

1 Protokoll

2 Hostname

3 Port

4 Pfad

5 Fragment

6 Query-String

7 Seperatoren

Hinweise

Erforderlich: Protokoll, Host, Pfad

Rest ist optional

Leerzeichen und viele Andere: encoden!→ java.net.URI

Java beherrscht mindestens: http, ftp, file

Lange der URI prinzipiell unbeschranktab 255 Zeichen Vorsicht

Siehe auch RFC 1783: Uniform Resource Locators

Ingo Lutkebohle Techniken der Projektentwicklung 12

Page 20: Techniken der Projektentwicklung - uni-bielefeld.deiluetkeb/2005/session13.pdf · → java.net.URI Java beherrscht mindestens: http, ftp, file L¨ange der URI prinzipiell unbeschr

Themen Threading Netzwerk HTTP Beispiel Sockets Aufgabe

URI/URL

http://www.techfak.uni-bielefeld.de:80/foo%20bar#c09?name=value&n2=v2

Bestandteile

1 Protokoll

2 Hostname

3 Port

4 Pfad

5 Fragment

6 Query-String

7 Seperatoren

Hinweise

Erforderlich: Protokoll, Host, Pfad

Rest ist optional

Leerzeichen und viele Andere: encoden!→ java.net.URI

Java beherrscht mindestens: http, ftp, file

Lange der URI prinzipiell unbeschranktab 255 Zeichen Vorsicht

Siehe auch RFC 1783: Uniform Resource Locators

Ingo Lutkebohle Techniken der Projektentwicklung 12

Page 21: Techniken der Projektentwicklung - uni-bielefeld.deiluetkeb/2005/session13.pdf · → java.net.URI Java beherrscht mindestens: http, ftp, file L¨ange der URI prinzipiell unbeschr

Themen Threading Netzwerk HTTP Beispiel Sockets Aufgabe

URI/URL

http://www.techfak.uni-bielefeld.de:80/foo%20bar#c09?name=value&n2=v2

Bestandteile

1 Protokoll

2 Hostname

3 Port

4 Pfad

5 Fragment

6 Query-String

7 Seperatoren

Hinweise

Erforderlich: Protokoll, Host, Pfad

Rest ist optional

Leerzeichen und viele Andere: encoden!→ java.net.URI

Java beherrscht mindestens: http, ftp, file

Lange der URI prinzipiell unbeschranktab 255 Zeichen Vorsicht

Siehe auch RFC 1783: Uniform Resource Locators

Ingo Lutkebohle Techniken der Projektentwicklung 12

Page 22: Techniken der Projektentwicklung - uni-bielefeld.deiluetkeb/2005/session13.pdf · → java.net.URI Java beherrscht mindestens: http, ftp, file L¨ange der URI prinzipiell unbeschr

Themen Threading Netzwerk HTTP Beispiel Sockets Aufgabe

URI/URL

http://www.techfak.uni-bielefeld.de:80/foo%20bar#c09?name=value&n2=v2

Bestandteile

1 Protokoll

2 Hostname

3 Port

4 Pfad

5 Fragment

6 Query-String

7 Seperatoren

Hinweise

Erforderlich: Protokoll, Host, Pfad

Rest ist optional

Leerzeichen und viele Andere: encoden!→ java.net.URI

Java beherrscht mindestens: http, ftp, file

Lange der URI prinzipiell unbeschranktab 255 Zeichen Vorsicht

Siehe auch RFC 1783: Uniform Resource Locators

Ingo Lutkebohle Techniken der Projektentwicklung 12

Page 23: Techniken der Projektentwicklung - uni-bielefeld.deiluetkeb/2005/session13.pdf · → java.net.URI Java beherrscht mindestens: http, ftp, file L¨ange der URI prinzipiell unbeschr

Themen Threading Netzwerk HTTP Beispiel Sockets Aufgabe

URI/URL

http://www.techfak.uni-bielefeld.de:80/foo%20bar#c09?name=value&n2=v2

Bestandteile

1 Protokoll

2 Hostname

3 Port

4 Pfad

5 Fragment

6 Query-String

7 Seperatoren

Hinweise

Erforderlich: Protokoll, Host, Pfad

Rest ist optional

Leerzeichen und viele Andere: encoden!→ java.net.URI

Java beherrscht mindestens: http, ftp, file

Lange der URI prinzipiell unbeschranktab 255 Zeichen Vorsicht

Siehe auch RFC 1783: Uniform Resource Locators

Ingo Lutkebohle Techniken der Projektentwicklung 12

Page 24: Techniken der Projektentwicklung - uni-bielefeld.deiluetkeb/2005/session13.pdf · → java.net.URI Java beherrscht mindestens: http, ftp, file L¨ange der URI prinzipiell unbeschr

Themen Threading Netzwerk HTTP Beispiel Sockets Aufgabe

URI/URL

http://www.techfak.uni-bielefeld.de:80/foo%20bar#c09?name=value&n2=v2

Bestandteile

1 Protokoll

2 Hostname

3 Port

4 Pfad

5 Fragment

6 Query-String

7 Seperatoren

Hinweise

Erforderlich: Protokoll, Host, Pfad

Rest ist optional

Leerzeichen und viele Andere: encoden!→ java.net.URI

Java beherrscht mindestens: http, ftp, file

Lange der URI prinzipiell unbeschranktab 255 Zeichen Vorsicht

Siehe auch RFC 1783: Uniform Resource Locators

Ingo Lutkebohle Techniken der Projektentwicklung 12

Page 25: Techniken der Projektentwicklung - uni-bielefeld.deiluetkeb/2005/session13.pdf · → java.net.URI Java beherrscht mindestens: http, ftp, file L¨ange der URI prinzipiell unbeschr

Themen Threading Netzwerk HTTP Beispiel Sockets Aufgabe

Form-Encoding

”Verpackung“ fur Argumentliste

Ein Name kann mehrmals mit unterschiedlichen Wertenvorkommen!

Name und Wert durch = getrennt

Parameter durch & verkettet

Verwendet URL-Encoding vor dem Verketten→ java.net.URLEncoder

MIME-Typ, fur POST:application/x-www-form-urlencoded

Ingo Lutkebohle Techniken der Projektentwicklung 13

Page 26: Techniken der Projektentwicklung - uni-bielefeld.deiluetkeb/2005/session13.pdf · → java.net.URI Java beherrscht mindestens: http, ftp, file L¨ange der URI prinzipiell unbeschr

Themen Threading Netzwerk HTTP Beispiel Sockets Aufgabe

Beispiel: URL-Retrieval

Beispielstand

Gibt URL, Response-Header und 10 Zeilen Inhalt aus.

Ort /vol/tdpe/share/material/session13/examples/

Aufruf java network.GetURL <url>

Ubung

Aufgabe Erganze Programm um Ubergabe von Parametern!

Aufruf java network.GetURL <url> name=value n2=v2...

Optional Verwende HEAD als Request-Methode!

Ingo Lutkebohle Techniken der Projektentwicklung 14

Page 27: Techniken der Projektentwicklung - uni-bielefeld.deiluetkeb/2005/session13.pdf · → java.net.URI Java beherrscht mindestens: http, ftp, file L¨ange der URI prinzipiell unbeschr

Themen Threading Netzwerk HTTP Beispiel Sockets Aufgabe

Wiederholung: TCP

TCP: Transmission Control Protocol

Stellt Punkt-zu-Punkt Verbindung herEine Seite wartet auf Verbindungen, die andere initiiert sie.

Zuverlassige Paketzustellung in der richtigen ReihenfolgeFehlerbehandlung nur bis Timeout!

Unabhangige Kanale in beide Richtungen

Endpunkte

IP-Adresse und Port

Auflosung Name in IP durch Domain Name Service (DNS)

Ports unter 1024 sind reserviert, z.B. 80 fur HTTP

(Quell-Host:QPort, Ziel-Host:ZPort) eindeutig

Ingo Lutkebohle Techniken der Projektentwicklung 15

Page 28: Techniken der Projektentwicklung - uni-bielefeld.deiluetkeb/2005/session13.pdf · → java.net.URI Java beherrscht mindestens: http, ftp, file L¨ange der URI prinzipiell unbeschr

Themen Threading Netzwerk HTTP Beispiel Sockets Aufgabe

Verbindungen aufbauen

Siehe java.net.Socket

insbesondere connect, getInputStream, getOutputStream

Streams blockieren wenn keine Daten (lesen) bzw. Buffer voll(Senden)

Buffered*-Streams verwenden, um Betriebssysteminteraktionzu minimieren

Ingo Lutkebohle Techniken der Projektentwicklung 16

Page 29: Techniken der Projektentwicklung - uni-bielefeld.deiluetkeb/2005/session13.pdf · → java.net.URI Java beherrscht mindestens: http, ftp, file L¨ange der URI prinzipiell unbeschr

Themen Threading Netzwerk HTTP Beispiel Sockets Aufgabe

Verbindungen annehmen

1 IP-Adresse und Port festlegenDefault: Alle verfugbaren Adressen, beliebiger freier Port

2 ServerSocket erzeugen

3 Auf Verbindungen warten (accept)

4 Datenaustausch uber erzeugten Socket

Ingo Lutkebohle Techniken der Projektentwicklung 17

Page 30: Techniken der Projektentwicklung - uni-bielefeld.deiluetkeb/2005/session13.pdf · → java.net.URI Java beherrscht mindestens: http, ftp, file L¨ange der URI prinzipiell unbeschr

Themen Threading Netzwerk HTTP Beispiel Sockets Aufgabe

EchoServer & Client

/vol/tdpe/share/material/session13/examples/network/EchoServer.java

Stand

Server nimmt Verbindungen auf freiem Port an und”echoed“

Aufruf java network.EchoServer

Ausgabe IP und Port des Sockets

Test per telnet auf angegebenen PortCtrl-] quit beendet telnet

Hausaufgabe

Erganze den Server um Threading, so dass er mehrere Clientsgleichzeitig verarbeiten kann!

Schreibe einen Echo-Client der von der Standardeingabe liest!Client beenden mit Ctrl-D.

Ingo Lutkebohle Techniken der Projektentwicklung 18