跨越边界: 活动记录和Java编程中特定于域的语言 - 编程入门网
户,可以用 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 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |