在不改变语言的前提下如何推进Java的不断演进
2010-03-22 00:00:00 来源:WEB开发网话虽如此,但对于编程语言来说,持续不断地平稳发展还是非常重要的。因此本文探究了如下3种技术以向Java中增加新的语言特性而又不改变语言本身,他们 是客户化领域特定语言(DSL)、Java 6的注解处理器(通过库来增加可选的语言特性)以及将语法糖从语言迁移到IDE中。每项技术都可以让众多的主流开发者以非侵入的方式体验这些新特性,最棒的想法则可以融入到语言核心当中。
客户化DSL
在这3项技术中,人们谈论最多的还是DSL。该术语的确切含义至今尚未统一,但出于讨论的目的,我们在这里简单地把它看作是用于解决特定问题、应用范围很窄 的一种语言而非用于解决所有计算问题的通用语言。这样,DSL就并非是图灵完备(non-Turing complete)的。当然了,还是会有一些边际情况存在的,比如说Postscript是一种图灵完备的语言, 但根据我们方才的定义,它也是一种DSL。
如上所述,DSL并非新概念。其他类似的DSL还有正则表达式、XSLT、Ant以及JSP等等,所有这些都需要某种客户化的解析器对其进行处理。Martin Fowler还说fluent interfaces/API也可以看作是另一种DSL,称之为内部DSL。他说内部DSL是直接在宿主语言中开发出来的。这对于Lisp和 Smalltalk开发者来说很容易理解,而最近Ruby社区也开始对内部DSL情有独钟了。
虽然很多知名的DSL都是由商业公司开发和维护的,但一些企业开发团队也已经使用该技术来创建能够快速解决其问题的语言了,但毕竟还是小众,这可能是 DSL领域门槛比较高的缘故吧。负责DSL的团队必须要设计语言、构建解析器和其他工具来支持开发团队,还要对每个新员工进行培训,让其了解DSL的工作机理。这时,涌现出了能够支援DSL开发的工具,这极大地改变了当前的状况。Intentional Software所开发的Intentional Domain Workbench比Java还要久远,它首度实现了该工具的功能。该项目创建于微软研究院,Charles Simonyi博士在1995年所发表的论文“The Death of Computer Languages, the Birth of Intentional Programming”描 绘了其愿景。2002年,Simonyi创建了Intentional Software以继续实现其想法,大家可以看看介绍该系统的视频,极具震撼力。目前该产品的版本是1.0,但只有极少数的合作者能够访问。
更多精彩
赞助商链接