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