Die Eclipse Plattform

Ähnliche Dokumente
Eclipse Rieh Client Platform

BVM-Tutorial 2010: BlueBerry A modular, cross-platform, C++ application framework

Eine Einführung. Vortragende(r) FU Institut Berlin für Informatik Ingo Mohr

Die Eclipse Rich Client Platform

eclipse - Entwicklungsumgebung und mehr ETIS SS05

Inhaltsverzeichnis. TeiM. V E E.l E.2 E.3 E.4. Vorwort von Stefan Tilkov Einleitung Zielgruppe Über dieses Buch Konventionen Dank

Open Source IDE - eclipse ETIS SS04

Projektgruppe. Thomas Kühne. Komponentenbasiertes Software Engineering mit OSGi

Umstieg auf OSGi - aber wie? Martin Lippert & Matthias Lübken akquinet it-agile

NetBeans Rich Client Platform. Anton Epple Göttingen, Source Talk Tage

Andreas Mösching Senior IT Architekt Hewlett-Packard (Schweiz) GmbH HP Banking Service Center Bern

Die Eclipse Rich Client Platform. Martin Lippert Consultant und Coach

Spring Dynamic Modules for OSGi Service Platforms

Rich Client Platform

Überblick. Allgemeines, Geschichtliches. Architektur. Oberfläche. Plugins und deren Einsatz

Eclipse Plug-ins. Michael Perscheid Seminar System Modeling 2005 Hasso-Plattner-Institute for Software Systems Engineering

AVO-Übung 1. Übungsszenario, Entwicklungswerkzeuge. Andreas I. Schmied

Software Engineering in der Praxis

DOTS - reloaded. EntwicklerCamp René Winkelmeyer midpoints GmbH

Die OSGi Service Plattform

Spring IDE. Christian Dupuis - Spring 2.0 Release Party

Kurzanleitung Eclipse

Java-Entwicklung mit Eclipse 2

Das Interceptor Muster

Handbuch für die Erweiterbarkeit

OSGi. The Next Generation Java Service Platform. SOA - The Java Way or My classpath is killing me. Michael Greifeneder

eclipse und Komponenten

Modulare Anwendungen und die Lookup API. Geertjan Wielenga NetBeans Team Deutschsprachige Überarbeitung, Aljoscha Rittner NetBeans Dream Team

Situation-Adaptive Multimodal Dialogue Platform. Übersicht

Vorstellungsrunde Programm Was ist eclipse? Aller Anfang ist leicht Benutzeroberfläche Ende des ersten Tages. Eclipsekurs 2007.

Indigo vs. Juno. Was ist neu für Eclipse 4.x RCP Entwickler? Hauptseminar 2012

Toolchains. Dipl. Inf. Martin Jung Lehrstuhl für Software-Engineering Toolchains 1/14

Eignet sich Eclipse RCP als Enterprise Plattform? 2. Mai 2006 Lars Stucki & Edwin Steiner

Spring Dynamic Modules for OSGi Service Platforms

Studienarbeit. Mohammad Athar Januar Verantw. Betreuer : Prof. Dr. Walter F. Tichy Betr. Mitarbeiter : Dipl.-Inform. Marc Schanne

2.7 Debuggen in Eclipse Breakpoints Aufsetzen einer Launen configuration Die Debug-Perspektive im Überblick Grundf

Mathematik Seminar WS 2003: Simulation und Bildanalyse mit Java. Software-Architektur basierend auf dem Plug-in-Konzept

Eclipse in der Java-Entwicklung

Techniken der Projektentwicklung

SAP -Schnelleinstieg: ABAP-Entwicklung in Eclipse. Christoph Lordieck

Einführung in das Eclipse Modeling Framework (EMF)

Inhaltsverzeichnis. Bernd Weber, Patrick Baumgartner, Oliver Braun. OSGi für Praktiker

Rich-Client-Entwicklung mit Eclipse 3.2

Eclipse User Interface Guidelines

Eclipse Tomcat Plugin Starthilfe

Dynamische Plug-ins mit Eclipse 3. Martin Lippert Tammo Freese

Lösungen zum 2. Komplex

Motivation Grundlagen Technologien Manipulation Ecore Genmodell Demo Persistenz Notification Ausblick GMF Fazit / Quellen

Eclipse und EclipseLink

Inhaltsverzeichnis. 2.2 Grundlagen der UML Zusammenfassung... 53

OSGi mit Apache Felix und IntelliJ IDEA

Rich-Client-Entwicklung mit Eclipse 3.3

Inhaltsverzeichnis. xil. 1 Einleitung 1. 2 OSGi-TechnologieimOberblick 11. Bibliografische Informationen

- dynamisches Laden -

Björn Heinemann Leiter Entwicklung Energiewirtschaft

Im Mathe-Pool startet man Eclipse am besten aus einer Shell heraus, und zwar indem man im Home- Verzeichnis den Befehl

Eclipse und Java Einheit 01: Einführung in Eclipse

Eclipse Test and Performance Tools Platform (TPTP)

Eclipse Smart Client Beyond Eclipse RCP. Christian Campo, compeople, 24.April 2007

Einführung in das Eclipse Modeling Framework (EMF)

Die OSGi Alliance die dynamische Softwareplattform auf Java-Basis. W3L AG

XPages Extensibility API going deep. René Winkelmeyer midpoints GmbH

Innovator 2009 excellence. Anbindung an Eclipse. Einführung, Installation und Konfiguration. Connect. Roland Patka.

Software Factories WS 2016/17. Prof. Dr. Dirk Müller. 4 Eclipse und Plug-ins

Spring & OSGi: Plattform der Zukunft. Bernd Kolb (Kolbware) Martin Lippert (akquinet agile GmbH) Gerd Wütherich (comdirect bank AG)

Spring und Eclipse Equinox kombiniert. Martin Lippert (it-agile GmbH) Gerd Wütherich (comdirect bank AG)

Erweiterung des Saros Test Frameworks für die HTML GUI. Masterarbeit Jannis Fey

Programmieren II. Exkurs: Apache Maven. Institut für Angewandte Informatik. KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft

Multimedia im Netz Wintersemester 2012/13

Logo in neuer Logosystematik einfügen: Bewertung der Softwarequalität eines bestehenden Softwaresystems an Hand von

11. Komponenten Grundlagen der Programmierung 1 (Java)

3.5 Arten von Modulen

Inhalt. Mehr Informationen zum Titel. 1 Einführung FDI im Überblick...13

Einführung in das Eclipse Modeling Framework (EMF)

Eclipse Equinox als Basis für Smart Client Anwendungen. Christian Campo, compeople AG, Java Forum Stuttgart 2007

11. Mai '04, Oberseminar Softwareentwicklung

Software Engineering II

GMF (Graphical Modeling Framework) Urs Frei

Webentwicklung mit Vaadin 7. Theoretische und praktische Einführung in Vaadin 7. Christian Dresen, Michael Gerdes, Sergej Schumilo

Middleware - Übung. Framework. Security Layer & Module Layer

Werkzeugunterstützung für UML Profiles. Verteidigung des Großen Belegs Andreas Pleuß

Frank Schlüter, Techniker Krankenkasse Gerd Wütherich, Freiberuflicher Softwarearchitekt. Enterprise OSGi im wahren Leben: ein Migrationsbericht

Web Solutions for Livelink

Eclipse Rich Client Platform

Software-Engineering 2. Software-Engineering 2. Entwicklungsumgebungen (IDE) IT works. Klaus Mairon

Arbeiten mit Visual COBOL 3.0 for Eclipse. Rolf Becking 30. November 2017

Einführung OWB Java API

Ein Blick auf die Eclipse Plattform. Eine Präsentation von Karsten Panier und Thomas Nawrath

Software Engineering II

Eclipse Tutorial.doc

SAP HANA Multitenant Database Container

Oracle9i Designer. Rainer Willems. Page 1. Leitender Systemberater Server Technology Competence Center Frankfurt Oracle Deutschland GmbH

Inhaltsverzeichnis. Apps für Android entwickeln

CI von Eclipse RCP Anwendungen mit Gradle/Jenkins

H OSGi H.2 H.4 H.3. 1 Motivation. 2 Architektur. 2 Architektur (2) Modulsystem/Komponentensystem für Java. OSGi Alliance.

Transkript:

Software Engineering in der Praxis: Eclipse Development Die Eclipse Plattform Seite 1

Agenda Architekturüberblick Eclipse Plattform Einführung in die Platform Runtime und das Plugin-Konzept Plugin-Entwicklung mit dem PDE Übung Seite 2

Architekturüberblick Seite 3

Architekturüberblick Platform Runtime: Verwaltung der Plugins SWT: Betriebssystem-unabhängige Grafik- und Widgetbibliothek JFace: UI Toolkit für die Abhandlung vieler wiederkehrender Aufgaben der UI Programmierung (Dialoge, Wizards, ) Workbench UI: Eclipse UI-Grundstruktur mit Verwaltung und Anzeige von Views, Perspektiven, Editoren etc. Help: Beschreibung und Darstellung von Hilfesystemen Seite 4

Architekturüberblick JFace Text: Primitiven zur Entwicklung von Texteditoren Workbench Text Editor: Integration von JFace Text in die Workbench Update: Funktionalität und Dialoge zur Installation und Update von Plugins via HTTP Forms: API zur einfachen Entwicklung von Formularen Outline and Properties Views: Wiederverwendbare Sichten zur Anzeige von Strukturen und zum Editieren von Eigenschaften. Seite 5

Architekturüberblick Compare/Search: Differenzanzeige von Texten und Volltextsuche Workspace: Abstraktion des Ressourcenzugriffs in Eclipse. Organisation in Projekten und Projektnaturen Workspace-Based Document Editors: Direkte Anbindung des Workbench Text Editors an Workspaces. Team: Anbindung Versionkontrollsystemen Workbench IDE UI: Wiederverwendbare Workbench-Bausteine für integrierte Entwicklungsumgebungen auf Basis Eclipse. Seite 6

Architekturbaustein: Platform Runtime Seite 7

Platform Runtime: Grundlagen ClassLoader ClassLoader kümmern sich in Java darum, bei Bedarf Klassen zu laden und bereitzustellen. Jeder ClassLoader besitzt einen eigenen ClassPath. Jede Klasse ist mit genau einem ClassLoader verbunden (wurde von diesem geladen). Klassen werden in Java lazy geladen. ClassLoader sind in Hierarchien organisiert, wobei für Klassen in einem ClassLoader nur die eigenen Klassen und die der darüber liegenden ClassLoader sichtbar sind. Die Hierarchie ergibt sich aus der Erzeugung von ClassLoadern innerhalb von Klassen und deren assoziierten ClassLoader. Es können eigene ClassLoader als Erweiterungen der bereits bestehenden ClassLoader implementiert werden. System ClassLoader ClassLoader Plugin1 ClassLoader Plugin2 Seite 8

Platform Runtime: Grundlagen OSGi OSGi ist ein Industriestandard für eine Laufzeitumgebung für komponentenorientierte Systeme. Einführung mit Eclipse 3.0 als Laufzeitumgebung von Plugins OSGi verwaltet Bundles (=Komponenten, =Plugins) Beschreibung von Bundles über Metadaten (MANIFEST.MF) Dynamisches Laden/Entladen von Bundles (Lazy Loading) Kontrolle der Abhängigkeiten zwischen Bundles (Abhängigkeiten werden über Metadaten beschrieben und über einen eigenständigen ClassLoader pro Bundle zur Laufzeit kontrolliert) Versionierung von Bundles, wobei unterschiedliche Major-Release- Nummer inkompatible Plugins ausdrücken (z.b. 1.2 und 2.0) sollten. Plugins mit gleicher Major-Release-Nummer sollen zueinander kompatibel sein. Erkennung von Konflikten Seite 9

OSGi: Bundle Aktivator-Klasse (kontrolliert Lebenszyklus des Bundles) de.fau.i11.a 1.0.0 de.fau.i11.b 2.1.3 de.fau.i11.c 1.0.0 Exportierte Packages (öffentliche Schnittstelle) META-INF/MANIFEST.MF Benötigte Bundles (benötigte Schnittstellen) Bundle-SymbolicName: de.fau.i11.a; singleton:=true Bundle-Version: 1.0.0 Bundle-Activator: de.fau.i11.a.activator Bundle-Vendor: Bundle-ClassPath: a.jar Require-Bundle: de.fau.i11.b,de.fau.i11.c Export-Package: de.fau.i11.a.api Zusätzlich möglich: Versionsbedingungen Friend-Bundles Seite 10

Platform Runtime: Plugins Plugins sind die Modularisierungseinheit innerhalb von Eclipse. Alles außer die Platform Runtime sind Plugins in Eclipse. Name eines Plugins soll immer der Top-Level Packagestuktur entsprechen (Bsp.: de.fau.i11.reqlipse.core ) Definiert Erweiterungsmöglichkeiten und/oder erweitert andere Plugins (Extension Points, Extensions) in plugin.xml Ein Plugin wird als Verzeichnis oder alternativ als JAR mit folgender Namenskonvention geliefert: <PLUGIN_NAME>_<PLUGIN-VERSION> Inhalte des Plugin Verzeichnisses: JAR Datei mit Compilaten META-INF/MANIFEST.MF (OSGi Bundle Manifest) plugin.xml (Plug-in Manifest) Div. statische Ressourcen (z.b. Bilder); Können per Plugin-Klasse zugegriffen werden. Seite 11

Die Plugin-Klasse Bundle-Activator Singleton Klasse Reaktion auf Plugin-Lifecycle Div. Hilfsfunktionen durch Framework-Klassen «interface» org.osgi.framework.bundleactivator org.eclipse.core.runtime.plugin org.eclipse.ui.plugin.abstractuiplugin MyActiv ator Seite 12

Platform Runtime: Plugin Loader Scan in den Plugin Verzeichnissen nach MANIFEST.MF und plugin.xml Dateien Aufbau einer Plugin Registry aus den gesammelten Informationen Weitere Einheiten Feature: Sammlung an Plugins. Wird per Update-Site verteilt. Fragment: Teil eines Plugins wie z.b. Lokalisierung in best. Sprache Seite 13

Die Platform Hilfsklasse Seite 14

Extension Points Mit rein OSGi: Unkontrollierte Erweiterungen über direkte Zugriffe auf Klassen in exportierten Packages. Eclipse Plugins: Kontrollierte Erweiterungen über explizite Definition der Erweiterungspunkten (Extension Points) und Konfiguration der Erweiterungen (Extensions). Bestandteile eines Extension Points Id Name Extension Point Schema (beschreibt, wie eine Extension konfiguriert werden muss) Seite 15

Extension Points: Beispiel Activator de.fau.i11.eclipsetutorial.lesson1 IListProvider public interface IListProvider { String[] getentries(); } IListProvider MyListProvider de.fau.i11.eclipsetutorial.lesson1.model Seite 16

Extension Points: Beispiel plugin.xml <extension-point id="listprovider" name="list Provider" schema="schema/listprovider.exsd"/> listprovider.exsd Seite 17

Extension Points: Beispiel plugin.xml <extension point="de.fau.i11.eclipsetutorial.lesson1.listprovider"> <model name="mitarbeiter" class="de.fau.i11.eclipsetutorial.lesson1.model.mymodel"/> </extension> Seite 18

Extension Points: Beispiel Auf Extension zugreifen IExtension[] extensions = Platform.getExtensionRegistry().getExtensionPoint(ListPlugin.PLUGIN_ID, "listprovider").getextensions(); IConfigurationElement[] configurations = extensions[0].getconfigurationelements(); for (IConfigurationElement conf : configurations){ if (conf.getname().equals( model )) return(ilistprovider)conf.createexecutableextension( class ); } Seite 19

Architekturbaustein: Platform Runtime Seite 20

PDE Projekterstellung aus Vorlagen Unterstützung bei Modifikation plugin.xml, MANIFEST.MF und Extension Point Schema Build&Run von Plugins Seite 21

Übung 1: SimpleView 1. Plugin SimpleView erstellen aus Vorlage Plug-in with a View mit Darstellung einer Liste. Generierten Quellcode analysieren. 2. Debugging der Aufrufhierarchie für die Methode start() in der Aktivator-Klasse (Step return) 3. Stelle finden, an der Listenelemente definiert sind und Listenelemente modifizieren. 4. Stelle finden, an der das Elementsymbol definiert ist und anderes Symbol für Listeneintrag auswählen Seite 22

Übung 2: Logging Hilfsklasse 1. Hilfsklasse für Logging erstellen mit den Methoden info(string msg) error(string msg) Beispielcode für Logging Activator.getDefault().getLog().log( new Status(IStatus.INFO, ListPlugin.getDefault().PLUGIN_ID, IStatus.OK, message, null)); Logging in SimpleView beispielhaft integrieren Seite 23

Übung 3: Test-Plugin schreiben Neues Plugin ohne Vorlage erstellen Abhängigkeit zum JUnit-Plugin hinzufügen Abhängigkeit zum SimpleView-Plugin hinzufügen Testfall im Plugin schreiben, der testet, ob die definierten Elemente auch alle in der Liste vorhanden sind. Code zum Zugriff auf Elemente der Liste: view = (SimpleView)PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().showView(VIEW_ID); IStructuredContentProvider contentprovider = (IStructuredContentProvider)view.getViewer().getContentProvider(); Object[] elements = contentprovider.getelements(view.getviewer().getinput()); Seite 24

Übung 4: Extension Point für Model erstellen Wie im Vortrag beschrieben den Extension Point IListProvider für das Plugin SimpleView erstellen. Wie im Vortrag beschrieben ein Plugin erstellen, das als Extension die IListProvider Schnittstelle implementiert. Seite 25

Startup http://www.eclipse.org/downloads http://download.eclipse.org/technology/subversive/0.7/update-site http://www.junitfactory.com/update AspectJ Tools http://www.eclipse.org/ajdt Seite 26

Weiterführende Themen Re-Export von Bundles Extension Point Grammatiken Integration: Nutzung von ActiveX Komponenten Eclipse Adaptoren Seite 27

Quellen [1] John Arthorne; Chris Laffra, 2004: Official Eclipse 3.0 FAQs [2] Eric Clayberg; Dan Rubel, 2006: Eclipse: Building Commercial-Quality Plug-ins, Second Edition [3] IBM, 2006: Eclipse Platform Technical Overview http://www.eclipse.org/articles/whitepaper-platform-3.1/eclipse-platform-whitepaper.pdf [4] Platform Extension Points Reference: http://help.eclipse.org/help33/index.jsp?topic=/org.eclipse.platform.doc.isv/reference/extensio n-points/index.html Seite 28

Backup Seite 29

Die Workbench Seite 30

Ressource (Resource): Informationseinheit Sicht (View) Navigation auf Ressourcen Eigenschaften von Ressourcen anzeigen / manipulieren Alle Änderungen werden direkt gespeichert Nur eine Instanz pro Perspektive Zustände: unsichtbar, inaktiv, aktiv Fast Views im Fußbereich als Icons für Views, die viel Platz brauchen, aber nicht immer präsent sein müssen. Editor Bearbeitung einer Ressource Open/Close/Save Mimik Mehrere Instanzen möglich Perspektive (Perspective) Kombination aus Views und Editoren Offene Editoren aus anderen Perspektiven werden übernommen Aktion (Action) Kontextmenü (Context Menu) Werkzeugleiste (Toolbar) Wizards Seite 31

Beispiel: JDT Seite 32