注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

和申的个人主页

专注于java开发,1985wanggang

 
 
 

日志

 
 

Groovy(programming language)  

2011-10-08 17:03:26|  分类: groovy |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

Groovy是一种新兴的 Java 2 平台语言。Groovy 代码能够与 Java 代码很好地结合,也能用于扩展现有代码。目前的 Groovy 版本是 1.6.3,在 Java 1.4 和 Java 5 平台上都能使用,也能在 Java 6 上使用。

目录

什么是 Groovy?
Groovy 快捷方式
Groovy 的新增特性
关于闭包
动态的 Groovy
一体两面


什么是 Groovy?

  Groovy 是 JVM 的一个替代语言 — 替代 是指可以用 Groovy 在 Java 平台上进行 Java 编程,使用方式基本与使用 Java 代码的方式相同。注意:不是指Groovy替代java,而是指Groovy和java很好的结合编程
  ● 是一个基于 Java虚拟机的敏捷 动态语言。
  ● 构建在强大的Java语言之上 并 添加了从Python,Ruby和Smalltalk等语言中学到的 诸多特征。
  ● 为Java开发者提供了 现代最流行的编程语言特性,而且学习成本很低(几乎为零)。
  ● 支持DSL(Domain Specific Languages领域定义语言)和其它简洁的语法,让你的代码变得易于阅读和维护。
  ● Groovy拥有处理原生类型,面向对象以及一个Ant DSL,使得创建Shell Scripts变的非常简单。
  ● 在开发Web,GUI,数据库或控制台程序时 通过 减少框架性代码 大大提高了开发者的效率。
  ● 支持单元测试和模拟(对象),可以 简化测试。
  ● 无缝集成 所有已经存在的 Java对象和类库。
  ● 直接编译成Java字节码,这样可以在任何使用Java的地方 使用Groovy。
  Groovy 的一个好处是,它的语法与 Java 语言的语法很相似。虽然 Groovy 的语法源于 Smalltalk 和 Ruby 这类语言的理念,但是可以将它想像成 Java 语言的一种更加简单、表达能力更强的变体。(在这点上,Ruby 与 Groovy 不同,因为它的语法与 Java 语法差异很大。)
  许多 Java 开发人员非常喜欢 Groovy 代码和 Java 代码的相似性。从学习的角度看,如果知道如何编写 Java 代码,那就已经了解 Groovy 了。Groovy 和 Java 语言的主要区别是:完成同样的任务所需的 Groovy 代码比 Java 代码更少。(有时候会少很多!)


Groovy 快捷方式

  开始使用 Groovy 时,您会发现它使日常的编程活动变得快了许多。完成本教程之后,您会了解更多的 Groovy 语法快捷方式。不过现在只需知道以下这些要点:
  Groovy 的松散的 Java 语法允许省略分号和修改符。
  除非另行指定,Groovy 的所有内容都为 public。
  Groovy 允许定义简单脚本,同时无需定义正规的class 对象。
  Groovy 在普通的常用 Java 对象上增加了一些独特的方法和快捷方式,使得它们更容易使用。
  Groovy 语法还允许省略变量类型。


Groovy 的新增特性

  虽然 Groovy 允许省略 Java 语法中的一些元素,但也增加了一些新特性,例如本地集合、内置的正则表达式和闭包。在标准的 Java 代码中,如果想要创建一个项列表,首先要导入<code>java.util.ArrayList</code>,然后程序化地初始化 <code>ArrayList</code> 实例,然后 再向实例中添加项。在 Groovy 中,列表和映射都内置在语法中 — 无需导入任何内容。正则表达式也不需要额外的导入或对象;它们可以通过特殊的 Groovy 语法来创建。


关于闭包

  对于任何 Java 开发人员来说,闭包都是一个令人兴奋的新技巧。这些神奇的构造将会包含在未来的 Java 发行版(很可能是 Java 7)中,成为正式的 Java 语法,但现在已经可以在 Groovy 中使用了。可以将闭包 想像为一个代码块,可以现在定义,以后再执行。可以使用这些强大的构造做许多漂亮的事,不过最著名的是简化迭代。使用 Groovy 之后,就有可能再也不需要编写Iterator 实例了。
  


动态的 Groovy

  从技术上讲,Groovy 可能是您最近听说过的类型最松散的动态语言之一。从这个角度讲,Groovy 与 Java 语言的区别很大,Java 语言是一种固定类型语言。在 Groovy 中,类型是可选的,所以您不必输入String myStr = "Hello"; 来声明 String 变量。
  除此之外,Groovy 代码还能在运行时轻松地改变自己。这实际上意味着,能够在运行时轻松地为对象指定新方法和属性。这一编程领域称为元编程,Groovy 能够很好地支持这种编程方式。在学习本教程的过程中,您将了解到关于 Groovy 的动态性质的更多内容。现在惟一要补充的是,您会惊讶地发现,在 Groovy 会使操作 XML 或普通的 java.io.File 实例变得非常轻松。


一体两面

  用 Groovy 编写的任何内容都可以编译成标准的 Java 类文件并在 Java 代码中重用。类似地,用标准 Java 代码编写的内容也可以在 Groovy 中重用。所以,可以轻易地使用 Groovy 为 Java 代码编写单元测试。而且,如果用 Groovy 编写一个方便的小工具,那么也可以在 Java 程序中使用这个小工具。
  Groovy是用Java实现的开源脚本语言并且和它联系紧密.它需要JDK 1.4. Groovy向Java添加了许多Ruby和Python脚本语言的特性. Groovy的特性包括动态类型(dynamic typing), 闭包(closures),简单对象导航( easy object navigation)和更加简洁的Lists和Maps语法.
  Groovy是由James Strachan和Bob McWhirter创造的. James还参与了许多其他开源项目的开发,其中包括Jelly, dom4j, Jaxen, Betwixt和Maven. Bob是Jaxen和Drools (一个开源的面向对象的JAVA规则引擎) 的创始人.
  目前最新稳定版为Groovy1.8。这个Groovy版本包含了很多Java5的特性(Annotation,泛型,Enum...),并修正了很多错误。
扩展阅读:
==============================================================
==============================================================
From Wikipedia, the free encyclopedia

Groovy (programming language)

Groovy
Groovy-logo
Paradigm(s)Object-orientedimperative,scriptingfunctional
Appeared in2003
Designed byJava Community Process
DeveloperGuillaume Laforge
(Project Manager and
JSR-241 Spec Lead)
Stable release1.8.2 (September 6, 2011; 30 days ago)
Typing disciplineDynamicstrongduck
Influenced byJavaPythonRubyPerl,SmalltalkObjective-C
PlatformJava Virtual Machine
OSCross-platform
LicenseApache License v2.0
Websitehttp://groovy.codehaus.org/

Groovy is an object-oriented programming language for the Java platform. It is a dynamic language with features similar to those of PythonRubyPerl, and Smalltalk. It can be used as a scripting language for the Java Platform.

Groovy uses a Java-like bracket syntax. It is dynamically compiled to Java Virtual Machine (JVM) bytecode and interoperates with other Java code and libraries. Most Java code is also syntactically valid Groovy.

Groovy 1.0 was released on January 2, 2007.

Contents

  [hide

[edit]History

James Strachan first talked about the development of Groovy in his blog in August 2003. Several versions were released between 2004 and 2006. After the JCP standardization process began, the version numbering was changed and a version called "1.0" was released on January 2, 2007. After various betas and release candidates numbered 1.1, on December 7, 2007, Groovy 1.1 Final was released and immediately rebranded as Groovy 1.5 as a reflection of the many changes that were made.

In July 2009, Strachan wrote on his blog that "I can honestly say if someone had shown me the Programming in Scala book byMartin OderskyLex Spoon & Bill Venners back in 2003 I'd probably have never created Groovy."[1] Strachan left the project silently a year before the Groovy 1.0 release in 2007.


Features

Many (but not all) valid Java files are also valid Groovy files. Although the two languages are similar, Groovy code can be more compact, because it does not require all the elements that Java requires.[2] This makes it possible for Java programmers to gradually learn Groovy by starting with familiar Java syntax before acquiring more Groovy idioms.[3]

Groovy features not available in Java include both static and dynamic typing (with the def keyword), closuresoperator overloading, native syntax for lists and associative arrays(maps), native support for regular expressionspolymorphic iteration, expressions embedded inside strings, additional helper methods, and the safe navigation operator "?." to automatically check for nulls (for example, "variable?.method()", or "variable?.field").[4]

Groovy's syntax can be made far more compact than Java. For example, a declaration in Standard Java 5+ such as:

 for (String it : new String[] {"Rod", "Carlos", "Chris"})      if (it.length() <= 4)          System.out.println(it); 

can be expressed in Groovy as:

 ["Rod", "Carlos", "Chris"].findAll{it.size() <= 4}.each{println it} 

Groovy provides native support for various markup languages such as XML and HTML, accomplished via an inline DOM syntax. This feature enables the definition and manipulation of many types of heterogeneous data assets with a uniform and concise syntax and programming methodology.[citation needed]

Unlike Java, a Groovy source code file can be executed as an (uncompiled) script if it contains code outside any class definition, is a class with a main method, or is a Runnableor GroovyTestCase. But, unlike some script languages such as Bourne Shell, a Groovy script is fully parsed, compiled, and generated before execution (similar to Perl and Ruby). (This occurs under the hood, and the compiled version is not saved as an artifact of the process.)[5]

GroovyBeans are Groovy's version of JavaBeans. Groovy implicitly generates accessor and mutator methods. In the following code, setColor(String color) and getColor() are implicitly generated; and the last two lines, which appear to access color directly, are actually calling the implicitly generated methods.[6]

class AGroovyBean {   String color }   def myGroovyBean = new AGroovyBean()   myGroovyBean.setColor('baby blue') assert myGroovyBean.getColor() == 'baby blue'   myGroovyBean.color = 'pewter' assert myGroovyBean.color == 'pewter' 

Groovy offers simple, consistent syntax for handling lists and maps, reminiscent of Java's array syntax.[7]

def movieList = ['Dersu Uzala', 'Ran', 'Seven Samurai']  //looks like an array, but is a list assert movieList[2] == 'Seven Samurai' movieList[3] = 'Casablanca'  //adds an element to the list assert movieList.size() == 4   def monthMap = [ 'January' : 31, 'February' : 28, 'March' : 31 ]  //declares a map assert monthMap['March'] == 31  //accesses an entry monthMap['April'] = 30  //adds an entry to the map assert monthMap.size() == 4 


IDE support

Many integrated development environments support Groovy:


See also

[]Notes

[]References

[]External links

http://baike.baidu.com/view/707298.htm
groovyInAction中文.pdf下载地址 :http://ishare.iask.sina.com.cn/f/19357142.html
  评论这张
 
阅读(1225)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016