當前位置:編程學習大全網 - 源碼下載 - 什麽是native輸出

什麽是native輸出

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 <jni.h>

/* 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有什麽書推薦?
  • 下一篇:不知道有沒有熟悉VB和Access數據庫的仁兄
  • copyright 2024編程學習大全網