百度
360搜索
搜狗搜索

java native,什么是java native详细介绍

本文目录一览: java中的native关键字有什么作用?

native是告知编译器 该方法是其他语言实现的 比如C 呵呵 private native void CoutSea();没有方法实现部分的
volatile 一般人很少用到它 高级的应用.....防止编译器对此成员变量进行某些最优化的操作
这里有详细的示例 和解释!
http://wenku.baidu.com/view/b31f81050740be1e650e9a23.html
可以调用原生的代码的
直接用os的代码,效率高
以下分三点来讲述一下java native:
1、什么是Native Method
简单地讲,一个Native Method就是一个java调用非java代码的接口。一个Native Method是这样一个java的方法:该方法的实现由非java语言实现,比如C。这个特征并非java所特有,很多其它的编程语言都有这一机制,比如在C++中,你可以用extern "C"告知C++编译器去调用一个C的函数。
"A native method is a Java method whose implementation is provided by non-java code."
在定义一个native method时,并不提供实现体(有些像定义一个java interface),因为其实现体是由非java语言在外面实现的。,下面给了一个示例:
public class IHaveNatives
{
native public void Native1( int x ) ;
native static public long Native2() ;
native synchronized private float Native3( Object o ) ;
native void Native4( int[] ary ) throws Exception ;
}
这些方法的声明描述了一些非java代码在这些java代码里看起来像什么样子(view).
标识符native可以与所有其它的java标识符连用,但是abstract除外。这是合理的,因为native暗示这些方法是有实现体的,只不过这些实现体是非java的,但是abstract却显然的指明这些方法无实现体。native与其它java标识符连用时,其意义同非Native Method并无差别,比如native static表明这个方法可以在不产生类的实例时直接调用,这非常方便,比如当你想用一个native method去调用一个C的类库时。上面的第三个方法用到了native synchronized,JVM在进入这个方法的实现体之前会执行同步锁机制(就像java的多线程。)
一个native method方法可以返回任何java类型,包括非基本类型,而且同样可以进行异常控制。这些方法的实现体可以制一个异常并且将其抛出,这一点与java的方法非常相似。当一个native method接收到一些非基本类型时如Object或一个整型数组时,这个方法可以访问这非些基本型的内部,但是这将使这个native方法依赖于你所访问的java类的实现。有一点要牢牢记住:我们可以在一个native method的本地实现中访问所有的java特性,但是这要依赖于你所访问的java特性的实现,而且这样做远远不如在java语言中使用那些特性方便和容易。
native method的存在并不会对其他类调用这些本地方法产生任何影响,实际上调用这些方法的其他类甚至不知道它所调用的是一个本地方法。JVM将控制调用本地方法的所有细节。需要注意当我们将一个本地方法声明为final的情况。用java实现的方法体在被编译时可能会因为内联而产生效率上的提升。但是一个native final方法是否也能获得这样的好处却是值得怀疑的,但是这只是一个代码优化方面的问题,对功能实现没有影响。
如果一个含有本地方法的类被继承,子类会继承这个本地方法并且可以用java语言重写这个方法(这个似乎看起来有些奇怪),同样的如果一个本地方法被fianl标识,它被继承后不能被重写。
本地方法非常有用,因为它有效地扩充了jvm.事实上,我们所写的java代码已经用到了本地方法,在sun的java的并发(多线程)的机制实现中,许多与操作系统的接触点都用到了本地方法,这使得java程序能够超越java运行时的界限。有了本地方法,java程序可以做任何应用层次的任务。
2、为什么要使用Native Method
java使用起来非常方便,然而有些层次的任务用java实现起来不容易,或者我们对程序的效率很在意时,问题就来了。
与java环境外交互:
有时java应用需要与java外面的环境交互。这是本地方法存在的主要原因,你可以想想java需要与一些底层系统如操作系统或某些硬件交换信息时的情况。本地方法正是这样一种交流机制:它为我们提供了一个非常简洁的接口,而且我们无需去了解java应用之外的繁琐的细节。
与操作系统交互:
JVM支持着java语言本身和运行时库,它是java程序赖以生存的平台,它由一个解释器(解释字节码)和一些连接到本地代码的库组成。然而不管怎 样,它毕竟不是一个完整的系统,它经常依赖于一些底层(underneath在下面的)系统的支持。这些底层系统常常是强大的操作系统。通过使用本地方法,我们得以用java实现了jre的与底层系统的交互,甚至JVM的一些部分就是用C写的,还有,如果我们要使用一些java语言本身没有提供封装的操作系统的特性时,我们也需要使用本地方法。
Sun's Java
Sun的解释器是用C实现的,这使得它能像一些普通的C一样与外部交互。jre大部分是用java实现的,它也通过一些本地方法与外界交互。例如:类java.lang.Thread 的 setPriority()方法是用java实现的,但是它实现调用的是该类里的本地方法setPriority0()。这个本地方法是用C实现的,并被植入JVM内部,在Windows 95的平台上,这个本地方法最终将调用Win32 SetPriority() API。这是一个本地方法的具体实现由JVM直接提供,更多的情况是本地方法由外部的动态链接库(external dynamic link library)提供,然后被JVM调用。
3、JVM怎样使Native Method跑起来:
我们知道,当一个类第一次被使用到时,这个类的字节码会被加载到内存,并且只会回载一次。在这个被加载的字节码的入口维持着一个该类所有方法描述符的list,这些方法描述符包含这样一些信息:方法代码存于何处,它有哪些参数,方法的描述符(public之类)等等。
如果一个方法描述符内有native,这个描述符块将有一个指向该方法的实现的指针。这些实现在一些DLL文件内,但是它们会被操作系统加载到java程序的地址空间。当一个带有本地方法的类被加载时,其相关的DLL并未被加载,因此指向方法实现的指针并不会被设置。当本地方法被调用之前,这些DLL才会被加载,这是通过调用java.system.loadLibrary()实现的。

最后需要提示的是,使用本地方法是有开销的,它丧失了java的很多好处。如果别无选择,我们可以选择使用本地方法。

java中native的用法

其实就是JNI。
native是方法修饰符。Native方法是由另外一种语言(如c/c++,FORTRAN,汇编)实现的本地方法。因为在外部实现了方法,所以在java代码中,就不需要声明了,有点类似于借口方法。Native可以和其他一些修饰符连用,但是abstract方法和Interface方法不能用native来修饰。
  Java不是完美的,Java的不足除了体现在运行速度上要比传统的C++慢许多之外,Java无法直接访问到操作系统底层(如系统硬件等),为此Java使用native方法来扩展Java程序的功能。
  可以将native方法比作Java程序同C程序的接口,其实现步骤:
  1、在Java中声明native()方法,然后编译。
  2、用javah产生一个.h文件。
  3、写一个.cpp文件实现native导出方法,其中需要包含第二步产生的.h文件(注意其中又包含了JDK带的jni.h文件)。
  4、将第三步的.cpp文件编译成动态链接库文件。
  5、在Java中用System.loadLibrary()方法加载第四步产生的动态链接库文件,这个native()方法就可以在Java中被访问了。
  JAVA的native方法适用的情况:
  1、为了使用底层的主机平台的某个特性,而这个特性不能通过JAVA API访问。
  2、为了访问一个老的系统或者使用一个已有的库,而这个系统或这个库不是用JAVA编写的。
  3、为了加快程序的性能,而将一段时间敏感的代码作为本地方法实现。

什么是java native

java native方法是指本地方法,当在方法中调用一些不是由java语言写的代码或者在方法中用java语言,直接操纵计算机硬件时要声明为native方法。
java中,通过JNI(Java Native Interface,java本地接口)来实现本地化。详细请参考:http://karoii.bokee.com/5869823.html
http://myblog.workgroup.cn/blogs/java/

什么是native输出

DSD模式就是当播放器源码输出DSD格式文件时选择的输出方式,PCM就是将DSD数据流转换为PCM再解码输出,类似于DAC的软解。
DOP和Native都是硬解,DOP是将DSD数据流封装成为PCM传输,用来解决手机OTG协议不支持传输DSD的问题,Native就是直接输出DSD源码,相当于电脑端ASIO的感觉,音质的话Native=DOP>PCM,考虑到DOP做封装可能要占用CPU,所以个人认为Native>DOP>PCM
JAVA中的native是什么?
native主要用于方法上
1、一个native方法就是一个Java调用非Java代码的接口。一个native方法是指该方法的实现由非Java语言实现,比如用C或C++实现。
2、在定义一个native方法时,并不提供实现体(比较像定义一个Java Interface),因为其实现体是由非Java语言在外面实现的。
native关键字说明其修饰的方法是一个原生态方法,方法对应的实现不是在当前文件,而是在用其他语言(如C和C++)实现的文件中。Java语言本身不能对操作系统底层进行访问和操作,但是可以通过JNI接口调用其他语言来实现对底层的访问。
JNI是Java本机接口(Java Native Interface),是一个本机编程接口,它是Java软件开发工具箱(Java Software Development Kit,SDK)的一部分。JNI允许Java代码使用以其他语言编写的代码和代码库。Invocation API(JNI的一部分)可以用来将Java虚拟机(JVM)嵌入到本机应用程序中,从而允许程序员从本机代码内部调用Java代码。
不过,对Java外部的调用通常不能移植到其他平台,在applet中还可能引发安全异常。实现本地代码将使您的Java应用程序无法通过100%纯Java测试。但是,如果必须执行本地调用,则要考虑几个准则:
1.将您的所有本地方法都封装到一个类中,这个类调用单个的DLL。对每一种目标操作系统平台,都可以用特定于适当平台的版本的DLL。这样可以将本地代码的影响减少到最小,并有助于将以后所需要的移植问题考虑在内。
2.本地方法尽量简单。尽量使您的本地方法对第三方(包括Microsoft)运行时DLL的依赖减少到最小。使您的本地方法尽量独立,以将加载您的DLL和应用程序所需的开销减少到最小。如果需要运行时DLL,必须随应用程序一起提供。
JNI的书写步骤如下:
a.编写带有native声明的方法的Java类
b.使用javac命令编译编写的Java类
c.使用java -jni ****来生成后缀名为.h的头文件
d.使用其他语言(C、C++)实现本地方法
e.将本地方法编写的文件生成动态链接库
以下是一个在Java中调用本地C程序的简单的例子:
a.编写HelloWorld.java类
class HelloWorld {
public native void hello();
static {
System.loadLibrary("hello");
}
public static void main(String[] args) {
new HelloWorld().hello();
}
}
b.编译
javac HelloWorld.java
c.生成.h文件
javah -jni HelloWorld
生成内容如下:
/* DO NOT EDIT THIS FILE - it is machine generated */ #
include

/* Header for class HelloWorld */

#ifndef _Included_HelloWorld

#define _Included_HelloWorld

#ifdef __cplusplus

extern "C" {#

endif

/*

* Class: HelloWorld

* Method: hello

* Signature: ()V

*/

JNIEXPORT void JNICALL Java_HelloWorld_hello(JNIEnv * , jobject);#

ifdef __cplusplus

}#

endif# endif

第一个参数是调用JNI方法时使用的JNI Environment指针。第二个参数是指向在此Java代码中实例化的Java对象HelloWorld的一个句柄。其他参数是方法本身的参数

d.c实现

#include < jni.h >

#include "HelloWorld.h"

#include < stdio.h >

JNIEXPORT void JNICALL Java_HelloWorld_hello(JNIEnv * env, jobject obj) {

printf("Hello World!\n");

return;

}

其中,第一行是将jni.h文件引入(在%JAVA_HOME%\include目录下),里边有JNIEnv和jobject的定义。

e.编译c实现

这里以在Windows中为例,需要生成dll文件。在保存HelloWorldImpl.c文件夹下面,使用VC的编译器cl成。

cl -I%java_home%\include -I%java_home%\include\win32 -LD HelloWorldImp.c -Fehello.dll

注意:生成的dll文件名在选项-Fe后面配置,这里是hello,因为在HelloWorld.java文件中我们loadLibary的时候使用的名字是hello。当然这里修改之后那里也需要修改。另外需要将-I%java_home%\include -I%java_home%\include\win32参数加上,因为在第四步里面编写本地方法的时候引入了jni.h文件。

6) 运行程序

java HelloWorld 就ok了!

文章知识点与官方知识档案匹配

Java技能树首页概览

91537 人正在系统学习中

打开CSDN APP,看更多技术内容

Java当中native方法的详解_先苦后甜似淡非定的博客_native方法...

一、认识 native 即 JNI,Java Native Interface 凡是一种语言,都希望是纯。比如解决某一个方案都喜欢就单单这个语言来写即可。Java平台有个用户和本地C代码进行互操作的API,称为Java Native Interface (Java本地接口)。 回到顶部 二...

继续访问

JAVA中的native是什么有什么用_Rsun04551的博客_java中native...

1、一个native方法就是一个Java调用非Java代码的接口。一个native方法是指该方法的实现由非Java语言实现,比如用C或C++实现 2、在定义一个native方法时,并不提供实现体(比较像定义一个Java Interface),因为其实现体是由非Java语言在外面...

继续访问

【基础】Java的native方法作用和意义

Java的native方法作用和意义

继续访问

最新发布 Java关键字之native详解

native 用来修饰方法,用 native 声明的方法表示告知 JVM 调用,该方法在外部定义,我们可以用任何语言去实现它。简单地讲,一个native Method就是一个 Java 调用非 Java 代码的接口。

继续访问

?

java之native关键字详细解析_码农研究僧的博客

publicnativeStringintern(); 1 1. 概念 深究其native这个关键字 其主要表现为 只要有一个native方法,内部结构是Java调用非Java代码接口 所谓的非java代码,主要是指c或者c++实现,可以不深究其代码实现,只需要会调用即可 ...

继续访问

java中的Native方法_消逝者的博客_java native方法

一. 什么是Native Method 简单地讲,一个Native Method就是一个java调用非java代码的接口。一个Native Method是这样一个java的方法:该方法的实现由非java语言实现,比如C。这个特征并非java所特有,很多其它的编程语言都有这一机制,比如在...

继续访问

Java中的native方法

原文链接:java中的native方法 Java不是完美的,Java的不足除了体现在运行速度上要比传统的C++慢许多之外,Java无法直接访问到操作系统底层(如系统硬件等),为此Java使用native方法来扩展Java程序的功能。   可以将native方法比作Java程序同C程序的接口,其实现步骤:   1、在Java中声明native()方法,然后编译。   2、用javah产生一个

继续访问

JNI使用及简单封装

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、Java调用C++二、使用步骤1.引入库2.读入数据总结 前言 提示:这里可以添加本文要记录的大概内容: 本文主要记录JNI实践中的使用场景,Java调用C++ ,C++回调Java的实现过程,带简单封装思路。 提示:以下是本篇文章正文内容,下面案例可供参考 一、Java调用C++ ##1, 示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。 二、使用步骤 1.引入库 代码如下(示.

继续访问

?

java中native方法实现_详解Java中native方法的使用_勤婧知浩的博客-C...

今天在网上学习时碰到有关于native修饰符所修饰的方法,上网查了查,觉得很有意思记录一下 1、native简介 简单地讲,一个Native Method就是一个java调用非java代码的接口。一个Native Method是这样一个java的方法:该方法的实现由非java语言...

继续访问

java native方法_深入理解Java虚拟机_weixin_39557087的博客-CSDN...

native方法就是非Java的方法,比如可能是C 实现的,在字节码文件中并不会体现,所以native方法的计数器值是空的。比如System.currentTimeMillis();方法就是一个native方法,声明如下: publicstaticnativelongcurrentTimeMillis(); ...

继续访问

java的native_Java关键字(二)——native

本篇博客我们将介绍Java中的一个关键字——native。native 关键字在 JDK 源码中很多类中都有,在 Object.java类中,其 getClass() 方法、hashCode()方法、clone() 方法等等都是用 native 关键字修饰的。public final native Class> getClass();public native int hashCode();...

继续访问

Java native方法详解

一. 什么是Native Method 简单地讲,一个Native Method就是一个java调用非java代码的接口。一个Native Method是这样一个java的方法:该方法的实现由非java语言实现,比如C。这个特征并非java所特有,很多其它的编程语言都有这一机制,比如在C++中,你可以用extern "C"告知C++编译器去调用一个C的函数。 "A native method

继续访问

java中的native是什么

native主要用于方法上 一个native方法就是一个Java调用非Java代码的接口。一个native方法是指该方法的实现由非Java语言实现,比如用C或C++实现。

阅读更多 >>>  java爬虫框架,如何使用Java语言实现一个网页爬虫

Java native2ascii 简单转码

native2ascii.exe 是 Java 的一个文件转码工具,是将特殊各异的内容 转为 用指定的编码标准文体形式统一的表现出来,它通常位于 JDK_home\bin 目录下,安装好 Java SE 后,可在命令行直接使用 native2ascii 命令进行转码,示例:native2ascii -encoding 8859_1 c:\test.txt c:\temp.txt将 test.txt 文件内容用 8859_1 转码,另存为 temp.txt 文件格式:native2ascii -[options] [inputfile [outputfile]]参数选项 options-reverse:将 Latin-1 或 Unicode 编码转为本地编码-encoding encoding_name:指定转换时使用的编码inputfile:要转换的文件outputfile:转换后的文件互转(-encoding,非英文内容(如中文)转为编码符 或 编码符之间的转换),逆转(-reverse,通常是将编码符转为非英文内容,或非英文内容之间的转换),逆转时被转的文件编码和本地编码需一致,示例:中文转为 ISO 8859_1 编码后,将 8859_1 码转为中文:native2ascii -encoding 8859_1 c:\a.txt c:\b.txt,将 a 用 8859_1 转码,存为 b (8859_1 码)native2ascii -encoding GBK c:\b.txt c:\c.txt,将 b 用 GBK 转码,存为 c (GBK 码)native2ascii -reverse c:\c.txt c:\d.txt,将 GBK 编码 c 用本地编码转码,存为 d (中文内容)中文转为 GBK 编码后,将 GBK 码转为中文:native2ascii -encoding GBK c:\a.txt c:\b.txt,将 a 用 GBK 转码,存为 b (GBK 码)native2ascii -reverse c:\b.txt c:\c.txt,将 GBK 编码 b 用本地编码转码,存为 c (中文内容)例如struts国际化utf-8的转换方式:native2ascii -encoding UTF-8 ApplicationResources_zh_src.properties ApplicationResources_zh.properties

java中关于native使用错误的是

无源文件。必须加上文件后缀名.java,否则将提示以下信息:D:\Native>javac-h.HelloNative错误:仅当显式请求注释处理时才接受类名称。源代码,native是用做java和其他语言(如C++)进行协作时使用,也就是native后的函数的实现不是用java写的。

在java中native是一个什么修饰啊

native是一个方法修饰符:
native修饰的方法表明此方法是本地方法.....
java本地方法,就是java调用c语言,c++语言。delphi语言的时候会用到
一般应该极力避免这么做!
见http://baike.baidu.com/view/1272329.htm

在java中,native和static修饰符不能同时使用

虽然不知道你还需不需要答案,但还是在这留下回答帮助后来者吧。
native与其它java标识符连用时,其意义同非Native Method并无差别,比如native static表明这个方法可以在不产生类的实例时直接调用,这非常方便。
native和static的区别 (作者: LiSped)
static
是静态方法,在类加载的时候加载,可以直接通过类名来调用,native是本地方法,只在本类中使用。
如果同时使用,那不是自相矛盾

Native层怎样获得java层实现的服务,如activity manager

Native层怎样获得java层实现的服务,如activity manager
在你说的这个分层方式当中,Native层就是本地框架。
这些层大致如此区分:
Java应用程序无需过多解释,基本可以理解为各个App,由Java语言实现。
Java框架层就是常说的Framework,这层里东西很多也很复杂,比如说主要的一些系统服务如ActivityManagerService、PackageManagerService等,我们编写的Android代码之所以能够正常识别和动作,都要依赖这一层的支持。这一层也是由Java语言实现。
Native层这部分常见一些本地服务和一些链接库等。这一层的一个特点就是通过C和C++语言实现。比如我们现在要执行一个复杂运算,如果通过java代码去实现,那么效率会非常低,此时可以选择通过C或C++代码去实现,然后和我们上层的Java代码通信(这部分在android中称为jni机制)。又比如我们的设备需要运行,那么必然要和底层的硬件驱动交互,也要通过Native层。
Linux内核空间这部分顾名思义,就是Kernel部分

如何在Android源码里查找Java中native方法对应的C++实现

如何在Android源码里查找Java中native方法对应的C++实现 在framework下全局搜索这个native方法的全名。一个个查看匹配的文件,应该会找到你需要的。一般命名都有规律,大部分jni方法都在 \frameworks\base\core\jni目录

在Android源码里,有许多方法都是使用Jni机制调用底层的C++实现,比如大家都很熟悉的Binder.java里,就有 public static final native int getCallingPid(); public static final native int getCallingUid(); public static final native long clearCallingIdentity(); 等方法都是直接调用C++里的实现。 通过下面命令可以很快找到对应的实现, . build/envsetup cgrep ./frameworks '"getCallingPid"' 这时会查找到如下结果: 这样就可以知道对应的C++实现方法名字为android_os_Binder_getCallingPid, 在该文件中找这个方法的实现即可。
android源码只包含android app java的客户端代码。 native部分可能有可能没有,先全局搜索.c或者.cpp文件,有这些文件才可能有。 如果是标准的android native support 工程,那么eclipse里面打开之后,在工程目录/jni下面就是 native的C++代码。
比如有方法aaa.bbb.CCC.ddd,JNI对应的名字就是Java_aaa_bbb_CCC_ddd,地图炮搜索就是了,注意不要用全字段匹配,因为JNI名可能还带参数后缀。

另外你的确定你是下的整套Android系统的源码,不是SDK附带的那个源码,那个只有Java的而且还不全。
android源码只包含android app java的客户端代码。 native部分可能有可能没有,先全局搜索.c或者.cpp文件,有这些文件才可能有。 如果是标准的android native support 工程,那么eclipse里面打开之后,在工程目录/jni下面就是 native的C++代码。 Android源码中很多关键代码都是C++实现的,java通过jni来调用,经常会看到java中这样的代码: static native Thread currentThread(); 如何根据方法名找到其对应的C++实现,有两个方法。 先来个java代码的示例VMThread.java: package java.lang; class VMThread { Thread thread; int vmData; VMThread(Thread t) { thread = t; } native static void create(Thread t, long stackSize); static native Thread currentThread(); static native boolean interrupted(); static native void sleep (long msec, int nsec) throws InterruptedException; static native void yield(); native void interrupt(); native boolean isInterrupted(); ...... } 我们要查找currentThread方法的实现。 方法一: 由于Android源码中对每个native实现都会写一个java方法名和C++方法名映射的列表,所以我们直接搜索这个列表内容即可。 zkw@zkw $ grep -rns '"currentThread"' ./* ./art/piler/dex/quick/dex_file_method_inliner.:108: "currentThread", kNameCacheCurrentThread 匹配到二进制文件 ./dalvik/vm/native/.java_lang_VMThread.cpp.swp ./dalvik/vm/native/java_lang_VMThread.cpp:241: { "currentThread", "()Ljava/lang/Thread;", ./external/android-mock/testsgoogle/android/testing/mocking/AndroidMockGeneratorTest.java:249: Method method = Thread.class.getMethod("currentThread"); ./external/android-mock/testsgoogle/android/testing/mocking/AndroidMockGeneratorTest.java:407: Method method = Thread.class.getMethod("currentThread"); 可以看到,在文件./dalvik/vm/native/java_lang_VMThread.cpp中找到currentThread方法相关的信息,后面()Ljava/lang/Thread代表这个方法的返回值。 进入java_lang_VMThread.cpp这个文件可以看到: 17 /* 18 * java.lang.VMThread 19 */ 20 #include "Dalvik.h" 21 #include "native/InternalNativePriv.h" 22 23 24 /* 25 * static void create(Thread t, long stacksize) 26 * 27 * This is eventually called as a result of Thread.start(). 28 * 29 * Throws an exception on failure. 30 */ 31 static void Dalvik_java_lang_VMThread_create(const u4* args, JValue* pResult) 32 { 33 Object* threadObj = (Object*) args[0]; 34 s8 stackSize = GET_ARG_LONG(args, 1); 35 36 /* copying collector will pin threadObj for us since it was an argument */ 37 dvmCreateInterpThread(threadObj, (int) stackSize); 38 RETURN_VOID(); 39 } 40 41 /* 42 * static Thread currentThread() 43 */ 44 static void Dalvik_java_lang_VMThread_currentThread(const u4* args, 45 JValue* pResult) 46 { 47 UNUSED_PARAMETER(args); 48 49 RETURN_PTR(dvmThreadSelf()->threadObj); 50 } 51 ...... 237 238 const DalvikNativeMethod dvm_java_lang_VMThread[] = { 239 { "create", "(Ljava/lang/Thread;J)V", 240 Dalvik_java_lang_VMThread_create }, 241 { "currentThread", "()Ljava/lang/Thread;", 242 Dalvik_java_lang_VMThread_currentThread }, 243 { "getStatus", "()I", 244 Dalvik_java_lang_VMThread_getStatus }, 245 { "holdsLock", "(Ljava/lang/Object;)Z", 246 Dalvik_java_lang_VMThread_holdsLock }, 247 { "interrupt", "()V", 248 Dalvik_java_lang_VMThread_interrupt }, 249 { "interrupted", "()Z", 250 Dalvik_java_lang_VMThread_interrupted }, 251 { "isInterrupted", "()Z", 252 Dalvik_java_lang_VMThread_isInterrupted }, 253 { "nameChanged", "(Ljava/lang/String;)V", 254 Dalvik_java_lang_VMThread_nameChanged }, 255 { "setPriority", "(I)V", 256 Dalvik_java_lang_VMThread_setPriority }, 257 { "sleep", "(JI)V", 258 Dalvik_java_lang_VMThread_sleep }, 259 { "yield", "()V", 260 Dalvik_java_lang_VMThread_yield }, 261 { NULL, NULL, NULL }, 262 }; 源码中第242行找到对应的名字,用红色标出,其实现就在第44行。 这个方法不是很准确,要靠经验来判断搜出来的代码是否是自己要找的,下一个方法可以较准确的查找。 方法二: 还是找VMThread.java的currentThread函数,找多了会发现,C++的名字一般都是包名+类名+方法名,比如currentThread的C++名字就肯定包含“java_lang_VMThread_currentThread”,所以直接搜索即可。 如何在Android源码里查找Java中native方法对应的C++参考::edu.51cto./course/course_id-4377.

阅读更多 >>>  程序员培训多少钱,黑马程序员学费

知道方法名就知道C++里的函数名了,native方法的函数名是 Java_包名_类名_函数名 开头的,包名要把.换成_。比如.xxx.yyy.ClassA.methodB在C++那边找Java__xxx_yyy_ClassA_methodB就行了
如何在eclipse中查看android源码 假设我们想参看Activity类的源代码,按着Ctrl键,左击它,现实的结果却看不到代码的,提示的信息便是“找不到Activity.class文件”。 此时点击下面的按钮,“Change Attached Source…”,选择android源代码所在位置,便弹出对话框。 第一种是选择工作目录,即已经存在的android应用程序源代码。 第二种分两种方式 (1)选择External File…按钮,添加Jar格式文件或者zip格式文件路径; (2)选择External Floder…按钮,添加文件夹所在路径。 下面问题就来了,源代码在哪里?不能凭空产生阿。 可以通过Android SDK Manager进行源代码下载;(推荐该种方法),勾选Source for Android SDK,进行下载即可。 此外也可通过其他途径下载,网上有很多共享的资源。 这里选择第二种方式的(2)方法,选择源码所在目录(即下载源代码目录所在路径) 点击“OK”按钮,此时,Activity文件便能够查看源代码了

网站数据信息

"java native,什么是java native"浏览人数已经达到20次,如你需要查询该站的相关权重信息,可以点击进入"Chinaz数据" 查询。更多网站价值评估因素如:java native,什么是java native的访问速度、搜索引擎收录以及索引量、用户体验等。 要评估一个站的价值,最主要还是需要根据您自身的需求,如网站IP、PV、跳出率等!