Groovy是一种基于JVM(Java虚拟机)的敏捷开发语言,它结合了Python、Ruby和Smalltalk的许多强大的特性,Groovy 代码能够与 Java 代码很好地结合,也能用于扩展现有代码。由于其运行在 JVM 上的特性,Groovy 可以使用其他 Java 语言编写的库。
Play Framework是一个功能完整的Java Web开发框架。采用RESTful架构设计,简便灵活。Play Framework使用MVC模式作为Web层,集成Hibernate管理持久层,Play Framework还使用一个基于Groovy的模板引擎。 Play Framework让开发者无须重新编译打包发布应用,即可看到修改后的效果,方便开发人员调试应用。 Play Framewor
翻译自《Programming Groovy - Dynamic Productivity for the jdk Developer》的P243。   原文如下: Stubs vs. Mocks In the article “Mocks Aren’t Stubs,” (http://martinfowler.com/articles/mocksArentStubs.html ), Martin
如今的Web,孤立的应用已经不再吃香,随之而来的是与其他应用(如Twitter)或服务(如S3)交互的意愿越来越强烈。对于Groovy而言,HTTPBuilder绝对是应对这一需求的不二之选。 如果熟悉HttpClient,那么你对HTTPBuilder就不会感到陌生,它是对前者的封装,使之更符合Groovy的使用惯例。下面的例子摘自HTTPBuilder的文档,它充分展示了自己的特点: impo
SD Times网站最近发布了一篇介绍“过去十年十大技术 事件”的文章,列举了包括Ant、.NET、虚拟化、Spring框架、Ruby on Rails、J2SE 5.0、Git、jQuery、Groovy和iPhone在内的十个有代表性的技术: 1. Ant Released (2000) 2. .NET Shipped (2000) 3. Virtualization Emerged (200
敏捷开发已经在业内如火如荼的开展起来,她给传统的软件开发模式带来了巨大的冲击,特别在互联网领域,敏捷已经不再是个口号。为了拥抱敏捷,各种动态语言也呈现强劲的态势,Ruby、Python等语言给Web开发带来颠覆性的革命。 Java作为当今应用最广的语言和平台,特别是在企业级领域,Java的王牌宝座无以撼动。但是在Web开发领域,Java却越来越显疲态,繁琐的配置,低效的部署,语法的不灵活,已经深深
如今的Web,孤立的应用已经不再吃香,随之而来的是与其他应用(如Twitter)或服务(如S3)交互的意愿越来越强烈。对于Groovy而言,HTTPBuilder绝对是应对这一需求的不二之选。 如果熟悉HttpClient,那么你对HTTPBuilder就不会感到陌生,它是对前者的封装,使之更符合Groovy的使用惯例。下面的例子摘自HTTPBuilder的文档,它充分展示了自己的特点: impo
Ken Kousen在他的博文中介绍了在Groovy中使用Google的Geocoder v3的方法。 Google geocoder是Google提供的可以获取某个地址的经度、纬度等信息的WebService。对于Geocoder v3之前的版本,如果要使用geocoder需要先到Google地图API为你的程序的部署URL(比如:http://www.groovyq.net)生成一个Key,有
  概述     本文主要描述如何在Oracle ADF的View Object属性Groovy中调用ViewImpl与ViewRowImpl里的方法。 实现 1、创建新应用,基于HR Schema中的Employees表创建Entity Object,View Object,新建Application Module,将添加View Object的实例到该Application Module中的D
Report Structure 报告的结构 本章描述报告的结构,可用的report对象和它们的属性。这基本上是JasperReports的快速参考。 1、Expressions 表达式 表达式是JasperReports的核心特征。它是一个重要的机制,允许操纵和显示报告数据,执行各种计算,自定义报告的外观和报告对象的可视性。 1)一个典型的表达式 $F{LastName} + " " + $F{
使用Groovy完成Neo4j基本操作:启停数据库及事务,创建和修改节点,数据库遍历。 代码如下: import org.neo4j.kernel.* import org.neo4j.graphdb.* ExpandoMetaClass.enableGlobally() PropertyContainer.metaClass.getProperty = {name ->             
  grials中允许我们使用properties文件与groovy文件让开发人员自定义配置信息,我们平台现在只使用了properties,并且读取时是使用java的方式去读取,那样稍显复杂,其实可以通过如下方式配置与读取:         我们的工程中主要使用的配置文件有:       Config.groovy                          (工程自动读取,我们并没有配置)
Ajax虽是“旧酒装新瓶”,但其威力着实不小。近两年来可谓红透半边天,它之所以能为大众接受,其中一个很大的原因就是提高了用户浏览体验,能更逼真的模拟出GUI界面。好了,Ajax的益处就说到这里,下面让我们看下Grails是如何帮助我们方便地应用Ajax的: 如果您对下面说设计的内容有点不解,那么您可以先看一下 Groovy轻松入门——Grails实战基础篇,然后开始我们的Ajax之旅。 1, 在命
Groovy简介:   参考书籍:《Groovy入门经典》、《Groovy in Action》   1、Groovy是Java平台上脚本语言,抽象程度更高 可以更简单快速地开发,可以编写更少的代码。 2、与Java语言无缝集成,可称为“超级Java” 使用“类Java”语法,Java成语员可以快速过渡。 Groovy与Java二进制兼容,都生成字节码,所以可以与使用Java语言所编写的框架和组件
表达式与运算符   可参考Groovy in Action P64   1、a==b 等价 a.equals(b) 2、Groovy的"===" 就是Java的"==" 3、Groovy支持操作符重载,重载运算符对应的方法就是操作符重载 4、<<操作符被重载,以支持向集合添加项。 5、?: 安全引用操作符(防止NullPointerException),在方法调用前面添加一个?就相当于再调用前面放
最近在研究Grails跟db4o的整合。   昨天碰到这么一个奇怪的现象: 下面这段代码中的这句 ObjectSet os = getDb4oTemplate().get(new User(params)) 在dev模式下一直报“... cannot be cast to com.db4o.reflect.generic.GenericObject ...” 而在prod模式就正常   class
集合概述   1、集合应用很广泛 2、Groovy直接在语言内使用集合 不需要导入专门的类,也不需要初始化对象 集合石语言本身的本地成员 3、每个Groovy集合都是java.util.Colleciton或java.util.Map的实例 4、List,String,StringBuffer,Range,Map,File,Matcher都是用同一的size()方法获取长度. 如:StringBU
字符串处理一   println 'clat said "escaflone"' println "clat said'escaflone'"  // 影号中的影号,大中放小,小中放大都可以,类似js def str1 ="Groovy&Grails&clat" println str1[4]                        //v,同getAt(4) println str1[-1
正则表达式   1、正则表达式在Groovy中式本地语言级别的支持 2、def aRegex = ~'clat'      println aRegex.class                 //输出:class  java.util.regex.Pattern      def mat ='clat'=~'clat'      println mat.class              
闭包介绍   1、由{}包围起来的代码块就是闭包     println{}  //执行该行,结果如下:    com.clat.GroovyTest$_run_closure1@10a2d43    符合格式:类$匿名内部类@hash code    结论: 闭包是一个匿名内部类的对象。   2、也可以给闭包取名字:    def aClosure = {         println "He
注:本文图片所演示的数据均为随机数产生。   不求华丽的开篇语,只求平平淡淡认认真真如同流水般的记录一点东西。毕业到现在工作5年,一直都是在商业智能平台分析项目(以下简称BI)。因此多多少少对这类项目有些积累,从后台sql干到前台web,从开发干到设计,各类相关职位都有或多或少的涉及。不说是全能型种子选手,但各个环节基本还是略知一二。 在中国商业智能行业是个典型的长尾领域。因为这和中国企业相关。企
Groovy 类例子   1、class Toy{           def toyName                             //会在java代码中声明为私有的,并提供set和get           def unitPrice           def method(){                         //此方法在生成的java代码中返回objec
File 类介绍   1、抽象路径名:File类提供抽象的,独立于系统的分级路径名试图。      D:/clat/test.groovy(注意抽象路径名使用/,不是/ ) 2、File可以表示文件或目录 3、Groovy对java.io.File进行了增强(参考GDK Doc)      def toysFile = new File("src/TestToysFile.dat")      i
其实开发环境一直都有,但本着穷折腾的原则,我还是把PC给格了,随后觉得不过瘾,又把上网本也重新配置了下。原因很简单,我可以编程,但如果要我日复一日坐在同一个位置敲键盘,我会疯掉,最好今天在办公室,明天在咖啡馆,后天在阳台……换言之,要么用够劲的笔记本,要么就通过网络来编程——我没得选,笔记本已经送给老妈了,即使没送,配置也跟不上;即使配置跟得上,我也不想背那么重的装备到处转悠。所以唯一的选择就是—
Groove是Lotus的创始人从1997年开始创办的公司,微软一直是投资者,直到最近花了1.2亿美元收购下来,并入 Office System 2007。Groove的工作原理就是基于P2P来实现协作,其方法就是在项目内各个团队成员的计算机上创建一个完全同步的区域,在这个区域内所有的讨论、文件、事件、表格、日历将完全自动与项目其他成员同步,而且还提供了仿似即时通讯的功能,Groove还可扩展提供
java.lang.VerifyError: (class: groovy/runtime/metaclass/java/util/HashMapMetaClass, method: super$2$invokeMethod signature: (Ljava/lang/Class;Ljava/lang/Object;Ljava/lang/String;[Ljava/lang/Object;ZZ)
1.Groovy++编译时检查更严格 例1: /* Leave it commented to run the dynamic Groovy version; Uncomment to run Groovy++ version */ //@Typed package test def x = { List list -> list.size() } x(1)
GroovySql概述     1、GSql结合利用闭包和迭代器,把资源管理的负担转移到Groovy框架本身,从而简化JDBC编程 2、不用关闭Conne,也不用关闭ResultSet 3、Groovy把迭代器编程隐含的,使用起来更简单。      def coll = ["groovy","grails","java"]      coll.each{tiem -> println item}
构造器     1、可以生成XML/HTML/SWING等嵌套树状数据结构 2、在语法级别上实现GOF的Builder设计模式  NodeBuilder      创建嵌套的节点树 DomBuilder       创建W3C DOM树 SwingBuilder     创建Swing界面 AntBuilder         生成ANT脚本 MarkupBuilder   创建XML或HTML标
模板引擎概述     1、模板技术:从模型中分离视图的一种手段,可以降低应用程序的维护成本 2、Java语言具有Velocity和FreeMarker等 3、模板引擎与XSLT很类似 4、可以创建一个模板,包含一些占位符,在运行时替换为实际的值。模板引擎然后可以通过读取该模板并在这些占位符和运行时的值之间家里映射来实现对模板的转换。   5、 定义模板toy_xml.template   <toy
Groovlet介绍     1、Groovlet是以Servlet API为基础建立起来的框架 2、Groovlet与GSP框架提供一种优雅而简单的平台,将它用于构建复杂程度不高的Web应用程序。 3、Groovlet不需要继承HttpSevlet,甚至连类都可以不需要写 4、Groovlet不需要实现doGet(),doPost()等发放 5、Groovlet实际上时直接使用Servlet A