Webkit Bingings 和 Java JNI 的原理与使用
来源:互联网 发布:gsx激活策略查询软件 编辑:程序博客网 时间:2024/05/21 17:18
WebKit最神奇的一点是 JS 能调到内核代码(c/c++)
JS方法调到后面c/c++实现颇费周折,其实就是通过IDL和Bindings
1、IDL和Bindings
IDL:接口定义语言,详细解释可见http://trac.webkit.org/wiki/WebKitIDL
Bindings:WebKit动态生成与其他框架(如JavascriptCore, V8)整合的代码
IDL 接口定义,根据开发者需要,自定义接口名称参数
Bindings,通过一定的规范自动解析IDL文件,动态生成与其他框架(JSCore、V8)整合的代码
后台(框架中的)代码,接口跟参数跟IDL文件中定义的一致,这样,就可以通过 js 等脚本调用
到后台的功能代码
2、JNI 的原理跟 Binding 类似
Java 通过 JNI 调用到本地 DLL 或 so 库中的代码,
在使用过程中,需要在 java 类中声明所调用的库名称,
库的扩展名字可以不用写出来,究竟是DLL还是SO,由系统自己判断
还需要对将要调用的方法做本地声明,关键字为native。只需要声明,不需要具体实现
示例代码:
static {
System.loadLibrary(“goodluck”);
} //声明调用库名称
public native static void set(int i); //声明本地方法
public native static int get();
然后编译该JAVA程序文件,生成CLASS,再用JAVAH命令,JNI就会生成C/C++的头文件
用 javac testdll.java 编译它,首先生成testdll.class
再用javah testdll,则会在当前目录下生成testdll.h文件,这个文件需要被C/C++程序调用来生成所需的库文件。
C/C++中所需要做的工作
对于已生成的.h头文件,C/C++所需要做的,就是把它的各个方法具体的实现。
然后编译连接成库文件即可。
再把库文件拷贝到JAVA程序的路径下面,就可以用JAVA调用C/C++所实现的功能了。
大地
- Webkit Bingings 和 Java JNI 的原理与使用
- JNI原理与使用
- [Android Webkit]JNI基础及Java层与C++层的交互
- How to pring LOG信息之android 的webkit内核JNI层 和Java层
- JAVA和Android的JNI的使用
- Java JNI的使用
- java jni 的使用
- 【.NET】WebKit的安装与使用
- WebKit中RefPtr和PassRefPtr的使用
- WebKit中RefPtr和PassRefPtr的使用
- WebKit中RefPtr和PassRefPtr的使用
- Android之webkit内核JNI层与Java层 函数互相调用方法
- 【转载】Android之webkit内核JNI层与Java层 函数互相调用方法
- 关于JAVA和Android的JNI的使用
- JNI 与java和C语言的桥接关系
- Android之chromimu和webkit的智能指针的原理
- Chromium和WebKit的智能指针实现原理分析
- JNI 原理与入门
- 笔记3(list,tuple)
- java的static代码块执行时的机制
- 无线篇(5.2)-01. 防范 WiFi Kill 攻击 ❀ 飞塔 (Fortinet) 防火墙
- websocket 和 socket.io 之间的区别
- 用Servlet实现文件上传
- Webkit Bingings 和 Java JNI 的原理与使用
- SVN的标准目录结构:trunk、branches、tags
- Ngrok配置外网域名-解决开发中所需的特定端口
- es6 import & export
- JAVA反射机制详解
- Hibernate与MyBatis对比
- ThreadPoolExecutor的corePoolSize和maximumPoolSize
- 教你快速写出多线程Junit单元测试用例 - GroboUtils
- shell 脚本中常用的列表