• Android JNI简介


    JNI简介

    JNI (Java Native Interface),Java的本地接口

          JNI是Java众多开发技术中的一门,意在利用本地代码,为Java程序提供 更高效,更灵活的拓展。应用场景包括:对运行效率敏感的算法实现、跨平台应用移植、调用系统的底层驱动、调用硬件等。尽管Java一贯以其良好的跨平台性 而著称,但真正的跨平台之王,应该是C/C++,因为当前世上90%的系统都是基于C/C++编写的。Java的跨平台,是以牺牲效率换来对多种平台的兼容性,因而JNI可以说是Java短板的补充!举一例子说明,当前流行的移动操作系统Android,一直被说系统操作的流畅性不如IOS,原因在于 Android的App是基于Java开发的,IOS的是基于Object-C开发的,区别在于同样的操作,在IOS上一条指令完成,在Android上 则需要多条指令才能完成!于是在Android JellyBean版本中,Google为其引入ProjectButter(黄油计划),在应用层大量使用了本地库,并优化了系统的架构,以提升 Android系统整体的操作反应!

    总之,JNI是一门技术,是Java Code和C/C++ Code联系的桥梁!

    先回顾一下android的系统架构图:

    为什么使用JNI

    1、扩展JVM功能,访问驱动,操作硬件 (物联网、智能家居、车载电脑)

    2、效率上c/c++语言效率更高 数学运算,实时渲染的游戏上,音 视频处理

    3、 java反编译比c语言容易, 通过JNI增强代码安全性(加密算法放到C实现)

    4、代码移植,复用已经存在的c代码(opencv,ffmpeg…)

    怎么用JNI

    1.C/C++语言

    2.掌握java jni流程

    3.NDK (native develop kits )

    NDK简介

    1.NDK是一系列工具的集合

           NDK提供了一系列的工具,帮助开发者快速开发C(或C++)的动态库,并能自动将so和java应用一起打包成apk。这些工具对开发者的帮助是巨大的。NDK集成了交叉编译器,并提供了相应的mk文件隔离CPU、平台、ABI等差异,开发人员只需要简单修改mk文件(指出“哪些文件需要编译”、“编译特性要求”等),就可以创建出so。

    NDK可以自动地将so和Java应用一起打包,极大地减轻了开发人员的打包工作。

    2.NDK提供了一份稳定、功能有限的API头文件声明

           Google明确声明该API是稳定的,在后续所有版本中都稳定支持当前发布的API。从该版本的NDK中看出,这些API支持的功能非常有限,包含有:C标准库(libc)、标准数学库(libm)、压缩库(libz)、Log库(liblog)。

    获取更多C语言与算法的相关知识,关注公众号:“csuanfa”

  • 相关阅读:
    event.currentTarget
    architecture 20190628
    jQuery extend
    Prototype js library
    this._super()
    cdn for js library
    WAMPSERVER php
    characteristics of competent communicators
    onchange and oninput
    jQuery .ready()
  • 原文地址:https://www.cnblogs.com/wuyudong/p/5630728.html
Copyright © 2020-2023  润新知