Java 拓展之调用其他语言
2016-06-28 19:42
477 查看
目前而言,编程语言真的是太多了。每一种都是一种智慧的结晶,但是每个都存在其缺点。网上经常能看到一些程序员争论“XX是世界上最好的语言”之类的话题。其实我们大可不必这样。语言本身只是一种工具,一种帮助我们实现自己功能的工具。我们为什么非要一棵树上吊死呢?
我不否认,使用一种语言。确实便于维护和管理。但是综合多种语言,共同完成一个项目,岂不更加高效吗?这正如一个团队项目,几个人一起做,总比一个人孤军奋战来的好吧。
下面,我就以Java语言为主,分别讨论一下如何调用其他语言来完成我们的需求。
exec方法有很多的重载,我们可以根据情况来进行调用。
调用此方法之后,控制台获得的反馈信息如下:
如此,便可以实现Java调用CMD,并获得反馈信息。
jython.jar下载地址
先看看Python代码吧。
然后是Java代码
下面看看执行的结果:
然后确实可以在同级的目录下,发现多了一个名为Python_file.txt的文件。打开之后,内容和RunPython.java 是一致的。
比如,我们用Python收集数据,使用Java进行处理,使用js完善,等等吧。
其实技术上不是最困难的,真正困难的是如何打破思维僵化,打破惯性!
:-)
最后附上一个CMD命令查询表
我不否认,使用一种语言。确实便于维护和管理。但是综合多种语言,共同完成一个项目,岂不更加高效吗?这正如一个团队项目,几个人一起做,总比一个人孤军奋战来的好吧。
下面,我就以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.jarjython.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-------打开资源管理器
相关文章推荐
- Java 拓展之调用其他语言
- Spring AOP实现复杂的日志记录(自定义注解)
- java 调用 .net webservice 示例
- 《Java虚拟机并发编程》学习笔记
- Java带有限制的通配符
- JAVA IO流详解
- JDK,JRE,JVM区别与联系(ZZ)
- 多态,前提,特点,好处,弊端
- Java三大特性之---多态
- java,方法重写,final
- java 消息机制 ActiveMQ入门实例
- JS 和 Java 中URL特殊字符编码方式
- jdk1.7.0_79.tar安装
- MyEclipse部署Web Project时,一个不易察觉的问题
- Spring bean三种创建方式
- java LinkedList源码解读
- eclipse openwrt 交叉编译链设置
- JAVA中的XML文件--文件读取(下)
- Java三大特性之---继承
- Xml和Json相互转换的java