Compiling and Running a Java Program with a Native Method

Thanks :http://www.iam.ubc.ca/guides/javatut99/native1.1/stepbystep/step1.html

Step 1: Write the Java Code

 

The following Javacode segment defines a class named HelloWorld . This class declares one native method, implements a main method, and has a static code segment.

class HelloWorld {
public native void displayHelloWorld();

static {
System.loadLibrary("hello");
}

public static void main(String[] args) {
new HelloWorld().displayHelloWorld();
}
}
Declare a Native Method
You must declare all methods, whether Java methods or native methods, within a class on the Java side. When you write a method implementation in a language other than Java, you must include the keyword native as part of the method's definition within the Java class. The native keyword signals to the Java compiler that the function is a native language function. It is easy to tell that the implementation for the HelloWorld class's displayHelloWorld method is written in another programming language because the native keyword appears as part of its method definition:
public native


 void displayHelloWorld();
This native method declaration in your Java class provides only the method signature for displayHelloWorld . It provides no implementation for the method. You must provide the implementation for displayHelloWorld in a separate native language source file.

The method declaration for displayHelloWorld also indicates that the method is a public instance method, accepts no arguments, and returns no value. For more information about arguments to and return values from native methods see Interacting with Java from the Native Side (in the Using the Java Native Interface (JNI) trail) .

Load the Library
You compile the native language code that implements displayHelloWorld into a shared library (you will do this in Step 5: Create a Shared Library ). The runtime system later loads the shared library into the Java class that requires it. Loading the library into the Java class maps the implementation of the native method to its declaration.

The HelloWorld class uses the System.loadLibrary method. The System.loadLibrary method loads the shared library that will be created when you compile the implementation code. Place this method within a static initializer. The argument to System.loadLibrary is the shared library name. This can be any name that you choose. The system uses a standard, but platform-specific, approach to convert the library name to a native library name. For example, the Solaris system converts the library name "hello" to libhello.so , while a Win32 system converts the same name to hello.dll .

The following static initializer from the HelloWorld class loads the appropriate library, named hello . The runtime system executes a class's static initializer when it loads the class.

static {
System.loadLibrary("hello");
}
Write the Main Method

The HelloWorld class, because it is an application, also includes a main method to instantiate the class and call the native method. The main method instantiates HelloWorld and calls the displayHelloWorld native method.

    public static void main(String[] args) {
new HelloWorld().displayHelloWorld();
}

You can see from the code sample that you call a native method in the same manner as you call a regular method: just append the name of the method to the end of the object name, separated with a period ('.'). A matched set of parentheses, (), follow the method name and enclose any arguments to pass into the method. The displayHelloWorld method doesn't take any arguments.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值