Fractal - Juliac


Juliac is a framework for generating and compiling the source code of the infrastructure (so called membranes) which is needed to run a Fractal/Java application. The application can then be run without having to use ASM to generate on-the-fly classes for interfaces, controllers and merge strategies. Juliac is an alternative to Julia in cases where dynamic code generation and loading is problematic.

The name Juliac stands for "Julia Compiler".


The latest version of Juliac is 2.1.5 and is available as:

In addition, Juliac can be retrieved as a Maven artifact on the OW2 Maven repository.



Juliac provides three main operational modes depending on the level of reconfigurability which is needed for the application and the infrastructure:

  1. No reconfiguration: in this mode, a single Java class containing all the business code of the components contained in the architecture is generated. This mode does not provide any reconfiguration property since the interactions between components are inlined in the generated Java class. This mode is useful when one wants a highly optimized application while keeping the advantages of an architectural and component based description of her/his application.
  2. Application level reconfiguration: in this mode, a set of Java classes are generated to ensure that the architecture of the application is made introspectable and reconfigurable at runtime with the Fractal API. This mode is the most common one when programming Fractal/Java applications. This is the mode which is available with Julia.
  3. Application and infrastructure level reconfiguration: in this mode, both the application and the infrastructure are introspectable and reconfigurable with the Fractal API. The infrastructure is composed of so-called component-based control membranes. This mode is the direct successor of the contribution which has been made in the AOKell framework and ported to Julia since version 2.5 in the Koch module.

The following table compares the positioning of these three modes in Julia/Koch and Juliac.

No reconfigurationApplication level reconfigurationApplication and infrastructure level reconfiguration
Juliamissing4 merge levelsKoch

Note: the 4 merge levels of Julia are none, mergeControllers, mergeControllersAndInterceptors, mergeControllersAndContent, mergeControllersInterceptorsAndContent.

The Juliac OO and MERGE_ALL optimization levels are equivalent in the sense that they provide the same level of reconfigurability for the application. Yet, the MERGE_ALL mode leads to component with a smaller memory footprint. Indeed, with the MERGE_ALL mode, which is equivalent to mergeControllersInterceptorsAndContent in Julia, a single Java class merging the business code, the control code and the interception code is generated per component. Whereas, with the OO mode, which is equivalent to none in Julia, the business, control and interception code parts are kept separated in different classes and assembled together with an internal data structure.

The Juliac framework is used in the platforms which are developed in the context of the following funded projects: ANR SCOrWare, ANR FAROS and PICOM CAPPUCINO.

Mailing list

Questions, comments, ideas, etc. related to Juliac can be posted on the Fractal mailing list.

Copyright © 1999-2005, ObjectWeb Consortium | contact | webmaster | Last modified at 2012-12-03 09:57 PM