Kata Kunci dan Metode Asli Java

1. Ikhtisar

Dalam tutorial singkat ini, kami akan membahas konsep kata kunci native di Java, dan kami juga akan menunjukkan cara mengintegrasikan metode native ke dalam kode Java.

2. Kata kunci asli di Jawa

Pertama-tama, mari kita bahas apa itu kata kunci native di Java.

Sederhananya, ini adalah pengubah non-akses yang digunakan untuk mengakses metode yang diimplementasikan dalam bahasa selain Java seperti C / C ++ .

Ini menunjukkan implementasi metode atau kode yang bergantung pada platform dan juga bertindak sebagai antarmuka antara JNI dan bahasa pemrograman lainnya.

3. asli Metode

Sebuah asli metode adalah metode Java (baik metode contoh atau metode kelas) yang pelaksanaannya juga ditulis dalam bahasa pemrograman lain seperti C / C ++.

Selain itu, metode yang ditandai sebagai asli tidak boleh memiliki tubuh dan harus diakhiri dengan titik koma:

[ public | protected | private] native [return_type] method ();

Kami dapat menggunakannya untuk:

  • mengimplementasikan antarmuka dengan panggilan sistem atau pustaka yang ditulis dalam bahasa pemrograman lain
  • mengakses sistem atau sumber daya perangkat keras yang hanya dapat dijangkau dari bahasa lain
  • mengintegrasikan kode lama yang sudah ada yang ditulis dalam C / C ++ ke dalam aplikasi Java
  • memanggil pustaka yang dimuat secara dinamis yang dikompilasi dengan kode arbitrer dari Java

4. Contoh

Sekarang mari kita tunjukkan cara mengintegrasikan metode ini ke dalam kode Java kita.

4.1. Mengakses Kode Asli di Jawa

Pertama-tama, mari buat kelas DateTimeUtils yang perlu mengakses metode asli yang bergantung pada platform bernama getSystemTime :

public class DateTimeUtils { public native String getSystemTime(); // ... }

Untuk memuatnya, kami akan menggunakan System.loadLibrary.

Mari kita lakukan panggilan untuk memuat perpustakaan ini dalam blok statis sehingga tersedia di kelas kita:

public class DateTimeUtils { public native String getSystemTime(); static { System.loadLibrary("nativedatetimeutils"); } }

Kami telah membuat pustaka tautan dinamis, nativedatetimeutils , yang mengimplementasikan getSystemTime di C ++ menggunakan petunjuk terperinci yang tercakup dalam panduan kami untuk artikel JNI.

4.2. Pengujian asli Metode

Terakhir, mari kita lihat bagaimana kita dapat menguji metode asli yang ditentukan di kelas DateTimeUtils :

public class DateTimeUtilsManualTest { @BeforeClass public static void setUpClass() { // .. load other dependent libraries System.loadLibrary("nativedatetimeutils"); } @Test public void givenNativeLibsLoaded_thenNativeMethodIsAccessible() { DateTimeUtils dateTimeUtils = new DateTimeUtils(); LOG.info("System time is : " + dateTimeUtils.getSystemTime()); assertNotNull(dateTimeUtils.getSystemTime()); } }

Di bawah ini adalah keluaran dari logger:

[main] INFO c.b.n.DateTimeUtilsManualTest - System time is : Wed Dec 19 11:34:02 2018

Seperti yang bisa kita lihat, dengan bantuan kata kunci native , kami berhasil mengakses implementasi yang bergantung pada platform yang ditulis dalam bahasa lain (dalam kasus kami C ++).

5. Kesimpulan

Di artikel ini, kami telah mempelajari dasar-dasar kata kunci dan metode native . Dengan contoh singkat, kami juga telah mempelajari cara mengintegrasikannya di Java.

Potongan kode yang digunakan dalam artikel ini tersedia di Github.