有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Acceleo和Xpand之间有什么区别?

我有一个基于自定义元模型的DSL,而自定义元模型又基于EMF/Ecore。我正试图找出该选择哪种解决方案,但我在任何地方都找不到任何像样的比较

有人有什么理由让我选择一个而不是另一个吗

到目前为止,我知道Acceleo使用OMG标准化语言,但它似乎比Xpand更难使用


共 (5) 个答案

  1. # 1 楼答案

    在我的例子中,我使用一个自定义的元模型(从UML2派生),带有自定义的原型和原型属性。我尝试了Acceleo和Xpand模板语言。事实上,它们在结构和能力方面非常相似

    然而,我可以看到一个很大的区别(这使Xpand在这个用例中变得更好):您可以在Xpand模板中使用您的定制原型。 Xpand引擎为每个原型出色地选择了“最佳匹配模板/规则”(还考虑了原型之间的继承)。 此外,很容易获得原型属性。 这两个“特性”使模板非常优雅、紧凑和可读。 例如:

    «DEFINE myTemplate FOR MyUmlProfile::MyStereoType»
    MyValue: «this.myStereotypeProperty» or simply: «myStereotypeProperty»
    «ENDDEFINE»
    

    在Acceleo中,我发现实现相同的功能(更长的语句,更多的代码)很笨拙,我的模板最终变得冗长而复杂。然而,Acceleo的优点在于它可以方便地从IBM RSA(直接应用于RSA(emx)模型)中工作。它有代码高亮显示和自动完成工作很好

    只有当我将RSA模型导出为“.uml”(~XML)格式时,Xpand才起作用。它不提供代码高亮显示或自动完成(或者至少我不知道怎么做)

    考虑到所有的优点和缺点,我仍然投票支持Xpand(在我的用例中)

  2. # 2 楼答案

    我是个浅尝辄止的人,不是专家

    我的印象是,如果您只需要一种模板语言,那么Xpand就是最好的选择。否则,选择Acceleo——但正如您所说,学习曲线非常陡峭

    什么时候您需要的不仅仅是模板语言?对我来说,当输出的结构(不是内容)依赖于输入的多个独立部分时,它们似乎耗尽了能量。如果你不想进入Acceleo,但是有一个这样的例子,考虑发明一种自动生成的“垫片”语言,它使你从输入语言到输出语言,也许有很多冗余来避免模板生成时间的查找。p>

  3. # 3 楼答案

    基本上,主要区别在于ACCELEO是MOF模型到文本转换语言的实现,该语言是定义模型到文本转换的OMG(对象管理组)标准。因此,它是由设计MOF、UML、SysML和MDA的同一团队设计的标准语言。XPAnd是一种我想在标准之前就存在的语言,但现在它不同于它了

    如果您从零开始,那么从Acceleo开始

  4. # 4 楼答案

    我一直在用旧的2。x Acceleo开发了一个全尺寸项目,并对新项目进行了一些测试。 langage非常容易使用,但是在新版本中绑定一些 当脚本语言不够时,将java代码添加到模板中

    我是2的超级粉丝。x、 但是有了3。x、 我给它添了很多麻烦。例如,您必须编写java代码来处理eclipse资源。当我升级到juno时,我完全放弃了,我的acceleo项目不再有效,我也没有在两天内纠正它。我希望他们会使它更容易使用的开箱即用

  5. # 5 楼答案

    首先,我想知道为什么你认为Acceleo比Xpand更难学,而两种语言都有差异(例如块和分隔符),它们有着相当相似的结构。我不会用这两种语言详细说明所有元素,但是,例如,我看不出以下内容之间有什么区别:

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

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

    这两种语言都是基于模板的语言,因此它们具有完全相同的结构。Acceleo和Xpand之间的主要区别在于Acceleo基于OMG和工具的标准MOFM2T和OCL

    我不太熟悉Xpand工具,但您可以在他们的wiki上找到更多关于它的信息。另一侧的Acceleo包含一个编辑器,其中包含语法高亮显示、代码完成、错误检测、重构等功能。它还包含调试器、探查器、Ant和Maven支持。您还可以轻松地将生成器部署为其他用户的Eclipse插件,或者在常规Java应用程序中使用Eclipse之外的生成器。您可以找到有关Acceleohere的更多信息。您可以在视频中看到Obeo Network上Acceleo的大部分功能(需要注册)

    最后,在开发Acceleo时,xPand as上的最新活动发生了。如果需要,您甚至可以在github上进行Acceleo开发

    斯蒂芬·贝戈多

    免责声明:我是Acceleo开发团队的成员之一