Project Overview
Project Objective
The AOCS prototype developed in the AOCS
Framework Project was coded in C++. The primary aim of this project
is to port it to a real-time version of Java. The Java version must then
be tested and comparison in CPU, memory efficiency and other parameters
must be made with the C++ version. This objective is interesting for the
following reasons:
-
Java is in many respects better suited as an implementation vehicle for
framework technology than C++. This project therefore allows the AOCS framework
to be implemented in its “natural” language.
-
Java is an attractive implementation language because: it is inherently
safer than other languages; it appears to lead to higher productivity;
it has built-in support for multi-tasking; it has an associated component
model (JavaBeans); it has built-in support for networking operations; it
allows dynamical loading of code; it is truly object-oriented; and its
wide user base leads to low costs. This project allows an evaluation of
Java for space applications to be made.
-
Past versions of Java do not support real-time applications. Real-time
versions of Java have recently been released. Real-time Java has the potential
to become the language of choice for mission-critical real-time applications.
This project allows the maturity and suitability of real-time Java to be
assessed in a realistic setting.
-
Java is normally an interpreted language. The overhead introduced by interpretation
currently makes Java unsuitable for demanding applications like the AOCS.
Software and hardware techniques are now becoming available that eliminate
this overhead and therefore pave the way to the utilization of Java in
CPU-intensive applications. This project allows the maturity and suitability
of this type of processors to be assessed in a realistic setting.
Back To Top, Back
to Real-Time Java Project Home
The Framework and Java Beans
The AOCS Framework is a component-based framework. In the C++ version,
the term "component" was used to designate an object that exposed one or
more interfaces and that interacted with its clients only through these
interfaces and the framework was organized as a set of such components.
In the Java world, component-based applications are built on the JavaBeans
standard and the framework is therefore being translated to be organized
as a set of bean components. More specifically, this means that:
-
all framework components are transformed into Java beans, and
-
as many as possible of the operations involved in instantiating a framework
are represented as bean operations.
The implications of the first bullet are explored in another
section of this web site. The second bullet implies that the instantiation
of the framework should be done, as far as possible, by linking event sources
with event listeners and by defining bean properties. With regard to the
latter, note that the assembly of a concrete application from the framework
is largely seen in terms of "plugging together" pre-defined components.
This operation can be easily interpreted as the loading of properties in
Java beans if one accepts properties of complex types. Thus, for instance,
consider the case of two components comp_a and comp_b
of types type_a and type_b, respectively. The composition
of comp_a with comp_b would typically be done by calling
method: a_comp.setPlugIn(comp_b) where 'PlugIn' is the
name of a property of type type_b.
Back To Top, Back
to Real-Time Java Project Home
Real-Time Java Technology
Ultimately, it is desired to implement the AOCS Framework on a real-time
version of Java that complies to the specifications of the “Real-Time
for Java Experts Group”. It is unclear to what extent existing implementations
of the language are compliant with these specifications. At present, it
is baselined to use the Esmertec
JVM on a RPX board mounting a PowerPC 830 microprocessor.
More information on the general principles used in porting the framework
code to Java can be found here.
Back To Top, Back
to Real-Time Java Project Home
Matlab Wrapper
The framework provides an interface to software generated by the autocoding
facility of Matlab. Matlab is a
general purpose modelling, design and simulation environment for control
systems. Its integration with the framework plays an important part in
achieving the long-term goal for this project.
There are several technical problems related to creating this wrapper because
the Matlab autocoding facility only generates C code. A full discussion
is given in a dedicated
page.
Back To Top, Back
to Real-Time Java Project Home
Methodological Aspects
The methodological aspects of framework design and development were considered
in a separate
project done in parallel to the AOCS Framework Project. All the concepts
and considerations elaborated in that context remain applicable to the
present project. In particular, an understanding of the real-time Java
project documentation requires familiarity with the concepts of framelet
and with the role that is assigned to domain-specific design patterns in
the framework design process.
Back To Top, Back
to Real-Time Java Project Home
Last updated on May. 7-th 2002 by Alessandro
Pasetti