Java Native Method

一、什么是java native method?

  "A native method is a Java method whose implementation is provided by non-java code."

  简单来讲Native Method就是java调用非java代码的接口,该方法的实现由非java代码实现,比如C、C++。

  定义一个Native Method,并不提供具体的实现体(有点像Java Interface),因为其实现体是非Java代码在外面实现的。

public class ItestNativeMethod {

    native public void Native(int x);

    native static public long Native();

    native synchronized private float Native(Object o);

}

  这些方法的声明描述里非java代码在java代码里面是什么样子的。

  一个Native Method方法可以返回任何java类型,包括非基本类型,而且可以进行异常控制。这些方法的实现体可以制一个异常,并且抛出这个异常。

二、为什么要用Native Method?

  java虽然用起来比较方便,然而有些方面的任务用Java实现起来不容易。

  1、与java环境外交互:

  有时java应用需要与java外面的环境交互。如java需要与底层系统交互。

  2、与操作系统交互

  通过使用本地方法,我们得以用java实现了jre的与底层系统的交互,甚至JVM的一些部分就是用C写的,还有,如果我们要使用一些java语言本身没有提供封装的操作系统的特性时,我们也需要使用本地方法。

三、JVM怎样使Native Method跑起来

  我们知道当一个类第一次被使用时,这个类的字节码会被加载到内存,并且只会加载一次。在这个被加载的字节码的入口维持着一个该类所有方法描述符的list,这些方法的描述符包含这样的一些信息: 方法代码存于何处,它有哪些参数、方法的

的描述符(public/private/proected)等等。

  如果一个方法藐视符内有native,这个描述符块将有一个指向该方法的实现的指针。这些实现在一些DLL文件内,但是它们会被操作系统加载到java程序的地址空间。当一个带有本地方法的类被加载时,其相关的DLL并未被加载,因此指向方法实现的

指针并不会被设置。当本地方法被调用之前,这些DLL才会被加载,这是通过调用java.system.loadLibrary()实现的。  

时间: 2024-08-28 13:09:59

Java Native Method的相关文章

Java Programming Tutorial Java Native Interface (JNI)

1.  Introduction At times, it is necessary to use native codes (C/C++) to overcome the memory management and performance constraints in Java. Java supports native codes via the Java Native Interface (JNI). JNI is difficult, as it involves two languag

高德 java.lang.UnsatisfiedLinkError: Native method not found: com.autonavi.amap.mapc

我的项目是从eclipse上转到Android studio上的 结果发现在使用高德的时候报错了, 下面是错误信息: java.lang.UnsatisfiedLinkError: Native method not found:                                                                            com.autonavi.amap.mapcore.MapCore.nativeNewInstance:(Ljava/

Mac OS X中报:java.io.UnixFileSystem.createFileExclusively(Native Method)的简单原因

这个博客太简单了!想到可能有其他朋友也遇到这个问题,就记录一下. 今天把一个之前在Windows上的Java项目放到Mac OS X上运行,本来觉得应该很简单的事情,结果还是报: Exception in thread "main" java.io.IOException: No such file or directory at java.io.UnixFileSystem.createFileExclusively(Native Method) 无奈之下,调试的时候才发现,原来在W

Java Native

以下引用自http://blog.csdn.net/jiakw_1981/article/details/3073613,作者:jiakw_1981 java native关键字 一. 什么是Native Method   简单地讲,一个Native Method就是一个java调用非java代码的接口.一个Native Method是这样一个java的方法:该方法的实现由非java语言实现,比如C.这个特征并非java所特有,很多其它的编程语言都有这一机制,比如在C++中,你可以用extern

JNI/NDK开发指南(二)——JVM查找java native方法的规则

通过第一篇文章,大家明白了调用native方法之前,首先要调用System.loadLibrary接口加载一个实现了native方法的动态库才能正常访问,否则就会抛出java.lang.UnsatisfiedLinkError异常,找不到XX方法的提示.现在我们想想,在Java中调用某个native方法时,JVM是通过什么方式,能正确的找到动态库中C/C++实现的那个native函数呢? JVM查找native方法有两种方式: 1> 按照JNI规范的命名规则 2> 调用JNI提供的Regist

+Java中的native关键字浅析(Java+Native+Interface)++

JNI是Java Native Interface的 缩写.从Java 1.1开始,Java Native Interface (JNI)标准成为java平台的一部分,它允许Java代码和其他语言写的代码进行交互.JNI一开始是为了本地已编译语言,尤其是C和C++而设计的,但是它并不妨碍你使用其他语言,只要调用约定受支持就可以了. 使用java与本地已编译的代码交互,通常会丧失平台可移植性.但是,有些情况下这样做是可以接受的,甚至是必须的,比如,使用一些旧的库,与硬件.操作系统进行交互,或者为了

android4.4系统解决“ERRORcouldn't find native method”方法

android4.4系统解决"ERRORcouldn't find native method"方法 今天笔者在移植一个tv模块从android4.2到android4.4系统的设备上,同样的代码,同样的方法,就是运行不起来.大概方法就是上层写一个apk,调用一个静态的java库,java库加载调用JNI的库文件,这一套代码在4.2上都是好好的,正常能跑,移到4.4上编译也都没有问题,运行会出下面的问题: /***************************************

转:java native

今日在hibernate源代码中遇到了native关键词,甚是陌生,就查了点资料,对native是什么东西有了那么一点了解,并做一小记. native关键字说明其修饰的方法是一个原生态方法,方法对应的实现不是在当前文件,而是在用其他语言(如C和C++)实现的文件中.Java语言本身不能对操作系统底层进行访问和操作,但是可以通过JNI接口调用其他语言来实现对底层的访问. JNI是Java本机接口(Java Native Interface),是一个本机编程接口,它是Java软件开发工具箱(Java

Android Studio 项目中集成百度地图SDK报Native method not found: com.baidu.platform.comjni.map.commonmemcache.JNICommonMemCache.Create:()I错误

Android Studio 项目中集成百度地图SDK报以下错误: 1 java.lang.UnsatisfiedLinkError: Native method not found: com.baidu.platform.comjni.map.commonmemcache.JNICommonMemCache.Create)I 2 at com.baidu.platform.comjni.map.commonmemcache.JNICommonMemCache.Create(Native Met