精通Groovy_A 介绍, 与Java对比, 入门, 没有类型
使用 Groovy 的简单语法开发 Java 应用程序开始之前关于本教程Groovy 并没有取代 Java,而是作为 Java 的补充,它提供了更简单、更灵活的语法,可以在运行时动态地进行类型检查。 Groovy 是一门动态语言,它能够像 Java 语言本身一样很好地应用于 Java 平台 学习目标Groovy 集合、Groovy 类, Groovy 的语法 系统需求Sun 的 JDK 1.5.0_09(或更新版本)或 Eclipse IDE 可以安装 Groovy Eclipse 插件 推荐系统的配置 本教程的操作说明和示例均基于 Microsoft Windows 操作系统 关于 Groovy什么是 Groovy?Groovy 是 JVM 的一个替代语言 – 可以用 Groovy 在 Java 平台上进行 Java 编程,使用方式基本与使用 Java 代码的方式相同。在编写新应用程序时,Groovy 代码能够与 Java 代码很好地结合,也能用于扩展现有代码。 Groovy 的一个好处是,它的语法与 Java 语言的语法很相似。虽然 Groovy 的语法源于 Smalltalk 和 Ruby 这类语言的理念,但是可以将它想像成 Java 语言的一种更加简单、表达能力更强的变体。 Groovy 和 Java 语言的主要区别是:完成同样的任务所需的 Groovy 代码比 Java 代码更少。 Groovy 快捷方式
Groovy 的新增特性虽然 Groovy 允许省略 Java 语法中的一些元素,但也增加了一些新特性,例如本地集合、内置的正则表达式和闭包。 关于闭包闭包是一个令人兴奋的新技巧。这些神奇的构造将会包含在未来的 Java 发行版成为正式的 Java 语法。 动态的 Groovy从技术上讲,Groovy 可能是类型最松散的动态语言之一。从这个角度讲,Groovy 与 Java 语言的区别很大,Java 语言是一种固定类型语言。在 Groovy 中,类型是可选的,所以您不必输入 String myStr = “Hello”; 来声明 String 变量。 除此之外,Groovy 代码还能在运行时轻松地改变自己。这实际上意味着,能够在运行时轻松地为对象指定新方法和属性。这一编程领域称为元编程,Groovy 能够很好地支持这种编程方式。 一体两面用 Groovy 编写的任何内容都可以编译成标准的 Java 类文件并在 Java 代码中重用。类似地,用标准 Java 代码编写的内容也可以在 Groovy 中重用。所以,可以轻易地使用 Groovy 为 Java 代码编写单元测试。而且,如果用 Groovy 编写一个方便的小工具,那么也可以在 Java 程序中使用这个小工具。 Groovy 初探为什么要学习 Groovy?Groovy 是一种更有生产力 的语言。它具有松散的语法和一些特殊功能,能够加快编码速度。 只用一个示例即可说明问题:一旦发现使用 Groovy 在集合中导航的容易程度,您就再也不会用 Java 处理集合导航了。 入门非常容易将 Groovy 集成到开发环境很容易。无需安装新的运行时工具或专门的 IDE。实际上,只需将 Groovy 的一个 jar 文件放在类路径中即可。 而且,Groovy 是一种开源语言,由 Java 开发人员社区管理。因为 Groovy 获得 Apache Software License,Version 2.0,所以可以自由地使用它开发自由软件和私有软件。 Groovy 和 Java 语言对比用 Java 编写的 Hello Worldpublic class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
编译和运行 Java 示例
运行经过编译的类
用 Groovy 编写的 Hello WorldGroovy 支持松散的 Java 语法 – 不需要为打印 “Hello World!” 这样的简单操作定义类。 Groovy 使日常的编码活动变得更容易,e.g. Groovy 允许输入 println,而无需输入 System.out.println。当您输入 println 时,Groovy 会非常聪明地知道您指的是 System.out。 用 Groovy 编写 Hello World 程序 println "Hello World!"
注意,在这段代码周围没有类结构,而且也没有方法结构!使用 println 代替了 System.out.println。 运行 Groovy 示例
c:>groovy MyFirstExample.groovy 快捷方式应用不必编译 .groovy 文件。这是因为 Groovy 属于脚本语言。脚本语言的一个特点就是能够在运行时进行解释。(在 Java 中,要从源代码编译生成字节码,然后才能进行解释。区别在于脚本语言能够直接 解释源代码。) Groovy 允许完全省略编译步骤,不过仍然可以 进行编译。如果想要编译代码,可以使用 Groovy 编译器 groovyc。用 groovyc 编译 Groovy 代码会产生标准的 Java 字节码,然后可以通过 java 命令运行生成的字节码。 至于运行代码,如果希望更加简洁,还能输入
无需定义任何文件 Groovy 入门轻松安装 Groovy需要做的全部工作就是安装 Eclipse 的 Groovy 插件; 在选项中导航 完成安装 可能需要重新启动 Eclipse; 创建 Groovy 项目请确保创建两个源文件夹 — 一个称为 “groovy”,另一个称为 “java”。编写的 Groovy 代码放在 groovy 文件夹,Java 代码放在 java 文件夹。将二者分开将会很有用; 将 Groovy 导入项目 创建 Groovy 类 给类命名 Hello World! — 用 Groovy 编写的 Java 程序class HelloWorld {
static void main(args) {
}
}
它不包含 public 修改符,没有类型; 编译程序在 main 方法内加入 println “Hello World” class HelloWorld {
static void main(args) {
println "Hello World"
}
}
右键->Compile Groovy File 运行程序 学到了什么? Groovy 变身为 JavaHello,Java!为了确信 Groovy 就是 Java,现在在 HelloWorld 类声明和方法声明前面加上 public 修改符 public class HelloWorld {
public static void main(args) {
println "Hello World"
}
}
还不确信? public class HelloWorld {
public static void main(String[]args) {
println "Hello World"
}
}
现在还没完 public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World")
}
}
现在的代码与前面用 Java 编写的 Hello World 示例完全相同,groovy更容易编写; 注意,原来的基于 Groovy 的 HelloWorld 类没有任何 public 修改符,没有任何类型(没有 String[]),而且提供了没有括号的 println 快捷方式。 Hello,Groovy!如果喜欢,可以将这个过程完全翻转过来,回到基于 Java 的 Hello World 示例,删除文件里的所有内容,只保留 System.out 行,然后在这行删除 System.out 和括号。最后只剩下 println "Hello World"
运行程序! Groovy 是没有类型的 Java 代码为什么要有类型定义?在 Java 中,如果要声明一个 String 变量 String value = "Hello World";
但是,等号右侧的字符已经表明 value 的类型是 String。所以,Groovy 允许省略 value 前面的 String 类型变量,并用 def 代替。 def value = "Hello World"
Groovy 会根据对象的值来判断它的类型 运行程序! String message = "Hello World"
println message
运行代码,会在控制台上看到与前面一样的 “Hello World”。 除了输出 message 的值,还可以用以下调用输出它的类型: def message = "Hello World"
println message.class
输出 “class java.lang.String”:Groovy 推断出 message 一定是 String 类型的,因为它的值是用双引号括起来的。 类型推断的更多内容在 Groovy 中 “一切都是对象” – 但对于类型来说这句话意味着什么呢? def message = 12
println message.class
message 变量的数字值看起来像是 Java 的原生类型 int。但是运行代码就可看出,Groovy 将它作为 Integer。这是因为在 Groovy 中 “一切都是对象”; Java 中的所有对象都扩展自 java.lang.Object,这对 Groovy 来说非常方便。即使在最糟的情况下,Groovy 运行时不能确定变量的类型,它只需将变量当成 Object,问题就解决了。 无类型有什么意义那么,Groovy 缺少类型意味着所需的输入更少。不可否认,将 String 替换成 def 并没有真正节约多少打字工作; 但是在更高的层次上看,在编写大量不仅仅包含变量声明的代码的时候,没有类型确实减少了许多打字工作。 所以,只需要使用 def 关键字就能在方法中声明一个独立变量,不需要将 def 关键字作为方法声明中的参数。在 for 循环声明中也不需要它,这意味着不用编写 (int x = 0; x < 5; x++),相反,可以省略 int,保留空白。 —TBC— —YCR— (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |