EMF - Tutorial

Eclipse Modeling Framework (EMF) - Tutorial #

This tutorial describes the usage of Eclipse EMF, a framework for modeling your data model and creating Java code from it.

Based on: Lars Vogel (c) 2007, 2016 vogella GmbH Version 3.6, 06.07.2016

See License for license information

This tutorial has been tested with Eclipse Modeling Tools 2025-03. Some screen captures might be from older versions of Eclipse.

Video Tutorials #

See the YouTube playlist for all videos.

Chage Log #

Selection of materials and updates

  • 26.04.2025 by Soaibuzzaman
    • Migrated tutorial to web format and updated to Eclipse 2025-03 Modeling Tools
  • 04.05.2023 by Jan O. Ringert
    • Added minor adjustments for Eclipse 2023-03 Modeling Tools
  • 29.04.2022 by Jan O. Ringert
    • Added videos of the latest version of Eclipse 2022-03 Modeling Tools
  • 28.04.2022 by Jan O. Ringert
    • Changed version to Eclipse 2022-03 Modeling Tools
  • 21.02.2021 by Jan O. Ringert
    • Added warning in Section 14.3 about editing the Class Diagram after OCL invariants were added
  • 09.02.2021 by Jan O. Ringert
    • Added Section 14 about OCL in Ecore
  • 02.02.2021 by Jan O. Ringert
    • Updated Sect. 2, 3, and 4 with some latest screen captures from Eclipse 2020-12
  • 25.01.2021 by Jan O. Ringert
    • Updated version of Eclipse
    • Replaced video links
  • 06.02.2020 by Jan O. Ringert (thanks to Kamil Poltorak)
    • Setting title of myWeb in Sect. 5 code
    • Documentation updated in Sect. 7 (picture and text)
  • 16.01.2020 by Jan O. Ringert
    • Changed Eclipse version to 2019-06
  • 08.02.2019 by Jan O. Ringert
    • Added videos to Sect. 4, 5, 6, and 13
  • 30.01.2019 by Jan O. Ringert
    • Fixed code example in Sect. 6.2
    • Added screen capture of dependencies to Sect. 6
    • Completely rewritten code in Sect. 13
  • 23.01.2019 by Jan O. Ringert
    • stressed need to select Containment in Sect. 3.1
    • changed “My Web” to “Web” in Sect. 5
  • 18.01.2019 by Jan O. Ringert
    • Made package names more consistent across tutorial and code examples
    • Updated code examples and text to use Web instead of MyWeb (inconsistent throughout tutorial)