Java平台的核心优势之一就是其Java开发包(JDK)。
Groovy通过向JDK的各种类中添加便捷方法,扩展为GDK(或Groovy JDK)。
下面通过讲解Groovy扩展的一个方法来演示GDK是如何扩展的:一个用于与外部进程通信的GDK便捷方法
Java版本
Java中可以使用java.lang.Process
与系统级进程交互。
Groovy版本
Groovy通过在java.lang.String
类上添加一个execute()
方法。
在Groovy代码中,仍然使用了
Process
和JDK。
那些让利用JDK和Java平台的力量更困难且更耗时的不必要的复杂性,才是我们的敌人。
String
的execute()
方法创建了一个扩展了java.lang.Process
的类的实例
当在String
实例上调用execute()
方法时,Groovy创建了一个扩展了java.lang.Process
的类的实例,就像Java代码中Runtime
类的exec()
方法所做的那样。
当在类Unix机器上运行时,输出如下:
java.lang.UNIXProcess
在Windows机器上,输出则是:
java.lang.ProcessImpl
Groovy在Process
类上添加getText()
方法
当调用text
时,是在调用Groovy在Process
类上添加的getText()
方法,其功能是将该进程的整个标准输出读到一个String
对象中。
如果只是想等待进程结束,可以使用waitFor()
或Groovy添加的waitForOrKill()
方法。
更多的例子——groovy -v
在Windows上:
更多的例子——ls -l
在Windows上,简单地把ls
替换为dir
是不起作用的。原因在于,尽管ls
是一个可以在类Unix系统上执行的程序,但dir
并不是一个程序,它只是一个shell命令。需要调用cmd
,并让它来执行dir
命令: