`

script Groovy / Grails

阅读更多

 

s

 Groovy

   Groovy是用Java实现的开源脚本语言并且和它联系紧密.它需要JDK 1.4. Groovy向Java添加了许多Ruby和Python脚本语言的特性.

Groovy的特性包括动态类型(dynamic typing), 闭包(closures),简单对象导航( easy object navigation)和更加简洁的Lists和Maps语法.

  这里引用Groovy网页上的话. "Groovy是设计用来以精简快速有趣的方式来在Java平台上处理事务,并且把类似Python Ruby等的强大功能带到Java的世界里."

  Groovy脚本可以使用任何Java类.它们可以被编译成Java字节码 (即.class文件)并能被任何正常的Java类引用.Groovy编译器,

groovyc,可以编译Groovy脚本文件和Java源文件,然而有些语法(例如内类)并不被支持.

  理论上, 可以使用Groovy编写完整的应用程序,其具有和同等Java应用程序差不多的性能.这是Groovy和其他脚本语言不一样的如Ruby, Python, Perl以及BeanShell. 使Groovy现在运行得比Java还慢的原因之一是生成的字节码使用了映射(reflection)来调用构造函数以及私有/保护的方法.这个问题将会 在以后的版本中解决.

  Groovy是由James Strachan和Bob McWhirter创造的. James还参与了许多其他开源项目的开发,其中包括Jelly, dom4j, Jaxen, Betwixt和Maven. Bob是Jaxen和Drools (一个开源的面向对象的JAVA规则引擎) 的创始人. 

  目前最新稳定版为Groovy1.5。这个Groovy版本包含了很多Java5的特性(Annotation,泛型,Enum...),并修正了很多错误。

  官方下载地址:http://dist.groovy.codehaus.org/distributions/groovy-binary-1.5.0.zip

http://www.ibm.com/developerworks/cn/java/j-alj08034/index.html

虽然 Java 语言因其严密性和扩展性的承诺而在整整一代程序员中胜出,但是 Groovy 预示了 Java 平台上的一个编程新时代,这种语言是以方便性、适宜性和敏捷性为出发点定义的。在新的 alt.lang.jre 专栏的第二期文章中,Andrew Glover 对提议添加到 Java 平台的标准编程语言作了非正式的介绍。

如果您在使用 Java 平台(block),不管时间长短,您都有可能听说过 Groovy。Groovy 是超级明星开发人员 James Strachan 和 Bob McWhirter 发明的,它是一种敏捷开发语言,完全以 Java 编程 API 为基础。Groovy 当前正处于 Java Specification Request 的开始阶段,它于 2004 年 3 月底获得批准。Groovy 还是一种脚本语言,有些人说它会永久性地改变您看待和使用 Java 平台的方式。

在其对 JSR 241 (请参阅 参考资料 )的开放评论中,Groovy 的共同规范领导者 Richard Monson-Haefel 说他对 Groovy 的支持是建立在总有一天 Java 平台要包括一种敏捷开发语言这一信念上。与许多移植到 Java 平台的脚本语言不同,Groovy 是 为 JRE 而写的。在规范请求中(参阅 参考资料 ),Groovy 的制造者提出了“Java 不仅是一种编程语言,更是一个健壮的平台,可以有多种语言在上面运行和共存”(Monson-Haefel 语)的思想。

为什么需要另一种语言?

正如在 上个月的专栏 中 介绍的,Groovy 不是与 JRE 兼容的惟一脚本语言。Python、Ruby 和 Smalltalk 就是成功地移植到 Java 平台上的三种脚本语言。对于一些开发人员,这带来了问题:为什么要另一种语言?毕竟,我们许多人已经将 Java 代码与 Jython 或者 JRuby 结合来快速开发应用程序,为什么还要学习另一种语言?回答是 您不一定要学习一种新语言以用 Groovy 编码 。Groovy 与其他 JRE 兼容脚本语言的不同在于它的语法以及重用 Java 库。Jython 和 JRuby 共享它们前身(分别是 Python 和 Ruby)的外观,Groovy 让人觉得就像是 Java 语言,不过限制要少得多。

 

关于本系列 

虽 然本系列的大多数读者熟悉 Java 语言以及它是如何在跨平台虚拟机上运行的,但是只有少数人知道 Java Runtime Environment 可以承载 Java 语言之外的语言。本系列文章对 JRE 的多种替代语言进行了综述。这里讨论的大多数语言是开放源代码的,许多是免费使用的,有少数是商业产品,必须购买。在 alt.lang.jre 系列中介绍的所有语言都得到了 JRE 支持,并且作者相信它们增强了 Java 平台的动态性和灵活性特征。

像 Jython 这样的语言是在它们的父语言库上建立的,而 Groovy 使用了 Java 开发人员最熟悉的功能和库 —— 但是将它们放到了一个敏捷开发框架中 。敏捷开发的基本宗旨是代码应该很好地适合范围广泛的任务,并可以不同的方式应用。Groovy 通过以下方式落实了这些宗旨:

使开发人员不用编译。

允许动态类型。

使合成结构容易。

使其脚本可以在普通 Java 应用程序中使用。

提供一个 shell 解析器。

这些特性使 Groovy 成为一种特别容易学习和使用的语言,不管您是有经验的 Java 开发人员还是刚接触 Java 平台。在下面几节中,我将详细讨论上述特性。

http://www.chinaitpower.com/Dev/Programme/Groovy/index.html
·Java帝国的王储——Groovy ! 1211 18:25 ·用Groovy能玩出来的漂亮把戏 1211 18:23
·Groovy: 沉睡的巨人 1211 18:22 ·Groovy轻松入门——通过与Java的比较,迅速掌… 1211 18:22
·Groovy轻松入门——通过与Java的比较,迅速掌… 1211 18:21 ·Groovy轻松入门——通过与Java的比较,迅速掌… 1211 18:21
·Groovy轻松入门——Grails实战基础篇(4) 1211 18:20 ·Groovy轻松入门——Grails实战基础篇(3) 1211 18:20
·Groovy轻松入门——Grails实战基础篇(2) 1211 18:20 ·Groovy轻松入门——Grails实战基础篇(1) 1211 18:19
·Groovy轻松入门——Grails实战之GORM篇 1211 18:19 ·Groovy轻松入门——Grails实战之Ajax篇 1211 18:19
·Groovy高效编程——统计单词频率 1211 18:18 ·Groovy高效编程——‘匕首方法’的使用 1211 18:18
·Groovy高效编程——动态改变对象的能力(2) 1211 18:17 ·Groovy高效编程——动态改变对象的能力(1) 1211 18:17
·1.1 为什么使用脚本语言 1211 18:16 ·1.2 为什么使用Groovy 1211 18:16
·第2章 数值和表达式 1211 18:16 ·2.1 数值 1211 18:16
·2.2 表达式 1211 18:15 ·2.3 运算符优先级 1211 18:15
·2.4 赋值 1211 18:15 ·2.6 对象引用 1211 18:14
·2.5 自增和自减运算符 1211 18:14 ·2.7 关系运算符和等于运算符 1211 18:13
·Groovy 集合 1211 18:12 ·Groovy1.1 RC1发布了! 1211 18:12
·Groovy VS JRuby 1211 18:12 ·Groovy需要GUI设计器吗? 1211 18:11
·基于JVM的敏捷开发语言-Groovy 1.0发布 1211 18:11 ·Groovy on Rails 0.1发布 1211 18:11
·Sun收购JRuby 向动态语言迈进 1211 18:10 ·动态语言,别再轻言不 1211 18:10
·动态语言如何随需应变 1211 18:10 ·让Java动起来的脚本语言 1211 18:09
·集Java和RoR之所长的JRuby 1211 18:09 ·未来几年动态语言谁将成为主流 1211 18:08
·动态语言面面观 1211 18:08 ·动态语言为何难堪重任 1211 18:08
·Erlang十分钟快速入门(2) 1211 18:07 ·Erlang十分钟快速入门(1) 1211 18:07
 
Java帝国的王储——Groovy !
http://www.chinaitpower.com/2006Aug/2007-12-11/237018.html
 

groovy books 

http://www.infoq.com/cn/minibooks/grails

 
groovy and grails 
http://cache.baidu.com/c?m=9f65cb4a8c8507ed4fece763104080221902d7272bd7a74528878448e435061e506694ea7b3f5653829f2a3a50b2495ee8f43471340826b591c39f4aaae1d477719c6269304a8914528042f18a&p=882a96448d904eaa0ea4cf6f165e&user=baidu
 
 

 

end

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics