JNI技术是使用Java代码来写一些native方法,然后通过C++来实现生成dll动态链接库,之后通过System.loadLibrary("动态链接库名");注意动态链接库名的后面不能带有.dll后缀名,如果想调用这些方法就是用new出该类实例来调用native方法。
本例中实现了加减乘除算法,柱体实现请看Suanfa.cpp源文件
Suanfa.java源文件
import java.util.Scanner;
public class SuanFa {
static{
System.loadLibrary("Suanfa");
}
public static void main(String [] args)
{
SuanFa sf=new SuanFa();
Scanner sc= new Scanner(System.in);
System.out.println("请输入一个数:");
double a=sc.nextDouble();
System.out.println("请输入一个数:");
double b=sc.nextDouble();
System.out.println("这两个数的和为:"+sf.add(a, b));
System.out.println("这两个数的差为:"+sf.sub(a,b));
System.out.println("这两个数的乘为:"+sf.mul(a,b));
System.out.println("这两个数的除为:"+sf.div(a,b));
}
public native double add(double a,double b);
public native double sub(double a,double b);
public native double mul(double a,double b);
public native double div(double a,double b);
}
头文件Suanfa.h
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class SuanFa */
#ifndef _Included_SuanFa
#define _Included_SuanFa
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: SuanFa
* Method: add
* Signature: (DD)D
*/
JNIEXPORT jdouble JNICALL Java_SuanFa_add
(JNIEnv *, jobject, jdouble, jdouble);
/*
* Class: SuanFa
* Method: sub
* Signature: (DD)D
*/
JNIEXPORT jdouble JNICALL Java_SuanFa_sub
(JNIEnv *, jobject, jdouble, jdouble);
/*
* Class: SuanFa
* Method: mul
* Signature: (DD)D
*/
JNIEXPORT jdouble JNICALL Java_SuanFa_mul
(JNIEnv *, jobject, jdouble, jdouble);
/*
* Class: SuanFa
* Method: div
* Signature: (DD)D
*/
JNIEXPORT jdouble JNICALL Java_SuanFa_div
(JNIEnv *, jobject, jdouble, jdouble);
#ifdef __cplusplus
}
#endif
#endif
// stdafx.h : 标准系统包含文件的包含文件,
// 或是经常使用但不常更改的
// 特定于项目的包含文件
//
#pragma once
#include "targetver.h"
#define WIN32_LEAN_AND_MEAN // 从 Windows 头文件中排除极少使用的信息
// Windows 头文件:
#include <windows.h>
#include <jni.h>
#include <jni_md.h>
#include <windows.h>
// TODO: 在此处引用程序需要的其他头文件
#pragma once
// 包括 SDKDDKVer.h 将定义可用的最高版本的 Windows 平台。
// 如果要为以前的 Windows 平台生成应用程序,请包括 WinSDKVer.h,并将
// WIN32_WINNT 宏设置为要支持的平台,然后再包括 SDKDDKVer.h。
#include <SDKDDKVer.h>
Suanfa.cpp C++源文件
此方法实现Suanfa.h文件中定义的方法
// Suanfa.cpp : 定义 DLL 应用程序的导出函数。
//
#include "stdafx.h"
#include "SuanFa.h"
JNIEXPORT jdouble JNICALL Java_SuanFa_add
(JNIEnv *, jobject, jdouble a, jdouble b){
return a+b;
}
JNIEXPORT jdouble JNICALL Java_SuanFa_sub
(JNIEnv *, jobject, jdouble a, jdouble b){
return a-b;
}
JNIEXPORT jdouble JNICALL Java_SuanFa_mul
(JNIEnv *, jobject, jdouble a, jdouble b){
return a*b;
}
JNIEXPORT jdouble JNICALL Java_SuanFa_div
(JNIEnv *, jobject, jdouble a, jdouble b){
return a/b;
}
分享到:
相关推荐
本资源提供了一个具体的实例,即在Android环境下使用JNI实现AES(Advanced Encryption Standard)加密算法,并包含了编译生成的SO(Shared Object)库文件,方便开发者直接集成到项目中。 AES是一种广泛使用的对称...
综上所述,"Android中JNI实现AES加密源代码"涉及的知识点包括Android JNI的使用、AES加密算法的实现、NDK开发环境的配置、C/C++与Java的交互,以及数据安全和性能优化。通过这样的实现,开发者可以在Android应用中...
在深入探讨Android JNI技术实现的过程中,我们首先需要理解JNI(Java Native Interface)的基本概念与作用。JNI是一种标准的Java平台接口,它允许Java代码与其他语言(如C、C++)编写的本地代码进行交互,这对于...
本项目主要探讨了如何使用C++语言通过JNI(Java Native Interface)与Android应用交互,实现基于OpenSSL库的加解密算法,包括RSA、AES、3DES、BASE64和MD5。以下是关于这些技术的详细解释: 1. **JNI(Java Native ...
标题中的“使用JNI和DES实现两次加密”是指在Java编程中结合使用JNI(Java Native Interface)和DES(Data Encryption Standard)加密算法来实现双重安全保护的一种技术。这种技术通常用于提高程序的安全性,防止数据在...
在这个"android jni 加密demo"中,开发者使用JNI来实现多种加密算法,包括RSA、3DES、AES、MD5以及BASE64,这些都是信息安全领域常用的加密和哈希方法。以下是对这些技术的详细解释: 1. **RSA**:RSA是一种非对称...
在这个场景中,我们讨论的是使用JNI来封装一个底层的MD5算法,并在Android应用中进行调用。 MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,它可以将任意长度的输入转化为固定长度的输出,通常是一个...
本教程将深入探讨如何在Android应用中使用JNI技术。 首先,我们需要理解JNI的工作原理。JNI提供了一种方式,使得Java代码可以调用本地(非Java)函数,同时本地代码也可以调用Java方法。这通常是通过创建本地方法...
实现了加减乘除,以及字符串拼接,日志打印等简单功能 简单的Jni Demo 计算器的开发 实现了加减乘除,以及字符串拼接,日志打印等简单功能 简单的Jni Demo 计算器的开发 实现了加减乘除,以及字符串拼接,日志...
- **JNI与Android应用程序组件**:如何在Activity、Service等组件中使用JNI。 - **性能优化与内存管理**:针对Android平台的特定优化策略。 总的来说,JNI技术是Java开发者必备的技能之一,尤其在需要与本地代码...
使用 JNI 技术实现 JAVA 程序调用 dll JAVA 语言的跨平台特性深受 Java 程序员们的喜爱,但正是由于它为了实现跨平台的目的,使得它和本地机器的各种内部联系变得很少,大大约束了它的功能。例如与一些硬件设备通信...
使用JNI 技术实现java程序调用第三方dll文件 当需要在Java程序中调用第三方库(例如.dll文件),这个库是用C/C++编写的,通过JNI可以实现这种调用。 ### 结合提供的文件内容,可总结的知识点包括: - JNI提供了一...
本话题将探讨如何使用JNI在Android中实现DES(Data Encryption Standard)加密和解密。 DES是一种对称加密算法,它使用相同的密钥进行加密和解密,具有较高的安全性,但速度相对较慢。在Android中,由于Java的加密...
要深入理解JNI的实现原理,本书《JNI实现原理权威指南》无疑是提供了一个全面的技术指导和规范说明。 ### 知识点一:JNI的概念及其重要性 JNI是Java平台标准版的一部分,它为Java代码和本地应用程序接口(API)...
本主题聚焦于如何在Android环境中,利用JNI(Java Native Interface)技术来实现MD5加密。 JNI是Java平台的标准接口,它允许Java代码和其他语言写的代码进行交互。在Android中,JNI常用来提升性能,尤其是在处理CPU...
因此,通常只在性能关键的区域或无法用Java实现的功能时使用JNI。 9. **JNI应用实例**:JNI常用于图形用户界面(GUI)库的绑定、硬件设备驱动的接入、游戏引擎的集成、高性能计算以及调用已有的C/C++库。 10. **...
2. **库集成**:许多现有的音频处理库是用C或C++编写的,使用JNI可以方便地将这些库集成到Android应用中,无需重新编写。 3. **减少内存分配和垃圾回收开销**:Java对象的创建和销毁会涉及到内存分配和垃圾回收,而...
但在某些情况下,例如追求更高的性能或特定平台的兼容性,开发者可能会选择用C/C++通过JNI来实现。 JNI的使用流程如下: 1. **创建JNI头文件**:使用Java的`javah`工具,根据Java类中的native方法生成对应的C/C++...