`
lujiawu12
  • 浏览: 124596 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

groovy学习笔记

阅读更多

groovy

   groovy是java语言的脚本实现,使用标准的java环境。 groovy编译器产生的字节码和java编译器产生的字节码是一样的。

   groovy的运行原理是动态的编译成字节码的,然后再由JVM进行转载,运行

 

   语法简练,易于理解,类java语法

 

   在java中嵌入groovy,有助于编写和集中处理易于变化的业务逻辑,给应用提供了可编程的配置管理能力,是对java语言的一大补充

 

   groovy的优势:

      和java的无缝集成,有更快捷的应用开发能力,灵活但不失去java的健壮性

 

groovy类

wuzhong@TAOBAOWDS46:~/workspace/groovy$ more Test.groovy 
class Test{

    private pri;            //定义了一个Object类型的私有属性
    protected pro;       //定义了一个Object类型的protected属性
    public pub;            //定义了一个Object类型的public属性
    int i;                     //默认是public的,所以定义了一个int public属性
    def a;                    //定义了一个Object public属性
    private hello(){         //定义了一个私有的,返回类型是Object的方法

    }

    def test(){               //定义了一个共有的,返回是Object的test方法
      return 1
    }

}

 

编译groovy脚本groovyc Test.groovy 

得到java的2进制字节码文件: Test.class

打开来瞧瞧 , javap Test

wuzhong@TAOBAOWDS46:~/workspace/groovy$ javap Test
Compiled from "Test.groovy"
public class Test extends java.lang.Object implements groovy.lang.GroovyObject{
    protected java.lang.Object pro;
    public java.lang.Object pub;
    public Test();
    public java.lang.Object test();
   
    public int getI();      //对public自动生成的get和set方法
    public void setI(int);
    public java.lang.Object getA();
    public void setA(java.lang.Object);
    public java.lang.Object this$2$hello();
    ...
    ...
    ...
}

了解这个后,相信大家对groovy就感到十分的熟悉了 ^_^

 

groovy脚本 

wuzhong@TAOBAOWDS46:~/workspace/groovy$ more Hello.groovy 
System.out.println("hello world")
wuzhong@TAOBAOWDS46:~/workspace/groovy$ groovyc Hello.groovy 
wuzhong@TAOBAOWDS46:~/workspace/groovy$ javap Hello
Compiled from "Hello.groovy"

public class Hello extends groovy.lang.Script{
    public Hello();
    public Hello(groovy.lang.Binding);
    public static void main(java.lang.String[]);
    public java.lang.Object run();
    ....
}

    在编译时就把它编译到类了,然后自动生成了main方法,run方法主要就是放刚才的print 业务逻辑的,我们可以看下反编译后的代码:

 public Object run()
    {
        CallSite acallsite[] = $getCallSiteArray();
        return acallsite[1].call(acallsite[2].callGetProperty($get$$class$java$l
ang$System()), "hello world");
    }
 

groovy闭包

和ruby的很类似

又见集合又见和ruby相似的闭包(代码块)
//定义一个List
def num = [1,2,3,4]
num.each{it -> println it*2}
 

参考资料

groovy入门

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

 

groovy与java的异同

http://ivorytower.iteye.com/blog/182547

 

groovy与spring的整合

http://shipmaster.iteye.com/blog/8462741

分享到:
评论

相关推荐

    Groovy 学习笔记

    Groovy 学习笔记 Groovy 学习笔记

    Groovy学习笔记 PDF版

    Groovy

    Groovy学习笔记

    Groovy学习笔记,内容如下: 1.概念 2.基本语法 3.字符串 4.集合 5.类和闭包 6.控制语句 7.操作符重载 8.I/O操作 9.高级应用 10.正则表达式

    Groovy学习笔记.pdf

    对Groovy开发环境设置,基本语法做了简单明了的介绍

    Groovy学习笔记(适合入门者)

    图文并茂,适合入门新手,涵盖了基本的语法讲解及一些DEMO测试,值得一看

    Groovy学习笔记 Struts2集成--Groovy类作为Action

    NULL 博文链接:https://rsljdkt.iteye.com/blog/859059

    Groovy语法&Gradle配置学习笔记

    Groovy语法&Gradle配置学习笔记

    Scala、Groovy++、Stackless Python、Erlang 学习笔记及分享

    NULL 博文链接:https://xiajs.iteye.com/blog/1871551

    GroovyPDF文档

    Groovy是一种基于JVM(Java虚拟机)的敏捷开发语言,它结合了Python、Ruby和Smalltalk的许多强大...本套资源中包含了:Groovy轻松入门 ,Groovy中文教程, Groovy用户指南, Groovy学习笔记,Groovy官方demo,五本书!

    Groovy入门教程

    这是groovy的学习笔记和入门级别的文档教程 共享下载 希望对学习grails 和 groovy的人有帮助

    groovy经典_资料

    本笔记详细记载从本人入门学习到案例操作的所有详细过程,中有截图,与源码对照,不管是初学者还是对其需要研究的人都能是一本难得的资料,欢迎下载,下期我将提供最新的项目实战NOTE,并会时时更新.....

    Grails入门指南第二版学习笔记

    Grails入门指南第二版学习笔记,有需要的同学可以看一下。

    springboot学习思维笔记.xmind

    springboot学习笔记 spring基础 Spring概述 Spring的简史 xml配置 注解配置 java配置 Spring概述 Spring的模块 核心容器CoreContainer Spring-Core Spring-Beans ...

    菠菜源码JAVA-clojure-learning-notes:Clojure学习笔记

    Clojure学习笔记 为什么要学习Clojure 我写Java也有10多年了,其间用过Python、PHP、Ruby、Groovy、JS等动态语言。Java相对C、C++来说有明显的优势,可以说是一种更高级的语言,高级语言带来的优势是能用更少的代码...

    Struts 2.1.8_学习源码

    Struts 2.1.8 学习源码内容 Struts2_01FirstDemo : 跑通第一个Struts2的实例 Struts2_02CURD : 关于Struts2的增、删、改和查 实际业务中数据来自数据库,从DAO层查询,本实例使用静态资源的方式模拟, 主要是关于...

    Gradle笔记—构建基础

    学习Gradle前,需要有一个Groovy语言的基础,以免被Groovy的语法困扰,反而忽略了Gradle的知识。先明确两个概念,projects和tasks,它们是Gradle中的两个重要概念。任何一个Gradle构建,都是由一个或多个projects...

    ocular:该站点将存储我关于 3D 对象识别的学士论文的发展

    使用 2D 和 3D 信息进行实物学习和识别 学士论文 作者: 分支:groovy-devel 指数 一、简介 2.编译运行 2.1. 依赖关系 2.2. 编译 2.3 运行 Doxygen 文档 更多信息 介绍 该存储库包含为学士论文开发的软件。 它是一种...

Global site tag (gtag.js) - Google Analytics