Rumah  >  Artikel  >  Java  >  Kaedah Asli di Jawa

Kaedah Asli di Jawa

PHPz
PHPzasal
2024-08-30 15:41:22505semak imbas

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.

Bagaimana Kaedah Asli Berfungsi Di Jawa?

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:

  • javah: Alat ini tersedia dalam kit pembangunan java yang mencipta fail pengepala yang serasi dengan C daripada kelas java fail java sedia ada yang mengandungi kaedah asli.
  • h: Ini ialah fail pengepala berasaskan C/C++ yang tersedia dalam kit pembangunan Java yang menyediakan pemetaan antara jenis data Java dan jenis data asli. Fail Javah yang diterangkan di atas menjana fail ini secara automatik.

Contoh Kaedah Asli di Jawa

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:

  • Kod java program.
  • Kompilkan kod java.
  • Buat fail pengepala C.
  • Laksanakan logik kaedah asli dalam C/C++.
  • Buat pustaka kongsi.
  • Jalankan dan Uji aplikasi java.

Contoh di bawah akan dibahagikan kepada dua bahagian: mempunyai kod java dan mempunyai kod asli.

Bahagian #1: Java

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.

Kaedah Asli di Jawa

Dalam langkah seterusnya, kami akan mencipta fail pengepala menggunakan utiliti javah seperti yang diterangkan di bawah.
Kaedah Asli di Jawa

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.

Bahagian #2: Kod C

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
}
  • Fail di atas disimpan dengan NativeDemo.c.
  • Daripada kod di atas, kita boleh lihat logik penyulitan ditulis dalam bahasa C. Logiknya adalah berdasarkan menggantikan semua vokal dengan @ dan mengembalikan rentetan.
  • Dalam langkah seterusnya, akan menyusun kod C di atas menggunakan arahan di bawah:

Kaedah Asli di Jawa

  • Arahan di atas mencipta perpustakaan kongsi yang digunakan oleh lapisan pengaturcaraan java untuk memanggil kod yang ditulis dalam C. Kami boleh menggunakan strategi kompilasi yang berbeza berdasarkan pengkompil dan sistem pengendalian kami.
  • Selepas melengkapkan langkah di atas, kami boleh memanggil jalankan kod java kami seperti di bawah:

Kaedah Asli di Jawa

Jika semuanya berjalan lancar, anda akan melihat output di bawah:

Kaedah Asli di Jawa

Kesimpulan

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn