计算机科学与技术文献翻译r,java和object c之间桥连接方法毕设论文.doc
文本预览下载声明
单位代码 01
学 号 100301019
分 类 号
密 级
文献翻译
R,Java和Object C之间桥方法
院(系)名称 信息工程学院 专业名称 计算机科学与技术 学生姓名 指导教师 霞
201年月6日
英文译文
R,Java和Object C之间桥方法
西蒙,乌尔巴内克
R是一个非常流行和通用的统计计算环境(R核心开发团队)。它为许多功不可没的包提供了平台,自己的功能也得到了推广,R为许多领域提供了前沿的工具。R的这种可扩展性从某种程度上让R和本地代码进行通信成为可能。其中一个扩展性手段就是在其他系统和语言中创建接口,这样,在这个系统中就能让R用户进入并对提供的应用程序和库文件进行访问。
现在R直接支持Java和Object C这两种系统。他们提供了一个大幅度重复使用已经存在的工具的机会,例如图形用户界面(GUIs),计算库或者通信设备。新增的实用性接口让基于这些接口的广泛用户得以部署工程。
首先我们将详细讨论Java接口,在一个简介之后我们将以用户角度举例高亮文本接口。下一个区域我们将逐渐由开发,书写软件包,嵌入到实现细节和当前方法的局限性。最后我们将聚集包开发焦点讨论Object C 接口。
首先,对Java 的支持已经在R 2.2.0版已经有介绍,后来在实质上也得到增强。它的目的是让包的开发很容易访问Java功能。这已经通过建立Java虚拟机(JVM)环境和通过提供Java运行时刻位置信息得到解决。这个信息在编译时刻收集,但是可以随后通过任何安装过R的R CMD javareconf命令更新。它通常在Java配置发生改变时起作用,例如,在Java运行时刻版本更新后起作用。
有两种方法链接R与Java环境 :
从一个运行的R中开启一个JVM
在这种情形下用户用普通方法使用R(例如:通过命令行和一些GUI),Java通过执行运算或者提供其他一些服务来使用。典型的一个应用都是为java中执行运算包,例如:RWeka(Hornik et al 2007),提供用户接口元素,例如:iPlots(Urbanek 和 Theus 2003)或者跨平台访问资源,例如:RJDBC(RJDBC)。
从Java应用程序中嵌入R
这里R被作为这个应用程序的一个线程运行,这样R就能向程序提供它的服务。一个典型的应用R GUIs, 例如:JGR(JGR)或者程序通过R来计算,例如:Mondrian(Theus 2002)或者myJavaStat(Harner et al. 2007)。
这个普遍的差别同样适用于Object C:基于线程的服务可以通过R中实例化R中的Object C类来使用,反之,Mac OS X 中R GUI嵌入了一个基于运行时刻环境的Object C(Cocoa)。
接下来我们将集中于第一个部分,一个R用户想在他们的包和功能中连接Java功能的最令人感兴趣的部分。
尽管R通过设置环境提供基本的Java支撑,但是实际的接口是通过包提供。其中一个有效的包就是CRAN的rJava。它提供了一个非常快速的低水平的能和R中的.C,.Call或.Fortran相比拟的接口。
让我们在演示怎么写一个基于Java的包中去连接它的设备和往更深层次详细介绍。具体实现前先用一些简单的例子上阐述它的用法。
想要使用Java接口功能,开启JVM和加载rJava包是必需的。这是通过.jinit 函数提供一些与JVM初始化有关的可选参数。这样,一个简单的JVM初始化就可以如下操作:
library(rJava)
.jinit()
一旦JVM初始化成功,我们可以创建新的Java对象或者调用Java方法。让我们开始一个简单的例子吧:
s - .jnew(java.lang.String, Hello World!)
s
[1] Java-Object{Hello World!}
class(s)
[1] “jobRef”
使用.jnew 函数我们创建了一个新的Java对象,也就是一个内容为“Hello World!”的字符串这段代码与Java代码s= new Java.lang.String(“Hello World !”)相符合.我们返回的是通过jobRef(Java对象参照)表示的S4类的一个参照。由于S是一个Java对象我们可以调用方法和访问这个对象的域。让我们来调用len
显示全部