科技: 人物 企业 技术 IT业 TMT
科普: 自然 科学 科幻 宇宙 科学家
通信: 历史 技术 手机 词典 3G馆
索引: 分类 推荐 专题 热点 排行榜
互联网: 广告 营销 政务 游戏 google
新媒体: 社交 博客 学者 人物 传播学
新思想: 网站 新书 新知 新词 思想家
图书馆: 文化 商业 管理 经济 期刊
网络文化: 社会 红人 黑客 治理 亚文化
创业百科: VC 词典 指南 案例 创业史
前沿科技: 清洁 绿色 纳米 生物 环保
知识产权: 盗版 共享 学人 法规 著作
用户名: 密码: 注册 忘记密码?
    创建新词条
科技百科
  • 人气指数: 12308 次
  • 编辑次数: 2 次 历史版本
  • 更新时间: 2009-10-04
方兴东
方兴东
发短消息
高兴
高兴
发短消息
相关词条
戴夫·海厄特
戴夫·海厄特
最佳编程语录大全
最佳编程语录大全
程序员笑话大全
程序员笑话大全
下一代程序员
下一代程序员
女程序员
女程序员
彼得·诺维格
彼得·诺维格
Russ Cox
Russ Cox
15名程序员界性感的奇葩
15名程序员界性感的奇葩
Mike Kruzeniski
Mike Kruzeniski
Jeff Fong
Jeff Fong
推荐词条
希拉里二度竞选
希拉里二度竞选
《互联网百科系列》
《互联网百科系列》
《黑客百科》
《黑客百科》
《网络舆情百科》
《网络舆情百科》
《网络治理百科》
《网络治理百科》
《硅谷百科》
《硅谷百科》
2017年特斯拉
2017年特斯拉
MIT黑客全纪录
MIT黑客全纪录
桑达尔·皮查伊
桑达尔·皮查伊
阿里双十一成交额
阿里双十一成交额
最新词条

热门标签

微博侠 数字营销2011年度总结 政务微博元年 2011微博十大事件 美国十大创业孵化器 盘点美国导师型创业孵化器 盘点导师型创业孵化器 TechStars 智能电视大战前夜 竞争型国企 公益型国企 2011央视经济年度人物 Rhianna Pratchett 莱恩娜·普莱契 Zynga与Facebook关系 Zynga盈利危机 2010年手机社交游戏行业分析报告 游戏奖励 主流手机游戏公司运营表现 主流手机游戏公司运营对比数据 创建游戏原型 正反馈现象 易用性设计增强游戏体验 易用性设计 《The Sims Social》社交亮 心理生理学与游戏 Kixeye Storm8 Storm8公司 女性玩家营销策略 休闲游戏的创新性 游戏运营的数据分析 社交游戏分析学常见术语 游戏运营数据解析 iPad风行美国校园 iPad终结传统教科书 游戏平衡性 成长类型及情感元素 鸿蒙国际 云骗钱 2011年政务微博报告 《2011年政务微博报告》 方正产业图谱 方正改制考 通信企业属公益型国企 善用玩家作弊行为 手机游戏传播 每用户平均收入 ARPU值 ARPU 游戏授权三面观 游戏设计所运用的化学原理 iOS应用人性化界面设计原则 硬核游戏 硬核社交游戏 生物测量法研究玩家 全球移动用户 用户研究三部曲 Tagged转型故事 Tagged Instagram火爆的3大原因 全球第四大社交网络Badoo Badoo 2011年最迅猛的20大创业公司 病毒式传播功能支持的游戏设计 病毒式传播功能 美国社交游戏虚拟商品收益 Flipboard改变阅读 盘点10大最难iPhone游戏 移动应用设计7大主流趋势 成功的设计文件十个要点 游戏设计文件 应用内置付费功能 内置付费功能 IAP功能 IAP IAP模式 游戏易用性测试 生理心理游戏评估 游戏化游戏 全美社交游戏规模 美国社交游戏市场 全球平板电脑出货量 Facebook虚拟商品收益 Facebook全球广告营收 Facebook广告营收 失败游戏设计的数宗罪名 休闲游戏设计要点 玩游戏可提高认知能力 玩游戏与认知能力 全球游戏广告 独立开发者提高工作效率的100个要点 Facebook亚洲用户 免费游戏的10种创收模式 人类大脑可下载 2012年最值得期待的20位硅谷企业家 做空中概股的幕后黑手 做空中概股幕后黑手 苹果2013营收 Playfish社交游戏架构

James Strachan 发表评论(0) 编辑词条

James Strachan,Groovy共同创始人,ActiveMQ 的创建者之一。

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

个人博客:http://radio.weblogs.com/0112098/

个人主页:http://people.apache.org/~jstrachan/

目录

参与项目编辑本段回目录


Project

Description

Role

ActiveMQ

The most popular and powerful open source Message Broker.

co-founder

Camel

Apache Camel is a POJO based implementation of the Enterprise Integration Patterns which uses a declarative Java based Domain Specific Language for configuring the routing rules so that you can use type-safe smart completion in your IDE

co-founder

ServiceMix

An open source Java Business Integration server (JBI) and Enterprise Service Bus (ESB) implementing the JSR 208 specification

co-founder

Lingo

A Spring Remoting framework using JMS to provide invisible remoting while using the performance, power and load balancing features of JMS

co-founder

Jencks

A Spring based JCA container for using Message Driven POJOs or Geronimo's JCA or TransactionManager from inside any Spring application

co-founder

Geronimo

Apache's J2EE server

co-founder

Groovy

An agile, dynamic language for the JVM

co-founder

dom4j

Java framework for working with XML, XPath and XSLT

co-founder

jaxen

Java XPath Engine which works on various models such as DOM, dom4j, EXML, JDOM and beans

co-founder

maven

Maven is a really cool build system  that compiles all your code, builds your distros, maintains and documents dependencies, sets your classpaths, runs your unit tests and builds a neat website for your project. Maven currently uses Jelly too!

committer

taglibs

Jakarta Taglibs - in particular I created the IO , JMSTags and XTags taglibs together with working on the i18n and Log taglibs

committer

commons

Jakarta Commons - in particular the collections component, beanutils, logging and digester.

committer

Groovy创始人:Java面临终结 Scala将取而代之编辑本段回目录

Groovy创始人James Strachan在其博客上发表了一篇文章,题目为《Scala将取代Java?》。该文章在Scala,Groovy和Java开发者中引起了很大反响,Scala创始人Martin Odersky也对此文做出了回复。

Groovy创始人:Java面临终结 Scala将取而代之

Groovy创始人James Strachan前日在其博客(地址在Blogspot,未架好梯子前请勿随便点击)上发表了一篇文章,题目为《Scala将取代Java /javac?》。以下是正文部分的翻译:

不要误解我的意思——我在过去的这十来年里写了无数的Java代码,并且坚信它相对C++和Smalltalk来说是一个巨大的进步(当然,很多其它语言也很有帮助,像JavaScript,Ruby,Groovy,Python等)。但是我还是一直期待着能有javac的替代者出现。我甚至还自创了一门语言(51CTO编者注:此处指Groovy)好让我暂时满足一下这种期望。 

Java是一种令人惊叹的复杂语言(它的语法规范长达600页,我怀疑到底有没有人能真正理解它),它有自动装箱(Autoboxing),空指针异常(NPE)往往就是这时抛出的。其中的基本类型(primitive type),字符串/文字/缓冲器/集合类(collections)以及数组缺乏多态性,以至于处理任何数据结构都需要冗长的语法;而且,由于Bean属性和对闭包支持的缺失(甚至在JDK 7里也仍然还不支持),这会让你的代码里充满了 try/catch/finally 这些语句(除非你使用框架和新的自定义API)。除了这些还有好多数不清的麻烦问题。Java倒是有类型推断(type inference)功能但却不用,使得我们要多输/读如此大量的代码。

这个问题在没有Java7后变得更加紧迫 (在Snorcle之后它变得更加重要:我不知道javac是不是要被jdkc 取而代之了?)。所以我猜javac可能已经走到了尽头,它看起来根本就没有什么进展或简化了。 

那么,从长久来看,谁能取代javac 呢?当然,像Ruby,Groovy,Python,还有JavaScript这些动态语言在过去几年里很受欢迎——很多人喜欢他们。 

我认为将来可能替代javac的就是Scala 。它实在太让我印象深刻了。我甚至可以诚实地说,如果有人在2003年把Martin Odersky,Lex Spoon以及Bill Venners写的那本《Programming in Scala》拿给我看了的话,那我根本就不会再去发明Groovy了。 

那么,为什么我会看好Scala呢?Scala是静态类型的,它可以被编译成与Java同样快速的字节码,所以它的速度与Java不分上下(有时快一点,有时慢一点)。你可以看看 Scala 在与 groovy 或jruby一起进行测试时表现有多好。注意:速度并不是我们追求的唯一目标——有时候我们可能宁肯让代码慢上十倍,也要写得简洁一点;但是如果要取代javac,速度当然还是很重要的。 

Scala已有类型推理(type inference)功能,因此它和Ruby/Groovy一样简洁,但是它完全是静态类型的。这是很有好处的,它使得理解代码、阅读代码以及编写文档都简单多了。在任何片段(token)/方法/符号上点击,你都可以跳转到相应的代码或文档中去浏览。不需要打那些怪异的补丁,也不用操心谁什么时候新增了一个方法——这对于那些需要一个团队一起长期开发的大项目是很有好处的。Scala似乎已经实现了动态语言(dynamic language)的那种简洁,而实际上它是完全静态类型的。所以,我根本不需要去记哪些魔术方法可用——或是在shell里运行脚本来查看这些对象——IDE/编译器在你编辑代码时就已经知道这些了。 

Scala已经提供了对高阶函数和闭包的支持,另外还支持序列解析(sequence comprehensions) ,这样你就可以很容易用Scala写出漂亮简洁的代码。Scala还把函数式和面向对象的编程思想很好地统一到了一种语言里,它比Java要明显简单一些(虽然它的类型体系(type system)和泛型(generics)需要花费差不同一个数量级的时间去理解,但是,它通常是框架开发者才需要考虑的问题,应用程序开发人员并不需要涉及)。它也使得从传统的面向对象/Java编程模式向函数式编程的转变变得更加容易——这对于编写并行或异步程序的开发人员尤其意义重大(这是因为现在芯片的主频已经达到了数个GHz,很难再有提升了;而芯片集成的核心数则在快速增长。51CTO之前曾发布过哪种语言将统治多核时代 再看函数式语言特性一文,对于函数式语言在多核时代的潜力做了相当深入的分析)。你可以在最开始用面向对象的方法编程,然后当你需要它的好处时,就可以迁移到用不变状态(immutable state)函数式编程正变得越来越重要,因为我们总是希望能把问题变简单,并且在一个更高的层次上解决它(如闭包,高阶函数,模式匹配,单子(monad)等),同时我们还需要通过不变状态(immutable state)实现并发和异步。 

Scala也有适当的混入(mixin)(特性(trait)) ,所以你不必去摆弄面向对象编程的缺陷来获得模块化的代码。如果你确实需要一些鸭子类型(duck typing),Scala甚至能为你提供构造类型(structural type)。 

最让我印象深刻的一点就是它的核心语法极其精练简洁(它的语法手册只有大概Java的四分之一),但是其方式却更加强大和灵活,而且非常容易通过库来扩展,添加新的语义和功能。可以看看这个例子:Scala Actors。因此它非常适合用于创建嵌入式DSL或外部DSL 。有了它以后就真没必要再用Java,XPath ,XSLT,XQuery,JSP,JSTL,EL和SQL这些东西了——你可以在各种各样的场合使用DSL。 

Scala确实需要花点时间去习惯——我承认第一次我看Scala时并不觉得顺眼——用了Java之后你就会习惯用一堆冗长的代码来做一点点事,刚开始时我们也都不会一看到几个符号就觉得有多惊讶。(我花了好长一段时间才习惯Scala里用_作“通配符”,因为在Scala里是用作标识符/方法)。 

如果你一直在写Java,那么最开始确实会觉得Scala很不一样(如在声明方法/变量/参数时在类型或标识符上加上阶,虽然那样做的原因是为了能更方便地略去一多余的类型信息)。

例如,在Java中的写法:

List< String> list = new ArrayList< String>() 在Scala中的写法:

val list = new List[String] 或者,如果你要指定确切的类型的话:

val list : List[String] = new List[String] 但是如果你坚持用上一段时间,Scala优美的一在很快就显现出来。它对Java里的许多地方进行了简化,让你可以用非常简洁的代码就描述出意图,而不用花上大段代码去实现细节——同时还为你提供了一条迁移到函数式编程的不错途径,这对于编写并发和分布式程序是非常有利的。

我强烈建议你学习一下Scala:以开放的心态看看(当你的思维转过来后)你是否能发现它的美丽之处。

一些Scala资料的链接和在线演示文档

51CTO编辑推荐:Scala编程语言专题

◆我强烈推荐由 Martin Odersky,Lex Spoon 和 Bill Venners编写的《Programming in Scala》 一书。它非常好地介绍了Scala的特点以及设计时的选择。这本书相当厚,但是你可以先跳着读,必要时再深入细节。

◆《O'Reilly Scala book》这本书我只跳着读了一点,但是看起来也非常不错。

◆如果你想在短时间内就知道个大概语法,那么可以看看《Tour of Scala》。不过看了之后你也还得花上一些时间来真正理解为什么它跟Java会有这样那样的不同。

◆Martin Odersky 的JavaOne 2008上关于Scala的演说

◆Jonas Bonér在 Real-World Scala上作的报告

◆Gert's的 对他如何创建 Apache Camel DSL for Scala 的介绍

◆用于JDBC类型安全查询的一个Scala版LINQ,顺便再了解下DBC。

◆一份非常不错的报告,介绍了把 Scala 和 OSGi 与DSL结合使用

◆如何使用 Scala和XML ( 语言里已经自带了处理XML,XPath , XSLT, XQuery的简洁语法)

◆Scala的例子

◆Scala快速参考表

◆这个例子显示了如何 创建的bean风格的属性 (或C #风格的getter函数)

◆创建一个 用Lift实现的聊天演示程序 或查看 Lift网站上的更详细介绍

如果你还有一些空余时间的话,这些视频资料也非常不错

◆Bill Venners所发表的The Feel of Scala

◆Lex Spoon所作的Scala: 把未来的语言带到JVM里来

好用的Scala框架和库

◆liftweb :Scala的rails

◆语言规范和ScalaTest for BDD 以及其它一些入门测试(literate testing)能让你体会到类型安全的DSL对于编写IDE友好 的简洁代码有多大帮助。

◆scalaz 是一个很有用的例程库。

◆用HTTP /JSON服务进行调度

另外,顺便说一下,对于那些像我一样一喜欢JAXRS的,现在可以通过jersey-lift模块使用lift模板和Jersey了。

作为这的实例,你可以看看RestMQ,这是一个我最近也参与了的开源项目,它旨在为面向消息的中间件提供REST风格的API和Web控制台,它也是基于JAXRS(Jersey),Scala,Lift构建的。

至于开发工具方面,有Ant/Maven插件,它带有一个交互式Scala控制台(REPL)和一个用于IDEA的IDE插件,还有Eclipse,NetBeans,以及TextMate,Emacs这些通用编辑器,都可以供你选择。在IDE插件的丰富程度上与Java还是有差距的,但是这些工具所提供的代码导航和自动补全功能还是很有用的。

我试用过NetBeans,Eclipse和IDEA这几个IDE上的插件,它们都各有优劣。看起来,Scala的追随者也因为这些工具分裂成了几派。如果要代码导航和自动补全,那我发现IDEA非常不错。当你打开一个Maven pom.xml,它好像就能非常好地自动解析代码,找出Scala源,那样你就能很方便地在任意的类型/方法以及它们对应的文档/源代码中跳转浏览。(通常你必须在运行/调试任务里手动添加Scala)。不过IDEA在错误代码高亮上并不是最好的。在作上一些弥补后,它们都能变得与对应的Java工具一样好用。试试这几个工具吧,找出你最习惯的那个。

Scala Nit

任何一种语言都有你喜欢的一面,也有你不是那么热衷的一面。Scala给你的最初印象可能确实是符号太多了点,但是你并不需要使用所有的这些符号——如果你喜欢的话,你可以继续沿用很多Java里的东西。但我想到了那个时候最好还是用符号来实现“特殊任务”以避免标识符冲突。

我对嵌套的引入声明不太感冒,使用_root_.java.util..List来把一个”全局“引入和相对引入区别开来。我还更愿意使用子引入。例如,如果你引入了com.acme.cheese.model.Foo,然后,为了引入model.impl.FooImpl,我就更喜欢用一个明确的相对前缀,就像:import _.impl.FooImpl。这对简化任务有一些好处,对于保持和Scala的简洁性就更有帮助了。

然而,和Java里大把的毛病相比,再考虑到Scala的优美,简洁和强大,Scala的这一些负面因素和根本不算什么了。

结语:  

既然  MrJava(Adam Bien),MrJRuby(Charles Nutter) 和 MrGroovy(作者本人) 都认为Scala将会是javac的的替代者,那肯定是有些原因的。那你还在等什么呢?赶快去买《Programming in Scala》 或 《O'Reilly Scala book》一探究竟吧!

这篇博文发布后,立刻有很多Scala,Groovy和Java开发者进行了回复。Scala的创始人Martin Odersky也对这篇文章发表了自己的赞赏之词。以下是Martin的留言:

James,感谢你的认可!这对我来说意义重大。我相信,如果我们一起努力向Java开发者们展示现在在JVM上更加美好的语言选择,我们大家都会因此而得到好处。感谢你在这方面带了个好头。

根据我对Groovy的了解(很可惜的,我的了解没有你了解Scala那样多),它看起来并非是意图填补同一块领域的。Groovy的吸引力在于它是一个语法接近Java的动态脚本语言。Scala的吸引力在于它是一个强类型的,静态的,结合函数式和面向对象的语言。

此外还有很多精彩的评论,51CTO译者对这些评论进行了一些筛选,挑出部分翻译如下:

Scala的体验

去年,我在做一些调查项目时把Scala引进到了我的小Java车间里。

如今Scala成为了我们最主要的编程语言。

通过使用Scala,我们现在可以构建类型系统(type system),跟踪总结以前所做项目的经验教训,并用它来替代我们过去以模型为导向(model-driven)的开发方式。然后,我们利用函数分发(pass around functions)的特性来改进组件的参数化。

总之,对于建立可重用的组件,Scala提供了一套比Java更好的机制。

C#和Java?

我觉得你可以去看看C#。它解决了你在Java中遇到的许多问题。如果你不喜欢微软的话,就可以试试.NET的开源替代版本Mono。

有关Scala和F#

其实,在.NET平台里与Scala对应的语言并不是C#,而是F#。不管什么时候,我都更倾向于使用Scala,而不是F#,原因如下:

1 )在F#文化里,面向对象看起来并不重要。在所有讲F#的书里,都必定有一章介绍类,然后,剩余部分就是专门讲解函数式。相比之下,Odersky在发明Scala时,并没有照搬Java的这一套机制,而是通过对象类型、特性(trait)、增强的可见性规则(visibility rule)等概念扩展并超过了Java的这一套机制。Scala使得像我这样有根深蒂固面向对象思想的开发人员觉得很舒适,它提供的函数式语法特性让我可以用来把代码变得非常简洁。

2 )F#比Scala看起来更接近人类语言,初看起来这似乎是好事。不幸的是,由于开发者很少需要写类型说明(type annotation),大部分代码里也都没写,这就使得代码变得更加难于理解。在Scala里,至少要声明参数类型,而且最好也声明一个方法的返回类型,除了那些一目了然的情况。

3 )F#一直力求尽量往OCAML的语法靠拢,所以它在语法也真是没有什么创新之处。而Scala则是博取众长,吸纳了各种语言的优点。此外,它还让人感觉有些机制并不是必须的,而是为了让开发者更好地表达意图而加入的。通过加入隐式转换(implicit conversion),析取器(extractor)这些功能,Martin从我这里得到了很大的帮助。

4 )在我看来,Java程序员学会Scala比从C#到F#的过渡要容易得多。大体上来说,原因是Java程序员不需要花很大的代价入门,Scala可以直接被当作一门少了些模板(boilerplate)的Java使用。当程序员渐渐熟练后,他就可以开始发掘函数式编程的威力了。在其它任何的面向对象/函数式编程语言里我都找不出可以这样过渡学习的。

Groovy盖棺定论了?

James,我一直在留意你的博客,这篇文章写得棒极了,堪称高超。你发过一份声明说不会再继续把Groovy开发得更强大了(51CTO编者注:James Strachan在写这篇博文之前很久已经离开了Groovy开发团队),这份声明影响力很大,而且几乎可以说是给Groovy盖棺定论了。

我们有一个面向最终用户的数据处理软件,然后我们选择的是Groovy (而没用Jython和JRuby )来作为实现各种功能扩展(从对变量编写公式到编写脚本)的途径。你们在开发Groovy所写的代码很多都是粘合代码(glue code)(对核心语言起补充作用)。我们充分利用Groovy所支持的这些特性与MS Office产品和Web服务进行整合。我真的希望,如果你们的开发团队更中意Scala的话,也请尽量让我们到时候在Scala里也能用上这些有用的库。

James Strachan对上文的回复

我不认为任何一种主要的JVM语言会消失,肯定会一直有一大帮人继续维护Groovy, Jruby, Cojure, Jython, Rhino等。

JVM中最大的一点好处就是这些语言很容易共存,重用另一种语言的代码也非常容易。因此,只要相信大众的选择,就不用担心会选错开发语言。

而且我也并不认为Scala会是Ruby/Groovy/Fan这些动态语言的替代者;大多数情况下性能还是很重要的。对于一个快速、静态类型的编译器来说,过去Java显然是第一选择——但是现在,Scala才是首选——这是因为Java已经显出老态了。(它可能永远也不会支持闭包,永远也不会考虑支持类型推断等新特性)。

自从发现了类型推断的威力之后,我实际上越来越觉得动态类型(就是很简洁的代码实现功能)的动机变得越来越难以琢磨了。比如说,你可以用Scala写一些脚本,它就会像Ruby/Groovy一样进入”读取-执行-打印 循环“(Read-Evaluate-Print Loop, REPL)。

但是我发这篇文章的目的并不是要挑起Scala拥护者和Ruby/Grovy/Clojure/JavaScript这些动态语言支持者之间的战争——我只是想让被Java一叶障目的开发者们意识到,这个世上已经有了比Java更好的静态类型语言:这门语言有他们所想要的全部功能(还附带有Java最需要增强的功能)。所有这一切,都能在这门语言里用简洁、优美的代码表示出来(尽管这门语言和Java确定有些不太一样,并且需要你经历一个学习曲线)。

Groovy语言编辑本段回目录

什么是 Groovy?
  Groovy 是 JVM 的一个替代语言 — 替代 是指可以用 Groovy 在 Java 平台上进行 Java 编程,使用方式基本与使用 Java 代码的方式相同。在编写新应用程序时,Groovy 代码能够与 Java 代码很好地结合,也能用于扩展现有代码。目前的 Groovy 版本是 1.6.3,在 Java 1.4 和 Java 5 平台上都能使用,也能在 Java 6 上使用。
  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.5。这个Groovy版本包含了很多Java5的特性(Annotation,泛型,Enum...),并修正了很多错误。

参考文献编辑本段回目录

→如果您认为本词条还有待完善,请 编辑词条

词条内容仅供参考,如果您需要解决具体问题
(尤其在法律、医学等领域),建议您咨询相关领域专业人士。
1

标签: James Strachan

收藏到: Favorites  

同义词: 暂无同义词

关于本词条的评论 (共0条)发表评论>>

对词条发表评论

评论长度最大为200个字符。