本文通过一个简单的例子,详细讲述了通过JNI,java调用c++接口的步骤。
分类:
编程语言 时间:
2014-09-10 19:17:20
阅读次数:
272
最新因工作需要,需要在C++的开发中使用到Java,所以就想到了利用JNI来进行开发,JNI全称Java Native Interface,也就是Java的本地接口,JNI既可以实现Java到本地平台的开发,也可以将本地平台的开发移植到Java上(当然,这里必须要保证二进制的位数一样,因为Java也是程序,JVM也是区分32位版本和64位版本的),下面就简单介绍一下JNI的双向操作,本文章以Jav...
分类:
其他好文 时间:
2014-09-10 17:51:57
阅读次数:
266
环境:win7 32位 jdk1.7 R 2.15.0
java调用r主要有三种方式,rJava,rServer还有rCaller,这边主要讲用rJava调用
rJava是一个R语言和Java语言的通信接口,通过底层JNI实现调用,允许在R中直接调用Java的对象和方法。由于rJava是底层接口,并使用JNI作为接口调用,所以效率非常高。在JRI的方案中,JVM直接通过内存直接加载RVM,调用过程性能几乎无损耗,因此是非常高效连接通道,是R和Java通信的首选开发包。...
分类:
编程语言 时间:
2014-09-10 12:38:20
阅读次数:
261
如题Java.lang.NoClassDefFoundError 错误可能是由于找不到指定的类引起的。一般出现在java 反射调用,或者通过jniRegisterNativeMethods手动注册jni函数时引发的。特别需要主要对于内部类的处理:class A{ class B{ }}此时B是一.....
分类:
编程语言 时间:
2014-09-10 01:37:29
阅读次数:
136
jvm虚拟机栈:一个是线程独有的,每次启动一个线程,就创建一个jvm虚拟机栈,线程退出的时候就销毁。这里面主要保存线程本地变量名和局部变量值。本地方法栈:调用本地jni方法的时候而创建的。这里分配的jvm之外的内存空间。方法调用结束之后销毁。pc寄存器:这个保存线程当前..
分类:
其他好文 时间:
2014-09-09 13:48:59
阅读次数:
227
众所周知安卓很容易被反编译,即使做了防止反编译处理许多代码也可以看的到,目前用的比较多的手段是jni,即:把核心代码放到c++中,然后做出so库,这样的话安全性提高不少,但如果不对so库进行特殊处理的话,通过查看反编译后的java代码就会推测出你定义的调用so库的接口,别人就可以仿造你的接口,然后调用你的so库。
其实我们可以再每次调用so库时都在so库中的函数中判断一下安卓的公钥是不是你的,从而...
分类:
移动开发 时间:
2014-09-09 12:59:58
阅读次数:
336
参考了博客:http://blog.csdn.net/leilu2008/article/details/12495273
我用的android ndk版本是:android-ndk-r9d-windows-x86_64.zip。
提醒:解压之后千万不要保存在含有空格的目录里。否则,下面给jni里的c、c++编译的时候,编译器会报错。
NDK path cannot contain...
分类:
移动开发 时间:
2014-09-09 12:59:38
阅读次数:
269
在前面的样例中,我们会发现,当在Java类中定义一个方法的时候,例如以下:public class ParamTransferTest { public static int testval = 1; public native void changeTestVal();则在相应的JNI层中,由j....
分类:
移动开发 时间:
2014-09-08 10:46:16
阅读次数:
338
先看一眼JVM虚拟机运行时的内存模型:
1.方法区 Perm(永久代、非堆)
2.虚拟机栈
3.本地方法栈 (Native方法)
4.堆
5.程序计数器
1 首先的问题是:jvm如何知道那些对象需要回收 ?
目前两种标识算法、三种回收算法、两种清除算法、三种收集器
引用计数法
每个对象上都有一个引用计数,对象每被引用一次,引...
分类:
其他好文 时间:
2014-09-07 21:13:05
阅读次数:
363
错误截图:
解决方法:
应该是java版本的问题和位数的问题
Eclipse打开后出现这个问题,查阅相关资料后发现是安装的java是32bit的和系统、Eclipse 64bit不一致
解决方法:
保留了原来的32bit的java,同时又安装了一个64bit的java
效果图如下:
jdk: C:\Program Files (x86)\Java\jdk1.8.0_11
j...
分类:
系统相关 时间:
2014-09-07 19:49:45
阅读次数:
262