论坛首页 Java企业应用论坛

XText原创翻译连载 第一章:XText概述

浏览 2661 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-02-09   最后修改:2011-02-09

 

写在最前面

原创翻译:转载可不说明出处。但至少带上偶下面的G4宣传语。

eRedG4:一个基于Java技术的开放源代码的、面向企业计算环境下异构系统集成与行业应用快速二次开发的平台。

演示:http://web230531.host89.chinajsp.net

下载:http://code.google.com/p/g4-xiongchun/downloads/list

第一章:XText概述

1.1. XText是什么?

        XText可以帮助你创建一套基于文本的小型领域特定语言(DSL),亦或是实现一门成熟的通用的计算机程序设计语言。总而言之,使用XText您可以立刻着手创建一套完全属于你所有的语言。(多么兴奋的一件事啊[译者注]) 而且,如果你已经实现了一套语言,但它又没有良好的工具支持,那么你可以在极短的时间内使用XText为其创建一个基于Eclipse的精致的开发环境(诸如具备代码辅助、代码高亮的代码编辑器等)。我们可以称XText为“语言开发框架“。

1.2. XText基本原理

         XText为你提供了一组领域特定语言(DSL)和模型(Model)的编程接口(APIs),用以描述你所构建语言的不同方面。这样一来,你便可以将你的语言很好的实现并运行在Java虚拟机上。语言的编译器组件是不依赖于Eclipse或者OSGI的,可以被方便的移植到任何Java环境上。它包含语法分析器(parser)、类型安全抽象语法树(AST)、serializer、代码格式化程序(Code Formatter)、域框架以及链接程序、编译检查和静态分析或者说是验证器还有最后一个但很重要的代码发生器和解释器。这些运行时组件和基于Eclipse的模型框架(EMF)结合在一起,便可以使你有效的将XText和其它EMF框架比如,图形化模型框架(GMF)一起使用。
        除了这个精妙的运行时架构,你还将得到为你设计的语言专门量身定做的一个基于Eclipse的基础开发环境。XText已经为你实现了一套缺省的功能强大的IDE功能,当然你也可以非常容易的对DSL以及APIs进行定制和修改。如果你认为不够灵活的话,也可以基雨于Guice(Google发布的轻量级依赖注入框架)自己实现。

1.3. XText超强灵活性

        XText使用轻量级的依赖注入框架Google Guice构建语言以及IDE的底层架构。一个重要的外部组件被作为依赖注入(DI)的配置容器。就像上文提到过的一样,XText提供了很好的缺省IDE实现、DSLs以及APIs并可以很方便的定制。但如果你想实现一些非常个性化的东西,那Goolge Guice也给你提供了一种强大的非侵入式的方法。

1.4. XText的应用领域

        XText有着非常广泛的应用,比如:手机备、汽车智能设备、嵌入式系统、Java企业级应用以及游戏开发等领域。人们使用基于XText的语言去驱动诸如:Java、C\C++、C#、Obj-C、Python、Ruby等目标语言。尽管这种语言本身架构运行于Java虚拟机(JVM),但是你依然可以将XText语言编译到任何目标语言平台上去。基于XText的语言在很多知名的开源项目中都有应用:Maven、Eclipse B3、Eclipse WTP、Google缓冲协议、甚至在搜索引擎项目中也有应用。

1.5. 谁在支持XText

    Xtext是一个专业的开源项目。我们,这个项目的主要开发人员和领导者供职于一家以基于模型开发而闻名的咨询公司:itemis。因此,我们基本上是全职开发和支持这个项目。XTextEclipse.Org开源基金会旗下的一个项目,除了常规意义下的一些好处之外,你不必担心XText会带来任何的版权争议,因为Eclipse基金会有它们专职律师会小心呵护这些知识财富不被非法使用。
    或许你会有这样的质疑:支持我们进行开源开发的经费从何来呢?我们提供围绕XText周边的一些有偿的专业级服务,例如:培训、现场咨询、原型开发或者是IDE开发。我们不但对XText了如指掌,而且也是程序设计和领域特定语言设计的骨灰级老鸟。别再犹豫,快和我们取得联系吧!(http://www.itemis.com)

1.6.什么是领域特定语言(DSL)

    领域特定语言(DSL)是一种小型的计算机编程语言,它关注于某一个应用领域,几乎任何一个事物对象都可以作为我们研究的一个领域。他的理念就是用尽可能接近于真实领域思考问题和解决方案的概念以及表示方法来描述。这样,我们所思考的问题便能由计算机以某种方式得到解决或处理。
    和领域特定语言(DSL)相反的一种语言被称做通用语言(GPL:General purpose Language),比如JavaC/C++以及其它常见的编程语言。使用这些通用语言,你可以解决任何计算问题,但并不一定是最好的解决办法。
    设想一下,你想把果核从一个苹果中摘除,那么你当然可以使用瑞士军刀将其抠除。如果你只是进行一两次这样的操作,那显然是合乎情理的。但如果你是需要去除无限多个苹果的果核,那你应该使用苹果去芯机才是最明智的选择。
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics