Introduction


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.

Delta-Oriented Programming

Picture 1: Altering a Software Product using Delta-Oriented Programming.



How does it work?


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.

DeltaJava how-does-it-work

Picture 2: DeltaJava and DeltaEcore artifacts for a minimal DeltaJava project setup and how they interact.

Installation from Update Sites


To install new software to your Eclipse runtime, select "Help" and search for the "Install new Software..." entry. screenshots/screenshot_install_software.jpg Copy the respective URL, add it as location and install the components you wish.

In order to get DeltaJava running in your Eclipse Modelling runtime, you will need the following software installed.

Installation from Source Code


Getting Started


The "DeltaTalk" toy example

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.tu_bs.cs.isf.deltatalk project from the SVN repository location given below. screenshots/screenshot_import_deltatalk.jpg Make sure to choose the "Find projects in the children of the selected resource" option while checking out.

 Copy

After checking out DeltaTalk, you might need to rebuild your workspace. screenshots/screenshot_rebuild_deltatalk.jpg

In DeltaJava, all delta modules are contained inside a designated delta folder. For the "de.tu_bs.cs.isf.deltatalk" 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. screenshots/screenshot_deltatalk_core.jpg

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. screenshots/screenshot_deltatalk_featuremodel.jpg Using this editor, you can select (one or more) feature(s) generate variants accordingly by pressing the "Generate Variant" button. screenshots/screenshot_deltatalk_featuremodel_generate.jpg

A pop-up window will open and ask you to select a generator along with a directory to generate the variant in. screenshots/screenshot_deltatalk_featuremodel_generate_popup.jpg Generally, we recommend you to generate variants into a designated eclipse project (e.g. "de.tu_bs.cs.isf.deltatalk.variant"). 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. screenshots/screenshot_deltatalk_emotebutton.jpg

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.



Basic DeltaJava Tutorial

This Tutorial gives an insight into the basic usage of DeltaJava.

Syntax


This section introduces DeltaJavas syntax and illustrates its operations and functionality with the help of easy to grasp examples.

Publications


DeltaJ 1.5: delta-oriented programming for Java 1.5

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 ...

Download
Compositional type checking of delta-oriented software product lines

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 ...

Download
Refactoring delta-oriented software product lines

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 ...

Download
Family-based analysis of type safety for delta-oriented software product lines

Delta-oriented programming (DOP) is a modular, yet flexible approach for implementing software product lines extending feature-oriented programming ...

Download
Compositional type-checking of delta-oriented programming

Delta-oriented programming is a compositional approach to flexibly implementing software product lines. A product line is represented by a code base ...

Download
Pure delta-oriented programming

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 ...

Download
Delta-oriented programming of software product lines

Feature-oriented programming (FOP) implements software product lines by composition of feature modules. It relies on the principles of stepwise development. Feature modules are ...

Download