Groovy   发布时间:2022-04-12  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Groovy 笔记大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

作者:江南白衣 

1.Groovy的最新八卦之处

1.1 Wiki: http://docs.codehaus.org/pages/listpages.action?key=GROOVY
1.2 Mail list的在线浏览和RSS定阅 
       Developer List http://dir.gmane.org/gmane.comp.lang.groovy.devel
       User List: http://dir.gmane.org/gmane.comp.lang.groovy.user

2.Groovy的开发现状和未来
    编译期健壮性大大增强的1.0 JSR-2,全力除Bug的1.0 @L_618_5@,JSR-4已经发布。
    @L_403_6@也在巴黎开完,有决议若干
    理论上 1.0正式版很快就要发布。 
    而计划中的1.1版本将支持 ruby的maxin、conTinuations 和JDK1.5的AnnotaTin

3.Groovy and Java的暧昧关系
   作为Java的私生子,Groovy的最终可执行状态是Java class bytecode,所以Java代码里可以把它当普通Java Bean一样调用。还有,Groovy的基础类库,都是用Java代码来写的。

   3.1 编译Java class bytecode
   就像JSP的最终面目是servlet class,GroovyC也会把groovy文件编译成Java class bytecode以在JVM上运行。
   其中Groovy Class会编译成GroovyObject的子类,Groovy Script代码段会编译成Script的子类。
     
    可以用GroovyC来静态编译,也可以在Java程序里用groovyshell动态parse Groovy文件

    3.2 在Java代码调用Groovy
         1.Groovy类:
         GroovyObject类认有get/setproperty()和invokeMethod()的反射接口,在Java代码里,可以直接调用Groovy类的方法,也可以通过反射接口来调用

         2.Script代码段:
         Script类有Script(Binding)构造函数和run()接口,在java里先通过Script(Binding)构造一个Script类,绑定变量,然后通过run接口进行调用

    3.3 在Java中直接使用Groovy的类库
    Groovy和Groovy的框架类库都是用Java写出来的的。所以有些类库如SimpleTemplateENGIne,也可以在Java里直接使用,不用绕Groovy一圈。

4.groovyJ插件
    groovyJ是IDEA插件,有语法变色和Run()功能,更有用的功能是编译Java文件目录时,会把其中的groovy文件也一同编译。而日后将支持重构、类间跳转功能,值得期待。
    而Eclipse插件只有Run()和语法变色,而且随着Eclipse的升级时灵时不灵,正在花时间实用化中。
    netBeans开了个Coyote的项目来支持脚本语言。

5.一些重要的开发人员 
    一个PM:
    Guillaume Laforge

    两个Founder:
    Bob Mcwhirter (同时是Drools,Dom4J的founder
) ,
    James Strachan (Core Developers Network,同时work on Geronimo,Drools,serviceMix 和很多Jarkarta 项目,似乎拥有无穷的精力)    

    三个来自ThoughtWorks的开发人员:
     Jame Walnes,Chris Stevenson,Matt Foemmel

    四个star of  JSR-2: 
     jeremy Rayner,Jochen Theodorou,和两位老大一起改进JSR-2编译的强壮性和出错信息显示 
     Franck Rasolo:IDEA插件GroovyJ的开发人员 
     Christian Stein :Groovlet,Template的开发人员 

     Steven Devijver : Grails--Groovy on Rails的主持,同时是Spring Modules的leader。

6.有哪些使用Groovy的项目

Grails(Groovy on rails,大老们非常期待的项目,把rails在MVC和ORM的优点抄到java下,而且是基于Spring Framework的)

Drools(规则引擎,用户可以用groovy写规则)

eXo platform(porlet/service container,本身核心是groovy,用户可以用groovy 来写Porlet)

XWiki (第2代的wiki引擎、Application引擎。用户可以用groovy写Plug-in,Marco和Application)

RIFE(@L_644_27@mVC/Web framework,用户可以用groovy写action和配置layout,workflow。还含有一个CRUD框架,用户用groovy 定义domain class,滴嗒一下,就能获得一个CRUD模型)

7.Groovy-all-1.0-jsr3.jar 
    groovy需要asm和antlr包的支持,使用groovy-all-10-jsr3.jar,将预带这两个包的正确版本,非常省心。

8.Migrating to JSR

    JSR版本语法的的最大改动有两处。网上很多Groovy文章都还是基于旧语法的,需要自己改正过来。
    8.1 为了加强代码健壮性,Class里的变量需要用def 定义。而在script里的变量因为是动态binding的,仍然不需要def定义。

    8.2 多行的String需要用 """ """而不是" "来括住。

9.SimpleTemplateENGIne-总共200行就实现了JSP ENGIne的功能
    动态语言开发框架很方便,所以Ruby on Rails没有IDEA级的IDE都能这么就把MVC、ORM都实现了一遍。
    请看src/groovy/text/SimpleTemplateENGIne.java,总共219行。
    原理就是把模版中的文本部分替换成println """ 文本""" ,Groovy部分照搬,生成一个新的Groovy script,然后拿groovyshell执行一遍就完成了。

10.如何用Java实现动态语言

 把GroovyC编译出来的class文件再用jad反编译,可以看到如何用Java去实现一门动态语言。
    主要是多了一个MetaClass, 不断的反射反射,运行时还非常依赖Asm


 最简单的例子:
   Groovy文件:

  public   class  Customer
 {
    
private  String id;
 } 

   编译出来的Java文件

    public   class  Customer    implements GroovyObject 
  {
   
private  String id;
   transient MetaClass MetaClass; 
   
public  Customer()
        {
            Object obj 
=  ScriptBytecodeAdapter.invokeStaticMethod  ( " org.codehaus.groovy.runtime.ScriptBytecodeAdapter " " getMetaClass " this );
            Metaclass  Metaclass 
=  (MetaClass)ScriptBytecodeAdapter.asType(obj, groovy.lang.MetaClass. class ); 
        } 
       
public  Object invokeMethod(String s, Object obj)    {

Groovy 笔记


       
public  Object getProperty(String s)    {

Groovy 笔记

.}

11.ant 的编译脚本
    < @H_967_262@path  id ="groovy.classpath" >  
       
< @H_967_262@patHelement  path ="${Basedir}/ROOT/WEB-INF/classes/" />   
      
< @H_967_262@fileset  dir ="${Basedir}/ROOT/WEB-INF/lib" >
             < @H_967_262@include  name ="*.jar" />
         </ @H_967_262@fileset >
     </ @H_967_262@path >
     < @H_967_262@taskdef  name ="groovyc"  classname ="org.codehaus.groovy.ant.Groovyc" >
         < @H_967_262@classpath  refid ="groovy.classpath" />
     </ @H_967_262@taskdef >
     < @H_967_262@target  name ="groovy" >
         < @H_967_262@groovyc  destdir ="${project.basedir}/ROOT/WEB-INF/classes"
         srcdir ="${project.basedir}/src"     listfiles ="true" >  
           
< @H_967_262@classpath  refid ="groovy.classpath" />
         </ @H_967_262@groovyc >
     </ @H_967_262@target >

大佬总结

以上是大佬教程为你收集整理的Groovy 笔记全部内容,希望文章能够帮你解决Groovy 笔记所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:groovy笔记