动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ Java教程 ]的信息

本月文章推荐
.如何轻松提高Java代码的性能.
.无线开发:如何使用kxml解析WAP.
.【JSF心得】JAVA的对象传递是引用.
.JBoss下的EJB3开发无状态会话Bean.
.在Applet中读取文件内容.
.在应用中加入全文检索功能——基.
.开源技术:将系统移植到Spring.
.轻松掌握 Java 泛型 (第 4 部分).
.条件编译.
.WhatisAspectJ.
.玩转Java的CLASSPATH(二)Class.
.Java网络编程的学习笔记(二).
.利用Java调用可执行命令.
.【Java】命令行参数的获取及判断.
.如何在JAVA SE中使用Hibernate.
.用Java简单实现文件分割与合并.
.如何写注释.
.java多线程设计模式详解之一.
.利用ThreadLocal记录日志.
.分析用Javadoc形式集成文档的利与.

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

发表日期:2008-1-5 |


Java™ 编程的世界布满了特定于域的语言(DSL),但是在 Java 语言中用来构建 DSL 的选项是有限的。使用 Ruby 则不是这样。在这篇文章中,将学习 Ruby 提供的一些漂亮方式,可以集成干净的 DSL,让您大开眼界,用一种新的参考框架来审阅 Java 的选项。

DSL 是专门解决特定于域问题的语言。通过更接近问题的操作,DSL 可以提供在通用语言中可能找不到的好处。Java 世界中布满了 DSL。属性文件、Spring 上下文、标注的某种用法以及 Ant 任务,都是 DSL 的示例。

在开始研究其他像 Ruby 这样的语言的时候,我开始理解到 Java 语言目前对于 DSL 还没有良好的把握。在这篇文章中,将看到 Ruby 使用的四种集成干净的 DSL 的技巧。然后,将看到在 Java 语言中可能存在的选项是什么。

跨越边界: 活动记录和 Java 编程中特定于域的语言(图一) 关于这个系列

跨越边界 系列中,作者 BrUCe Tate 提出了这样一个主张:今天的 Java 程序员通过学习其他技术和语言,会得到很好的帮助。Java 技术是所有开发项目的明显最好选择的情况,在编程领域中已经发生了变化。其他框架正在影响 Java 框架构建的方式,而从其他语言学到的概念也有助于 Java 编程。对 Python(或 Ruby、Smalltalk 等等)代码的编写,可能改变 Java 编码的方式。

这个系列介绍的编程概念和技术,与 Java 开发有根本的不同,但却可以直接适用于 Java 编程。在某些情况下,需要整合这些技术来利用它们。在其他情况下,可以直接应用这些概念。比起其他语言和框架能够影响 Java 社区的开发人员、框架甚至基本方式的理念来说,单独的工具并不那么重要。

隐藏语言的世界

虽然您可能不知道,但实际上您无处不碰到 DSL,从日常生活到使用的应用程序,到您编写的程序。在法庭上,可以看到速记员用 DSL 迅速地进行记录。音乐使用几种不同的标注来描述音量、音调和每个音的时长,采用一种适合特定乐器的格式。(我使用吉它六线谱,里面每条线都代表吉它上的一根弦。)使用 DSL 是因为它们比口述或笔录更能有效地解决问题。

在使用日常的应用程序时,也在使用 DSL。最好的示例是电子表格。编写电子表格,要比使用最简单的会计程序还要轻易。电子表格的 DSL 从根本上改变了为特定问题进行编程的实质。

Java 编程中的 DSL

回头来看,Java 也在到处使用 DSL:

  • jsp 使得构建定制的用户界面更轻易。
  • SQL 代表数据库操作。
  • 属性文件代表程序的配置。
  • XML 描述数据。
  • XML 描述程序配置,例如在 EJB、Hibernate 或 Spring 中。
  • XML 描述动作,例如 Ant 任务或某种引擎中的业务规则。

Java 语言并不非凡擅长特定于域的语言,因为这个语言很难按照对 DSL 开发人员来说最有吸引力的方式进行扩展。这就是为什么 XML 这么泛滥的一个原因。XML 是可扩展的,Java 和它的集成很好,可以轻易地构建解释它的工具,而且它也不需要和 Java 类一起编译。但是 XML 对于人类阅读来说很不友好。所以,可以看到对于在 Java 语言中 XML 的过度使用有广泛的抱怨。

使用 Ruby 和活动记录的 DSL

跨越边界 系列的 第一篇文章 中,您看到了活动记录(Ruby on Rails 背后的持久化引擎)。在这篇文章中,我又回到活动记录,因为它在多个地方对 DSL 概念进行了出色的应用:

  • 特定于域的语句结构和词汇表。 活动记录构建了一个用 Ruby 对象包装关系数据库的词汇表。例如,在数据库支持的对象中,可以用 has_many :people 来构建与另一个数据库支持的对象的一对多关系映射。

  • 扩展类的行为。 根据命名规范,声明叫作 People 的活动记录类,就会拥有与数据库中每个列对应的属性。

  • 修饰现有类型。 Rails 通常修饰 Fixnum 这样的类以提供对域友好的体验。

  • 动态地扩展词汇表。 活动记录提供了一些惊喜,例如根据数据库的结构添加定制查找器。

  • 英语建模。 活动记录根据上下文修改类的复数形式。

随着继续阅读本文,将看到让这些技巧成为可能的 Ruby 特性。您将真正体会到在 Ruby 和 Java 操作方式之间的区别。要跟随本文一起编写代码,需要安装 Ruby 和 Ruby on Rails,其中包含了活动记录(请参阅 参考资料)。


跨越边界: 活动记录和 Java 编程中特定于域的语言(图二)
跨越边界: 活动记录和 Java 编程中特定于域的语言(图一) 跨越边界: 活动记录和 Java 编程中特定于域的语言(图一)



上一篇:使用 EJB 3.0 Java Persistence API 设计企业应用程序 人气:521
下一篇:Java 理论与实践: 非阻塞算法简介 人气:931
浏览全部Java的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-10-7 Web Wiz Forums(论坛系统) v9.53
2008-10-7 Web Wiz Forums(论坛系统) v9.53
2008-10-7 Web Wiz Forums(论坛系统) v9.53
2008-10-7 HDWiki v4.0.1 bulid 081007 UTF
2008-10-7 迅易评选投票管理系统 v10.0
2008-10-7 HDWiki v4.0.1 bulid 081007 GBK
2008-10-7 Bitrac单用户博客 v1.14 bulid 0
2008-10-7 OpenX(广告管理系统) v2.6.2 多国
2008-10-7 乐铺网店系统免费普及版 v3.41
2008-9-29 酷狗音乐(原KuGoo)2008 v5.310 正
2008-9-29 QQTab 1.1
2008-9-29 网络传送带 Net Transport 2.64a
2008-9-29 谷歌金山词霸v1.8
2008-9-29 TweakVI 1.0 Build 1090
2008-9-29 ACDSee Pro 2.5 Build 333 汉化绿
2008-9-29 Winamp v5.541(2189) 周明波简体
2008-9-27 CCleaner 2.12.651
2008-9-27 Mozilla Thunderbird 2.0.0.17 英
  发表评论
姓 名: 验证码:
内 容:
站长工具:网站收录查询 | Google PR查询 | ALEXA排名查询 | CSS在线编辑器 | 广告代码 | js/vbs加密 | md5加密 | 进制转换 | UTF-8 转换工具 | Html转换js | Html转换asp | Html转换php | Html转换perl
实用工具:汉字翻译拼音 | 拼音字典 | 符号对照表 | 个税计算 | 实时汇率查询换算 | 经典小工具 | 汉字简繁转换 | 普通单位换算 | 公制单位换算 | 生辰老黄历 | 国内电话区号 | 国家代码与域名缩写 | 文字加密解密 | 健康查询 | 万年历 | 汉字横竖排版 | 手机号码查询 | 计算器 | ip搜索
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号
ホームページ制作 不動産検索システム 求人情報
防水工事·改修工事 フットサル大会 探偵
SEO対策 中国語教室 ホームページ作成