在公司内部分享中准备了Groovy&Grails的一些内容,在这里列出PPT中的核心内容,以便有兴趣的朋友对Groovy和Grails有初步的印象,后面会就这一主题有更深入的分享。
RoR(Ruby on Rails)的革命与Web开发的新时代
开发效率是J2EE的5倍以上。
Java的困惑:繁琐的配置、耗时的环境、可移植性差、资源占用大。
动态语言:动态类型、动态结构(元编程)。
RoR的设计思想是简化开发过程,各层的设计只有一个目标,就是简单。
与PHP比,它的组织结构更加清晰。
约定优于配置。
*动态类型:运行时确定变量的类型信息。
*动态结构:利用“元编程”技术,在程序运行时对类的属性和方法进动态增减。
*元编程:编写或者操纵其他程序(或者自身)作为它们的数据,或者在运行时完成部分本应在编译时完成的工作。
RoR并不完美
Ruby语言方面的不足:执行性能差、GC缺陷;与java区别大。
对历史遗留项目的支持较为困难。
Groovy | Java |
println “Hello Groovy!” | System.out.println(“Hello Groovy!”); |
9.times{print 8} | for(int i=0;i<9;i++){ System.out.print(8); } |
9.downto(5){print 8} | for(int i=9;i>4;i--){ System.out.print(8); } |
def list=[100,888,783] for(i in list){print i} |
List list = new ArrayList(); list.add(100);….. for(…){…} |
[“Sunday”,”Saturday”,”Wednesaday”].each{day-> println “Today is ${day}” } |
... |
在Groovy可以用def定义无类型的变量(定义变量方面def与JavaScript中的var相似),和返回值为无类型的方法,而在Java中没有def
Groovy:
class Man {
def name = "张三“
def introduce() {
return "I'm $name" // return可以省略
}
}
Groovy中switch语句与Java中相同,不过支持更多类型了,比如String
map在Groovy中 def m = [a: 5, b: 2]
Groovy不仅有? :三元操作符,还有?:两元操作符,但Java只有? :三元操作符 def result = a ?: "default result“
多重赋值
[a, b] = [1, 2]
[a, b] = [b, a] // 交换a和b的值