Font size:      

SOFA Extensions

Extension Overview

The SOFA 2 component system is designed to be easily extendable. Moreover, some parts of the system (repository, metamodel, etc.) are designed to be reused in the individual SOFA profiles (such as SOFA J or SOFA HI). This page contains list of such SOFA 2 extensions.

  • Dynamic SOFA introduces dynamic language support into the Java SOFA profile and enables rapid prototyping of SOFA applications.
  • SOFA for JME is the SOFA profile targeting the Java micro-edition platform.
  • SOFA for LeJOS is the SOFA profile targeting the LeJOS NXJ platform.
  • SOFA UML targets development of SOFA 2 application with help of UML components.

Runtime for Rapid Prototyping of Component Applications

Component systems allow to build large scale applications from reusable components. However, many of the contemporary component systems have an extensive component development cycle with a long turnaround time. To speed up the component development, the dynamic languages, which allow to change the implementation at runtime without compilation and restarting, could be used. Therefore, the support of components implemented in dynamic languages could simplify development of application prototypes and add other advantages of interpreted dynamic languages (dynamic typing etc.).

The Runtime for Rapid Prototyping of Component Applications introduces runtime support for primitive components implemented in dynamic languages. The support is based on the SOFA 2 component aspect mechanism. To allow rapid prototyping of component applications, the implementation provides tools for interaction with running scripted components (in order to enable dynamic changes of components' implementation).

The implementation utilizes Java Scripting API (WWW) to integrate dynamic languages into the Java-based SOFA 2 runtime environment.


Source code of rapid prototyping support is a part of the SOFA 2 SVN repository. To check out source code use the following SVN command:

svn checkout svn://svn.forge.objectweb.org/svnroot/sofa/trunk/sofa-j/trunk/aspects/

Related papers

Here you can find publications related to SOFA for dynamic languages (publications related to SOFA 2 in general can be found on the separated page).

  • Keznikl J., Malohlava M., Bures T., Hnetynka P.: Extensible Polyglot Programming Support in Existing Component Frameworks, Accepted for publication in Proceedings of 37th Euromicro Conference on Software Engineering and Advanced Applications, Oulu, Finland, Aug 2011.
  • Keznikl J.: SOFA 2 runtime support for dynamic languages, Master Thesis, advisor: Michal Malohlava, Aug 2010 WWW

SOFA for Java ME

Development of applications for embedded devices is a daunting task particularly due to the diversity of used hardware. Technologies like Java ME attempt to provide unified programming model in the spirit of slogan "write once - run anywhere"; however the platform specifics still linger. Applications for embedded devices could therefore benefit from the use of component-based development where platform-specific parts can be separated into well-defined easily replaceable components.

The goal of SOFA for Java ME profile is to allow SOFA 2 component applications to be deployed in Java ME environment, particularly CLDC configuration with MIDP profile. The implementation is based on transformation of SOFA 2 component application into MIDlet application. This transformation includes pre-generation of code for static instantiation of components which is normally done dynamically by interpreting component descriptions. The result of the transformation is standalone MIDlet package that contains all necessary code - this includes adjusted component runtime and components themselves. The development process of SOFA 2 applications is also adjusted to support new deployment process.


SOFA for JME source code is a part of SOFA 2 SVN repository. To check out source code use the following SVN command:

svn checkout svn://svn.forge.objectweb.org/svnroot/sofa/trunk/sofa-j2me/trunk/


SOFA for LeJOS is the SOFA profile targeting the LeJOS NXJ platform, which is a small Java virtual machine running on the LEGO NXT brick. Basicaly, this is an extension of the SOFA for Java ME platform.


SOFA for LeJOS source code is a part of SOFA 2 SVN repository. To check out source code use the following SVN command:

svn checkout svn://svn.forge.objectweb.org/svnroot/sofa/trunk/sofa-lejos/trunk/


The SOFA 2 UML is a compound of Eclipse plug-ins which extends the SOFA 2 IDE with an ability of generation SOFA 2 entities from the UML component model. It introduces a mapping model, that connects a source UML model with a SOFA 2 project, and its editor where a mapping between UML and SOFA 2 entities can be easily specified.


SOFA UML source code is a part of SOFA 2 SVN repository. To check out source code use the following SVN command:

svn checkout svn://svn.forge.objectweb.org/svnroot/sofa/trunk/sofa-uml/trunk/

SOFA UML can be also installed via SOFA 2 Eclipse update site located at http://sofa.ow2.org/update-site/.


SOFA UML is described in the following guides:

User's guide PDF-icon

It provides descriptions of SOFA UML concepts from the users point of view. It describes basic utilization of SOFA UML including installation, UML model creation, its transformation and deployment.

Developer's guide PDF-icon

The developer's documentation gives an overview of implementation involving description of extension points.