Showing posts with label xtext. Show all posts
Showing posts with label xtext. Show all posts

Sunday, July 13, 2008

Xtext and Java VM configuration

By developing DSLs with Xtext one usually work with two Eclipse workbenches:
  • one by design-time containing three projects: the grammar, the DSL-editor and the generator,
  • and a second one started from the first where the three DSL-plugin are deployed.
In order to avoid PermGem space problem it is important to configure properly the VM where the second runtime-workbench is started. A good setting is:


-Xms256m -Xmx512m -XX:MaxPermSize=256m

If you are working on Max OS you will possibly get the following errors : "Cannot load 32-bit SWT libraries on 64-bit JVM". To fix the problem I use the following VM parameters:

-d32 -Dosgi.requiredJavaVersion=1.5 -XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts -XX:MaxPermSize=256m -Xms256m -Xmx512m -Xdock:icon=../Resources/Eclipse.icns -XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts

Saturday, June 28, 2008

Graphical versus textual DSLs

We are presently developing for a customer a DSL that aims to map different data structures. Our solution is based an Xtext of oAW. As its name said, Xtext is a framework that enables the development of textual DSLs. Our customer was scarred when he understood that he will have to WRITE code with our DSL. He had in mind a more user friendly DSL, something more graphical.

But is a graphical DSL more user frienly? Here some advantages that textual representations have over graphical notations:
  • while graphical notations are often useful to describe structural concepts (e.g. class diagrams), textual notations are often a better fit for describing behavior or algorithms (e.g. expressions)
  • expert users often find them faster and easier to modify
  • there is a rich set of existing tooling for dealing with text files (diff, merge, copy & paste, search & replace ...).
  • by using any source control systems (CVS, SVN, ...) it is possible to manage different versions of the DSL.
The textual or graphical nature of a DSL represents only the concrete syntax of the language. The abstract syntax is anyway independant of this discussion. This means also that it should alway be possible to transform a textual representation in a graphical one and vice versa.