Eclipse Modeling Framework
Das Eclipse Modeling Framework (EMF) ist ein quelloffenes Java-Framework zur automatisierten Erzeugung von Quelltext anhand von strukturierten Modellen. Es ist ein Projekt der Eclipse-Open-Source-Gemeinschaft.
Vorgehensweise
EMF kann aus einem Modell Java-Code erzeugen. Das so erzeugte Java-Programm kann Instanzen dieses Modells erstellen, abfragen, manipulieren, serialisieren (eingebaut als XMI oder anderes XML, mit Plugin auch in einer relationalen DB), validieren und auf Änderungen überwachen (für MVC). Darüber hinaus wird JUnit-Code erzeugt, der den generierten Code testet. Das Modell selbst kann aus einer XSD (wie etwa bei JAXB), aus annotierten Java-Interfaces oder aus UML-Diagrammen (Rose, TOPCASED, MagicDraw und Omondo) generiert werden, oder auch von Hand (mit einem "Baumeditor") erstellt werden. Der aus dem Modell generierte Code umfasst den eigentlichen Modell-Code (wie ihn etwa JAXB erzeugt), Code für Wizards, Editoren, bis hin zum Code für die eigentliche RCP-Anwendung. Das Modell selbst, die Generierung daraus sowie der generierte Code können angepasst werden, implementierte Funktionalität und neu generierter Code werden dabei gemerged (JMerge, siehe unten). Für weitergehende Ansprüche bietet EMF etwa die Möglichkeit, Modelle dynamisch zur Laufzeit zu generieren (etwa wenn erst dann das Modell bekannt ist).
Bestandteile
- Ecore-Metamodell, basierend auf dem EMOF-Standard (Essential Meta-Object Facility).
- JET (Java Emitter Templates), ein Framework zur Code-Generierung. Verwendet eine Untermenge von JSP zur Beschreibung des zu generierenden Textes. Ermöglicht das Schreiben des zu generierenden Textes unter Einsetzung von Ergebnissen von Java-Anweisungen (wie bei JSPs).
- JMerge zum Abstimmen von Änderungen am Modell und an den generierten Klassen.
- Die SDO-Referenzimplementierung von IBM nutzt EMF und ist Teil der EMF-Installation.
- Das XML Schema Infoset Model, darauf aufbauend bieten die Eclipse Web Tools u. a. einen graphischen Editor.
Vorteile: Einer der größten Vorteile ist die Integration in die Eclipse Werkzeugplattform. Dies ermöglicht die Generierung von UI-Komponenten sowie die Zusammenarbeit mit anderen Eclipse-Projekten, etwa im Eclipse Graphical Modeling Framework (GMF). Serialisierung und Validierung steigern die Produktivität beim Entwickeln. Außerdem ist die Einarbeitungszeit gering aufgrund vieler Möglichkeiten der Modellierung (XSD, UML, Java-Interfaces). Der Einsatz von Code-Generatoren und MDD (Model Driven Development) steigert ebenfalls die Produktivität, reduziert Wiederholungen und damit mögliche Fehlerquellen.
Open Source Frameworks rund um EMF
- Acceleo (Ein Code Generator, der EMF Modelle als Input nutzt)
- ATL (Eine Modell Transformations Sprache)
- Connected Data Objects (CDO), eine freie Implementierung von Distributed Shared Model auf Basis von EMF
- EMFStore (Ein Model Repository (Server) für EMF)
- Generic Eclipse Modeling System (GEMS)
- Graphical Modeling Framework (GMF)
Weblinks
- EMF Website auf eclipse.org
- Discover the Eclipse Modeling Framework (EMF) and Its Dynamic Capabilities (Artikel auf devx.com)
- Model with the Eclipse Modeling Framework (Tutorial von IBM)
- Interview mit EMF-Leiter Ed Merks (Artikel aus dem Eclipse-Magazin)
- EMF Einsteiger Tutorial