New Project Coming in Indigo; #1 Object Teams
New Project Coming in Indigo; #1 Object Teams
Join the DZone community and get the full member experience.Join For Free
Microservices. Streaming data. Event Sourcing and CQRS. Concurrency, routing, self-healing, persistence, clustering...learn how Akka enables Java developers to do all this out of the box! Brought to you in partnership with Lightbend.
The Indigo release train will include 62 projects released on the June 22. Lots of great new technology is coming to a download server near you. There are a number of projects that are joining the release train for the first time. Two years ago I did a blog series highlighting some of the new projects on the release train, so I thought I would do it again this year.
I have asked each project leader to answer four short questions about their project. Hopefully it will give you an idea of what the project is about and why you might care. The first project is Stephan Herrmann from Object Teams.
1. What does your project provide to an Eclipse user?
Generally, Object Teams addresses all those situations where modularity is difficult to achieve, especially in case of conflicts between various design goals, including issues of maintenance/evolution, demanding re-use scenarii (like evolving variants), unanticipated adaptations and more.
The Object Teams Project addresses these goals at three levels:
- An extension of the Java programming language, called OT/J
- A JDT-quality IDE for OT/J (Object Teams Development Tooling, OTDT)
- An integration with Equinox adding new options for inter-connecting bundles/plug-ins.
More specifically, OT/J adds to Java the concept of Roles, a specific kind of classes and objects, that connect in special ways to their environment:
- Roles are strongly contained in so-called Teams, enabling the programmer to create (nestable) modules larger than classes right in the programming language.
- Roles are attached to existing classes and objects, thus dynamically adding new facets to existing base objects. A Role can even influence the behavior of its base. Removing or disabling the Role at runtime restores the original behavior.
By the combination of both relations a group of interacting, contextual Roles is the ideal concept for encapsulating the implementation of any use-case, scenario, feature or whatever your units of development are.
2. Why are you personally involved in the project?
In my academic past I initiated and led the development of OT/J. At a point during the development of the OTDT we started to use our own technology for building the tool. At this point I saw my hopes come true: we can re-use all of the JDT (and some other Eclipse components), adapt all these to the requirements of an IDE for OT/J, and all these adaptations have been designed in a highly modular way, which is a breeze to maintain over the years.
Although this is only one of many possible scenerios that can benefit from OT/J, this experience has been a strong motivation for me towards making this powerful tool available for others, too.
Additionally, while building the IDE we got so deeply involved with Eclipse that it is only natural, that the project moved to Eclipse.org.
And then the Eclipse community has been very welcoming (after the regular hiccups during project creation) at all levels: from
Mentors, EMO, Legal, PMCs etc. to the audiences at various Demo Camps: very positive feedback and lots of help all the way.
All these refuel my motivation for running this as an Eclipse Project.
3. What is the future roadmap for your project?
Well, the very near future, the Indigo release, shall also mark the graduation of the Eclipse Object Teams Project. Almost 10 years after the first students started implementing OT/J this seems to be due.
Adopting and supporting Java7 is a nice challenge to be tackled with no or minimal delay after the Indigo release.
Mid-term we have a few more technologies in the pipe-line, typically integrations with other frameworks etc. The first one here is bringing a prototypical integration with EclipseLink (OT/JPA) to Eclipse.org, too.
Of course, the constant flow of small to medium enhancements is cool, too, like more refactorings, more quick assists etc.pp.
The most important plan item, however, is to further improve the support for new users of Object Teams. To this end we’ll pay close
attention to any requests for explanations, examples, tutorials etc. posted in our forum.
4. What have been your experiences of participating in the Indigo release train?
Of course the primary impression is amazement about the huge size of this machine and how it delivers quality on time.
In the course of joining the train, the Object Teams Project had a very special experience, which started innocently as a bug in the b3 aggregator, causing the jdt.core plugin to be missing from the indigo repository. As more people looked into this they realized that Object Teams publishes a variant of the jdt.core plugin which in conjunction with the bug in the aggregator led to the conflict.
This triggered a fundamental discussion which – honestly – scared me, but need not be repeated here.
In retrospect, however, I can say that several of the leaders in Eclipse land took their time looking at the details and advising us how to better protect the user from unintended effects. I appreciate their help.
Although an unusual baptism of fire, this situation pitched me right into the heart of what the Eclipse community is about: Openly discussing technology, rules and processes – all three of’em. This is a great place to be, indeed.
Of course, the daily mechanics of the release train are pretty mundane, like: who broke the XML of their contribution file? Why can’t p2 read from that repository? Who pulled in the dependency of this bogus plug-in? Etc. pp.
But if that’s what’s needed to keep the train travelling, than so be it and great to know that nobody is left alone when some gear of this big machine breaks.
Opinions expressed by DZone contributors are their own.