快速业务通道

跨越边界: 活动记录和Java编程中特定于域的语言 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16
户,可以用 XML 构建自己的语言。XML 难以阅读,但是在某些情况下可能有用, 并在 Java 世界中相当普遍。

对于已经要求 XML 的解决方案,可以使用 XML 的派生物来简化。Craig Walls 有一个贴子介绍了如 何用 XBean 为 Spring 上下文做这件事(请参阅 参考资料)。

可以使用 XML 的替代表示(例如 Relax NG)来简化 XML(请参阅 参考资料)。

当 Java 代码和 XML 都不够用的时候,可以在 JVM 中嵌入一种语言。最好的方式是通过 BeanShell (请参阅 参考资料)。

对于在 Java 应用程序中需要动态脚本的解决方案,可以利用已经有 BeanShell 集成的更加动态的语 言。好的示例有 Jython、JRuby 和 Groovy(请参阅 参考资料)。

可以从头开始构建 DSL。在 Java 语言中这很难做到,但是对于某些应用程序来说还是值得一做。

这些主意,每个都有一系列 developerWorks 文章,所以我在这里对它们就不做太多详细介绍了,但 是有一点我要提一下。如果需要在 Java 语言中使用 DSL,需要问自己四个问题:

真的需要 DSL 么?通过 Java 技术的一些更聪明的使用,可能可以做到自己需要的事。

XML 或 XML 的派生物足够吗?Java 开发人员对于 XML 经常有点儿太热心了,但是有些派生物可以把 事情略微简化。

可以在 Java 语言内部 使用其他语言吗?JRuby 正在越来越好,Groovy 正在就位,Jython 也正在变 得更稳定。

从头开始构建 DSL 值得吗?用 Java 语言做这件事很难 —— 需要词法器、解析器和语法器。但是可 以做到,可能值得做,具体取决于应用程序。

结束语

现在,我还没有许多确切的答案。Java 语言在 DSL 方面做得不太好,但是有必要了解在构建 DSL 时 其他语言中可能需要什么。还应当注意新的研究。那些带来 IDEA IDE 的人们和一些其他公司正在开发一 套叫作语言工作台 的产品(请参阅 参考资料)。他们完全有可能革新我们的编码方式。这些想法 —— 许多超越了 Java 编程 —— 正在扩展 DSL 的边界。

下次,我将讨论与并行编程有关的问题。将看到 Erlang 作为软实时分布系统的一种可能的解决方案 。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号