写点什么

领域专用语言开源框架 Xtext 2.0 发布了

  • 2011-07-03
  • 本文字数:2376 字

    阅读完需:约 8 分钟

用于开发领域专用语言的获奖开源框架 Eclipse Xtext 最新版本 2.0,作为代号为 Indigo 的 Eclipse 3.7 年度发行版的一部分,已于近日正式发布了。

除了修正了上百个已知问题和增强性能外,Xtext2.0 中还增加了以下新功能:

  • 重构框架及支持富悬浮(Rich Hover)信息;
  • 可以嵌入在任何一种 DSL 中的新表达式语言,以及允许用户在自己的语言中写计算逻辑;
  • 一个静态键入模板语言 Xtend,该语言简化了代码生成器的开发和维护,它已经集成在 Eclipse 工具中。

InfoQ 采访了 Xtext 的创始人、核心架构师 Sven Efftinge 先生。

InfoQ:您给 Xtext 的定位是什么的?

Sven:Xtext 是一个真正的实现编程语言的开源框架。它使用了人们熟知的方法来实现语言,比如解释器、符号表、编译器等。Xtext 的目标是用很少的付出就能给任何一种语言带来像 Eclipse 的 Java 工具那样的东西。

InfoQ: 在 Xtext2.0 的新功能中,您觉得开发者最需要或者最想要的功能是哪一些?为什么?

Sven:在这一版中,我们花了很多的精力进一步提高框架整体的品质和性能。此外,我们还在很多细节上做了一些努力,大大提高了整体编辑体验。Xtext 现在支持重命名重构,这一功能甚至支持跨语言使用,包括 Java 在内。另外,简化悬浮功能的使用或许是很多人所喜欢的。

让 Xtext 达到一个新高度的是可嵌入的表达式语言库。目前为止,用 Xtext 定义结构化语言已经非常的简单了。不幸的是,软件系统并不仅仅是由结构化信息组成的,一定程度上,你还需要定义各种行为和计算逻辑。定义结构化语言虽然很容易,实现支持全面的表达式却是非常复杂的,需要花费很多的精力。以前,比较实用的做法是扩展生成的代码,在其中添加行为,这么做可行但距离理想方式相距甚远。通过 Xtext 2.0,你不仅可以复用完整的语法定义表达式,也可以复用和扩展所有必需的基础架构,包括编译器、键入系统、解释器、当然也包括纯净的 Eclipse 集成。所以,你终于可以把行为描述放在属于它的地方了:DSL 脚本中合适的地方。

Xtext 2.0 还可包含一个静态键入模板语言 Xtend,它尤其适合于写代码生成器。实际上它也是基于新的表达式库的,因此,它既是实现代码生成器的伟大语言,同时也是相当高级的例子,演示了使用 Xtext 可以构建什么类型的语言。

InfoQ:有很多人在使用 Xtext 吗?这些人用 Xtext 主要做什么呢?Xtext 这种 DSL 框架的最佳用途是什么呢?

Sven:我见过各种疯狂的情况,比如编写算法的语言、可执行的音乐乐谱等。也有一些用于复杂语言的商业产品,如 Sigasi 的 VHDL 设计器,以及很多开源项目在使用 Xtext。在 DSL 上,每种类型的应用程序都有自己的最佳点。举例来说,我们看看 Web 应用程序,领域模型就是一个很好的方面,可以用 DSL 来定义的。Rails、Grails、SpringRoo 和 Play! 框架也都在努力尝试着调整现有的语言,从而可以更精确地定义实体等。有了 Xtext,就不用苦苦地在现有的语言上折磨了,你只需要定义领域模型有哪些内容组成,然后写一个代码生成器,把这些概念转换成你正在使用的应用程序平台所需的东西。相当简单,无需任何折中,同时你也得到了一个相当棒的 Eclipse 工具。

数据驱动的移动应用也是一种让人感兴趣的应用类型。有很多方法可以解决跨平台移动开发的挑战。开源框架 APPlause 中带有一个用 Xtext 定义的 DSL,它能让你很轻松地定义某种类型的移动应用,然后部署到不同的移动平台上,如 iOS 或者 Android 平台上。

InfoQ:表达式语言在 GPPLs 或 3GLs 和 DSL 之间搭起了一座桥梁,你怎么看待这二者在未来的 5 年、10 年的发展?

Sven:Scala 语言之父 Martin Odersky 最近刚刚宣布:他们获得了一个 5 年的欧洲研究经费,用于使 Scala 语言更适合并行程序设计。如果你看过他们的提案,你就明白了,他们的做法是实现在 DSL 中嵌入 Scala 表达式,以产生应用特定的代码,从而达到并行的目的。Odersky 在 SE-Radio 的一个非常有趣的采访中谈到了这一点,他解释说对于大量并行处理,通常目的的方法并不理想,但是,为专门领域定义 DSL 是一个可行的途径。他们允许在你的语言的领域特定概念中封装并行语义。你可以看到,Scala 好像也在朝着和 Xtext 一致的方向发展,即现在的 Xtext 在新的表达式类库中已经体现出来的方向。

InfoQ:代码生成好像重新受到了追捧,部分原因是因为像 Xtext 和现在的 Xtend 之类的新框架,但也是因为软件架构变得更加复杂、更加国际化吗?这只是昙花一现呢?还是你看到了 DSL 和代码生成背后,意义更深远的针对抽象复杂软件架构的运动呢?

Sven:代码生成和 DSL 已经是较长一段时间内的主流技术。Ruby on Rails 和 SpringRoo 框架很大程度上基于代码生成的,而每一个 XML schema 或者 DTD 都用很笨拙的泛型语法有效地定义着领域特定语言。Xtext 和 Xtend 是更适合于这种技术的工具。创建很好的抽象也有其他的方法和途径,但是对我来说,重要的是大家能明白 DSL 和代码生成并不能解决每一个问题。就像其他的每一种技术一样,他们也有自己的优点和缺点。作为开发者,你当然也会有像 Xtext 和 Xtend 这样的开发工具箱,但是必须要知道什么时候该使用,什么时候不该使用它们。

InfoQ:越来越多的 DSL 在一定程度上相互补充或者互相重叠,同时也互相竞争,那么 Xtext 如何帮助开发人员在项目中使用不同的 DSL 呢?

Sven:DSL 主要的价值在于高层次的抽象。然而,抽象越多,在其他场景中复用此抽象就会越少。所以,通常人们应当定义自己的、为一个项目而裁剪的简单语言。这样,你就不用必须定义一些无用的概念了。应当让该语言尽可能地专物专用。Xtext 是特地设计成只需花费很少的精力就能定义和发展这类语言的。

此外,自始至终 Xtext 都被设计成任意数量的语言都可能互相集成,甚至和其他非 Xtext 语言如 Java 集成也都不成问题。所以,你感觉不出来像是不同的语言,因为该工具可以无缝地跨不同语言工作。

谢谢!

查看英文原文: Xtext 2.0 Released

2011-07-03 06:096027

评论

发布
暂无评论
发现更多内容

7 月亚马逊云科技培训与认证课程,精彩不容错过!

亚马逊云科技 (Amazon Web Services)

架构师 培训 认证

JDK7 HashMap如何实现?

源字节1号

软件开发 前端开发 后端开发 小程序开发

融云 x 川航: 为民航通信安上“即时之翼”

融云 RongCloud

APISIX 助力中东社交软件,实现本地化部署

API7.ai 技术团队

API网关 社交软件 APISIX Summit

自助洗车机洗车怎么收费和付费

共享电单车厂家

自助洗车加盟 自助洗车收费 自助洗车付费

华为云重磅发布:“乐高式”自动驾驶研发开放平台,携手伙伴共建生态

华为云开发者联盟

自动驾驶 云计算 华为云

Curve 进入 CNCF Sandbox,完善统一云原生开源存储拼图

网易数帆

开源 分布式 云原生 存储 cncf

SQL和Python 哪个更容易自学?

Jackpop

SRE,了解一下?35+岁程序员新选择

华为云开发者联盟

SRE 华为云

阿里云 MSE 基于 Apache APISIX 的全链路灰度方案实践

API7.ai 技术团队

阿里云 MSE APISIX 网关 全链路灰度

基于 Apache APISIX 的自动化运维平台

API7.ai 技术团队

自动化运维 APISIX 网关 APISIX Summit

使用 Amazon EC2 降低 DeepRacer 的训练成本 DeepRacer-for-cloud 的实践操作

亚马逊云科技 (Amazon Web Services)

Amazon EC2 EC2

大数据平台迁移实践 | Apache DolphinScheduler 在当贝大数据环境中的应用

白鲸开源

Apache 大数据 开源 DolphinScheduler workflow

写代码过程中最忌讳什么?

Jackpop

首批 | 腾讯云完成国内首个云原生安全成熟度评估

腾讯安全云鼎实验室

云原生

低代码开发:企业应用构建新模式

力软低代码开发平台

共享自助洗车机让你告别传统洗车

共享电单车厂家

共享自助洗车 自助洗车加盟

如何系统地学习 C++ 语言?太全面了!

Jackpop

测试进阶必备,这5款http接口自动化测试工具不要太香~

伤心的辣条

Python 程序人生 软件测试 自动化测试 接口自动化测试

API 网关 Apache APISIX 助力雪球双活架构演进

API7.ai 技术团队

zookeeper 投资 网关 APISIX APISIX Summit

Jupyter Notebook,太强大了!

Jackpop

24H共享便民自助洗车加盟怎么样

共享电单车厂家

共享自助洗车 自助洗车加盟 24小时自助洗车 便民自助洗车

“互联网+”大学生创新创业大赛来了,欢迎报名龙蜥社区赛题!

OpenAnolis小助手

开源 操作系统 互联网+ 龙蜥社区 大学生创新创业大赛

vue-表单输入绑定

小恺

6月月更

10段实用Python代码,帮我省了几万块钱!

Jackpop

要想自助洗车加盟赚钱记住这几点

共享电单车厂家

自助洗车加盟 自助洗车品牌

开启全方位安全巡检

观测云

自助洗车市场悄然兴起你准备好了吗

共享电单车厂家

自助洗车 自助洗车加盟

FutureTask

急需上岸的小谢

6月月更

@开发者 云端一条生产线,让软件开发更敏捷、更安全

华为云开发者联盟

云计算 敏捷 华为云 devcloud

领域专用语言开源框架Xtext 2.0 发布了_Scala_Jean-Jacques Dubray_InfoQ精选文章