Groovy是一种基于JVM(Java虚拟机)的敏捷开发语言,它结合了Python、Ruby和Smalltalk的许多强大的特性,Groovy 代码能够与 Java 代码很好地结合,也能用于扩展现有代码。由于其运行在 JVM 上的特性,Groovy 可以使用其他 Java 语言编写的库。
                               Groovy Tip 16 正则表达式 一     在Groovy语言中,增加了正则表达式的匹配运算符“==~”。一个简单的例子如下:             println "friends" ==~ /friends/     打印结果为: true 可以看到,在 Groovy 语言中,正则表达式的匹配运算非常简单。麻烦的是一些通配
obj.collect { it -> it?.action } 可以简化为obj*.action 一个例子,右对齐打印 ss = ['afsdf','ad','ads','a'] n = ss*.size().max()       //相当于ss.collect { it.size() }.max() ss1 = ss*.padLeft(n,'.')    // 相当于ss.collect {
                                    Groovy探索之Decorate模式     Decorate模式是Java编程中比较常用的一种模式,有关Decorate模式的基本知识,如概念、使用场合以及如何使用,请大家查看相关文档。本文所要关注如何在Groovy语言中实现Decorate模式,以及这种实现与Java语言实现的区别,使得我们更加深入的理解Groovy语言
                       Groovy探索之Delegate模式 一   Delegate即是委派的意思。在Java语言中,很少提到委派或者委派模式,即使用到了也不说,这是因为Java语言的特点,实现起委派来相当的繁琐,而且只能适用于一些简单的场合。 但现实的需求是,由于敏捷编程的兴起,重构技术也得到了大家的广泛使用;要使用重构,其中的一个重要原则是:使用组合代替聚合,这样才能
在本教程中 在本教程中,您将了解构建框架 Gant,它利用 Groovy 和 Apache Ant 产生了一个高度通用的中介物(medium),该中介物允许您在重用所有 Ant 功能的同时实现编程逻辑。 学习完本教程后,您将理解使用 Gant 构建软件的好处,并开始在日常的 Java™ 开发中使用 Gant。 目标 本教程引导您逐步了解 Gant 的基础知识。您将学习如何: 利用 Gant 灵活的
    端午三天假,学习了JRuby,Groovy.最后还是觉得Groovy比较容易上手。用Groovy有点当年写basic的感觉,不再有java那样那么多条条框框。开发的时候更多的是在用代码描述自己的执行逻辑,而不是为了实现某种逻辑功能去编写大量符合java"定式"的类。     Groovy给我的感觉就2个字"飘逸",在编码方面很多地方java工作量是非常繁琐而Groovy封装的相当成功,或许
如果现在有人要开始完全重写 Java,那么 Groovy 就像是 Java 2.0。Groovy 并没有取代 Java,而是作为 Java 的补充,它提供了更简单、更灵活的语法,可以在运行时动态地进行类型检查。您可以使用 Groovy 随意编写 Java 应用程序,连接 Java 模块,甚至扩展现有的 Java 应用程序 — 甚至可以用 Groovy 对 Java 代码进行单元测试。Groovy
Grails 是一种新型 Web 开发框架,它将常见的 Spring 和 Hibernate 等 Java 技术与当前流行的约定优于配置等实践相结合。Grails 是用 Groovy 编写的,它可以提供与遗留 Java 代码的无缝集成,同时还可以加入脚本编制语言的灵活性和动态性。学习完 Grails 之后,您将彻底改变看待 Web 开发的方式。 就像 Rails 与 Ruby 编程语言联系非常紧密
                           Groovy Tip 17 “*.”操作符     我们都知道,Groovy语言对集合做了很多的简化,如each、collect等等。但是,Groovy语言觉得这些还不够,它要继续给我们提供更多的简化操作。今天我们要谈到的“ *.”,就是其中的一个。 “ *.”操作符到底有什么用?我们还是从一个简单的例子谈起。             def
                     Groovy探索之运算符的重载 一     运算符最常用的是算术运算符和关系运算符。Groovy语言对这些常用的运算符的重载提供了很好的支持。比如重载加号的方法是“plus”,我们只要在我们自己的类中实现了该方法,就能使用加号对对象进行相加运算。下面举个例子。 比如,我们有一个类Yuan,用来模拟我们的人民币元。如下: class Yuan {      
                          Groovy 探索之Delegate模式 二   鉴于Delegate模式在现在的编程中越来越重要,Groovy语言为它提供了一个帮助类来帮助我们创建委派类,这就是 DelegatingMetaClass 类。使用 DelegatingMetaClass 类,可以使得我们更加简单的实现 Delegate 模式。下面就来看看 DelegatingM
                                     Groovy Tip 18 Groovy的一些Map   在Groovy语言中,Map是一个大的家族,除了我们常用的HashMap以外,还有很多其他的形形色色的Map。当然,这些Map的存在是因为它们有不同于HashMap的地方。现在,我们就来看看其中的两种Map。 一. TreeMap TreeMap 是一种能够给 Map
                                Groovy探索之闭包 六     探索闭包的应用是一件很有意思的事,它的有意思在于我们永远不知道有哪些地方不能应用到闭包,或者说在每一个角落,你都能找到闭包让人眼睛一亮的应用。今天到谈到的是闭包的有关于DSL的应用。DSL应该是这两年才兴起的一个概念,有关它的一些知识,请查阅相关文档。 DSL的优越性在于它的接近自然语言,以及它的编
不久前召开的 IBM IMPACT 2008 大会上,IBM 公布了 Project Zero 的商业版本:IBM WebSphere® sMash®。 WebSphere sMash 赋予了开发人员强大的能力,使他们可以使用动态脚本语言 Groovy 和 PHP、轻量级应用程序装配方法和 REST 风格的服务调用来创建、装配和执行情景应用。本课程将从技术角度对 IBM WebSphere sMa
            Groovy探索之运算符的重载 二     前一篇详细的说了说算术运算符和关系运算符的重载,这篇要说说赋值运算符和取值运算符,即“.”运算符的重载。 还是以前一篇的Yuan类来作为例子。 class Yuan {     def num       def toString()     {        this.num     } }     有了上面的类的定义,我们就可
  刊号 # 17 - Jul 22, 2008 项目新闻 请帮助测试 Eclipse Project Importer for NetBeans 6.5 Milestone 1 根据多种需求, Eclipse Project Importer 一直在完善,并且现在已是标准版NetBeans IDE 6.5 Milestone 1的一部分。如果你在一个使用多种IDE的团队工作,并有同事使用Ecli
What is this "def" I heard of? "def" is a replacement for a type name. In variable definitions it is used to indicate that you don't care about the type. In variable definitions it is mandatory to eit
               Groovy Tip 20  “as”关键字的用法     在Groovy语言中,“as”关键字是非常重要的,它同样是体现Groovy语言作为敏捷式语言的一个重要方面。 “as”关键字在Groovy语言中最为常用的用法是进行强制类型转换,这相对于Java语言来说,就显得编码起来比较容易,请看下面的例子。          List list = new ArrayLi
Feature Highlights PHP PHP Editor (Code completion, syntactic and semantic code highlighting) Support for heredoc notation and PHTML Debugging using Xdebug Generators for MySQL database code snippets
Project Zero 是 IBM 的一个孵化器项目:它的目标是实现一个敏捷开发环境,它利用轻量级的 Web 开发技术比如 REST 和 Scripting 语言 (Groovy, PHP 等等 ) 简化了动态 Web 应用的开发,并针对 REST-style 服务发布,集成,Mash-ups 和 Rich Web 应用开发提供了优化。其主要目标是为新一代 Web 应用提供一个开发和执行平台,并
  2015车载音乐打包下载 http://blog.sina.com.cn/s/blog_4ce1d8130102w6ij.html   十大背景音乐 / 十大气势背景音乐 http://www.mtyyw.com/8911/ Groove Coverage http://www.groove-coverage.de/ 待分析mp3 http://www.56.com/u98/v_NDI1NTY
胶水语言就是胶水,写起也挺快的.这个脚本主要是从数据库中把表中的数据导出来生成文件.而不用每次都打开数据库编辑器去手工收集.然后结合强大的脚本(shell,bat)等基本就可以实现定时生成最新数据文本了. 目前这个groovy脚本只要输入sql语句,便会自动去反射表中的字段和类型. 脚本名称:export.groovy import groovy.sql.Sql; try { if(this.ar
        Groovy探索之Delegate模式 三     在前面的两篇中,我们共提到了在Groovy语言中两种动态委派的方法。其实,前面的两种动态委派的方法,归根到底都是使用了“invokeMethod”方法。 在Groovy语言中,我们还有一种不使用到“invokeMethod”方法的委派方法,这就是我们在这一篇中要讲到的内容;除此之外,我们还要把我们的委派模式以一个实践中要使用到的例
 源代码: package mars.groovy /**  * @author Eric Han  * 2008-9-3 11:58:28  */ public class MyClosure{  public static void main(def args){   def myfirstClosure={man->println "Hello ${man}"}      myfirstCl
Groovy on Grails 快速建站 grails版本:1.0.2 首先,确保环境变量中配置了: GRAILS_HOME=F:/grails-1.0.2 以下是建站的日志,黑体为用户输入部分: E:/>mkdir cinwamanblog E:/>cd cinwamanblog 创建应用 E:/cinwamanblog>grails create-app Welcome to Grails 
                       Groovy Tip 21 魔幻数组 一     Groovy语言作为一种敏捷性的语言,我们在集合类型的操作上已经见识到了它在编码方面敏捷的许多方面。比如,集合对象的声明、初始化、赋值和类似于“each”、“collect”等方法。这已经让我们大大惊叹于Groovy语言对于集合类对象操作的方便的魔力,但是,Groovy语言没有只停留在这些方面,而是进一
   看到同事痛苦的拼写SQL语句并转化成java String语句,自己不仅感到汗言,说实话过于复杂的SQL语句要换成我也未必会拼写的好.而且如果每个表都采用手工去拼写且转化的话,熟练的开发人员可能要5到10分钟,不熟悉的可能要更长的时间这样是很浪费时间的.很久以前我就写过类似的工具可以见我系列文章<自己动手编写DB2小工具>.    既然自己喜欢groovy,于是花了10来分钟写了个简单的根据
                          Groovy Tip 22 魔幻数组 二     我们记得在前一篇《魔幻数组》系列中的例子中使用了一个名为list6的数组,如下: def list6 = [ 1, 1, 2, 2, 3, 3, 3, 5 ]       看到了它,我们就可以看到里面有很多重复元素,我们马上也就有了要把重复元素去掉的要求。 在Java语言中,我们也有去掉List对
             Groovy探索之闭包 七  使用闭包来实现模板方法模式     我们知道,很多的设计模式都是通过增加接口来达到解耦的目的,使得代码的扩展性大大增强。其中,模板方法模式就是这样的。请看下面的例子。 假设我们有如下的两个类: class A {         public void doing()     {        println 'doing some comm
                          Groovy Tip 23 魔幻数组 三     数组可以说是一个广义的集合,它也可以做交集、并集等运算。 先从求交集说起,下面就是一个求交集的例子:           def list11 = ['a','a','b','c','d']             def list12 = ['a','b','a','e']