DeltaJava is a powerful delta-oriented programming language, designed to comfortably create Software Product Lines within the Java environment. The DeltaJava project is implemented in form of a set of Eclipse plug-ins.
The approach of Delta-Oriented Programming (DOP) enables the mighty ability to add, remove or even modify code fragments from a given base product. Picture 1 depicts an example of how to conceptually derive a variant (right side) from a base product (left side) where fragment A is modified, B removed, D added and C untouched.
Herefore, DeltaJava offers various operations and units to contain them in. For references, see our syntax section.
DeltaJava was built with EMFText - "an Eclipse plug-in that allows you to define text syntax for languages described by an Ecore metamodel".
Its delta modules provide a convenient, Java-like way to add, modify and remove Java code as demonstrated in the syntax section.
DeltaJava's architectural base is an EMFText implementation of Java, called JaMoPP (Java Model Printer and Parser) which enables to write native Java code inside DeltaJava's delta modules. DeltaJava defines its operations and units on top of JaMoPP by wrapping the JaMoPP Java code inside them.
As backbone for its variant generation and problem space artifacts, DeltaJava relies on DeltaEcore. For that purpose, the DeltaJava implementation contains a special DeltaEcore dialect for Java (based on JaMoPP). When saving DeltaJava delta modules, DeltaJava will therefore transform its saved delta modules to equivalent DeltaEcore delta modules, using that dialect.
When it comes to problem space artifacts in DeltaJava projects, DeltaEcore feature models offer a convenient, graphical editor for the organization and configuration of variants. A feature mapping is then used to simply map feature selection conditions to appropriate DeltaEcore delta modules (which were automatically generated from DeltaJava delta modules).
Finally, to generate variants from a DeltaJava software product line, the DeltaEcore feature model offers the ability to chose a set of features and thereupon automatically derive a variant.
In order to get DeltaJava running in your Eclipse Modelling runtime, you will need the following software installed.
This is a temporary download link to a full installation of DeltaJava 1.5. Besides DeltaJava, the update site includes all required plug-ins of DeltaEcore, JaMoPP and EMFText common libraries.
In this section, we provide an easy to grasp toy example to get started with DeltaJava; the very simple Chat GUI "DeltaTalk". The project consists of a small collection of delta modules along with an even smaller base of core Java assets. To get an overview of the entire DeltaJava syntax and the possibilites it offers, please refer to our syntax section.
Please check out the
de. project from the SVN repository location given below. Make sure to choose the "Find projects in the children of the selected resource" option while checking out.
In DeltaJava, all delta modules are contained inside a designated delta folder. For the "
de." project, this folder is simply named "deltas/". When applied, its contained delta modules add, modify and/or remove functionality of the project's source folder's core assets. In our particular DeltaTalk example, the core assets' source files implement a fairly simple GUI. You can go ahead and start the project as Java application.
The DeltaTalk example works with DeltaEcore to organize its problem space artefacts which - for this project - are a feature model and delta mapping. To generate variants from the DeltaTalk SPL, open its feature model ("DeltaTalk.defeaturemodel") with the "Feature Model Configurator (DeltaEcore)" editor. Using this editor, you can select (one or more) feature(s) generate variants accordingly by pressing the "Generate Variant" button.
A pop-up window will open and ask you to select a generator along with a directory to generate the variant in. Generally, we recommend you to generate variants into a designated eclipse project (e.g. "
de."). Pressing the OK button will trigger DeltaEcore's variant generation for your selected feature; respective delta modules will be applied. You can test your generated variant by starting the variant project as Java application.
Feel free to change delta modules and play around with DeltaTalk to get a taste of how the variant generation works. For more information about DeltaEcore, visit deltaecore.org.
This Tutorial gives an insight into the basic usage of DeltaJava.
This section introduces DeltaJavas syntax and illustrates its operations and functionality with the help of easy to grasp examples.
This is some explanation text. Yay \o/
Delta-oriented programming (DOP) is a modular, yet flexible approach to implement software product lines. In DOP, a product line is implemented by a set of deltas, which are containers of modifications to a program ...
Delta-oriented programming is a compositional approach to flexibly implementing software product lines. A product line is represented by a code base and a product line declaration. The code base ...
Delta-oriented programming (DOP) is an implementation approach to develop software product lines (SPL). Delta-oriented SPLs evolve over time due to new or changed requirements and need to be maintained to ...
Delta-oriented programming (DOP) is a modular, yet flexible approach for implementing software product lines extending feature-oriented programming ...
Delta-oriented programming is a compositional approach to flexibly implementing software product lines. A product line is represented by a code base ...
Delta-oriented programming (DOP) is a modular approach for implementing software product lines. Delta modules generalize feature modules by allowing removal of functionality. However, DOP requires to select one ...
Feature-oriented programming (FOP) implements software product lines by composition of feature modules. It relies on the principles of stepwise development. Feature modules are ...