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的動態(tài)語言特性

          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只有在參數極其簡單的時候用,比如參數里出現(xiàn)(), []
                  比如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增加新類,而且為己存在的類增加新的功能。
              為己存在的類增加新的功能是怎么實現(xiàn)的?
                     關鍵是MetaClass, Groovy Code里所有的Method Call都要都MetaClass.invokeMethod處理。

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

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

          evaluate(code)

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

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

          導航

          統(tǒng)計

          公告

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

          留言簿(9)

          隨筆分類(68)

          隨筆檔案(80)

          文章分類(1)

          My Open Source Projects

          搜索

          積分與排名

          最新評論

          主站蜘蛛池模板: 五莲县| 古蔺县| 滁州市| 济宁市| 铜鼓县| 罗平县| 精河县| 留坝县| 长治县| 湄潭县| 水富县| 涟源市| 中方县| 同江市| 黔西| 璧山县| 瑞昌市| 灵台县| 思南县| 塔河县| 普格县| 清徐县| 眉山市| 平凉市| 长春市| 邛崃市| 阿拉尔市| 关岭| 乌兰察布市| 称多县| 库尔勒市| 辽阳县| 金坛市| 新干县| 宁德市| 莱阳市| 枣阳市| 屏南县| 唐山市| 英吉沙县| 镇宁|