`
mw08091020
  • 浏览: 14973 次
  • 性别: Icon_minigender_1
  • 来自: 西安
文章分类
社区版块
存档分类
最新评论

native方法的使用

 
阅读更多

在Java方法定义中有一类特殊的方法:native方法。对于native方法而言,Java程序不会为该方法提供实现体。

例如:

                public class NativeTest{

                        public native void info();

                }


这个方法就像一个抽象方法,只有方法签名,没有方法体。不过native方法通常要借助C语言来完成,即需要使用C语言为Java方法提供实现。

具体实现步骤如下:

1、用javah编译第一部生成的class文件,将产生一个.h文件(C语言中叫头文件)。

2、写一个.cpp文件实现native方法,其中需要包含第一部产生的.h头文件(.h文件中又包含了JDK自带的jni.h文件).

3、将第二部中的.cpp文件变异成动态链接库文件。

4、在Java中调用System.loadLibrary()方法或Runtime的loafLibrary()方法加载第三部产生的动态链接库文件,就可以在Java中调用这个native()方法了。

问题产生了:在第三部编译.cpp文件时,将会使程序依赖于当前的编译环境。

    public class SleepTest

               {

                    public staic void main ( String [] args)

                     {

                           long start = System.currentTimeMillis();

                           Thread.sleep(2);

                           System.out.println(System.currentTimeMillis()-start);

                      }

               }


答案不是2。仔细查看JDK文档关于Thread.sleep()方法的介绍会发现其实sleep()方法也是一个native方法,这个方法的具体实现需要依赖于它所在的平台。也就是说,native方法做不到跨平台。

所以,虽然Java是跨平台的,但是JDK中还有很多native方法,使用这些方法时,注意平台的差异性。

分享到:
评论

相关推荐

    使用native方法实现加密解密

    本篇文章将深入探讨如何使用native方法实现加密解密,主要关注JNI的使用、编码解码的基本原理以及在Android环境中如何集成和调用这些原生函数。 首先,我们需要理解JNI的概念。JNI是Java平台的一部分,它为Java...

    Java中native方法学习

    在深入探讨Java中native方法的学习之前,我们先来理解一下native方法的概念以及它在Java中的作用。...然而,使用native方法也带来了一定的复杂性和维护成本,因此在实际开发中应谨慎选择何时以及如何使用它们。

    关于java中的native方法

    Java中的Native方法是Java语言与本地(Native)代码交互的一种机制,主要涉及到Java的JNI(Java Native Interface)技术。JNI允许Java程序调用C、C++等非Java编写的代码,反之亦然,使得Java可以充分利用本地平台的...

    使用native方法调用C程序

    本篇文章将深入探讨如何使用native方法调用C程序,并通过一个实际的例子来展示这一过程。 首先,我们需要了解JNI的基本概念。JNI是Java平台的一部分,它定义了一组API,使得Java代码可以动态地加载和调用本地方法,...

    Android-Jni生成so库调用native方法的demo

    总结,通过这个"Android-Jni生成so库调用native方法的demo",我们可以学习到如何在Android应用中使用JNI,从编写Java代码声明native方法,到生成JNI头文件,再到编写C/C++代码实现方法,最后配置构建文件并运行。...

    在reactnative中使用echarts

    要在 react-native 上使用 echarts 的图表库,目前方法主要是使用 react-native 的 webview 利用网页的形式加载 echarts 的图形。 本项目尽量使用少的代码实现本功能。

    native直接使用Parcel通信

    在C/C++层面处理Parcel对象时,通常需要利用JNIEnv接口,它是Java虚拟机提供给native方法的环境指针,可以用来调用Java方法和访问Java对象,包括Parcel对象。 `testCallback.cpp`可能包含了一些回调函数的实现,...

    react-native-image-picker 的使用方法demo

    React Native 是一个强大的框架,它允许开发者使用JavaScript和React语法构建原生移动应用程序。`react-native-image-picker...通过深入理解这个库的使用方法,你可以为你的应用添加丰富的媒体交互功能,提升用户体验。

    native方法详解

    Native 方法是指 Java 语言中的一种特殊方法,它使用 native 关键字声明,表示该方法将被编译成机器代码,可以访问底层操作系统的资源和硬件。Native 方法可以将 Java 程序同 C 程序的接口,实现 Java 程序对底层...

    Ionic项目中Native Camera的使用方法

    这篇文章将详细介绍如何在使用Ionic v3.2.0版本的项目中集成并使用Native Camera功能。这个过程涉及到安装必要的依赖库、添加Cordova插件以及编写相应的代码。 1. **安装ionic-native/core** 在开始之前,确保你...

    reactnative.jar使用文档

    reactnative.jar使用方法,可直接去github下载jar包然后放在webstrom使用可以提示

    JS和Android的Native方法互调用所有情况测试

    JS和Android的Native方法互调用所有情况测试 亲测!可用! 用于Android和HTML5混合开发中壳子的使用 后续将加入: Java类结构 和 Js库基本命名规则和构建 集成基本的友盟组件测试 全功能灵活集成的...

    Java中隐藏源码-AppProtect:整理一些app常见的加固方法,包括java层、native层和资源文件加固等

    Java中隐藏源码 AppProtect 整理一些app常见的加固方法,包括java层、native...hook框架重定向native方法,达到保护native方法的目的 7.动态注册native方法 自己注册native方法,隐藏带有Java_xxx_xxx_xxx的函数名特征

    opencv_contrib + opencv 编译so 库及使用native方法 opencv.zip

    例如,可以创建一个`native`方法用于识别二维码,该方法将调用`opencv_wechat_qrcode`模块的相关函数。 4. **权限管理**:确保应用有访问相机和存储的权限,因为二维码扫描通常需要使用相机拍摄图片或读取本地图片...

    Java中native方法和JNI基础.docx

    本文将详细介绍Java中native方法的定义、JNI的基本使用流程,并结合示例代码进行说明。 #### 二、Java Native Interface (JNI) ##### 1. 概念介绍 Java Native Interface (JNI) 是Java平台的一部分,它允许Java...

    JAVA本地方法:native方法1

    JAVA本地方法:native方法1

    reactnative高德地图拖拽定位demo使用webview实现

    5. **刷新`WebView`**:根据新的状态,可能需要重新渲染`WebView`,或者使用`WebView`的`injectJavaScript`方法动态修改地图的中心点。 通过这种方式,React Native开发者可以利用Webview封装的高德地图API,轻松...

    函数Native化的Android APP加固方法.pdf

    Android APP 加固方法之函数 Native 化 函数 Native 化是指将 Java 函数转换为 Native 代码,以提高 Android APP 的安全性和防护能力。该方法可以抵御静态分析攻击、DEX 动态恢复和动态脱壳攻击。 在 Android APP ...

    Android关于HTML页面与Native方法相互调用

    在Android开发中,有时我们需要在Web视图(WebView)中加载本地HTML页面,并实现HTML页面与原生Android代码(Native方法)之间的交互。这通常涉及到WebView的使用以及JavaScript与Java接口的通信。以下是对这个主题的...

    NativeScript 使用向导

    【NativeScript 使用向导】 NativeScript 是一个开源框架,它允许开发者使用JavaScript或TypeScript语言进行原生移动应用开发,支持iOS和Android平台。通过NativeScript,你可以利用一套代码库来构建具有原生用户...

Global site tag (gtag.js) - Google Analytics