common questions

“what is evolve?”

Evolve is a powerful component system with supporting tools for wiring together your Java classes, allowing them to be treated as full components. The wiring is done graphically, which means that the structure of your system is always visible and fully synchronized with your code. Advanced reuse and evolution facilities allow you to create systems with less effort. You can run any programs created inside or outside of Evolve.

Another way of viewing it, is that Evolve is a very high-end dependency injection system with a sophisticated graphical presentation.

“so it is a way to connect together my existing classes?”

Yes, but in a way that gives you the power of electronics design. It also helps you to define, connect up, and implement new classes.

“how is this more powerful than dependency injection?”

At the heart of Evolve is a hierarchical component technology with over 20 years of research behind it. One key difference from dependency injection is the use of explicit connectors, which allows complex structures to be simply expressed. It also provides better reuse and evolution facilities.

“how then can it be more straight-forward?”

Wiring up components in this way is very intuitive and clear. Try it yourself and you’ll be surprised. You do not need the work arounds needed for dependency injection when dealing with larger, more complex systems.

“evolve uses uml2 component diagrams. is evolve a full uml2 tool?”

No. Evolve comes from research into executable components and highly extensible systems. It only implements the diagrams which can be directly connected to code.

For a full UML2 modeling tool, please look into the excellent (and inexpensive) Poseidon UML8 created by our close technical partner Gentleware. It is built on the same graphical foundation, but does not include the code or evolution facilities of Evolve.

“why is it called evolve?”

Evolve integrates a version control-like construct known as “evolution” into the component model. This allows you to evolve the structure of existing components, to customize and reuse them for new requirements.

“is evolve just for visual components?”

No, not at all. It is a general approach for creating any type of software. The graphical depiction of components is similar to how a circuit board is created in electronics. We like to think that Evolve for software, is equivalent to a tool like Autocad for drafting.

“what options are there for running the programs created in evolve?”

You can execute the programs using the open-source Backbone interpreter. Alternatively, you can generate a simple Java class from Evolve which connects up your components as described by the diagrams. The latter has no overhead.

“are the programs I create tied to evolve in any way?”

No. Although you can run programs in Evolve, they can also be run outside of the tool using the Backbone runtime. Backbone is fully open sourced and the jar is around 350kb. Alternatively, you can create a small Java program from your Evolve model, removing any dependency on Evolve or Backbone.

“does any JavaBean code created have any dependency on backbone?”

A JavaBean created with Evolve has no dependency on Backbone or Evolve, unless it uses the factory facilities or state chart facilities. In that case, your code only depends on a couple of interfaces. Evolve is similar to DI in this way – it places no (or very little) dependencies in your code.