本章将继续深入Groovy语言,首先学习Groovy脚本,包括从命令行编译和运行Groovy脚本,Groovy Shell,和Groovy Console。

你将学会使用Groovy语言来建立域对象、控制器和服务。而且使用Groovy的方法并非只有一种。另外,对于建立类,可以使用Groovy作为脚本语言。

例1:简单的Groovy脚本Hello.groovy

println "Hello ${args[0]}, may Groovy be with you."

执行以上代码:
PS D:\tmp\groovy> groovy Hello "Li Sir"
Hello Li Sir, may Groovy be with you.

在执行脚本的过程中,Groovy生成了一个与源文件同名的类文件,它包含main方法。

上面的代码如果换用Java来实现,会显得更为冗长。
public class HelloJava {
    public static void main(String[] args) {
        System.out.println( "Hello "+ args[0]+", may Java be with you." );
    }
}

1. 使用脚本函数

同大多数脚本语言那样,可以把Groovy脚本组织成可重用的代码块。这些块被称为函数。下面的例子说明了如何创建并使用一个函数。

def printFullName(firstName, lastName){
println "${firstName} ${lastName}"
}

printFullName('Luke', 'Skywalker')
printFullName('Li', 'Sir')

PS D:\tmp\groovy> groovy .\PrintFullName.groovy
Luke Skywalker
Li Sir

2. 编译Groovy

上面的例子省略了Groovy的编译过程,同Java一样,Groovy脚本也可以编译成字节码文件。如下所示:

PS D:\tmp\groovy> groovyc Hello.groovy

我们会看到目录下生成了一个名为Hello.class的字节码文件。但是,我们不能直接使用Java执行它。要使用Java执行它,需要这么做:

D:\tmp\groovy>java -cp %GROOVY_HOME%/embeddable/groovy-all-2.1.2.jar;. Hello "Li Sir"
Hello LiSir, may Groovy be with you.

可以使用java命令来运行Groovy程序,证明了Groovy就是Java。只需加上groovy-all-<version>.jar到类路径即可。

Groovy编译器是一个联合编译器,它可以同时编译Groovy代码和Java代码。Groovy联合编译器是1.5版本引入的,它来源于JetBrains公司的贡献(发明Intellij IDEA开发环境的公司)。联合编译器允许在单行编译语句中编译Groovy文件和Java文件。

示例:
Name.groovy代码:
public class SayHello{
public static void main(String[] args){
Name name = new Name();
name.setFirstName(args[0]);
System.out.println(name.toString());
}
}

SayHello.java代码:
public class SayHello{
public static void main(String[] args){
Name name = new Name();
name.setFirstName(args[0]);
System.out.println(name.toString());
}
}

联合编译:

D:\tmp>groovyc *.groovy *.java

执行代码:
D:\tmp>java -cp %GROOVY_HOME%/embeddable/groovy-all-2.1.2.jar;. SayHello
"Li Sir"
Hello Li Sir, Java calling Groovy

3. 运行Groovy

可以通过命令行、Groovy Shell、Groovy控制台等运行Groovy脚本和类。

3.1 命令行
在命令行下运行Groovy脚本有几个选择:

(1) 直接在命令行下使用groovy命令。
这种方式下,Groovy会产生一个包含脚本命令的带main()方法的类,编译脚本,并执行它。如果你不想每次运行时重新编译文件,你可以使用第三种选择。

(2) 编译groovy脚本为字节码文件,并使用Java执行。
正如之前的例子。

(3) Windows环境下可以让.groovy扩展名与groovy程序相关联。在Unix环境,使用下面的脚本可以实现同样的目的:
#!/usr/bin/groovy
println "Hello ${args[0]}, may Groovy be with you."

3.2 Groovy Shell

Groovy Shell是一个交互命令行程序,允许开发者创建、运行、保存、载入Groovy脚本和类。要启动Groovy Shell,只需运行groovysh。
D:\tmp\groovy>groovysh
Groovy Shell (2.1.2, JVM: 1.7.0_09)
Type 'help' or '\h' for help.
------------------------------------------------------------
groovy:000> 

在Groovy Shell下键入help,可以学习并使用一些Shell命令,

3.3 Groovy控制台

Groovy控制台是一个带图形界面的Groovy Shell。Groovy控制台使用SwingBuilder开发,使得开发更为方便。

http://blog.csdn.net/chszs/article/details/8763426

Groovy学习:第三章 Groovy开发环境的更多相关文章

  1. Groovy学习:第二章 Groovy语言的关键特征

    1. 断言Assertion断言:用于判断预期的条件是否为真.例子:def list = [1,2,'x']assert list.size()==32. AST转换期使用的注释AST转换的注释:Gr ...

  2. Python爬虫学习==>第三章:Redis环境配置

    学习目的: 学习非关系型数据库环境安装,为后续的分布式爬虫做基建 正式步骤 Step1:安装Redis 打开http://www.runoob.com/,搜索redis安装 打开搜索的内容,得到red ...

  3. [eShopOnContainers 学习系列] - 02 - vs 2017 开发环境配置

    [eShopOnContainers 学习系列] - 02 - vs 2017 开发环境配置 https://github.com/dotnet-architecture/eShopOnContain ...

  4. Groovy学习:第一章 用Groovy简化Java代码

    1. Groovy的安装 目前Groovy的最新版本为2.1.2版,下载地址为:http://groovy.codehaus.org/Download下载后解压groovy-binary-2.1.2. ...

  5. Android学习笔记(三)Android开发环境的搭建

    一.配置JAVA环境 二.配置Android开发环境 可以安装adt-bundle-windows,该压缩包一般自带Eclipse.或者安装Android Studio,要注意SDK的版本是否符合要求 ...

  6. Struts2框架学习第三章——Struts2基础

    本章要点 —  Struts 1框架的基本知识 — 使用Struts 1框架开发Web应用 —  WebWork框架的基本知识 — 使用WebWork框架开发Web应用 — 在Eclipse中整合To ...

  7. Direct3D11学习:(一)开发环境配置

    转载请注明出处:http://www.cnblogs.com/Ray1024   从今天开始,开启一个新的系列:Direct3D11的学习教程. 因为一直对3D方面比较感兴趣,最近决定开始学习D3D知 ...

  8. angularjs2 学习笔记(一) 开发环境搭建

    开发环境,vs2013 update 5,win7 x64,目前最新angular2版本为beta 17 第一步:安装node.js 安装node.js(https://nodejs.org/en/) ...

  9. Java基础知识二次学习--第三章 面向对象

    第三章 面向对象   时间:2017年4月24日17:51:37~2017年4月25日13:52:34 章节:03章_01节 03章_02节 视频长度:30:11 + 21:44 内容:面向对象设计思 ...

随机推荐

  1. APACHE两种域名跳转法简单完成重定向

    当我们变更网站域名,或者申请多个域名指向一个网站的时候,这个时候我们就会用到域名跳转(或者叫域名重定向redirect.域名转向).下面用最简单的文字讲两种apache的域名跳转方法. 假设我们想把w ...

  2. python基础--选择排序

    1.首先用一张图来描述选择排序的具体过程 2.废话不多说,上代码 # 1.定义函数:选择排序 def choose_sort(list): list_len = len(list) for i in ...

  3. [fw]LINUX中断描述符初始化

    LINUX中断描述符初始化 @CopyLeft by ICANTH,I Can do ANy THing that I CAN THink!~ Author: WenHui, WuHan Univer ...

  4. JQ的live学习

    $("#StartTime").live("blur keypress keyup",function(){ if($("#EndTime" ...

  5. 了解JSON Web令牌(JWT)

    JSON Web Token(JWT)是目前最流行的跨域身份验证解决方案.今天给大家介绍JWT的原理和用法. 1.跨域身份验证 Internet服务无法与用户身份验证分开.一般过程如下. 1.用户向服 ...

  6. 【异常】Caused by: java.lang.IllegalStateException: Method has too many Body parameters

    出现此异常原因是引文使用feign客户端的时候,参数没有用注解修饰 1.1GET方式错误写法 @RequestMapping(value="/test", method=Reque ...

  7. mongodb重置密码

    1.删除服务,重新创建没有验证的服务 2.关闭服务后修改conf文件auth=false或者 3.重新开启服务后然后进入mongo 查看是否存在用户 use admin db.system.users ...

  8. python函数参数*args **kwargs

    毕业多年,把C++都就饭吃了....今天居然在纠结什么是形参什么是实参..... 定义函数里面写的参数就是形参,因为没有内存占用,实际调用时写的参数就是实参,因为有内存占用和传值 然后就是位置参数,可 ...

  9. java 调用wsdl的webservice接口 两种调用方式

    关于wsdl接口对于我来说是比较头疼的 基本没搞过.一脸懵 就在网上搜 看着写的都很好到我这就不好使了,非常蓝瘦.谨以此随笔纪念我这半个月踩过的坑... 背景:短短两周除了普通开发外我就接到了两个we ...

  10. read(),readline() 和 readlines() 比较

    read(),readline() 和 readlines() 比较 共同点:均可接受一个变量用以限制每次读取的数据量,但通常不使用 区别: read() [即 fileObject().read( ...