Dalam siaran ini, kita akan melihat penjelasan terperinci tentang kaedah asli di Jawa. Kami akan melihat sintaks asasnya bersama-sama dengan kerja mereka. Akan ada contoh kod Java yang menunjukkan penggunaan kaedah asli.
Mulakan Kursus Pembangunan Perisian Percuma Anda
Pembangunan web, bahasa pengaturcaraan, ujian perisian & lain-lain
Berikut ialah sintaks asas cara kaedah asli digunakan dalam Java:
[ public / protected / private] native [return-type] methodName ();
Sintaks di atas menunjukkan cara kaedah asli diisytiharkan dalam Java. Sama seperti kaedah biasa, ia memerlukan takrifan pengubah suai akses, diikuti dengan kata kunci asli, kemudian jenis pulangan kaedah, dan akhir sekali, nama kaedah dengan mana-mana parameter input yang diperlukan ditentukan.
Kami boleh mentakrifkannya sebagai kaedah yang dilaksanakan dalam bahasa selain Java, seperti C/C++. Idea umum di sebalik penggunaan kaedah sedemikian mungkin adalah untuk memanfaatkan prestasi tinggi atau pengurusan memori yang tersedia dalam C/C++.
Untuk menyokong kaedah yang ditulis dalam bahasa lain, Java menyediakan antara muka yang dipanggil Antara Muka Asli Java, yang bertindak sebagai pengantara antara Java dan bahasa lain. Motivasi untuk menggunakan JNI datang daripada keupayaannya untuk menyediakan kebolehgunaan semula kod dan prestasi tinggi. Harap maklum bahawa kod yang ditulis dalam bahasa lain seperti C/C++ tidak mudah alih.
Berikut ialah komponen utama antara muka asli Java:
Sekarang kita akan melihat contoh yang memahami dengan jelas cara kaedah asli berfungsi di Jawa. Berikut adalah langkah-langkah yang terlibat dalam menggunakan kaedah asli:
Contoh di bawah akan dibahagikan kepada dua bahagian: mempunyai kod java dan mempunyai kod asli.
Berikut ialah kelas java kami yang mengandungi kaedah asli.
Kod:
package com.edubca.nativedemo; class NativeDemo { public native String encryptData (String inputdata); static { System.loadLibrary ("nativedemo"); /* lowercase of classname! */ } public static void main (String[] args) { NativeDemo demo = new NativeDemo (); System.out.println("Encrypted data is " + demo.encryptData ("This is Edubca")); } }
Contoh di atas mengandungi kaedah asli yang diisytiharkan dalam kelas NativeDemo. Kami telah menulis pelaksanaan kaedah encryptData dalam C. Seperti yang anda lihat, kami telah menggunakan blok statik yang tujuannya adalah untuk memuatkan perpustakaan C asli di mana pelaksanaan kaedah encryptData tersedia. Satu nota penting ialah anda harus membekalkan nama huruf kecil kelas Java yang disertakan sebagai parameter rentetan dalam kaedah System.loadLibrary. Seperti langkah yang diisytiharkan di atas, sudah tiba masanya untuk menyusun kod java kami.
Arahan berikut menyusun kod java di atas.
Dalam langkah seterusnya, kami akan mencipta fail pengepala menggunakan utiliti javah seperti yang diterangkan di bawah.
Arahan di atas akan menghasilkan fail javah dengan nama yang sama dengan nama kelas. Semasa menulis pelaksanaan C kaedah asli, anda harus memasukkan fail ini.
Berikut ialah pelaksanaan C bagi fungsi asli encryptData.
Kod:
#include <jni.h> #include <stdio.h> #include "NativeDemo.h" JNIEXPORT void JNICALL Java_NativeDemo_encryptData(JNIEnv *env, jobject obj, jstring inputstr) { const char *str= (*env)->GetStringUTFChars(env,inputstr,0) // create string from jstring char Newch = '@'; for(i = 0; i <= strlen(str); i++) { if(str[i] == 'a' || str[i]== 'e' || str[i]== 'i' || str[i]== 'o' || str[i]== 'u' || str[i] == 'A' || str[i]== 'E' || str[i]== 'I' || str[i]== 'O' || str[i]== 'U') { str[i] = Newch; } } return env->NewStringUTF(str); // convert string to jstring }
Jika semuanya berjalan lancar, anda akan melihat output di bawah:
Daripada artikel di atas, kami mempunyai pemahaman yang jelas mengenainya. Kebanyakan aplikasi masa nyata yang ditulis dalam Java menggunakan kaedah asli untuk mengambil prestasi serta kelebihan pengurusan memori yang tersedia dalam bahasa pengaturcaraan asli seperti C/C++.
Atas ialah kandungan terperinci Kaedah Asli di Jawa. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!