native metot
- Java kursu
- Uzman
- Ders 25/46
- 5 dk
native anahtar kelimesi ile yerel metot tanımını öğrenirsin.
native anahtar sözcüğü
native anahtar sözcüğü, bir metodu Java dışında bir dilde (çoğunlukla C veya C++) uygulandığını işaretler. Böyle bir metodun gövdesi yoktur; noktalı virgülle biter. Çağrı sırasında JVM, JNI (Java Native Interface) üzerinden yerel koda köprü kurar.
native metotlar işletim sistemi çağrıları, eski C kitaplıkları veya donanım erişimi gerektiğinde kullanılır. Modern Java 21'de birçok durum için FFM API tercih edilir; yine de JNI hâlâ yaygındır.
native bildirimi
native metot şöyle bildirilir: native dönüşTipi metotAdı(parametreler);. Gövde yoktur, sadece noktalı virgül. native, static ile birlikte de kullanılabilir. Metot bir sınıfa ait olmalıdır; bağımsız fonksiyonlar Java'da yoktur.
Örnek: class NativeOps { native int sum(int a, int b); }. Bu metot çağrılmadan önce ilgili yerel kütüphane System.loadLibrary ile yüklenmelidir; yoksa UnsatisfiedLinkError fırlatılır.
Uygulama native metot bildir ve işaret yazdır
class NativeOps tanımla; native int sum(int a, int b); metodu olsun (gövdesiz). Main sınıfının main metodunda System.out.println("native declared"); yazdır. native metodu çağırma; yalnızca bildir.
Başlangıç kodu
// NativeOps sınıfını tanımla: native int sum(int a, int b)
// Main sınıfını tanımla ve main içinde native declared yazdırÖrnek çözüm
class NativeOps {
native int sum(int a, int b);
}
public class Main {
public static void main(String[] args) {
System.out.println("native declared");
}
}Beklenen çıktı
native declared
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 native metotların belirgin özelliği nedir?
- Yalnızca soyut sınıfta bulunur
- Gövdesi yoktur, başka dilde uygulanır Doğru cevap
- Sadece static olabilir
- Otomatik test edilir
Açıklama: native metot gövde içermez; uygulama C veya C++ tarafında yazılır.
2 native metot bildirimini tamamla
class NativeOps {
native ____(int a, int b);
}
class NativeOps {
native int sum(int a, int b);
}
Açıklama: native int sum(int a, int b); bildirimi tamamlanır.
3 JNI kavramlarını eşleştir
| Kavram | Anlamı |
|---|---|
native |
Gövdesiz metot işareti |
System.loadLibrary |
Yerel kütüphane yükler |
JNIEnv |
C tarafı arabirim |
javac -h |
Başlık üretir |