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上:
Paste_Image.png
更多的例子——ls -l
在Windows上,簡單地把ls
替換為dir
是不起作用的。原因在于,盡管ls
是一個可以在類Unix系統上執行的程序,但dir
并不是一個程序,它只是一個shell命令。需要調用cmd
,并讓它來執行dir
命令: