Java调用其他编程语言C、R
来源:互联网 发布:日本音乐知乎 编辑:程序博客网 时间:2024/06/05 16:55
今天背书看到一句话“Android结伴架构分为四层,在Application framework之下,有C/C++的程序组成,通过JNI完成由Java到C的调用”。
不理解JNI,只好继续扩展知识面了。
JNI全称:Java Native Interface,Java中有很多Native Method(相当于接口)的实现是由非Java语言实现的,例如C语言。
在C/C++中调用Java的方法一般分为五个步骤:初始化虚拟机、获取类、获取类的方法、创建类对象、调用方法和退出虚拟机。
网上例子:JNI学习
突然意识到,以前跟着老师做一个中医辅助平台项目,用到R语言做数据统计。
R是统计计算的强大工具,而JAVA是做应用系统的主流语言,两者天然具有整合的需要。
当时学习了R语言的语法,认识了一些库的运用,接下来的Java调用R语言交给了其他同学,自己没有深入了解。其实,调用R语言也有同样的方式。
一般有如下两种方式:
1.Rserve(远程通信模式)
在R里下载“Rserve”包,并安装。安装好后,运行如下命令启动“Rserver”
> library(Rserve)
> Rserve()
Java测试代码:
import org.rosuda.REngine.REXP;import org.rosuda.REngine.Rserve.RConnection;
public class Test { public static void main(String[] args) { try { RConnection c = new RConnection(); REXP x = c.eval("R.version.string"); System.out.println(x.asString()); } catch (Exception e) { e.printStackTrace(); } }}搞笑的是;每次都要在R工作环境中运行Rserve()。这是开启远程服务,基于TCP/IP的服务器,通过二进制协议传输数据,可以提供远程连接,使得客户端语言能够调用R。
2.JRI(嵌入式模式)
全名是Java R Interface,这是一种完全不同的方式,通过调用R的动态链接库从而利用R中的函数等。该项目已经成了rJava的子项目。
使用时通过install.packages("rJava"),安装rJava。在安装文件夹中,可以看到一个jri的子文件夹,里面有自带的例子可以用来测试。
修改系统的环境变量,在PATH中添加%R_HOME%/bin和%R_HOME%/library/rJava/jri,注意R_HOME的路径要正确,重启系统生效。
使用时同样在eclipse里导入外部的jar包(在www.rforge.net/rJava下载JRI.jar、REngine.jar和JRIEngine.jar这三个文件)。在rJava包安装目录下的jri/examples里有例子,可以测试是否成功。
我们当时项目中使用的是第一种方式。当时只是懵懂,现在又加深了一点认识。R语言最近一路飙升,其实真正用过感觉其发展的原因有:简洁,理解上手快。用的人群是擅长做数学统计,可以是非计算机专业人群。面对巨大而又复杂的分析运算时,真的很好用,也可以直观的给出数据专业性图表,虽然有些我还看不太懂~
- Java调用其他编程语言C、R
- JAVA调用R语言
- JAVA调用R语言
- java 调用R语言
- JAVA调用R语言
- Java调用R语言
- JAVA调用R语言
- Java 调用C 或者其他语言的方法-JNI
- Reserve java调用R语言
- java调用R语言之调用
- R 语言 调用自己写的其他函数(.R文档间调用)
- R调用C语言简单实例
- Java语言与C语言混合编程(2)--在Java中调用C语言本地库
- Java 拓展之调用其他语言
- 在线编程语言模拟(Java,C,Python,R语言,Ruby,PHP,Perl,Go等)
- java调用C语言
- Java调用C语言
- Java调用C语言
- java小知识 接口 String类
- 学习Spring的一些不错的推荐
- 常用 Git 命令清单
- 使用Suhosin保护PHP应用系统
- 读《这样读书就够了》
- Java调用其他编程语言C、R
- 开源许可介绍
- android source code
- Pacific Atlantic Water Flow问题及解法
- 比特币价值飙升,黑客如何从盗取近8千万美元的比特币中获利?
- VS2017激活密钥(专业版和企业版)
- java内存分配与垃圾回收
- C代码优化方案
- 百度地图导航工具类,包含骑行步行及驾车导航