Groovy是连接脚本语言和企业级Java世界的桥梁 一
围绕着Java世界的脚本/敏捷/动态语言已经讨论了一段时间。然而,最近它们显然得到了很多的注意力,因为有了像Ruby这样的更加流行起来了的语言和像Ruby On Rails这样的框架。所以,Java社区在如饥似渴的寻找着Ruby On Rails的替代品和一个能够以使用Java知识为基础的、容易使用的脚本语言。来到Groovy和Grails的世界吧!
在这篇访问中,我们的访谈嘉宾是Groovy语言的项目经理和Grails项目的发起人--Guillaume Laforge。说起来,Guillaume为Groovy语言的特点感到非常激动,而且他也认为最初叫"Groovy On Rails"的Grails就是社区正在寻找的Java世界的ROR的替代品。
请在这个访谈的最后一页使用评论来分享您对于脚本语言和groovy的想法。
IndicThreads >>欢迎来到IndicThreads。您能介绍一下您自己吗?
Guillaume Laforge >>亲爱的IndicThreads读者,你们好!我的名字叫Guillaume Laforge。我是Groovy的项目经理,也是项目的核心提交者之一。我参与到这个项目的开发已经两年多了。在我的"真实生活"--即工作生活(相对于开源来说)--我是OCTO技术公司(http://www.octo.com)的软件架构师,这是一家基于法语的提供架构的IT咨询公司。
IndicThreads >>脚本语言的混乱其实真正开始于"脚本"这个单词。很少有Java开发人员能够确定什么是脚本。更为复杂的是,这些语言也同时被称为"敏捷(agile)"或"动态(dynamic)"。您能给我们解释一下什么是脚本语言,而我们则需要如何知道自己需要什么样的语言?
Guillaume Laforge >>很难给出这些单词的定义。因为对于什么是脚本、什么是动态或敏捷,差不多每个人都有他自己的定义。所以我给出我自己的定义--一些人可能会不同意这样的分类。
"对于什么是脚本、什么是动态或敏捷,差不多每个人都有他自己的定义..."
一般来说,脚本语言指的是那些解释型的语言,而不是编译型的语言。他们大多数时候被用在命令行,在shell环境,例如"bash"。这些语言常常被用作一些运行时系统、对象或组件的"脚本",用来实时编程操作它们,或者用于潜在的交互。
敏捷常常被用来指的是一种语言,它提供语法糖或者简单的API来处理一下通用的事情,或者使用一些简单的方法来解决一些复杂的任务,相较于一般目的的语言来说,它能给予你更多的产品产出。它是一种思想,用来帮助你将复杂的任务简单化,或者提供一个简单的API,或者提供一种可读式的表达式的语法。
(Groovy Team:从左到右:Guillaume Laforge、Jochen Theodorou、Dierk Koenig、Dierk Koenig、John Wilson和John Wilson)
最后来说说"动态"这个术语...它包括两个决然不同的含义,但是经常被错误的相互使用。"动态"的语言,我们常常这样称呼,是因为它们支持"动态类型",或者说弱类型:当你在传递参数的时候,或定义一个变量或属性的时候,你可以省略类型信息。这是和例如Java那些强类型要求你在每一个参数加前缀的语言不同的,那些语言先声明变量类型,然后才可以初始化。谈论"动态语言"是有一点误导,我们应该叫"动态类型语言",就更加准确一些。
"动态"的第二个意思则更为有趣一些,指的是那些遵从"元编程能力"术语的、提供了某些动态特性的语言。现在,你可能会问我,什么是"元编程"?它可以这么说,编程、或扩张、或扩展、或控制语言来组建它们自己。例如,在运行期内给一个对象增加一个方法,拦截一个不存在的方法调用,注入或者改变一个对象的行为。我们也谈论MOP:元对象协议,它代表的是所有能够操作你的语言和结构的一切行为。
如果你认为这些定义是理所当然的--我知道一些人可能不同意我的定义--那么Groovy就是脚本语言,因为它能够在运行期内被解释运行,尽管它也能够被预先编译,就像普通的Java类一样(术语.class文件由字节码组成)。同时,Groovy语言也是一个动态语言,同时满足两个术语:它是动态类型的(虽然它也支持静态类型),它也提供MOP,一种可以增加和操作语言的结构来扩展它的能力的方法。
至于我们需要什么要的语言,这实际上是由你的用例决定的。有很多的用例,实际上你并不需要这样一个脚本语言,你可能更善于使用一种成熟的静态类型语言,它拥有一个非常不错的IDE来协助你工作。但是脚本语言处理起一些原型钉子来特别顺手,例如拥有很多表达式事务的中型项目,或者对于一个大型应用来集成一些需要在运行期内被拦截或改变的定制逻辑。
IndicThreads >>非常精彩!这些对于我们的很多读者来说是有很大帮助的。现在,来谈谈Groovy,它的目标用户是哪些?是不是Java开发人员或者来自脚本世界的、希望使用Java能力的开发人员更适合使用Groovy?
Guillaume Laforge >>最主要的目标用户是Java开发人员。Groovy从一开始孕育的时候就考虑那些Java开发人员的要求。这就是为什么Groovy的语法和Java的语法非常接近的原因。我们希望是的一种语言使得开发人员能够用来作为各种组件的粘合剂,能够写一些像shell的脚本来做一些管理式的工作,能够给出一个方式用来将你的含有大量表达能力的业务规则嵌入到Java应用中来。
"Groovy某种程度上说是连接脚本世界和企业级Java世界的桥梁..."
但是最近我被告知,Groovy语言在一些大学被作为第一语言或第二语言来教授给学生。同时,我们也希望我们能够吸引一些脚本迷例如PHP开发人员来到Java平台。Groovy某种程度上说是连接脚本世界和企业级Java世界的桥梁。
"Groovy语言的主要用户是Java开发人员..."
(未完待续)