Java 拓展之调用其他语言

时间:2022-10-25 17:42:21

目前而言,编程语言真的是太多了。每一种都是一种智慧的结晶,但是每个都存在其缺点。网上经常能看到一些程序员争论“XX是世界上最好的语言”之类的话题。其实我们大可不必这样。语言本身只是一种工具,一种帮助我们实现自己功能的工具。我们为什么非要一棵树上吊死呢?

我不否认,使用一种语言。确实便于维护和管理。但是综合多种语言,共同完成一个项目,岂不更加高效吗?这正如一个团队项目,几个人一起做,总比一个人孤军奋战来的好吧。

下面,我就以Java语言为主,分别讨论一下如何调用其他语言来完成我们的需求。


Java 调用简单CMD

CMD作为windows平台上脚本老大哥,虽然命令很少,但是功能还是很强大的。在Java中调用外部的执行命令,只需要使用Runtime即可。


public class CMDRelative {

    public static void main(String[] args) {
        Runtime r = Runtime.getRuntime();
        System.out.println("Ready to carry CMD!");
        try {
            r.exec("cmd /k calc");
        } catch (Exception e) {
            e.printStackTrace();
        }
        System.out.println("End to carry CMD!");
    }
}

exec方法有很多的重载,我们可以根据情况来进行调用。

Java调用CMD并实现内容的输出

要想获得CMD命令执行的反馈信息,需要借助输入流来实现。如下:

public static void callPing() {
        try {
            Process p = Runtime.getRuntime().exec("ping www.douban.com");
            BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
            String line = "";
            StringBuilder sb = new StringBuilder();
            while((line=br.readLine())!=null){
                sb.append(line);
                sb.append("\n");
            }
            line = new String(sb);
            System.out.println(line.toString());
            br.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

调用此方法之后,控制台获得的反馈信息如下:


正在 Ping www.douban.com [211.147.4.32] 具有 32 字节的数据:
来自 211.147.4.32 的回复: 字节=32 时间=29ms TTL=49
来自 211.147.4.32 的回复: 字节=32 时间=29ms TTL=49
来自 211.147.4.32 的回复: 字节=32 时间=25ms TTL=49
来自 211.147.4.32 的回复: 字节=32 时间=55ms TTL=49

211.147.4.32 的 Ping 统计信息:
    数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
    最短 = 25ms,最长 = 55ms,平均 = 34ms

如此,便可以实现Java调用CMD,并获得反馈信息。

Java调用Python

Python是一个抽象层次更高的语言,其完美的库真的是让人爱不释手啊,强大的库成就了Python。下面我们就来看一个小例子,看看Java是怎么调用Python的。使用Java调用Python的前提是有一个运行环境的支持,这里采用的是jython.jar

jython.jar下载地址

先看看Python代码吧。

print 'Hello Java.I am Python.Enjoy my funny'

from time import * 

print asctime()
print 'Begin to create one file'
wrfile = open('E:\\Code\\Java\\Test4Android\\src\\python\\Python_file','wb')
rdfile = open('E:\\Code\\Java\\Test4Android\\src\\python\\RunPython.java','rb')
content = rdfile.read()
rdfile.close()
wrfile.write(content)
wrfile.close()
print 'write file process end!'

然后是Java代码

package python;

import org.python.util.PythonInterpreter;

public class RunPython {

    public static void main(String[] args) {

        System.out.println("Begin to run python script:");

        PythonInterpreter interpreter = new PythonInterpreter();
        interpreter.execfile("E:\\Code\\Java\\Test4Android\\src\\python\\input.py");

    }

}

下面看看执行的结果:

Begin to run python script:
Hello Java.I am Python.Enjoy my funny
星期二 六月 28 19:33:56 2016
Begin to create one file
write file process end!

然后确实可以在同级的目录下,发现多了一个名为Python_file.txt的文件。打开之后,内容和RunPython.java 是一致的。

额外的话

其实今天的代码部分的分享到这里就完了,但是从这两个小例子中我们不难看出。每种语言都有其优点,我们要学会利用它们的优点,而且是发挥出它们本身最大的价值。这样才能事半功倍。单纯的依靠一种语言,恐怕效果并不一定会很好的吧。

比如,我们用Python收集数据,使用Java进行处理,使用js完善,等等吧。

其实技术上不是最困难的,真正困难的是如何打破思维僵化,打破惯性!

:-)





最后附上一个CMD命令查询表

★CMD命令★
1. gpedit.msc-----组策略
2. sndrec32-------录音机
3. Nslookup-------IP地址侦测器
4. explorer-------打开资源管理器
5. logoff---------注销命令
6. tsshutdn-------60秒倒计时关机命令
7. lusrmgr.msc----本机用户和组
8. services.msc---本地服务设置
9. oobe/msoobe /a----检查XP是否激活
10. notepad--------打开记事本
11. cleanmgr-------垃圾整理
12. net start messenger----开始信使服务
13. compmgmt.msc---计算机管理
14. net stop messenger-----停止信使服务
15. conf-----------启动netmeeting
16. dvdplay--------DVD播放器
17. charmap--------启动字符映射表
18. diskmgmt.msc---磁盘管理实用程序
19. calc-----------启动计算器
20. dfrg.msc-------磁盘碎片整理程序
21. chkdsk.exe-----Chkdsk磁盘检查
22. devmgmt.msc--- 设备管理器
23. regsvr32 /u *.dll----停止dll文件运行
24. drwtsn32------ 系统医生
25. rononce -p ----15秒关机
26. dxdiag---------检查DirectX信息
27. regedt32-------注册表编辑器
28. Msconfig.exe---系统配置实用程序
29. rsop.msc-------组策略结果集
30. mem.exe--------显示内存使用情况
31. regedit.exe----注册表
32. winchat--------XP自带局域网聊天
33. progman--------程序管理器
34. winmsd---------系统信息
35. perfmon.msc----计算机性能监测程序
36. winver---------检查Windows版本
37. sfc /scannow-----扫描错误并复原
38. taskmgr-----任务管理器(2000/xp/2003
39. winver---------检查Windows版本
40. wmimgmt.msc----打开windows管理体系结构(WMI)
41. wupdmgr--------windows更新程序
42. wscript--------windows脚本宿主设置
43. write----------写字板
44. winmsd---------系统信息
45. wiaacmgr-------扫描仪和照相机向导
46. winchat--------XP自带局域网聊天
47. mem.exe--------显示内存使用情况
48. Msconfig.exe---系统配置实用程序
49. mplayer2-------简易widnows media player
50. mspaint--------画图板
51. mstsc----------远程桌面连接
52. mplayer2-------媒体播放机
53. magnify--------放大镜实用程序
54. mmc------------打开控制台
55. mobsync--------同步命令
56. dxdiag---------检查DirectX信息
57. drwtsn32------ 系统医生
58. devmgmt.msc--- 设备管理器
59. dfrg.msc-------磁盘碎片整理程序
60. diskmgmt.msc---磁盘管理实用程序
61. dcomcnfg-------打开系统组件服务
62. ddeshare-------打开DDE共享设置
63. dvdplay--------DVD播放器
64. net stop messenger-----停止信使服务
65. net start messenger----开始信使服务
66. notepad--------打开记事本
67. nslookup-------网络管理的工具向导
68. ntbackup-------系统备份和还原
69. narrator-------屏幕“讲述人”
70. ntmsmgr.msc----移动存储管理器
71. ntmsoprq.msc---移动存储管理员操作请求
72. netstat -an----(TC)命令检查接口
73. syncapp--------创建一个公文包
74. sysedit--------系统配置编辑器
75. sigverif-------文件签名验证程序
76. sndrec32-------录音机
77. shrpubw--------创建共享文件夹
78. secpol.msc-----本地安全策略
79. syskey---------系统加密,一旦加密就不能解开,保护windows xp系统的双重密码
80. services.msc---本地服务设置
81. Sndvol32-------音量控制程序
82. sfc.exe--------系统文件检查器
83. sfc /scannow---windows文件保护
84. tsshutdn-------60秒倒计时关机命令
3. 84. tsshutdn-------60秒倒计时关机命令
85. tourstart------xp简介(安装完成后出现的漫游xp程序)
86. taskmgr--------任务管理器
87. eventvwr-------事件查看器
88. eudcedit-------造字程序
89. explorer-------打开资源管理器
90. packager-------对象包装程序
91. perfmon.msc----计算机性能监测程序
92. progman--------程序管理器
93. regedit.exe----注册表
94. rsop.msc-------组策略结果集
95. regedt32-------注册表编辑器
96. rononce -p ----15秒关机
97. regsvr32 /u *.dll----停止dll文件运行
98. regsvr32 /u zipfldr.dll------取消ZIP支持
99. cmd.exe--------CMD命令提示符
100. chkdsk.exe-----Chkdsk磁盘检查
101. certmgr.msc----证书管理实用程序
102. calc-----------启动计算器
103. charmap--------启动字符映射表
104. cliconfg-------SQL SERVER 客户端网络实用程序
105. Clipbrd--------剪贴板查看器
106. conf-----------启动netmeeting
107. compmgmt.msc---计算机管理
108. cleanmgr-------垃圾整理
109. ciadv.msc------索引服务程序
110. osk------------打开屏幕键盘
111. odbcad32-------ODBC数据源管理器
112. oobe/msoobe /a----检查XP是否激活
113. lusrmgr.msc----本机用户和组
114. logoff---------注销命令
115. iexpress-------木马捆绑工具,系统自带
116. Nslookup-------IP地址侦测器
117. fsmgmt.msc-----共享文件夹管理器
118. utilman--------辅助工具管理器
119. gpedit.msc-----组策略
120. explorer-------打开资源管理器