频 道 直 达 - 新闻 - 读书 - 培训 - 教程 - 前沿 - 组网 - 系统应用 - 安全 - 编程 - 存储 - 操作系统 - 数据库 - 服务器 - 专题 - 产品 - 案例库 - 技术圈 - 博客 - BBS
51CTO.COM_中国领先的IT技术网站
找资料:

使用Java实现内部领域特定语言(6)

作者: Alex Ruiz and Jeff Bay/沙晓兰 编译 出处:InfoQ中文站 2008-03-20 13:48    砖    好    评论   进入论坛
阅读提示:领域特定语言(DSL)通常被定义为一种特别针对某类特殊问题的计算机语言,它不打算解决其领域外的问题。本文将描述怎样使用Java语言来编写领域特定语言,并将建议一些组建DSL语言时可采用的模式。
 
对代码建档
 
在组织代码一章节中提到,对方法返回this的连贯接口建档比对返回中间对象的连贯接口建档来的简单的多,尤其是在使用Javadoc来建档的情况下。
 
Javadoc每次显示一个类的文档,这对于使用中间对象的DSL来说可能不是最好的方式:因为这样的DSL包含一组类,而不是单个的类。由于我们不能改变Javadoc显示我们的API文档的方式,我们发现在package.html文件中,加入一个使用连贯接口(包含所有相关类)、且对链中每个方法提供链接的例子,可以将Javadoc的限制的影响降到最低。
 
我们需要注意不要创建重复文档,因为那样会增加API创建者的维护代价。最好的方法是尽可能依赖于像可执行文档那样的测试。
 
结论

Java适用于创建开发人员易读易写的、并且对于商业用户用样易读的内部领域特定语言。用Java创建的DSL可能比那些由动态语言创建的DSL来的冗长。但好的一面是,通过使用Java,我们可以利用编译器来增强DSL的语义。另外,我们依赖于成熟且强大的Java集成开发环境,从而使DSL的创建、使用和维护更加简单。
 
使用Java创建DSL需要API设计者做更多的工作,有更多的代码和文档需要创建和维护。但是,付出总有回报。使用我们API的用户在他们的代码库中会看到更多的优化。他们的代码将会更加简洁,更易于维护,这些将使得他们的生活更加轻松。
 
使用Java创建DSL有很多种不同的方式,这取决于我们试图达到的目的是什么。尽管没有什么通用的方法,我们还是发现结合方法链接和静态工厂方法与imports的方式可以得到干净、简洁、易读易写的API。
总而言之,在使用Java来创建DSL的时候有利有弊。这都由我们——开发人员根据项目需求去决定它是否是正确的选择。
 
另外一点题外话,Java 7可能会包含帮助我们创建不那么冗长的DSL的新语言特性(比如闭包)。如果想得到更多关于建议中所提特性的全面的列表,请访问Alex Miller的blog。
 
关于作者Alex Ruiz是Oracle开发工具组织中的一名软件工程师。Alex喜欢阅读任何关于Java、测试、OOP 和AOP的信息,他最大的爱好就是编程。在加入Oracle之前,Alex曾是ThoughtWorks的咨询顾问。Alex的blog为 http://www.jroller.com/page/alexRuiz
 
Jeff Bay是纽约一家对冲基金的高级软件工程师。他曾多次建立高质量、迅速的XP团队工作于例如Onstar的计划注册系统、租赁软件、web服务器、建筑项目管理等各种系统。他对于消除重复和防止bug方面怀有极大的热情,以提高开发者的工作效率和减少在各种任务上所花费的时间。
 
相关资料
 
Domain Specific Language by Martin Fowler
DSL Boundary by Martin Fowler
Language Workbenches: The Killer-App for Domain Specific Languages? by Martin Fowler
Fluent Interface by Martin Fowler
Design Patterns: Elements of Reusable Object-Oriented Software by Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides
Effective Java by Joshua Bloch
Static Import at Java.sun.com
Generics by Gilad Bracha
Proposed features in Java 7 by Alex Miller
Test-Driven Development definition from Wikipedia
Simulating Named Parameters in Java by Alex Ruiz
◆ TableCellIndex by Mark Alexandre (first comment at Simulating Named Parameters in Java)
◆ Swing GUI test examples taken from Swing module of FEST (Fixtures for Easy Software Testing)
◆Reflection examples also taken from Reflection module of FEST (included with Swing module)
◆SQL example coming up in a open source project near you :)
 
原文链接:http://www.infoq.com/cn/articles/internal-dsls-java
 
【责任编辑:碧海蓝天 TEL:(010)68476606】


共6页: 上一页 [1] [2] [3] [4] [5] 6
【内容导航】
关于 Java  DSL
专题
运营商封堵非法ADSL共享
Java实用开发全集
Java类的基础教程专题
Java发展动态专题
ADSL2+离我们越来越近
我也说两句

匿名发表

(如果看不清请点击图片进行更换)


中 国 领 先 的 IT 技 术 网 站 ·
技 术 成 就 梦 想
· 开发社区对SQL Server ..
· 在Visual Studio 2008..
· LINQ框架设计指南
· 在PPC上安装pythonce
· WindowsMobile应该如何..
· 如何用正则删除不包含..
  · WCF开发指南之客户端开..
· 用WCF创建一个REST的API
· Sun已将Java 3D在GPL V..
· Sun认证 Java 2程序员..
· [分享]比较几款主流的J..
· ADSL密码查看器
排行榜
·Java基础教程 (查看70832次)
·UML类图详解 (查看64231次)
·UML统一建模语言 (查看34958次)
·C#技术开发指南 (查看33510次)
·C++是垃圾语言?! (查看31761次)
·Java编程开发手册 (1196个砖)
·Java基础教程 (429个砖)
·C#技术开发指南 (309个砖)
·.NET开发手册 (240个砖)
·PB开发教程 (223个砖)
·Java编程开发手册 (654个好)
·Java基础教程 (574个好)
·.NET开发手册 (271个好)
·PB开发教程 (212个好)
·Delphi开发技术手册 (190个好)
·WCF开发基础 (03月)
·体验Visual Studio 2008的魅力 (02月)
·Visual Studio 2005开发基础 (12月)
·测试开发人员参考手册 (11月)
·甲骨文85亿美元收购BEA (10月)
· 快讯:珊瑚虫QQ作者陈寿..
· 客户应该在意敏捷吗?
· 开发社区对SQL Server ..
· 七种服务器维护最佳技巧
· WCF开发指南之一构建服..
· 友善还是冲突?开发团..
· 八款主流桌面Linux实际..
· 最具影响力10大IT技术..
  · 新并购协议未达成共识 ..
· 谷歌中国公司卷入偷税..
· 韩国前杀毒软件CEO涉嫌..
· Windows Server 2008 T..
· VS的Ruby in Steel提供..
· 详解大型数据库的设计..
· 隐私保护技术系列:
· 苹果发布Safari新版本 ..
订阅技术快讯
电子杂志下载
名称:SQL Server数据库管理精品黄皮书
简介:书中文章经过精挑细选,便于用户能根据自己的实际工作和学习,快速在本书寻找到相关资料。内容涵盖了SQL Server的安装与升级、语句查询、数据备份和恢复、自动化任务、数据同步、数据字典、安全和预防、性能和优化、集群等各方面应用信息,以及DBA管理人员在数据库管理工作中
名称:2007路由技术大全
简介:《2007路由技术大全》由51CTO.com网站特别策划制作,该书包括路由器技术、路由器产品、路由器配置、安全设置、路由器故障处理、路由器密码恢复,以及广大网友在实践使用中的心得经验和技巧文章,内容注重实用性,适用于初学者入门,也适合多年从业者提高,是一本实践和理论完
名称:网络安全精品应用黄皮书
简介:《2007精品网络安全黄皮书》包括了9个大类24个小类, 800余篇文章,内容包含了熊猫烧香病毒、DDOS攻击、ARP病等热点问题的介绍及解决方案。从病毒查杀、防范、系统、数据等各方面的安全设置到黑客技术的了解、防范,涉及到了安全应用的全部领域, 由浅至深内容全面。
专题
珊瑚虫QQ作者侵权案开庭
珊瑚虫QQ作者侵权..
隐私保护技术探讨
隐私保护技术探讨
打造安全服务器
打造安全服务器
· 打造安全服务器
· 贝恩资本携手华为22亿..
· iSCSI应用与发展
· CISSP认证成长之路
· 华为员工自杀频频拷问..
· FTTx光纤接入
· Windows Server 2008专..
· 开源虚拟化技术Xen
· WCF开发基础
· Linux——从菜鸟到高手
· 微软出价446亿美元收购..
· SQL Server 2008/2005..
· RAID——磁盘阵列基础
· 微软Forefront企业安全..
· 如何优化IT 控制能耗
· 国际文档格式标准开战
清除流氓软件——51CTO特别专题
清除流氓软件——..
ARP攻击防范与解决方案
ARP攻击防范与解..
VPN技术
VPN技术
· VPN技术
· iSCSI应用与发展
· SQL Server 2008/2005..
· SQL Server 2008/2005..
· iSCSI应用与发展
· RAID——磁盘阵列基础
· 中间件应用技术专题
· 深入了解PGP加密技术
· 病毒查杀专题
· VPN技术
· 国际文档格式标准开战
· SSL VPN详细知识
· Linux防火墙
· 打造安全服务器
· Sniffer安全技术从入门..
· 木马原理与防范
ARP攻击防范与解决方案
ARP攻击防范与解..
VPN技术
VPN技术
SQL Server 2008/2005全解
SQL Server 2008/..
· SQL Server 2008/2005..
· iSCSI应用与发展
· 中间件应用技术专题
· SQL Server 2008/2005..
· iSCSI应用与发展
· RAID——磁盘阵列基础
· 身份认证技术
· 病毒查杀专题
· 清除流氓软件——51CTO..
· SSL VPN详细知识
· Sniffer安全技术从入门..
· VPN技术
· 了解统一威胁管理(UTM)..
· 网络钓鱼
· ADSL应用面面俱到
· ADSL应用面面俱到