Evolve is a sophisticated component assembly tool with cutting-edge support for reuse and evolution. It allows you to connect up components (JavaBeans) to create any type of application. State machines and their evolution are also supported.
Evolve offers a complete and more principled alternative to dependency injection and aspect-oriented programming.
Systems created in Evolve are extensible by default. Unlike other approaches which require extension points or aspects to add behavior, Evolve applications can be extended in any way even if source code is not available. Software extension and evolution is completely aligned with initial system creation.
Some of the common workflows in Evolve are described below.
Evolve allows you to graphically describe JavaBeans. It can also generate the Java code for the setters and getters if required. Bean libraries can be quickly imported into Evolve.
Evolve treats JavaBeans as full components, removing many of their conventional limitations.
Evolve allows you to use connectors to “wire up” instances of beans to form more powerful, composite components. No Java code is required to do this, making it a fast and lightweight way to create complex components. Connectors remove the unusual and limiting wiring constraints imposed by dependency injection.
In the example below we have wired up an instance of AlphabetWindow into a new DualWindow component.
Once a component is defined, you can inherit from it and adjust its structure for reuse. You can also evolve it without affecting its original definition.
This leading edge support means that Evolve components can always be extended. You can design for “now”, knowing that you can deal with “later” through the evolution facilities. Evolve encourages an agile approach to design.
Applications created using Evolve can be executed both inside and outside of the environment.