WEB开发网
开发学院软件开发Java 实战 Groovy: Groovy:Java 程序员的 DSL 阅读

实战 Groovy: Groovy:Java 程序员的 DSL

 2009-09-28 00:00:00 来源:WEB开发网   
核心提示: 什么是 DSL?Martin Fowler 普及了特定于领域语言的理念,他把 DSL 定义为 “侧重特定领域的表达有限的计算机编程语言”,实战 Groovy: Groovy:Java 程序员的 DSL(5),“有限的表达” 并不是指语言的用途有限,

什么是 DSL?

Martin Fowler 普及了特定于领域语言的理念。他把 DSL 定义为 “侧重特定领域的表达有限的计算机编程语言”。“有限的表达” 并不是指语言的用途有限,只是表示这种语言提供了足够用于适当表达 “特定领域” 的词汇表。DSL 是一种很小的专用语言,这与 Java 语言等大型通用语言形成对比。

SQL 就是一种优秀的 DSL。您无法使用 SQL 编写操作系统,但它是处理关系数据库这一有限领域的理想选择。在同样意义上,Groovy 是 Java 平台的 DSL,因为它是有限领域的 Java 开发的理想选择。我在这里使用 DSL 是为了启发读者,并不是特别的精确。如果我把 Groovy 称为 常用 Java 语言的内部 DSL,可能更容易被 DSL 纯粹主义者接受。

Dave Thomas 进一步阐明 DSL 的概念。他写道,“无论领域专家在何时交流……他们都在说行业术语,这是他们为与同行进行有效交流而创造出的更简略的专用语言”。可能将 Groovy 视为 “简略的 Java 语言” 更能说明 Groovy 与 Java 语言之间的关系。本文的下一节将提供另一个示例。

在这里,您可以看到 groovyc 编译器将获取源文件的名称并创建了一个同名的类(该类扩展 groovy.lang.Script 而非 java.lang.Object,这应当能帮助您理解尝试在 CLASSPATH 中没有 Groovy JAR 的情况下运行文件抛出 NoClassDefFoundError 异常的原因)。在所有其他编译器提供的方法之中,您应当能够找到一种优秀的旧 public static void main(String[] args) 方法。groovyc 编译器把脚本行封装到此方法中以保留 Java 语义。这意味着在使用 Groovy 时可以利用所有的现有 Java 知识。

例如,下面是在 Groovy 脚本中接受命令行输入的方法。创建名为 Hello.groovy 的新文件并添加清单 7 中的代码行:

上一页  1 2 3 4 5 6 7 8 9 10  下一页

Tags:实战 Groovy Groovy

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接