<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    gr8vyguy@Blogjava

    Groovy讀書筆記1

    Groovy in Action
        -- DIERK KÖNIG

    Source code is a means of communication: from you to the compiler, to other team members, and then back to you.
    There is both a technical and a human aspect in this communication.

    reveal the programmer’s intent in the code as clearly as possible

    Literate Programming
        像寫作文學小說一樣寫程序

    a smooth transition

    a seamless mix-and-match of Groovy and Java

    Grais is the Groovy web application framework.
        最值得學習的Groovy框架

    Chapter 1

    Groovy will build on your existing experience and familiarity with the Java platform.

    James Strachan inventer of Groovy
        在Internet Cafe學習Python的時候,產生了為Java Platform引進類似Python的動態語言特性

    Groovy’s aims
       feature rich and Java friendly

    Groovy is implemented in Java and Groovy itself.

    Agility and Dynamik

    DSL: domain specific language

    Part 1

    Chapter 2

    #! shebang
        first line comment, to find groovy interpreter

    GLS: Groovy Language Specification

    Optional parentheses:
       帶括號的是method call
       不帶括號的為command call, command call只有在參數極其簡單的時候用,比如參數里出現(), []
            比如println (1..10).getClass().getName() 容易讓人誤解。

    Groovy自動import
        groovy.lang.*
        groovy.util.*
        java.lang.*   (Java已經import)
        java.util.*
        java.net.*
        java.io.*
        java.math.BigInteger和java.math.BigDecimal

    assert是一個keyword, 而不是Groovy加到java.lang.Object的一個method, 所以
       assert (1..10).size() == 11不像command一樣有問題

    ==
      測試equality,而不是identity, 即
      x == y 等同于Java的 x.equals(y), Java中的x == y在Groovy中為x.is(y)

    def keyword means "dynamically typed".
        沒有def,沒有type是指environment binding variables,是global的

    groovy File.groovy
        File.groovy必須是一個Script,a class with main method, a Runnable或者a GroovyTestCase

    GroovyBean: Class with Property, Groovy簡化JavaBean
        1. Generating the accessor methods, default visibility => define property, generate get/set(if non final)
        2. Simplified access to all Bean(JavaBean and GroovyBean)    Bean.property
        3. Simplified registration of event handlers

    GString with "
        GString is not subclass of String, No class can be subclass from String , because String is final.

    Numbers are objects, not primitive type

    Subscript Operator [ ]

    Ranges
        1..10, subclass of List

    Groovy Class Loader
         load class from *.groovy transparently

    AST: Abstract Syntax Tree

    GDK不僅為JDK增加新類,而且為己存在的類增加新的功能。
        為己存在的類增加新的功能是怎么實現的?
               關鍵是MetaClass, Groovy Code里所有的Method Call都要都MetaClass.invokeMethod處理。

              this.foo()     generated as(simplified)
                      this.getMetaClass().invokeMethod(this, "foo", EMPTY_PARAMS_ARRAY)

              這肯定會影響Groovy程序的效率,不知道groovyc優化的效果怎么樣? groovyc只是compile time的事情,
              無法獲得runtime的信息,更會減少優化的機會,如果有JVM來做的話,優化的機會應該更多一些。

    evaluate(code)

    posted on 2007-12-10 12:16 gr8vyguy 閱讀(902) 評論(0)  編輯  收藏 所屬分類: Java

    <2007年12月>
    2526272829301
    2345678
    9101112131415
    16171819202122
    23242526272829
    303112345

    導航

    統計

    公告

  • 轉載請注明出處.
  • msn: gr8vyguy at live.com
  • 常用鏈接

    留言簿(9)

    隨筆分類(68)

    隨筆檔案(80)

    文章分類(1)

    My Open Source Projects

    搜索

    積分與排名

    最新評論

    主站蜘蛛池模板: 99ee6热久久免费精品6| 女人体1963午夜免费视频| 国产成人免费爽爽爽视频| 亚洲国产电影在线观看| 97视频免费观看2区| 亚洲人成电影亚洲人成9999网| 外国成人网在线观看免费视频| 久久久久久亚洲精品中文字幕| 久久伊人免费视频| 亚洲视频免费在线看| 黄色网址免费大全| 亚洲看片无码在线视频| 女人与禽交视频免费看| 国产成人 亚洲欧洲| 免费一级毛片女人图片| aa级女人大片喷水视频免费| 亚洲乱码日产一区三区| 最近中文字幕无免费| 亚洲日本国产综合高清| 国产免费人视频在线观看免费 | 亚洲精品视频在线免费| 亚洲免费一级视频| 久久夜色精品国产噜噜亚洲a| 在线观看免费亚洲| 国产精品玖玖美女张开腿让男人桶爽免费看 | 亚洲国产高清在线精品一区| 拨牐拨牐x8免费| 一级特级aaaa毛片免费观看| 亚洲AV无码专区在线播放中文| 1000部拍拍拍18勿入免费视频软件| 亚洲最大的成人网| 中文字幕亚洲无线码a| 青青草无码免费一二三区| 亚洲国产系列一区二区三区| 亚洲国产精品13p| 精品熟女少妇a∨免费久久| 亚洲av永久无码精品秋霞电影秋| 在线观看亚洲精品福利片| 久久精品国产免费观看| 美女18毛片免费视频| 337p日本欧洲亚洲大胆色噜噜 |