JNI-java native interface(java本地接口)
java native interface(java本地接口)ABI: application binary interface (应用程序二进制接口)
* 复用很多优秀的c/c++代码- ffmpeg 多媒体播放器- opencv 图形识别引擎- 7-zip 压缩- opencore 视频播放* 效率问题- java代码跨平台,不直接操作硬件,虚拟机解释执行。垃圾回收机制。- art 在安装apk应用程序的时候,把apk里面的dex翻译成机器码(apk的体积会变大)- c代码直接操作硬件,程序员可以手工的释放内存* 应用场景问题- c代码可以直接操作硬件。- java代码只能操作虚拟机(一次编译到处执行)- 智能家居操作硬件- 车载电脑(obd: onboard debug system)* 特殊业务逻辑- c代码反编译困难,调试困难。- java代码反编译容易,很容易看懂。
* 看懂c代码( 有c语言基础)* 懂流程 (熟悉jni的规范)* 熟练(NDK 工具 native develop kits)
dev-cpp.exe1. 轻量级开发工具2. 编译器gcc c99标准
1.声明头文件,相当于java的导包。#include <stdio.h>2.写main()方法main(){}3.为了观察程序执行的结果,需要调用windows系统的一个指令system("pause");
* java语言的8大基本类型- int 4byte 32位- byte 1byte 8位- short 2byte 16位- long 8byte 64位- float 4byte 32位- double 8byte 64位- boolean 1byte 8位- char 2byte 16位* c语言的基本数据类型sizeof();获取一个数据类型的长度- char 1byte 8位 和java不同- long 4byte 32位和java不同- int 4byte 32位 和java一致- float 4byte 32位 和java一致- double 8byte 64位和java一致- short 2byte 16位 还可以表示java里面的char- 在c语言里面没有boolean类型,0假 非0真- 在c语言里面没有byte类型 可以用char表示byte类型。* 修饰符的作用- signed 有符号- unsigned 无符号> 1000 0000(负0) -> 0111 1111+1(取反加1 ) = 1000 0000(负128)> 缓冲区溢出漏洞。本质原因就是c语言不检查数组下标。不检查内存空间的越界##指针指针就是 一块内存空间(内存地址)* window 32位系统 寻址空间32位最多能表示出来4G内存地址的组合。计算机有一些硬件设备需要占用一些内存地址。留给用户的可用空间 不足3个G* window 64位系统 寻址空间是64位
* 如果跟着一种数据类型的后面int* 代表是一种指针变量, 存放的是一个内存地址。* 如果\*号放在一个指针变量的前面,代表的是取地址里面数据的操作 \*p 把p地址里面存放的数据取出来* x*y 相乘
看世面上书的时候 指针变量和指针没什么区别指针变量: 一个变量 int* p; p是指针变量指针: 一块内存空间的地址
* 准确讲只有值传递。调用子函数所有的操作,都是值传递。引用传递,还是值传递,传递是对象的地址
JNI-java native interface(java本地接口)的更多相关文章
- android 学习随笔二十七(JNI:Java Native Interface,JAVA原生接口 )
JNI(Java Native Interface,JAVA原生接口) 使用JNI可以使Java代码和其他语言写的代码(如C/C++代码)进行交互. 问:为什么要进行交互? 首先,Java语言提供的类 ...
- JNI(Java Native Interface)
一.JNI(Java Native Interface) 1.什么是JNI: JNI(Java Native Interface):java本地开发接口 ...
- Java Native Interface 六JNI中的异常
本文是<The Java Native Interface Programmer's Guide and Specification>读书笔记 在这里只讨论调用JNI方法可能会出现的异常, ...
- Java Native Interface 五 JNI里的多线程与JNI方法的注册
本文是<The Java Native Interface Programmer's Guide and Specification>读书笔记 JNI里的多线程 在本地方法里写有关多线程的 ...
- Java Native Interface 四--JNI中引用类型
本文是<The Java Native Interface Programmer's Guide and Specification>读书笔记 JNI支持将类实例和数组类型(如jobjec ...
- Java Native Interface 二 JNI中对Java基本类型和引用类型的处理
本文是<The Java Native Interface Programmer's Guide and Specification>读书笔记 Java编程里会使用到两种类型:基本类型(如 ...
- Java Native Interface Specification(JNI)
Java Native Interface Specification(JNI) 使用场景: 需要的功能,标准的java不能提供 有了一个用其他的语言写好的工具包,希望用java去访问它 当需要高性能 ...
- 【详解】JNI (Java Native Interface) (四)
案例四:回调实例方法与静态方法 描述:此案例将通过Java调用的C语言代码回调Java方法. 要想调用实例对象的方法,需要进行以下步骤: 1. 通过对象实例,获取到对象类的引用 => GetO ...
- 【详解】JNI (Java Native Interface) (三)
案例三:C代码访问Java对象的实例变量 获取对象的实例变量的步骤: 1. 通过GetObjectClass()方法获得此对象的类引用 2. 通过类引用的GetFieldID()方法获得实例变量的 ...
- 【详解】JNI (Java Native Interface) (二)
案例二:传递参数给C代码,并从其获取结果 注:这里传递的参数是基本类型的参数,在C代码中有直接的映射类型. 此案例所有生成的所有文件如下: (1)编写案例二的Java代码,如下: 这里我们定义了一个n ...
随机推荐
- 洛谷 P2672 推销员(贪心,模拟)
传送门 解题思路 第一种: 对于选i家,很显然,a值前i-1家的一定会选,所以只需要考虑最后一家的选法.要么是选择a值第i大的(就不管s了),要么选择剩下的中s最大的. 我们把每一家的情况(s和a)存 ...
- HDU 4013 Distinct Subtrees(树的最小表示)
Distinct Subtrees Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65768/65768 K (Java/Other ...
- 问题 M: 最亲密的x个人
问题 M: 最亲密的x个人 时间限制: 1 Sec 内存限制: 128 MB提交: 412 解决: 38[提交] [状态] [命题人:jsu_admin] 题目描述 有一天,地球受到了降维打击,从 ...
- Untiy3D学习笔记记录
一,原点和中心点 pivot(原点):位置移动的点(模型的原点不会发生变化) center(中心点):计算模型的中心,会发现变化(比如有两个cube,他的中心点会计算在两个模型的中间) 二,prefa ...
- C#for(;;)是什么意思?
一,正常for循环我们都接触过很多,如下,我们都理解 ,,,,, }; ; i < ; i++) { Console.WriteLine(tt[i]); } 二,但是for(;;)实际上它的含义 ...
- weblogic+idea
1.首先是weblogic的安装,去官网下载,下载完成后,安装,然后还需要创建域,参考链接: https://www.cnblogs.com/xdp-gacl/p/4140683.html,创建域的h ...
- javaweb各种框架组合案例(七):springboot+jdbcTemplete+通用dao+restful
一.介绍 1.springboot是spring项目的总结+整合 当我们搭smm,ssh,ssjdbc等组合框架时,各种配置不胜其烦,不仅是配置问题,在添加各种依赖时也是让人头疼,关键有些jar包之间 ...
- robotframework关键字
*** Settings ***Library Selenium2Library *** Keywords ***Checkbox应该不被选择 [Arguments] ${locator} Check ...
- CSS3 flexbox弹性布局实例
常用例子 1.居中对齐 <!DOCTYPE html> <head> <meta charset="utf-8"> <style type ...
- Java技术中如何使用keepalived实现双机热备
Keepalived简介 Keepalived是Linux下一个轻量级别的高可用解决方案.高可用(High Avalilability,HA),其实两种不同的含义:广义来讲,是指整个系统的高可用行,狭 ...