6 RELATED WORK
There are many text emission tools such as Java
Emitter Templates (JET), Apache Velocity, Acceleo,
Epsilon Generation Language (EGL), Xpand, and
Xtend.
JET was one of the most commonly-used Eclipse-
based textual generation tools due to its ease of use
and straightforwardness. In order to use JET, a
developer will need to create a Java project
containing the JET nature. JET has a JSP-like syntax,
and it uses a skeleton template to customize text
emission. JET does not provide a concise way to
define rules that relate different JET files. It aims to
reduces the complexity of text emission by using a
single emitter method with no parameters. However,
this approach requires additional configurations and
eclipse dependencies, and restricts code development
options.
Velocity Template Engine (VTL) is a part of the
Apache Velocity project (Carnell, Harrop, and Mittal,
2006). Velocity provides an easy way to develop
generation units based on a Model-View-Controller
(MVC) pattern. Velocity requires dependencies on
third-party libraries. Using Velocity requires a
runtime library to generate the outputs of the VM
files. This means that a Velocity configuration as well
as the developed VM files must be a part of any
product release.
Acceleo (or MTL) is an Eclipse modelling project
that enables UML modelling and code generation. It
follows the Object Management Group (OMG)
specifications for the Model to Text Language (MTL)
standard. Acceleo is installed on the top of Eclipse,
and it requires additional libraries such as EMF and
Ecore. The code generation requires familiarity with
model-driven development tools and knowledge of
ECore. An Acceleo model is written using the Eclipse
Ecore XML Metadata Interchange (XMI) syntax.
This model can have a hierarchical representation. It
is used to define and associate the generation units, as
well as the parameters and items required to generate
the content of template files; i.e. Model Template
(MT).
Xtend is an Eclipse-based project that was
initially released as a part of the Xtext project (Xtend,
2017). After that, Xtend became a standalone Eclipse
project. Xtend is intended to replace the Xpand
workflow. Being influenced by many languages and
projects such as Scala and Xpand, Xtend tries to
improve the Java programming language by
introducing additional capabilities and major features
such as functional programming, text emission,
operator overloading, and dynamic typing. Similarly
to velocity, Xtend is restricted to Java applications
only and requires a runtime library.
Epsilon Generation Language (EGL) or simply
Epsilon is an Eclipse project that gives several
options in terms of code generation including text
emission. In a similar manner to Acceleo, a model is
used to manage the content of a generation process.
Epsilon has an advantage over Acceleo that there is
no specific restriction on a certain model type. The
Epsilon Model Connectivity (EMC) layer is used to
enforce a model-driven paradigm by associating
metamodels of several types such as EMF or XML
There are several features and capabilities provided
by the Epsilon script such as expression statements,
polymorphism and annotations. However, these
capabilities are dependent on a runtime library,
meaning that it will have the same limitations that we
referred to in Velocity.
7 CONCLUSIONS
Umple, as both a modeling and programming
language, provides a unified approach to develop
executable models. One goal of Umple to enable
usable textual modeling. Another is to ensure that
both Umple sources and any generated systems avoid
dependency on third party libraries or IDEs. The
introduction of Umple as a Template Language
(Umple-TL) has helped achieve this goal.
Similarly to other features of Umple, Umple-TL
is target-language-agnostic. We showed during our
discussion in this paper that we were able to write
Umple models with the assumption that a target
language can be C++, PHP or Java. Language-
independence is one of the core advantages that
Umple-TL can provide as opposed to some of the
commonly used template generation tools such as
JET (Eclipse, 2003), Xtend (Xtend, 2017), and
Apache Velocity (Carnell et al., 2006), which all
restrict the development to Java.
Umple provides a high level of abstraction; this
requires ensuring that development will be on a single
artifact; an Umple model or a collection of Umple
models. Thus, using Umple-TL, all template
development will be in Umple without asking users
to switch among different development contexts,
compilers, file types or IDEs.
We showed that compared to JET, Umple-TL can
help reduce the emission time and generated code
size, while not impacting source size. Also, with
Umple-TL, developers can take advantages of UML,
and object orientation features that Umple provides.