Content deleted Content added
Tags: Reverted Mobile edit Mobile web edit |
EPL 2 |
||
Line 1:
{{
{{Infobox software
| name = Acceleo
| logo = Logo-acceleo.gif
|
| caption =
| developer = [[Eclipse Foundation]]
| latest release version = {{wikidata|property|edit|reference|P348}}
| latest release date = {{start date and age|{{wikidata|qualifier|P348|P577}}}}
| latest preview version =
| latest preview date =
| programming language = [[Java (programming language)|Java]]
|
| genre = [[Automatic programming|Code generator]]
| license = [[Eclipse Public License 2.0]]
}}
'''Acceleo''' is an open-source code generator from the [[Eclipse Foundation]] that allows people to use a [[Model-driven architecture|model-driven]] approach to building applications. It is an implementation of the "[[MOFM2T]]" standard, from the [[Object Management Group]] (OMG), for performing model-to-text transformation.
== History and development ==
=== Early versions ===
The Acceleo project is born in 2006 with the website Acceleo.org. Acceleo 1.0 was licensed under the GNU Public Licence (GPL) and it was compatible with Eclipse 3.0, 3.1 and several modelers based on [[Eclipse Modeling Framework|EMF]] and [[Unified Modeling Language|UML]] 1.2. A few weeks later, Acceleo 1.1<ref name="acceleo.org">{{in lang|en}} {{cite web|url=http://www.acceleo.org/pages/nouveautes-d-acceleo-1-1-0/en|title=Acceleo 1.1.0 release notes|accessdate=2011-08-10}}</ref> brought the compatibility with Eclipse 3.2 and [[Unified Modeling Language|UML]] 1.3. Acceleo changed its licence with the release of Acceleo 1.2 to adopt the Eclipse Public Licence (EPL) used by the projects of the Eclipse Foundation. Acceleo 2<ref>{{in lang|en}} {{cite web|url=http://www.acceleo.org/pages/telechargement-acceleo-1-2-0/en|title=Acceleo 1.2.0 release notes|accessdate=2011-08-10}}</ref> was available on June 5, 2007, after the launch of the website planet.acceleo.org which includes articles created by the members of the Acceleo community and the Acceleo modules repository which contains code generators based on Acceleo 2.
=== Entrance in the Eclipse Foundation ===
In 2009, while moving to Acceleo 3, the project has been accepted in the Eclipse Foundation. During this transition, the language used by Acceleo to define a code generator has been changed to use the new standard from the OMG for model to text transformation, MOFM2T. With the release of Eclipse 3.6 Helios, Acceleo is included in the Eclipse simultaneous release train as an official project of the Eclipse Foundation. Acceleo is an Eclipse plugin and as such it is integrated in the Eclipse IDE. Acceleo is built on top of several key Eclipse technologies like [[Eclipse Modeling Framework|EMF]] and, since the release of Acceleo 3, the Eclipse implementation of OCL. OCL is a standard language from the OMG to navigate in models and to define constraints on the elements of a model.
=== Trademark ===
While the Acceleo source code is open source, the Acceleo trademark and its logo, integrated in Acceleo, are not open source. They were the trademark of the company Obeo, creator of Acceleo, and they were transferred to the [[Eclipse Foundation]] when Acceleo was accepted as an official project.<ref>{{in lang|en}} {{cite web|url=http://www.eclipse.org/legal/logo_guidelines.php|title=Eclipse logo guidelines|accessdate=2011-08-10| archiveurl= https://web.archive.org/web/20110629073232/http://www.eclipse.org/legal/logo_guidelines.php| archivedate= 29 June 2011 <!--DASHBot-->| url-status= live}}</ref>
=== Source code ===
Acceleo is an Eclipse project mostly developed in [[Java (programming language)|Java]]<ref>{{in lang|en}} {{cite web|url=http://www.ohloh.net/p/acceleo-eclipse/analyses/latest|title=Ohloh code analysis|accessdate=2011-08-10|archive-date=2012-03-15|archive-url=https://web.archive.org/web/20120315010618/http://www.ohloh.net/p/acceleo-eclipse/analyses/latest|url-status=dead}}</ref> and available under the Eclipse Public Licence (EPL). The source code of Acceleo 1.x and 2.x is available on SVN on the website of the OW2 Consortium.<ref>{{in lang|en}} {{cite web|url=http://forge.ow2.org/projects/acceleo|title=Acceleo 1 & 2 source code on the OW2 Forge|accessdate=2011-08-10|archive-date=2011-07-17|archive-url=https://web.archive.org/web/20110717053332/http://forge.ow2.org/projects/acceleo/|url-status=dead}}</ref> With its entrance in the Eclipse Foundation in 2009, the source code of Acceleo 3 was transferred from SVN to a CVS based repository on the servers of the Eclipse Foundation.<ref>{{in lang|en}} {{cite web|url=http://dev.eclipse.org/viewcvs/viewvc.cgi/org.eclipse.m2t/org.eclipse.acceleo/?root=Modeling_Project|title=Acceleo 3 source code on CVS (read only)|accessdate=2011-08-10|archive-date=2011-09-27|archive-url=https://web.archive.org/web/20110927063124/http://dev.eclipse.org/viewcvs/viewvc.cgi/org.eclipse.m2t/org.eclipse.acceleo/?root=Modeling_Project|url-status=dead}}</ref> After the release of Eclipse 3.7 Indigo in 2011, the Acceleo project has migrated to Git<ref>{{in lang|en}} {{cite web|url=http://dev.eclipse.org/mhonarc/lists/m2t-dev/msg00643.html|title=Acceleo migrates to Git|accessdate=2011-08-10}}</ref> following the migration started by several official project of the Eclipse Foundation and since July 2011, the Acceleo source code is available on GitHub.<ref>{{in lang|en}} {{cite web|url=https://github.com/eclipse/acceleo|title=Acceleo 3 source code on Github|website=[[GitHub]] |accessdate=2011-08-10}}</ref>
=== Releases ===
* First stable release: Acceleo 1.0.0 available since 1 April 2006
{| class="wikitable"
!colspan="5"|Legend:
|-
|style="white-space:nowrap;background-color:#FFFF80;" width="20%" align="center"|Previous versions
|style="white-space:nowrap;background-color:#40CC40;" width="20%" align="center"|Latest stable release
|style="white-space:nowrap;background-color:#1E90FF;" width="20%" align="center"|Next release
|}
{| class="wikitable"
! Version
! Release date
! Release log
|-
|style="white-space: nowrap;background-color:#FFFF80;"| 1.0
| 1 April 2006
| First version of Acceleo available under the GPL licence, code generation from [[Eclipse Modeling Framework|EMF]] based models.
|-
|style="white-space: nowrap;background-color:#FFFF80;"| 1.1
| 20 October 2006
| Compatibility with Eclipse 3.2, support for models created with GMF, ArgoUML, Poseidon, Umbrello and Rational Rose.<ref name="acceleo.org"/>
|-
|style="white-space: nowrap;background-color:#FFFF80;"| 1.2
| 5 January 2007
| Switch to the Eclipse Public Licence (EPL), new indentation service, parameterized launcher, Ant compatibility.<ref>{{in lang|en}} {{cite web|url=http://www.acceleo.org/pages/nouveautes-d-acceleo-1-2-0/en|title=Acceleo 1.2.0 release notes|accessdate=2011-08-10}}</ref>
|-
|style="white-space: nowrap;background-color:#FFFF80;"| 2.0
| 5 June 2007
| Language improvements, XML compatibility, export of generators as Eclipse plugin.<ref>{{in lang|en}} {{cite web|url=http://www.acceleo.org/pages/nouveautes-d-acceleo-2-0-0/en|title=Acceleo 2.0.0 release notes|accessdate=2011-08-10}}</ref>
|-
|style="white-space: nowrap;background-color:#FFFF80;"| 2.1
| 12 July 2007
| Compatibility with Eclipse 3.3, code generator debugger.<ref>{{in lang|en}} {{cite web|url=http://www.acceleo.org/pages/nouveautes-d-acceleo-2-1-0/en|title=Acceleo 2.1.0 release notes|accessdate=2011-08-10}}</ref>
|-
|style="white-space: nowrap;background-color:#FFFF80;"| 2.2
| 7 January 2008
| Localization support, support for different encoding of the templates, release of the following generators: JEE, PHP, Python and WISS.<ref>{{in lang|en}} {{cite web|url=http://www.acceleo.org/pages/nouveautes-d-acceleo-2-2-0/en|title=Acceleo 2.2.0 release notes|accessdate=2011-08-10}}</ref>
|-
|style="white-space: nowrap;background-color:#FFFF80;"| 2.3
| 25 July 2008
| Compatibility with Eclipse 3.4, ability to call standard EOperations defined in the model, search references.<ref>{{in lang|en}} {{cite web|url=http://www.acceleo.org/pages/nouveautes-d-acceleo-2-3-0/en|title=Acceleo 2.3.0 release notes|accessdate=2011-08-10}}</ref>
|-
|style="white-space: nowrap;background-color:#FFFF80;"| 2.4
| 25 September 2008
| Possibility to export a generator as a stand-alone module or as a RCP application.<ref>{{in lang|en}} {{cite web|url=http://www.acceleo.org/pages/nouveautes-d-acceleo-2-4-0/en|title=Acceleo 2.4.0 release notes|accessdate=2011-08-10}}</ref>
|-
|style="white-space: nowrap;background-color:#FFFF80;"| 2.5
| 3 December 2008
| Generation profiler, actions on the outline.<ref>{{in lang|en}} {{cite web|url=http://www.acceleo.org/pages/nouveautes-d-acceleo-2-5-0/en|title=Acceleo 2.5.0 release notes|accessdate=2011-08-10}}</ref>
|-
|style="white-space: nowrap;background-color:#FFFF80;"| 2.6
| 26 June 2009
| Compatibility with Eclipse 3.5 Galileo.<ref>{{in lang|en}} {{cite web|url=http://www.acceleo.org/pages/nouveautes-d-acceleo-2-6-0/en|title=Acceleo 2.6.0 release notes|accessdate=2011-08-10}}</ref>
|-
|style="white-space: nowrap;background-color:#FFFF80;"| 2.7
| 6 April 2010
| Improvement of the profiler, compatibility with [[Enterprise Architect (Visual Modeling Platform)|Enterprise Architect]].<ref>{{in lang|en}} {{cite web|url=http://www.acceleo.org/pages/nouveautes-d-acceleo-2-7-0/en|title=Acceleo 2.7.0 release notes|accessdate=2011-08-10}}</ref>
|-
|style="white-space: nowrap;background-color:#FFFF80;"| 3.0
| 15 June 2010<ref name="acceleo_downloads">{{in lang|en}} {{cite web|url=https://www.eclipse.org/acceleo/download.html|title=Acceleo Download|accessdate=2019-07-06}}</ref>
| New language to define code generators based on MOFM2T, support for OCL based queries, real time compilation with error detection.<ref>{{in lang|en}} {{cite web|url=http://wiki.eclipse.org/Acceleo/ReleaseReview/Helios#Helios_Release_Highlights|title=Acceleo 3.0.0 release notes|accessdate=2011-08-10}}</ref>
|-
|style="white-space: nowrap;background-color:#FFFF80;"| 3.1
| 7 June 2011<ref name="acceleo_downloads"/>
| Support for documentation for generators, detection of potential errors with warning, Maven support, binary compilation of the generator.<ref>{{in lang|en}} {{cite web|url=http://wiki.eclipse.org/Acceleo/ReleaseReview/Indigo#New_and_noteworthy|title=Acceleo 3.1.0 release notes|accessdate=2011-08-10}}</ref>
|-
|style="white-space: nowrap;background-color:#FFFF80;"| 3.2
| 27 October 2011<ref name="acceleo_downloads"/>
| Next major release of Acceleo with the new "Interpreter" view to evaluate Acceleo expression on a given set of model element.<ref>{{in lang|en}} {{cite web|url=http://wiki.eclipse.org/Acceleo/ReleaseReview/3.2#New_and_noteworthy|title=Acceleo 3.2.0 release notes|accessdate=2011-10-27}}</ref>
|-
|style="white-space: nowrap;background-color:#FFFF80;"| 3.3
| 29 May 2012<ref name="acceleo_downloads"/>
| Next major release of Acceleo.<ref>{{in lang|en}} {{cite web|url=https://wiki.eclipse.org/Acceleo/ReleaseReview/3.3|title=Acceleo 3.3.0 release notes|accessdate=2015-03-05}}</ref>
|-
|style="white-space: nowrap;background-color:#FFFF80;"| 3.4
| 10 June 2013<ref name="acceleo_downloads"/>
| Next major release of Acceleo.<ref>{{in lang|en}} {{cite web|url=http://wiki.eclipse.org/Acceleo/New_And_Noteworthy#Acceleo_3.4.0|title=Acceleo 3.4.0 release notes|accessdate=2015-03-05}}</ref>
|-
|style="white-space: nowrap;background-color:#FFFF80;"| 3.5
| 10 June 2014<ref name="acceleo_downloads"/>
| Next major release of Acceleo.<ref>{{in lang|en}} {{cite web|url=http://wiki.eclipse.org/Acceleo/New_And_Noteworthy#Acceleo_3.5.0|title=Acceleo 3.5.0 release notes|accessdate=2015-03-05}}</ref>
|-
|style="white-space: nowrap;background-color:#FFFF80;"| 3.6
| 8 June 2015<ref name="acceleo_downloads"/>
| Next major release of Acceleo.<ref>{{in lang|en}} {{cite web|url=https://projects.eclipse.org/projects/modeling.acceleo/reviews/3.6.0-release-review|title=Acceleo 3.6.0 release notes|date=2015-06-10}}</ref>
|-
|style="white-space: nowrap;background-color:#40CC40;"| 3.7
| 15 October 2016<ref name="acceleo_downloads"/>
| Next major release of Acceleo.<ref>{{in lang|en}} {{cite web|url=https://projects.eclipse.org/projects/modeling.acceleo/reviews/3.7.0-release-review|title=Acceleo 3.7.0 release notes|date=2016-11-16}}</ref>
|}
== Supported platforms ==
Acceleo is written in [[Java (programming language)|Java]] and is deployed as a plugin in the Eclipse IDE. Acceleo is supported on Java 5+ based environments, on the following platforms:
* [[Linux]]
* [[macOS]]
* [[Windows XP]], [[Windows Vista]], [[Windows 7]]
==
Starting with Acceleo 3, the language used to define an Acceleo code generator is an implementation of the MOFM2T standard. This code generation language uses a template based approach. With this approach, a template is a text containing dedicated part where the text will be computed from elements provided by the inputs models. Those dedicated parts are most of the time expressions specified on the entity of the input models used to select and extract information from those models. Within Acceleo, those expression are based on the Eclipse implementation of the OCL language.
==
Acceleo provides tools for code generation from [[Eclipse Modeling Framework|EMF]] based models. Thanks to those tools, Acceleo allows, for example, incremental generation. Incremental generation gives people the ability to generate a piece of code and then modify the generated code and finally regenerating the code once again without losing the previous modifications.
Acceleo also allows:
* code generation from any kind of metamodel compatible with [[Eclipse Modeling Framework|EMF]] like [[Unified Modeling Language|UML]] 1, [[Unified Modeling Language|UML]] 2 and even custom metamodels ([[Domain-specific language|DSLs]])
* customization of the generation with user defined templates
* generation of any textual language ([[C (programming language)|C]], [[Java (programming language)|Java]], [[Python (programming language)|Python]], etc.)
=== Editor ===
Acceleo contains a code generation modules editor with syntax highlighting, completion, real time error detection and refactoring.
[[Image:Acceleo-editor.png|500px|alt=The Acceleo editor|The Acceleo editor]]
=== Debugger ===
The Acceleo debugger gives the possibility to keep an eye on the progression of a generation. It let the user pause a generation with a break point, check the state of the variables and move step by step during a generation to identify problems.
[[Image:Acceleo-debugger.png|500px|alt=Debugger|Debugger]]
=== Profiler ===
The profiler allow the user to figure out all the instructions executed during the generation, the number of time that those instructions have been executed and the time taken by each of those instructions. Profiling data are available in an [[Eclipse Modeling Framework|EMF]] models after a generation launched with the profiler. It gives the user the ability to find bottleneck in the code generator created.
[[Image:Acceleo-profiling-model.png|500px|alt=Acceleo profiling data]]
=== Traceability ===
The Acceleo engine can compute traceability information of all the elements involved in the generation of a file. This system allows, for example, to determine the elements from the input models that have been used to generate a specific piece of text and the part of the code generator that has been involved.
[[Image:Acceleo-traceability-result.png|500px|alt=Traceability in Acceleo|Traceability in Acceleo]]
== Stand-alone use ==
The parser and the generation engine, critical components of Acceleo, can also be used in "stand-alone", without being deployed on Eclipse. Acceleo generates a Java class to launch the generation programmatically thus allowing the integration of an Acceleo generator in any Java application. This Java launcher can also be called from Ant or Maven.
== Compatibility ==
The latest release of Acceleo is compatible with:<ref>{{in lang|en}} {{Cite web|url=https://projects.eclipse.org/projects/modeling.acceleo/releases/3.7.0/plan|title=Acceleo 3.7.0 Release Plan|date=2016-11-16|language=en}}</ref>
* Stand alone Java 6 runtime
* Eclipse 3.7 Indigo
* Eclipse 3.8 Juno
* Eclipse 4.3 Kepler
* Eclipse 4.4 Luna
* Eclipse 4.5 Mars
* Eclipse 4.6 Neon
Acceleo is based on the modeling framework [[Eclipse Modeling Framework|EMF]]. Thus it is compatible with any tool that can produce EMF compatible models.
== Example ==
Acceleo can use any EMF compatible models defined from any kind of metamodel like [[Unified Modeling Language|UML]] or even a custom [[Domain-specific language|DSLs]]. From this metamodel, the user can define a code generator that will produce any kind of textual language from a model using the metamodel.
{|
| [[Image:Acceleo Input Model.png|thumb|upright|alt=A simple EMF model|A simple EMF model]]
| [[Image:Acceleo Template.png|thumb|upright|alt=A simple Acceleo module|A simple Acceleo module]]
| [[Image:Acceleo Code Generated.png|thumb|upright|alt=The code generated|The code generated]]
|}
Here we are using the following elements: EClass, EAttribute and EOperation from [[Eclipse Modeling Framework|EMF]]. Thanks to the simple module and this input model, Acceleo can generate the former code. The module defined in this example is parameterized to generate Java but the MOFM2T standard is independent of the generated code. When the generator is created, the user can use another model to generate a piece of code with a similar appearance but with a different content. Acceleo integrates several code generation examples to generate Java and Python.
== Awards ==
{| class="wikitable sortable" style="text-align:center;"
|+ Awards received by Acceleo
! scope=col | Title
! scope=col | Author
! scope=col | Date
! scope=col | Link
|-
|style="width:350px"| Best Open Source Eclipse-Based Developer Tool 2009
|style="width:150px"| [[Eclipse Foundation]]
|style="width:150px"| 1 March 2009
|style="width:350px"| {{in lang|en}} Eclipse Community Awards Winners Announced
|-
| Open Innovation Award 2010
| Open World Forum
| 1 November 2010
| {{in lang|en}} Open World Forum Awards
|}
== Community and communication ==
The Acceleo community is gathered around the Acceleo part of the website of the Eclipse Foundation. The Acceleo documentation<ref>{{in lang|en}} {{cite web|url=http://eclipse.org/acceleo/documentation/|title=Acceleo documentation|accessdate=2011-08-10}}</ref> is accessible online on the Eclipse Help Center<ref>{{in lang|en}} {{cite web|url=http://help.eclipse.org/indigo/index.jsp?nav=%2F5|title=Acceleo documentation on the Eclipse Help Center|accessdate=2011-08-10}}</ref> and on the wiki of the Acceleo project.<ref>{{in lang|en}} {{cite web|url=http://wiki.eclipse.org/Acceleo|title=Acceleo wiki|accessdate=2011-08-10}}</ref>
=== Conferences ===
The developers of Acceleo are also communicating with the community thanks to presentation realized in MDA or Eclipse conferences.
{| class="wikitable" style="text-align:center;"
! Name
! Date
! Location
! Title of the presentation
|-
|style="width:250px"| MDA approach conference
|style="width:150px"| 23 November 2006
|style="width:150px"| Geneva
|style="width:450px"|
|-
| SOA/MDA
| 2006-30-11
| Luxembourg
|
|-
| [[EclipseCon]] 2007
| 6 March 2007
| Los Angeles
|
|-
| Eclipse Summit Europe 2008
| 10 October 2008
| Ludwigsburg
|
|-
| EclipseCon 2009
| 25 March 2009
| Los Angeles
| Eclipse MTL: a Real Standard Alternative for Code Generation<ref>{{in lang|en}} {{cite web|url=http://www.eclipsecon.org/2009/sessions?id=387 |title=EclipseCon 2009 - Eclipse MTL: a Real Standard Alternative for Code Generation |accessdate=2011-08-10 |url-status=dead|archiveurl=https://web.archive.org/web/20110728120245/http://www.eclipsecon.org/2009/sessions?id=387 |archivedate=2011-07-28 }}</ref>
|-
| Eclipse Summit Europe 2009
| 28 August 2009
| Ludwigsburg
| From Acceleo.org to Eclipse Modeling
|-
| Eclipse Con 2010
| 22 March 2010
| Los Angeles
| Acceleo Code Generation: Let's start with an Android example
|-
| Eclipse Summit Europe 2010
| 3 November 2010
| Ludwigsburg
| Creating a Language for Android Apps with Eclipse Modeling<ref>{{in lang|en}} {{cite web|url=http://www.eclipsecon.org/summiteurope2010/sessions/?page=sessions&id=1833 |title=Eclipse Summit Europe 2010 - Creating a Language for Android Apps with Eclipse Modeling |accessdate=2011-08-10 |url-status=dead|archiveurl=https://web.archive.org/web/20111001095754/http://www.eclipsecon.org/summiteurope2010/sessions/?page=sessions&id=1833 |archivedate=2011-10-01 }}</ref>
|-
| Topcased Days 2011
| 4 February 2011
| Toulouse
| Acceleo<ref>{{in lang|en}} {{cite web|url=http://www.topcased.org/index.php/content/view/53|title=Topcased Days 2011 - Acceleo|accessdate=2011-08-10|archive-date=2011-08-19|archive-url=https://web.archive.org/web/20110819145529/http://www.topcased.org/index.php/content/view/53|url-status=dead}}</ref>
|-
| Code Generation 2011
| 26 May 2011
| Cambridge
| And you thought you knew template based code generator?<ref>{{in lang|en}} {{cite web|url=http://www.codegeneration.net/cg2011/sessioninfo.php?session=24|title=Code Generation 2011 - And you thought you knew template based code generator?|accessdate=2011-08-10|archive-date=2011-09-27|archive-url=https://web.archive.org/web/20110927165244/http://www.codegeneration.net/cg2011/sessioninfo.php?session=24|url-status=usurped}}</ref>
|}
==References==
{{
==External links==
{{
*{{official website}}
{{Eclipse Foundation}}
[[Category:Eclipse (software)]]
[[Category:
[[Category:
[[Category:
|