Java 我需要使用Xtend/Acceleo吗?

Java 我需要使用Xtend/Acceleo吗?,java,xtend,Java,Xtend,我已经创建了一个Ecore元模型,并通过EMF生成了一个编辑器。为了生成输出代码,我在创建图时解析资源集(XMI),然后将这些资源映射到我自己的Java类。这些Java类负责生成我的输出,即基于少量模板文件(.stg)的一些javascript文件。 一切正常,但我的问题是,Xtend/Acceleo等技术从何而来?我需要它们吗?我知道它们是基于模板的,但既然我有自己的模板,这些模板是通过Java类呈现的,为什么我需要使用Xtend呢?我完全糊涂了 非常感谢Xtend是一种通用语言。你可以称之为

我已经创建了一个Ecore元模型,并通过EMF生成了一个编辑器。为了生成输出代码,我在创建图时解析资源集(XMI),然后将这些资源映射到我自己的Java类。这些Java类负责生成我的输出,即基于少量模板文件(.stg)的一些javascript文件。 一切正常,但我的问题是,Xtend/Acceleo等技术从何而来?我需要它们吗?我知道它们是基于模板的,但既然我有自己的模板,这些模板是通过Java类呈现的,为什么我需要使用Xtend呢?我完全糊涂了


非常感谢

Xtend是一种通用语言。你可以称之为“更好的Java”。这对于模板来说尤其如此,因为Xtend具有良好的性能。因此,如果希望生成器代码更具可读性,可以用Xtend类替换一些Java类。您不需要重写所有内容,Xtend可以与Java无缝互操作。只需重写那些从Xtend丰富的语言特性中获益最多的部分。

您使用的是eclipse企业建模框架(EMF)。这为您提供了ECore元模型,并可以生成基于对话框的基本编辑器。基本上,EMF将图表从XMI文件格式转换为标准化的对象模型,类似于DOM

您可能还使用图形编辑器框架(GEF)来可视化图表。它获取DOM并将其呈现为图形表示。通常,您还可以使用图形用户界面修改图形,这样也会更改DOM的内容

与GEF并行,还存在一个名为xText的文本编辑器框架。它将DOM转换为文本表示。然后可以使用文本编辑器更改文本表示。xText可以解析此更改的文本并相应地更改DOM。此外,它还生成了一个很好的Eclipse编辑器,具有语法高闪电、代码折叠、代码完成以及自定义代码完成和重构扩展的可能性

XBase可以扩充xText。XBase是一种在Java虚拟机上运行的基本编程语言。然后,您可以提供从ECore人工制品到XBase概念的映射(例如,哪个ECore对象表示if语句或循环)。XBase然后可以生成Java字节码,从而将ECore模型转换为可运行代码

XTend是一种通用语言。它通常用作非常高级的模板引擎,用于将ECore模型转换为文本。与xText相反,无法将生成的文本转换回ECore DOM。当然,您可以使用任何模板引擎,甚至是xText/xbase,根据需要生成可运行的代码