CONTROLROOT 0.91 RELEASED
This is the initial release of the Control Root Java application component framework.
It is hoped that this framework will contribute something to Java development as a whole.
The reader may ask, why yet another framework ? There are many component frameworks and
middleware architectures already, each suited to a particular range of applications.
What is different and perhaps new about the Control Root framework is that it leverages
the inversion of control principle to minimize the dependencies between Java components
and introduces universal interfaces between components that have made Unix such a robust
operating system - except it achieves this at the component level.
Dependencies between both individual components as well as between components and
framework are minimized by refusing to allow components to reference any framework APIs
or even requiring components to import framework classes. Therefore, as the framework
evolves, there is no API to break components. No source code dependencies exist between
components and the framework. Equally, no dependencies exist between components as each
component is fully unaware of other components. The framework manages interfaces between
components externally to the source code of the components. Therefore the layout of an
application and connections between components may be changed freely without a need to
recompile source code.
The technologies leveraged to achieve the points illustrated above include Aspect
Oriented Programming as well as Java Reflection. Design by Contract (DBC) is used to
enhance the integrity of the framework core, by leveraging predicate logic and
predicate calculus in particular to specify the behaviour of Interfaces, an facet
normally absent from Java interfaces. More details on these subjects may be found in
the file ControlRootFramework.pdf
http://ctrlroot.svn.sourceforge.net/viewvc/ctrlroot/trunk/doc/ControlRootFramework.pdf :
This file contains a dissertation on the project submitted for the degree of Master of Science
of Software Engineering at the University of Oxford.
PROJECT STATUS:
The project is in beta status and not suitable for production quality deployments.
The version number 0.91 reflects the beta status of the project.
FUTURE DIRECTION:
Three major enhancements are envisaged:
1) A complementary implementation in C++ based on the Boost framework. This would
allow combining C++ and Java and C++ components.
2) Adding support for the MPI (message passing interface) transport layer to
facilitate low latency networked applications.
3) Adding support for CSP (Communicating Sequential Processes), a formal mathematical
paradigm, which can be used to create provably correct "multi-threaded" applications.
CSP represents a substantial improvement over conventional multi-threaded approaches
where the absence of deadlocks, livelocks, and resource conflicts depend on the
programmer's ability to fathom the complexities of all possible interactions between
concurrent entities in the application. In CSP, the absence of these problems may
be logically proven, greatly enhancing the state of the art of concurrent software systems.
PLATFORM:
IntelliJ IDEA 7.0.2.
Eclipse project files have been provided but the JUnit test
cases have not been verified under Eclipse.
DEPENDENCIES:
Java JDK 1.6
HSQLDB 1.8.0.8 or greater
Junit 4 Testing Framework
Commons Logging and Commons Expression Language
Spring Contracts 0.3 (AspectJ & Spring included)
xstream 1.3