About the Author
FRANK BUDINSKY, leader of the Eclipse EMF project, is co-architect and an implementer of the EMF framework and code generator. An engineer in IBM's Software Group, Frank has been involved in the design of frameworks and generators for several years, including design lead for the IBM/Taligent Compound Document Framework in VisualAge/C++, the Composed Business Object Builder in Component Broker, and most recently a common framework for mapping tools in WebSphere Studio.
DAVID STEINBERG is a core member of the EMF development team in IBM's Software Group. Dave has contributed extensively to the design and implementation of both the runtime and code generator components of EMF.
ED MERKS is project leader and lead architect of the XSD technology project and a co-architect of the EMF tools project, both at Eclipse. Ed develops software at the IBM Toronto Laboratory and has many years of in-depth experience in the design and implementation of languages and their supporting environments, including a Ph.D. on the subject.
RAYMOND ELLERSICK is an engineer in IBM's Software Group. A member of the EMF team, Ray is a key contributor to the design of EMF and was previously the development lead for IBM's earlier modeling framework from which much of EMF evolved.
TIMOTHY J. GROSE, a software engineer at the IBM Silicon Valley Laboratory, develops applications using XML and XMI technologies, including design and implementation of the default serialization support in EMF.
Excerpt. © Reprinted by permission. All rights reserved.
This book is a comprehensive introduction to and developer's quick reference for the Eclipse Modeling Framework (EMF). EMF is a powerful framework and code-generation facility for building Java applications based on simple model definitions. Designed to make modeling practical and useful to the mainstream Java programmer, EMF unifies three important technologies: Java, XML, and UML. Models can be defined using a UML modeling tool, an XML Schema, or by specifying simple annotations on Java interfaces, whereby programmers write the abstract interfaces (a small subset of what they would normally need to write), and the rest is generated automatically and merged back into their existing code.
By relating modeling concepts to the simple Java representations of those concepts, EMF has successfully bridged the gap between modelers and Java programmers. It serves as a gentle introduction to modeling for Java programmers and at the same time as a reinforcement of the modeler's theory that plenty of Java coding can be automated, given an appropriate tool. This book shows how EMF is such a tool. At the same time, it also shows how using EMF gives you much more than just automatic code generation.
While Eclipse provides a powerful platform for integration at the UI and file level, EMF builds on this capability to enable applications to integrate at a much finer granularity than would otherwise be possible. EMF-based modeling is the foundation for fine-grained interoperability and data sharing among tools and applications in Eclipse. All of the features provided by the EMF framework, combined with an intrinsic property of modeling--that it provides a higher-level description that can more easily be shared--provide the needed ingredients to foster such data integration. A number of companies are already using both Eclipse and the EMF modeling technology as the foundation for commercial products. IBM's WebSphere Studio, for example, is completely based on Eclipse, and most of its tools use EMF to model their data.
This book assumes the reader is familiar with object-oriented programming concepts, and specifically with the Java programming language. Previous exposure to modeling techniques such as UML class diagrams, although helpful, is not required. Part I (Chapters 1 to 4) provides a basic overview of the most important concepts in EMF and modeling. This part teaches someone with basic Java programming skills everything needed to start using EMF to model and build an application. Part II (Chapters 5 to 8) presents a thorough overview of EMF's metamodel, Ecore, followed by details of the mappings between Ecore and the other supported model-definition forms: annotated Java, XML Schema, and UML. Part III (Chapters 9 to 12) includes detailed analyses of EMF's code-generator patterns and tools, followed by an end-to-end example of a non-trivial EMF application. Part IV (Chapters 13 and 14) provides a more in-depth analysis of the EMF and EMF.Edit frameworks, including discussions of design alternatives and examples of common framework customizations and programming techniques. Part V (Chapters 15 to 18) and Part VI (Chapters 19 and 20) finish off the book with a complete API quick reference for all of the classes and methods in the 1.1 versions of the core EMF and EMF.Edit frameworks.