AVO-¨Ubung 1 Allgemeines –¨Ubungsbetrieb

Transcrição

AVO-¨Ubung 1 Allgemeines –¨Ubungsbetrieb
AVO-Übung 1
Übungsszenario, Entwicklungswerkzeuge
Andreas I. Schmied
([email protected])
AspectIX-Team
Abteilung Verteilte Systeme
Universität Ulm
WS2005
Allgemeines – Übungsbetrieb
• Kalender-Szenario
• Server“ verwaltet Personen und Einträge
”
• Client-Anwendung für Zugriff
• Technologien aus der Vorlesung einsetzen, vergleichen
• Prüfungsrelevante und erweiternde Inhalte
• Eclipse-Projekte, z.T. aufeinander aufbauend
• Übungen benötigen i.A. Java 1.5, v.a. für
• typisierte Collections, z.B. List<Person>, enum
• for-Konstrukt: for(Person p: list)
• aktuelle Verbesserungen im Java-SDK
• Individuelle Korrektur nicht vorgesehen
• Fragen rechtzeitig stellen!
• Quellcodes i.A. auf Folien stark gekürzt
[email protected]
AVO-Übung 1 (WS2005)
1
Allgemeines – UML-Modell
Overview
avo
Calendar
Person
+ user
−title :String
−name :String
users
*
+ owner
+ owner
* + entries
entryOwnership
Entry
−text :String
−when :Date
+ entry
/ personsEntries
context personsEntries
inv justOwn:
entry.owner = owner
*
<< enumeration >>
Recurrence
ReEntry
−every :Recurrence
−day :int
−week :int
−month :int
−year :int
Created with Poseidon for UML Community Edition. Not for Commercial Use.
[email protected]
AVO-Übung 1 (WS2005)
2
Eclipse – Aufbau
• Eclipse 3.1.1 von http://www.eclipse.org
• kein Support für andere Umgebungen
• Workspace-Verzeichnis mit Projekten
• Diverse Perspektiven
• Java, Resource, Debug, ...
• Editor + Sammlung von Views (spez. Einzelfenster)
• Weitere Views in Menü Window/Show View
• Wichtige Views: Package Explorer, Console, Problems, Progress,
Outline, ...
• Launcher im Debug- und Start-Modus, für externe Programme
[email protected]
AVO-Übung 1 (WS2005)
3
Eclipse – Java-Perspektive (1)
[email protected]
AVO-Übung 1 (WS2005)
4
Eclipse – Java-Perspektive (2)
[email protected]
AVO-Übung 1 (WS2005)
5
Eclipse – Resource-Perspektive (1)
[email protected]
AVO-Übung 1 (WS2005)
6
Eclipse – Resource-Perspektive (2)
[email protected]
AVO-Übung 1 (WS2005)
7
Eclipse – Erstes Projekt
• Übung als ZIP/JAR-Archiv auf Website
• kann ggf. mehr als ein Projekt enthalten
• Start- oder Testklassen
• Menü: File/Import/Existing Project.../Select archive file
• Projekt besteht aus
•
•
•
•
•
•
Quellverzeichnissen (src, src-gen)
Zielverzeichnis (class)
Skripte, Shared Launchers mit Präfix avo“ (bin)
”
Dokumentation (doc, doc-gen)
Sonstiges (etc)
Konfiguration .project, .classpath
• via Kontextmenü im Package Explorer
[email protected]
AVO-Übung 1 (WS2005)
8
Eclipse – Projekt-Eigenschaften
[email protected]
AVO-Übung 1 (WS2005)
9
Eclipse – Launcher
[email protected]
AVO-Übung 1 (WS2005)
10
Eclipse – External Tools Launcher
• Menü Run/External Tools/...
• Ausführen beliebiger Prozesse aus Eclipse
• Für Generatoren, Code-Prozessoren o.ä.
• RMI-Compiler für Java vor Version 1.5 aufrufen
• Hinweis für generierte Dateien
• in eigene Verzeichnisse!
• Quellcode: src-gen
• Javadoc: doc-gen
[email protected]
AVO-Übung 1 (WS2005)
11
Aufgabe: Multi-Threading in Java
• im Folgenden mit MT“ abgekürzt
”
• mehrere Aktivitätsträger im selben Prozess
• simulieren Knoten im verteilten System...
• Ziel der Übung
• Sensibilisierung für nebenläufiges Arbeiten
• Koordinierung in Java
• Mehrere Benutzer sollen auf Kalender zugreifen
• Finden und Löschen der Einträge
• Anzahl der verbleibenden Einträge
• Starten im Menü Run/Run...
• Startklasse avo1.Main
• Ausgabe in Konsole
• Prozess abschießen“ im Console View
”
[email protected]
AVO-Übung 1 (WS2005)
12
Aufgabe: Multi-Threading in Java – Code: Client.run()
1
while(active) { ...
2
int sizePre = calendar.getEntryCount(person);
Entry entry = calendar.getRandomEntry(person);
3
4
5
if (entry!=null) {
calendar.removeEntry(person, entry);
int sizePost = calendar.getEntryCount(person);
6
7
8
9
if (sizePost!=sizePre−1)
log.warning(name+” removed nothing!”);
else
log.info(name+” removed entry: ”+entry);
10
11
12
13
}
else {
active=false;
log.info(name+” leaves: no entries left.”);
}
14
15
16
17
18
19
sleep(DELAY);
20
21
}
[email protected]
AVO-Übung 1 (WS2005)
13
Debugging mit Eclipse
• Debugger vs. Logging-API (java.util.logging)
• Perspektive Debug“
”
• Fehler finden
• Programmabläufe verstehen
• Start via Launcher im Menü Run/Debug...
• Eclipse-Debugger
• Variables, Expressions, Memory, Register, Breakpoints, Threads
• Breakpoints: Haltepunkte (siehe nächste Folien)
• Stepping
•
•
•
•
Nicht Vergessen: Thread auswählen
Schrittweites Weiterarbeiten
Return, Step Over
Menü Window/Pref.../Java/Debug/Step Filtering
[email protected]
AVO-Übung 1 (WS2005)
14
Debugging mit Eclipse – Debugging-Sitzung (1)
[email protected]
AVO-Übung 1 (WS2005)
15
Debugging mit Eclipse – Debugging-Sitzung (2)
[email protected]
AVO-Übung 1 (WS2005)
16
Debugging mit Eclipse – Breakpoint-Eigenschaften (1)
[email protected]
AVO-Übung 1 (WS2005)
17
Debugging mit Eclipse – Breakpoint-Eigenschaften (2)
[email protected]
AVO-Übung 1 (WS2005)
18
Aufgabe
• Installation Eclipse
• Java 1.5 integrieren: Menü Window/Preferences/Installed JREs/...
• Projekt importieren, ausführen
• Wo muss koordiniert werden?
• Debugging: Breakpoints + MT
• RMI-Portierung
• Server schreiben
• Calendar, Person als Remote-Klassen
• Entry als Wertobjekt-Klasse
• Client umschreiben
• Zugriff per RMI
• Was muss angepasst werden?
[email protected]
AVO-Übung 1 (WS2005)
19

Documentos relacionados