为什么使用Groovy
Java编译器会产生可以在Java虚拟机上运行的字节码。Groovy类和Java是二进制兼容的。这意味着,Groovy编译器产生的字节码与Java编译器产生的字节码是完全一样的。因此,对JVM而言,Groovy和Java是完全一样的。这就等于说,Groovy能够完全使用各种Java API,诸如用于数据库开发的JDBC(Fisher et al., 2003),以及用于开发GUI应用程序的Swin
Java编译器会产生可以在Java虚拟机上运行的字节码。Groovy类和Java是二进制兼容的。这意味着,Groovy编译器产生的字节码与Java编译器产生的字节码是完全一样的。因此,对JVM而言,Groovy和Java是完全一样的。这就等于说,Groovy能够完全使用各种Java API,诸如用于数据库开发的JDBC(Fisher et al., 2003),以及用于开发GUI应用程序的Swing(Topley, 1998)。
Groovy的目标是把大量开发者需要做的工作让语言本身来实现。比如,当往GUI添加一个按钮时,只需要提供当按钮被单击时要执行的代码,无需给这个按钮添加一个事件处理器,作为实现特定接口的类的实例。Groovy就是这样做的。
Groovy是一种面向对象的脚本语言,其中涉及的所有事物都是对象,这一点不像Java语言。这样就可以实现语言语法的一致性。Groovy也是动态类型语言,类型标记存在于对象中,而不是由引用它的变量来决定。这样做的结果是,Groovy不要求声明变量的类型、方法的参数,或者方法的返回值。这样一来,就可以大大缩短代码规模,并允许程序员把类型决定时间推迟到代码运行时。
通过提供概念“属性”(property),Groovy也尝试统一类中的实例字段和方法。属性概念可以消除实例字段(attribute)和方法之间的差别。结果是,客户端可以把一个属性认为是实例字段及其获取器/设置器(getter/setter)方法的组合。
重要的数据结构,比如Map和List,都是Groovy语言内置的。可以使用Groovy脚本直接表示一个List对象或者Map对象。对于开发新手来说,直接实现List和Map对象会让编程任务更加简单。List和Map对象都提供interator(迭代器)方法,比如each,可以简化处理这些集合中每个元素的过程。可以使用一个closure(闭包)来声明处理过程,闭包是表示一个代码块的对象。这是个非常有价值的结构,可以被变量引用,带参数,被作为参数传入方法或者其他闭包,也可以是类的实例字段。在Groovy编程中,闭包具有举足轻重的地位。
层次性数据结构,比如XML,也可以直接使用Groovy生成器所生成的Groovy脚本来表示。借助于XPath (http:// www.w3.org/TR/xpath20/)中的标记,Groovy可以快速地表示这些结构的路径,以及引用不同部分的方法。同样,迭代器和闭包提供处理它们的机制。
通常,Groovy生成器适用于任何被嵌套的树型结构。比如,它们可以被用于描述使用多种组件组装而成的图形化应用程序。闭包可以充当组件(比如菜单项和按钮)的事件处理器。标准查询语言(SQL)的处理过程也是规范统一的。迭代器方法,比如eachRow,可以与一个闭包一起表示如何处理数据库表中的数据行。
更多推荐
所有评论(0)