{{ !articles[0].partner.isSponsoringArticle ? "Platinum" : "Portal" }} Partner
java,design,uml,dependency injection,evolution

Evolve - a powerful, UML-based alternative to dependency injection

Phew - I've just gone into public beta with my new UML-based tool after many years of work. It builds on the research that I did for my PhD at Imperial College. It also draws on my 20+ years of software experience to create a new way of connecting up Java classes to form a system. It is called Evolve and I'm proud to share it with you at Javalobby, the community where I've had many discussions about Java and its future.

At the heart of Evolve is a component model with full connectors. This makes it far more powerful and flexible than dependency injection approaches. Some of you may remember a previous article I wrote describing how DI was limited compared to full components: http://www.javalobby.org/articles/di-heritage/

Anyway, Evolve is the commercialization of that research work.

Evolve provides the following:

  • A sophisticated UML-based graphical editor for creating and wiring up plain vanilla classes
  • A runtime environment for executing these
  • The ability to turn an Evolve model into a set of Java classes
  • A bean import tool to import your existing libraries into Evolve

A central part of Evolve is that it provides version-control like facilities deep in the component language. In other words, you can evolve components inside the tool, using a graphical delta editor. Systems created with Evolve therefore have the remarkable property that they can always be extended. This capability was at the heart of my research work.

You can read more about Evolve, and download the software and manual, at:


Here's a very quick rundown on how Evolve allows you to create components...

The first step is to define leaf components. These are basically a fancy graphical view on plain-old JavaBeans, bringing them into the more sophisticated world of components.



Composite components are then created by connecting up instances of other components. These components are powerful enough to represent entire systems if required. It's a scalable model.



You can then evolve a component and amend it using deltas. This doesn't destroy the original structure, but like a version-control system, applies the deltas when required.



At all times, the code is kept synchronized with the diagrams. You literally see the system and code you are creating.

Please download the software and try it out. I'd love to hear your opinions.  I will start selling it at the end of the beta period, but I am keeping it affordable. Further, there is a community edition which is free but generates GPL'ed code.

Oh - the runtime engine of Evolve is called Backbone, and is open source under the Apache License. Any program you write in Evolve runs on Backbone, and does not need to be tied to Evolve.

{{ tag }}, {{tag}},

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}
{{ parent.authors[0].realName || parent.author}}

{{ parent.authors[0].tagline || parent.tagline }}

{{ parent.views }} ViewsClicks