|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
java也能做一些底层语言开发做的事情(难度很高,不是java顶尖高手是做不来的),
DSL是专门办理特定于域成绩的言语。经由过程更靠近成绩的操纵,DSL能够供应在通用言语中大概找不到的优点。Java天下中充斥了DSL。属性文件、Spring高低文、标注的某种用法和Ant义务,都是DSL的示例。
在入手下手研讨其他像Ruby如许的言语的时分,我入手下手了解到Java言语今朝关于DSL还没有优秀的把握。在这篇文章中,将看到Ruby利用的四种集成洁净的DSL的技能。然后,将看到在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
在超过界限系列的第一篇文章中,您看到了举动纪录(RubyonRails面前的耐久化引擎)。在这篇文章中,我又回到举动纪录,由于它在多个中央对DSL观点举行了出色的使用:
特定于域的语句布局和辞汇表。举动纪录构建了一个用Ruby对象包装干系数据库的辞汇表。比方,在数据库撑持的对象中,能够用has_many:people来构建与另外一个数据库撑持的对象的一对多干系映照。
扩大类的举动。依据定名标准,声明叫作People的举动纪录类,就会具有与数据库中每一个列对应的属性。
润色现有范例。Rails一般润色Fixnum如许的类以供应对域友爱的体验。
静态地扩大辞汇表。举动纪录供应了一些欣喜,比方依据数据库的布局增加定制查找器。
英语建模。举动纪录依据高低文修正类的单数情势。
跟着持续浏览本文,将看到让这些技能成为大概的Ruby特征。您将真正体味到在Ruby和Java操作体例之间的区分。要跟从本文一同编写代码,必要安装Ruby和RubyonRails,个中包括了举动纪录(请参阅参考材料)。
<p>
但是对于JAVA技术类的学习,我觉得大课堂反而会影响自身独立思考的过程,因为上课的时候,老师讲课的速度很快为了不遗漏要点,通常会仔细的听, |
|