This presentation pointed out a few limitations in the current implementation of EMF and proposed solutions to make it better. Since I'm not an active user of EMF, the issues weren't relevant to me. However, it was still interesting to learn more about EMF.
3MF is an experiment to find solutions to these limitations. The issues and solutions presented include:
- Support for multiple versions of a model at once
- Same model from different vendors with different versions used at the same time
- Eclipse extensions points require that only one version of a plug-in be present
- EMF registry keys reference a particular model
- Proposed solutions:
- Change extension registry reader to support this
- Or use OSGi services, which already have support for versions
- Create a versioned registry for use in EMF
- Generated EMF interfaces have dependencies on the EMF implementation
- Static member in interface points to implementation
- This is messy and prevents us from changing the implementation to something else, such as a derived class containing additional implementation
- Proposed solution:
- Add method to EObject to get the EPackage, from which the implementation can be accessed.
- Using EMF with another OSGi run-time
- EMF has a dependency on and references to Eclipse core.
- There are checks in place for different environments, but only one test for OSGi
- Proposed solutions:
- Repackage for different run-times, but this is too much manual work and has to be done each release
- Use import package for dependency, but this breaks backwards compatibility
- Most compatible way is to add a hook to test which run-time is being used
No comments:
Post a Comment