Java 语言特性与技巧深度解析
1. 本地方法的使用与问题
在创建 NativeDemo.c
文件后,若使用 Microsoft C/C++ 编译器,需通过以下步骤创建 DLL 文件:
1. 使用命令 Cl /LD NativeDemo.c
进行编译,此命令可能需要指定 jni.h
及其附属文件 jni_md.h
的路径。编译后会生成 NativeDemo.dll
文件。
2. 运行 Java 程序,输出示例如下:
This is ob.i before the native method: 10
Starting the native method.
i = 10
Ending the native method.
This is ob.i after the native method: 20
本地方法虽能访问现有库例程并可能提升运行速度,但也存在显著问题:
|问题|详情|
| ---- | ---- |
|潜在安全风险|本地方法执行实际机器代码,可访问主机系统任意部分,不受 Java 执行环境限制,可能导致病毒感染。因此,未签名的小程序不能使用本地方法,且 DLL 的加载受安全管理器批准和限制。|
|丧失可移植性|本地代码包含在 DLL 中,运行 Java 程序的机器必须存在该 DLL。同时,每个本地方法依赖于 CPU 和操作系统,DLL 本身不可移植。所以,使用本地方法的 Jav