Search code examples
javaeclipseacceleomddxpand

What is the difference between Acceleo and Xpand?


I have a DSL which is based on a custom metamodel, which in its turn is based on EMF/Ecore. I am trying to figure out which solution to choose, and I cant find any decent comparisons anywhere.

Does anyone have any reasons why I should choose one over the other?

What I know so far is that Acceleo uses a OMG standardized language, but it seems harder to use than Xpand.


Solution

  • First of all, I wonder why you consider Acceleo more difficult to learn than Xpand, while both languages have differences (blocks and delimiters for example) they have quite a similar structure. I won't details all the elements in both languages but, for example, I don't see such a difference between something like:

    «FOREACH myAttributes AS a»«a.name»«ENDFOREACH»

    and

    [for (a: Attribute|myAttributes)][a.name/][/for]

    Both are template based languages and as such they have quite the same structure. The main difference between Acceleo and Xpand comes from the fact that Acceleo is based on the standards MOFM2T and OCL from the OMG and the tooling.

    I am not very familiar with Xpand tooling but you can find more about it on their wiki. Acceleo on the other side contains an editor with syntax highlighting, code completion, error detection, refactoring and more. It also contains a debugger, a profiler, Ant and Maven support. You can also easily deploy your generators as Eclipse plugin for other users or use them out of Eclipse in a regular Java application. You can find more information on Acceleo here. You can see in videos most of the features of Acceleo on the Obeo Network (registration required).

    Finally, the latest activity on xPand as occurred a year ago while Acceleo is actively developed. You can even follow the Acceleo development on github if you want.

    Stephane Begaudeau

    Disclaimer: I am one of the member of the Acceleo dev' team.