昆明java培训
达内昆明广州春城路

18487146383

热门课程

Java适合用来创建内部领域特定语言吗?

  • 时间:2015-11-05
  • 发布:达内科技
  • 来源:达内昆明

使用Java实现内部领域特定语言 ,在达内昆明java培训审视Java语言是否可以作为创建DSL的工具之前,昆明java培训机构首先需要引进“内部DSL”这个概念。

一个内部DSL在由应用软件的主编程语言创建,对定制编译器和解析器的创建(和维护)都没有任何要求。

Martin Fowler曾编写过大量各种类型的DSL,无论是内部的还是外部的,每种类型他都编写过一些不错的例子。

但使用像Java这样的语言来创建DSL,他却仅仅一笔带过。

达内昆明java培训

另外还要着重提出的很重要的一点是,在DSL和API两者间其实很难区分。在内部DSL的例子中,他们本质上几乎是一样的。

在联想到DSL这个词汇的时候,我们其实是在利用主编程语言在有限的范围内创建易读的API。“内部DSL”几乎是一个特定领域内针对特定问题而创建的极具可读性的API的代名词。

任何内部DSL都受它基础语言的文法结构的限制。比如在使用Java的情况下,大括弧,小括弧和分号的使用是必须的,并且缺少闭包和元编程有可能会导致DSL比使用动态语言创建来的更冗长。

但从光明的一面来看,通过使用Java,我们同时能利用强大且成熟的类似于Eclipse和IntelliJ IDEA的集成开发环境,由于这些集成开发环境“自动完成(auto-complete)”、自动重构和debug等特性,使得DSL的创建、使用和维护来的更加简单。

另外,Java5中的一些新特性(比如generic、varargs 和static imports)可以帮助我们创建比以往任何版本任何语言都简洁的API。

一般来说,使用Java编写的DSL不会造就一门业务用户可以上手的语言,而会是一种业务用户也会觉得易读的语言,同时,从程序员的角度,它也会是一种阅读和编写都很直接的语言。

和外部DSL或由动态语言编写的 DSL相比有优势,那就是编译器可以增强纠错能力并标识不合适的使用,而Ruby或Pearl会“愉快接受”荒谬的input并在运行时失败。这可以大大减少冗长的测试,并极大地提高应用程序的质量。

然而,以这样的方式利用编译器来提高质量是一门艺术,目前,很多程序员都在为尽力满足编译器而非利用它来创建一种使用语法来增强语义的语言。

利用Java来创建DSL有利有弊。最终,你的业务需求和你所工作的环境将决定这个选择正确与否。

达内昆明java培训做出的分析,不知道你应该怎么去开启后续的学习之路呢?学好java从达内昆明java培训班开始,我们期待四个月后的你,与现在大不相同。

上一篇:Java的DSL简述
下一篇:Java学习建议三:程序需要改进优化

恭喜JAVA学员张*云入职昆明安舍科技有限公司

笔试与面试你擅长哪一个

这样的区别你知道嘛?

Java适合用来创建内部领域特定语言吗?

选择城市和中心
贵州省

广西省

海南省

扫一扫

了解更多干货