JastAdd
This is our old website.
Broken links can occur.
A new website is under construction.

Projects

Below is a list of some projects where JastAdd is used.

 

The JastAdd Extensible Java Compiler

The JastAdd Extensible Java Compiler is the core project that drives the development of the JastAdd system. The compiler consists of a reusable frontend and backend for Java 1.4. It is thoroughly tested and runs more tests from the Jacks test suite than the javac and jikes compilers. Several of the projects below are implemented as extensions to the Java 1.4 frontend.

Extensions to Java 5 are close to completion, but are not yet up to the same testing standard as the Java 1.4 compiler. The first version of the Java 5 extension was done as a master's thesis project: Java 1.5 as modular language extensions, by Magnus Petersson and Thomas Raneland.

See The JastAdd Extensible Java Compiler for the implementation, including experimental extensions. For more information, contact TorbjöEkman.

The AspectBench compiler

abc is a complete implementation of AspectJ (with some, mostly minor, differences to the original ajc compiler) that aims to make it easy to implement both extensions and optimisations of the core language. It provides an extensible frontend based on the JastAddJ extensible Java compiler, and its backend is built on the Soot framework for Java optimisation.

Bootstrapping the JastAdd system

The JastAdd system is implemented in itself. The bootstrapping of the system is an ongoing project as new features are added to the system. Currently, the implementation is being refactored into a component extending the Java 1.4 frontend. This includes adding the AspectJ-like introduction features as extensions to Java.

For more information, contact TorbjöEkman.

Circular Attributes

Many computations in compilers and static analysis can be expressed declaratively by means of circular attributes in combination with reference attributes and rewrites. In this project we develop evaluation algorithms for circular attributes, and example applications that show how circular attributes can be used for implementing static analysis problems in a modular way.

For more information, contact Eva Magnusson. See also Eva's licentiate thesis from June 2003.

Java for Hard Real-Time Systems

JastAdd is used for the implementation of a Java to C compiler for real-time embedded systems. The C code runs on a variety of platforms, including RTAI Linux, and supports hard real-time execution, including true real-time garbage collection.

For more information, contact Anders Nilsson. See also Anders' licentiate thesis from May 2004.

Language Support for Dynamic Optimization

Efficient development and operation of control systems is essential in industry today and optimization is increasingly used as a standard tool to improve operation. Opmitica is an extension to Modelica that provides language constructs to formulate a wide range of optimization problems, such as parameter estimation, optimal control and state estimation based on Modelica models. For more information, contact Johan Åesson or take a look at this website.

Hardware Compilation

JastAdd is used for implementation of automatic hardware compilation from Java. The compiler is part of a project on rapid prototyping for System on Programmable Chip (SoPC).

For more information, contact Per Andersson. See also Per's PhD thesis from June 2005.

Pervasive Systems

JastAdd is used for implementation of a Java compiler for a new virtual machine for pervasive systems, the Palcom Runtime Environment (PRE). This work is done as part of the EU integrated project Palcom in the 6th Framework Programme.

For more information, contact TorbjöEkman.

Languages for Industrial Robots

JastAdd has been used for development of a compiler and interpreter for ABB's industrial robot language RAPID. In the project, JastAdd has also been used to extend RAPID with domain-specific extensions. The work has been done as a master's thesis project: Modular Interpretation of an Industrial Robot Language, by Lina Olsson and Karin Wanhainen. Further development and integration with physical robot control systems is ongoing, within the FlexAA project and as part of the development of open robot control systems (see the subproject on Extendable Programming).

For more information, contact Klas Nilsson.

Extending PLC langauges

JastAdd has been used in experiments with adding object-oriented concepts to ABB's implementation of the standard IEC 61131-3 for programmable logic controllers (PLCs).

For more information, contact TorbjöEkman. See also Torbjös licentiate thesis from June 2004.

Extending Tiger With Generics

JastAdd has been used to implement the language Tiger (described in the book Modern Compiler Implementation in Java by Andrew Appel). The JastAdd implementation includes the basic language Tiger as well as orthogonal extensions with object oriented features and generic types. The work was done as a master's thesis project, RagTiger, by Martin Sandin in 2004. This work was done prior to the development of JastAdd rewrites, and uses higher-ordered attribute grammars (NTAs).

Undergraduate projects

The JastAdd system is used in the compiler construction course at Lund University. The students develop small compilers from source text to SPARC assembly code. Because the course is of limited scope, only the imperative parts of JastAdd are utilized in the course.

Industry projects

JastAdd is used in some industry projects for the implementation of domain-specific languages.