Proinformatik: Objektorientierte Programmierung Freie Universität Berlin Proinformatik-Vorlesung Objektorientierte Programmierung Einführung in JVM und Eclipse Freie Universität Berlin Gastdozent: Tilman Walther Sommersemester 2011 Sommersemester 2011 Prof. Dr. Marco Block-Berlitz (Mediadesign Hochschule in Berlin) 1 Proinformatik: Objektorientierte Programmierung Freie Universität Berlin Inhalt § Aufbau der Java Platform § Eclipse als Entwicklungsumgebung für Java § Motivation, Projektverwaltung, nützliche Funktionen § Live-Coding und Debugging § Ausblick: Was sonst noch in Eclipse steckt Sommersemester 2011 Prof. Dr. Marco Block-Berlitz (Mediadesign Hochschule in Berlin) 2 Proinformatik: Objektorientierte Programmierung Freie Universität Berlin Java SE Platform im Überblick Quelle: http://download.oracle.com/javase/7/docs/ Sommersemester 2011 Prof. Dr. Marco Block-Berlitz (Mediadesign Hochschule in Berlin) 3 Proinformatik: Objektorientierte Programmierung Freie Universität Berlin Java SE Platform im Überblick – etwas übersichtlicher Die Werkzeuge verwenden wir zum Programmieren und Dokumentieren. Sie sind nur im JDK enthalten. JVM und API werden als Java Runtime Environment zusammengefasst. Sie bilden die normale JavaInstallation. Sommersemester 2011 Prof. Dr. Marco Block-Berlitz (Mediadesign Hochschule in Berlin) 4 Proinformatik: Objektorientierte Programmierung Freie Universität Berlin Verwenden der API-Dokumentation Die Java-API verfügt über eine hervorragende Dokumentation, die im WWW unter http://download.oracle.com/javase/7/docs/api/ gelesen werden kann. Es lohnt sich sehr, sich damit vertraut zu machen. Auch die allgemeine Dokumentation http://download.oracle.com/javase/7/docs/ bietet Tutorials und detaillierte Informationen zu nahezu jedem Aspekt von Java. Ausgangspunkt ist die Package java.lang, in der sich die Basisklassen befinden. Sommersemester 2011 Prof. Dr. Marco Block-Berlitz (Mediadesign Hochschule in Berlin) 5 Proinformatik: Objektorientierte Programmierung Freie Universität Berlin Integrierte Entwicklungsumgebungen Bisher: • Schreiben von Quellcode im Editor • Ausführen des Compilers • Starten des Programms → relativ unkomfortabel Eine IDE (Integrated Development Environment) ist eine Anwendung zur Programmentwicklung. Sie kombiniert einen Editor mit speziellen Funktionen wie Syntaxhervorhebung mit zusätzlichen Werkzeugen und integriert den Compiler. Dadurch wird der Entwicklungsprozess vereinfacht und beschleunigt. Bekannte Entwicklungsumgebungen für Java sind Eclipse, NetBeans, JBuilder und IntelliJ IDEA. Sommersemester 2011 Prof. Dr. Marco Block-Berlitz (Mediadesign Hochschule in Berlin) 6 Proinformatik: Objektorientierte Programmierung Freie Universität Berlin Sommersemester 2011 Prof. Dr. Marco Block-Berlitz (Mediadesign Hochschule in Berlin) 7 Proinformatik: Objektorientierte Programmierung Freie Universität Berlin Einführung in die Software-Entwicklung mit Eclipse Eclipse ist eine in Java geschriebene, sehr flexible Entwicklungsumgebung, die nahezu beliebig an die eigenen Bedürfnisse angepasst werden kann. Dazu werden Plugins verwendet, aus denen sich Eclipse zusammensetzt. Gleichzeitig kann Eclipse als Basis für eigene Programme verwendet werden. Eclipse kann als Entwicklungsumgebung für viele verschiedene Programmiersprachen eingesetzt werden. Für die Entwicklung von Java-Programmen ist es eine der bekanntesten IDEs. Sommersemester 2011 Prof. Dr. Marco Block-Berlitz (Mediadesign Hochschule in Berlin) 8 Proinformatik: Objektorientierte Programmierung Freie Universität Berlin Eclipse als Entwicklungsumgebung für Java Terminologie Eclipse verwaltet Projekte in Verzeichnissen, die im Workspace abgelegt sind. Dabei handelt es sich ebenfalls um ein Verzeichnis. Die Workbench ist in verschiedene Views unterteilt. Für verschiedene Aufgaben gibt es verschiedene Perspektiven. Durch Plugins können neue Funktionen, Views und Perspektiven hinzugefügt werden. Funktionen Die Java-IDE ist enthält einen leistungsstarken Editor mit SyntaxHervorhebung, Code-Folding, Formatierung, Navigations- und Vervollständigungs-Funktionen. Hinzu kommen Refactoring-Funktionen, Code-Generatoren und ein Debugger. Zum Kennenlernen der verschiedenen Werkzeuge und Funktionen vollziehen wir die Entwicklung des Fußball-Managers noch einmal nach. Sommersemester 2011 Prof. Dr. Marco Block-Berlitz (Mediadesign Hochschule in Berlin) 9 Proinformatik: Objektorientierte Programmierung Freie Universität Berlin Live-Coding-Fahrplan Java-Programme mit Eclipse entwickeln § Eclipse starten, Workspace anlegen § Views und Perspektiven § Konfigurieren der Workbench § Anlegen eines Projekts § Erstellen von Klassen § Generieren von Code § Programme starten, Übergabe von Parametern § weitere Funktionen: API-Dokumentation verwenden, automatisches Formatieren, Versionsdatenbank Professionelles Entwickeln § Refactoring § Dokumentieren mit Javadoc § Verwenden des Debuggers § Versionierungssysteme (CVS und Subversion) Sommersemester 2011 Prof. Dr. Marco Block-Berlitz (Mediadesign Hochschule in Berlin) 10 Proinformatik: Objektorientierte Programmierung Freie Universität Berlin Eclipse starten, Workspace anlegen Eclipse kann kostenlos unter www.eclipse.org heruntergeladen werden. Wir benötigen nur die kleine Version „Eclipse IDE für Java Developers“. Da die Entwicklungsumgebung selbst in Java programmiert ist, muss auf dem Computer Java installiert sein, um Eclipse starten zu können. Sobald wir das heruntergeladene Archiv entpackt haben, kann Eclipse gestartet werden. Als erstes werden wir aufgefordert, ein WorkspaceVerzeichnis festzulegen. In diesem werden sämtliche Projekte gespeichert. Sommersemester 2011 Prof. Dr. Marco Block-Berlitz (Mediadesign Hochschule in Berlin) 11 Proinformatik: Objektorientierte Programmierung Freie Universität Berlin Der erste Start Beim ersten Start wird zunächst ein Willkommens-Bildschirm angezeigt, von dem aus Beispiele und Tutorials verlinkt sind, mit denen man Eclipse besser kennen lernen kann. Ein näherer Blick lohnt sich! Als Eclipse-Profis in Eile wechseln wir aber direkt zur Workbench... Sommersemester 2011 Prof. Dr. Marco Block-Berlitz (Mediadesign Hochschule in Berlin) 12 Proinformatik: Objektorientierte Programmierung Freie Universität Berlin Die Eclipse Workbench Die unbenutzte Workbench präsentiert sich recht unspektakulär. Die richtige Perspektive zur Java-Entwicklung ist bereits aktiv (Auswahl oben rechts). Die Oberfläche setzt sich aus Fenstern für die verschiedenen Funktionen zusammen, sog. Views. Diese können verschoben und mit einem Doppelklick maximiert werden. Um bessere Übersicht zu bekommen, schließen wir unbenötigte Views und sortieren etwas um. Perpektiven und Views lassen sich über das Window-Menü öffnen. Sommersemester 2011 Prof. Dr. Marco Block-Berlitz (Mediadesign Hochschule in Berlin) 13 Proinformatik: Objektorientierte Programmierung Freie Universität Berlin Anlegen eines Projekts Über File ð New ð Java Project legen wir ein neues Projekt an. Wir geben ihm den Namen Fußballmanager und schließen die Erstellung mit Finish ab. Das neue Projekt erscheint oben links im Package Explorer und kann geöffnet werden. Eclipse hat ein Verzeichnis mit der Bezeichnung src für unsere Quelldateien angelegt. In diesem erstellen wir über File ð New ð Class eine neue JavaKlasse. Sommersemester 2011 Prof. Dr. Marco Block-Berlitz (Mediadesign Hochschule in Berlin) 14 Proinformatik: Objektorientierte Programmierung Freie Universität Berlin Eine neue Klasse in einer Package anlegen Die neue Klasse trägt den Namen Person. Um unsere Klassen übersichtlich zu strukturieren, legen wir gleichzeitig eine neue Package namens de.javauni.soccer an. Packages sind Verzeichnisse, in denen JavaKlassen abgelegt werden. Sie werden verwendet, um die einzelnen Teile eines Programms voneinander zu trennen. So könnten die Klassen für die Anzeige in ein Package namens visualization gelegt werden, während die Klassen zur Berechnung der Spiel-Ergebnisse in simulation liegen. Es ist üblich, die Package-Verzeichnisse unterhalb eines Basis-Package zu erzeugen, das aus einer umgekehrten WWW-Adresse besteht, die im Idealfall weitere Informationen zum Programm bereitstellt. Da wir Wert auf Dokumentation legen, lassen wir Kommentarblöcke zum Ausfüllen gleich mit generieren (letzte Zeile). Sommersemester 2011 Prof. Dr. Marco Block-Berlitz (Mediadesign Hochschule in Berlin) 15 Proinformatik: Objektorientierte Programmierung Freie Universität Berlin Eine neue Klasse in einer Package anlegen Unsere erste Klasse! Wir kommentieren die Klasse im Javadoc-Format (dazu später mehr) und füllen den Rumpf mit Code. Nach Eingabe der Variablen kann der Konstruktor über Source ð Generate Constructor using Fields… generiert werden. Auch Getter und Setter können von Eclipse erzeugt werden. Sommersemester 2011 Prof. Dr. Marco Block-Berlitz (Mediadesign Hochschule in Berlin) 16 Proinformatik: Objektorientierte Programmierung Freie Universität Berlin Programme starten Um eine Klasse mit einer Main-Funktion zu starten, wählt man im Menü Run ð Run As ð Java Application. Dadurch wird eine neue Run Configuration erzeugt. Möchte man beispielsweise ein Programm mit Parametern starten, müssen diese in der Konfiguration eingetragen werden. Die Konfigurationen sind auch über die grüne Schaltfläche in der Werkzeugleiste erreichbar. Die Ausgabe des Programms wird im View Console am unteren Rand der Workbench angezeigt: Sommersemester 2011 Prof. Dr. Marco Block-Berlitz (Mediadesign Hochschule in Berlin) 17 Proinformatik: Objektorientierte Programmierung Freie Universität Berlin Sommersemester 2011 Prof. Dr. Marco Block-Berlitz (Mediadesign Hochschule in Berlin) 18 Proinformatik: Objektorientierte Programmierung Freie Universität Berlin Schöne neue Welt… Wir programmieren unseren Fußballmanager. Dabei lernen wir u.a. folgende Funktionen von Eclipse kennen: § Syntax-Hervorhebung und Markierungen § Code-Completion mit der magischen Tastenkombination Strg+Leertaste § „Quick-Fixes“ an allen möglichen Stellen mit Strg+1 § anzeigen aller verfügbaren Shortcuts mit Strg+Shift+L § automatisches Kompilieren im Hintergrund § Code-Folding § automatisches Formatieren von Code § Hilfe beim Import von Klassen § Code-Generatoren für Konstruktoren, Getter und Setter § Generieren von Kommentaren im Javadoc-Format § Anzeige von Fehlern im Code (und Tipps zu Behebung von Eclipse) § Kommentar-Tags für die Aufgabenliste (TODO, XXX und FIXME) Sommersemester 2011 Prof. Dr. Marco Block-Berlitz (Mediadesign Hochschule in Berlin) 19 Proinformatik: Objektorientierte Programmierung Freie Universität Berlin Refactoring und Aufrufen der API-Dokumentation Eclipse bietet Werkzeuge zum Überarbeiten der Programm- und Klassenstruktur an. Damit können Variablen, Methoden und Klassen umbenannt und verschoben werden, ohne dass die Programmlogik zerstört wird. Ebenfalls möglich ist das „Entzerren“ durch Extraktion von Superklassen und einiges mehr. Diese Funktionen erreicht man über das Hauptmenü oder mit einem Rechtsklick auf das betreffende Element. Mit der Tastenkombination Shift+F2 lässt sich die APIDokumentation zu einer Klasse oder Methode direkt im Browser öffnen. Sommersemester 2011 Prof. Dr. Marco Block-Berlitz (Mediadesign Hochschule in Berlin) 20 Proinformatik: Objektorientierte Programmierung Freie Universität Berlin Eigene Dokumentation mit Javadoc generieren Mit Javadoc können wir eigene Dokumentationen generieren, wenn wir unsere Kommentare in der entsprechenden Syntax verfassen. Mittels @-Tags werden Informationen zu Parametern, Rückgabewerten, etc. angegeben. Das Programm lässt sich direkt aus Eclipse über Project ð Generate Javadoc aufrufen. Im erscheinenden Dialog legen wir fest, bis zu welcher Sichtbarkeitsstufe (public, protected…) Variablen und Methoden dokumentiert werden sollen. Die HTML-Dateien werden in einem Unterverzeichnis erzeugt des Projektordners. Auf diese Weise lässt sich aus sauber kommentiertem Code im Handumdrehen eine gut lesbare Dokumentation extrahieren. Ab jetzt können wir auch zu unseren eigenen Klassen und Methoden mit Shift+F2 die Dokumentation aufrufen. Sommersemester 2011 Prof. Dr. Marco Block-Berlitz (Mediadesign Hochschule in Berlin) 21 Proinformatik: Objektorientierte Programmierung Freie Universität Berlin Alte Versionen von Klassen wiederherstellen Hat man eine Klasse „totprogrammiert“ oder gelöscht, lässt sie sich aus der Local History wiederherstellen. Ebenfalls möglich ist der direkte Vergleich von zwei Versionen. In der Standard-Einstellung werden die Zwischenschritte sieben Tage lang aufbewahrt. Sommersemester 2011 Prof. Dr. Marco Block-Berlitz (Mediadesign Hochschule in Berlin) 22 Proinformatik: Objektorientierte Programmierung Freie Universität Berlin Verwenden des Debuggers Bisher haben wir unsere Programme durch strategisch platzierte Ausgaben von Fehlern befreit. Dieser Ansatz ist ziemlich aufwändig und langsam. Eclipse enthält einen Debugger für Java, mit dem man Programme Anweisung für Anweisung ausführen und nachvollziehen kann. Der aktuelle Inhalt von Variablen lässt sich jederzeit überprüfen. Damit große Programme nicht jedes Mal von Anfang bis Ende nachvollzogen werden müssen, lassen sich im Editor Stop-Marken setzen, an denen die Ausführung des Programms im Debug-Modus anhält. Der Debugger stellt eine eigene Perspektive bereit. Hat das Programm an einer StopMarke gehalten, lässt sich der weitere Verlauf mit den Step-Befehlen nachvollziehen (F5, F6, F7). Der aktuelle Inhalt der sichtbaren Variablen wird in einer eigenen View oben rechts angezeigt. Auch komplexe Ausdrücke können in jedem Schritt überprüft werden. Sommersemester 2011 Prof. Dr. Marco Block-Berlitz (Mediadesign Hochschule in Berlin) 23 Proinformatik: Objektorientierte Programmierung Freie Universität Berlin Ausblick I: Was sonst noch in Eclipse steckt Es gibt noch viele weitere Funktionen und Plugins, die hier leider keinen Platz mehr finden. Zumindest erwähnt werden sollen noch: § Einbindung von Versionierungsystemen wie CVS und Subversion § Aufgabenmanagement mit Mylyn § Entwicklung von Programm-Oberflächen mit Matisse Sommersemester 2011 Prof. Dr. Marco Block-Berlitz (Mediadesign Hochschule in Berlin) 24 Proinformatik: Objektorientierte Programmierung Freie Universität Berlin Ausblick II: Was sich mit Eclipse sonst noch anfangen lässt Eclipse wird hauptsächlich als Entwicklungsumgebung, bietet durch seinen modularen Aufbau aber noch viel mehr Möglichkeiten: § Erweiterung durch eine riesige Zahl von verfügbaren Plugins § Entwicklung von eigenen Plugins § Verwendung der SWT-Bibliothek zur Entwicklung von Programm- Oberflächen § Verwendung von Equinox als Basis für Programme mit Plugin-Funktion § Entwicklung von eigenen Programmen auf Basis der Rich Client Platform Sommersemester 2011 Prof. Dr. Marco Block-Berlitz (Mediadesign Hochschule in Berlin) 25 Proinformatik: Objektorientierte Programmierung Freie Universität Berlin Viel Spaß mit Eclipse! Vielen Dank! Sommersemester 2011 Prof. Dr. Marco Block-Berlitz (Mediadesign Hochschule in Berlin) 26