概念

Groovy扩展了JDK,这些扩展称之为GDK,下面的例子展示了GDK的能力。

在java中可以使用java.lang.Process与系统交互。假设我们要在代码中查看系统中Groovy的版本。

案例

java实现系统交互

class helloJava {public static void main(String[] args) {Process proc = Runtime.getRuntime().exec("groovy -v");BufferedReader result = new BufferedReader(new InputStreamReader(proc.getInputStream()))String line;while ((line = result.readLine()) != null){System.out.println(line);}}
}

运行结果:

Groovy Version: 2.5.7 JVM: 1.8.0_181 Vendor: Oracle Corporation OS: Mac OS X

我们可以发现,这段代码的核心语句只是“groovy -v”这一条命令,然而为了执行这一条命令用java代码却大费周章,这还不算代码中的异常处理。而由于Groovy的动态能力,GDK为String类型扩展了excute()方法。GDK使和系统交互变得异常简单。

Groovy实现系统交互

println "groovy -v".execute().text

运行结果:

Groovy Version: 2.5.7 JVM: 1.8.0_181 Vendor: Oracle Corporation OS: Mac OS X

扩展

上面说了java中可以使用java.lang.Process与系统交,可代码却使用的Runtime.getRuntime().exec()方法来获取Process类。

查看Runtime类的源代码可以看到exec方法的实现:

    public Process exec(String[] cmdarray, String[] envp, File dir)throws IOException {return new ProcessBuilder(cmdarray).environment(envp).directory(dir).start();}

我们当然也可以手动写上述代码,不过利用Runtime.getRuntime().exec()肯定更加方便而已。

Groovy学习(二):GDK初探相关推荐

  1. C#多线程学习(二) 如何操纵一个线程

    C#多线程学习(二) 如何操纵一个线程 原文链接:http://kb.cnblogs.com/page/42529/ [1] C#多线程学习(二) 如何操纵一个线程 [2] C#多线程学习(二) 如何 ...

  2. spring security 学习二

    spring security 学习二 doc:https://docs.spring.io/spring-security/site/docs/ 基于表单的认证(个性化认证流程): 一.自定义登录页 ...

  3. STL源码剖析学习二:空间配置器(allocator)

    STL源码剖析学习二:空间配置器(allocator) 标准接口: vlaue_type pointer const_pointer reference const_reference size_ty ...

  4. mysql用创建的用户登陆并修改表格_MySQL 基础学习二:创建一个用户表,并增删改查...

    MySQL 基础学习二:创建一个用户表,并 增删改查 提示:MySQL 命令建议都用大写,因为小写运行时,还是翻译成大写的. 第一步,创建一个用户表 1,打开控制台,进入数据库 C:\Users\Ad ...

  5. OpenCV学习(二十四 ):角点检测(Corner Detection):cornerHarris(),goodFeatureToTrack()

    OpenCV学习(二十四 ):角点检测(Corner Detection):cornerHarris(),goodFeatureToTrack() 参考博客: Harris角点检测原理详解 Harri ...

  6. OpenCV学习(二十二) :反向投影:calcBackProject(),mixChannels()

    OpenCV学习(二十二) :反向投影:calcHist(),minMaxLoc(),compareHist() 参考博客: 反向投影backproject的直观理解 opencv 反向投影 颜色直方 ...

  7. OpenCV学习(二十一) :计算图像连通分量:connectedComponents(),connectedComponentsWithStats()

    OpenCV学习(二十一) :计算图像连通分量:connectedComponents(),connectedComponentsWithStats() 1.connectedComponents() ...

  8. OpenCV学习(二十) :分水岭算法:watershed()

    OpenCV学习(二十) :分水岭算法:watershed() 参考博客: OpenCV-分水岭算法 图像处理--分水岭算法 OpenCV学习(7) 分水岭算法(1) Opencv分水岭算法--wat ...

  9. OpenCV与图像处理学习二——图像直方图与色彩空间

    OpenCV与图像处理学习二--图像直方图与色彩空间 2.4 图像直方图(Image Histogram) 2.4.1 直方图的绘制 2.4.2 三通道直方图绘制 2.5 颜色空间 2.5.1 RGB ...

  10. PyTorch框架学习二十——模型微调(Finetune)

    PyTorch框架学习二十--模型微调(Finetune) 一.Transfer Learning:迁移学习 二.Model Finetune:模型的迁移学习 三.看个例子:用ResNet18预训练模 ...

最新文章

  1. docker commit (从容器创建一个新的镜像)
  2. 比特币官网管理者Cobra认可BCH支付属性
  3. 关于 performSelector 的一些小探讨
  4. ConcurrentHashMap源码分析(1)——JDK1.7的实现
  5. WINCE cvrtbin命令简介
  6. Java之StringBuffer类
  7. Postman 最被低估的功能
  8. 复现经典:《统计学习方法》​第 11 章 条件随机场
  9. CSS 实例之翻转图片
  10. 网管,待遇为何如此差劲?
  11. 从 Hello World 开始
  12. pg与oracle区别,PostgresQL 学习记录之与oracle区别(一)
  13. Linux系统编程--2(环境变量,进程控制)
  14. Web框架——Flask系列之设置和读取cookie(十五)
  15. Android 窗口Dialog 代码以及使用
  16. android的listview点击获取当前选项值的方法
  17. Controller之间传递数据:协议传值
  18. (26)基于cookie的登陆认证(写入cookie、删除cookie、登陆后所有域下的网页都可访问、登陆成功跳转至用户开始访问的页面、使用装饰器完成所有页面的登陆认证)...
  19. python房屋租赁管理系统设计与实现报告_房屋租赁管理系统设计毕业论文
  20. rgb转hsv (Verilog)

热门文章

  1. 基于SAAS的都昌商业平台设计
  2. [半监督学习] In Defense of Pseudo-Labeling: An Uncertainty-Aware Pseudo-label Selection Framework for SSL
  3. 计算机操作系统存在的意义,电脑操作系统的作用
  4. 三菱Q系列通过wifi联服务器,三菱Q系列PLC以太网通讯,三步可以搞定!
  5. 微信公众号JSAPI支付对接
  6. 疾病地图制作_助力旅游业复工复产,这份山西中医文旅地图请收好,就在你家门口...
  7. 看雪学院将举办《安全开发者峰会》,有这11个安全议题
  8. 齐次线性方程组、齐次方程、齐次多项式
  9. 关于react、vue的一些问题
  10. PyMOL免费下载及安装教程【Win版】