JNI教程: 1. JNI简介

参考:

<<JNI编程指南>>

1. 系统环境和本地程序

系统环境代指本地操作系统环境,它有自己的本地库和CPU指令集。
本地程序通过使用C/C++这样的语言来编写,并被编译成只能在与本地系统兼容的环境下运行的二进制代码,并和本地库链接在一起。
本地程序和本地库通过会依赖一个特定的本地系统,比如,一个系统编译出来的C程序可能不能在另一个系统中运行。
2. JNI的角色
JNI的强大特性使用我们在使用Java平台的同时,还可以重用原来的本地代码。作为虚拟机实现的一部分,JNI允许Java代码和本地代码间的双向交互。
3. JNI的副作用
一旦使用JNI,Java程序就丧失了Java平台的两个优点:
程序不再跨平台。要想跨平台,必须在不同的系统环境下重新编译本地语言部分;
程序不再是绝对安全的,本地代码的不当使用可能导致整个程序崩溃。
4. 避开JNI使用的方案:
Java程序和本地程序使用TCP/IP或IPC进行交互;
当用Java程序连接本地数据库时,使用JDBC提供的API;
Java程序可以使用分布式对象技术,如Java IDL API。
总之,Java和本地程序处于不同进程或不同的机器。这样,当本地程序崩溃时,也不会影响到Java程序。
5. 下面场合无法避免使用Java JNI:
程序中用到了Java没提供的特殊系统环境才有的特性,而跨进程操作又不现实;
想访问已有的本地库,但又不想付出跨进程调用时的代价,如效率、内存和数据传递等;
Java程序当中的一部分代码效率要求非常高,如算法计算、图形渲染等。
总之,只有当必须在同一进程中调用本地代码时,才使用Java JNI。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值