![](https://csdnimg.cn/release/download_crawler_static/87975503/bg3.jpg)
(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 对象我
们可以调用方法和访问这个对象的域。让我们来调用 length 方法,如同 Java 中的
S.length():
> .jcall(s,”I”,”length”)