JAVA与C之间的关系

  • java可以直接编译成可执行的二进制文件,参考:http://xieruilin.iteye.com/blog/728940
    • 这种方案成熟吗?很少见到把JAVA编译成二进制文件后运行的
  • java可以通过jni的方式来访问C编译后的程序的(如:so),当然,这种so和普通的so有稍许的不同,需要通过jni的方式包装一下的,参考: http://hubingforever.blog.163.com/blog/static/17104057920115218559186/
  • javah命令就是为jni而生的
  • Android.mk简介: http://hubingforever.blog.163.com/blog/static/171040579201152185542166/
    http://hubingforever.blog.163.com/blog/static/1710405792011656434982/
  • NDK
    Android NDK 是在SDK前面又加上了“原生”二字,即Native Development Kit,因此又被Google称为“NDK”。
    众所周知,Android程序运行在Dalvik虚拟机中,NDK允许用户使用类似C / C++之类的原生代码语言执行部分程序。
    NDK包括了
    • 从C / C++生成原生代码库所需要的工具和build files。
    • 将一致的原生库嵌入可以在Android设备上部署的应用程序包文件(application packages files ,即.apk文件)中。
    • 支持所有未来Android平台的一些列原生系统头文件和库
    为何要用到NDK?
    概括来说主要分为以下几种情况:
    1. 代码的保护,由于apk的java层代码很容易被反编译,而C/C++库反汇难度较大。
    2. 在NDK中调用第三方C/C++库,因为大部分的开源库都是用C/C++代码编写的。
    3. 便于移植,用C/C++写得库可以方便在其他的嵌入式平台上再次使用。

    参考:http://www.cnblogs.com/hibraincol/archive/2011/05/30/2063847.html

留下评论

邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据