Yansıma ve Yapılandırma
Dinamik özellikleri ele alın
Yansıma ve Yapılandırma, CoddyKit'te ücretsiz bir Java Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Java Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Java Academy kursu toplamda 4 dersten oluşur.
Yansıma ve Yapılandırma
Yerel görüntü aracının kapalı dünya analizi yalnızca statik olarak izleyebildiği kodu görebilir. Dinamik özellikler — yansıma, vekiller, kaynaklar ve serileştirme — hedeflerini analizörden gizler. Bu derste bunların yerel bir ikili dosyada çalışmasını nasıl sağlayacağınız açıklanır.
Yansımanın Sorunu
Bir dizeden ada göre sınıf aradığınızda analizör hangi sınıfı kastettiğinizi bilemez. Bu sınıfa başka türlü erişilemiyorsa görüntüye dahil edilmez ve arama çalışma zamanında başarısız olur.
public class Main {
public static void main(String[] args) throws Exception {
String name = "java.util.ArrayList"; // could come from config
Class<?> c = Class.forName(name);
System.out.println("Loaded: " + c.getSimpleName());
}
}Erişilebilirlik Üst Verisi
Çözüm erişilebilirlik üst verisidir: yerel görüntü aracına hangi sınıflara, yöntemlere ve alanlara dinamik olarak erişildiğini bildiren JSON dosyaları. Derleme daha sonra bunları korur ve üyelerini kaydeder.
reflect-config.json
Bir yansıma girdisi sınıfı ve korunacak üyeleri belirtir. Bu parça Java değil, JSON'dır — META-INF/native-image/ altında yer alır.
[
{
"name": "com.example.Person",
"allDeclaredConstructors": true,
"allDeclaredMethods": true,
"fields": [ { "name": "age" } ]
}
]İzleme Aracısı
Üst verileri elle yazmak zahmetlidir. Uygulamanızı JVM üzerinde izleme aracısıyla çalıştırın (-agentlib:native-image-agent=config-output-dir=...). Gerçek bir çalıştırma sırasında gerçekleşen her dinamik erişimi kaydeder ve yapılandırma dosyalarını otomatik olarak oluşturur.
Kod Yollarınızı Çalıştırın
Aracı yalnızca gerçekten yürütülen işlemleri kaydeder; bu nedenle uygulamayı tüm özelliklerinden geçirmelisiniz — testlerinizi onun altında çalıştırın. Kaçırdığınız her yansıma kullanan yol, üst veride bulunmaz ve yerel derlemede bozulur.
Dinamik Vekiller
JDK'nin dinamik vekilleri, vekil olarak kullanılan arayüz kümelerini listeleyen bir proxy-config.json dosyasına ihtiyaç duyar. Arayüz listesi çalışma zamanında oluşturulduğu için analizör bunu çıkaramaz.
Kaynaklar
getResourceAsStream üzerinden yüklenen dosyalar otomatik olarak gömülmez. Genel arama kalıpları içeren bir resource-config.json dosyası, yerel görüntü aracına hangi kaynakları çalıştırılabilir dosyaya paketlemesi gerektiğini bildirir.
public class Main {
public static void main(String[] args) {
var url = Main.class.getResource("/banner.txt");
System.out.println("Resource present: " + (url != null));
}
}Serileştirme ve JNI
Java serileştirmesi ve yerel (JNI) çağrılar da dinamiktir. Her birinin kendi yapılandırma dosyası vardır (serialization-config.json, jni-config.json). Bu yollar yürütüldüğünde izleme aracısı bunları da oluşturur.
Programatik Kayıt
Kitaplık yazarları, derleme zamanında yürütülen RuntimeReflection API'si üzerinden bir Feature kullanarak üst verileri kod içinde kaydedebilir. Böylece doğru yapılandırma kitaplığın içinde sunulur ve kullanıcıların elle kurulum yapması gerekmez.
Paylaşılan Üst Veri Deposu
GraalVM, popüler kitaplıklar için önceden oluşturulmuş yapılandırmalar içeren bir topluluk erişilebilirlik üst verisi deposunu sürdürür. Yerel derleme araçları bu depoyu otomatik olarak alabilir; böylece yaygın çerçeveler kutudan çıktığı gibi çalışır.
Hızlı Kontrol
Yerel görüntüdeki dinamik özellikleri anlayıp anlamadığınızı test edin.
Özet
Dinamik özellikleri ele almayı öğrendiniz:
- Yansıma, vekiller, kaynaklar, serileştirme ve JNI statik analiz tarafından görülemez.
- Erişilebilirlik üst verisi JSON dosyaları bunları yerel görüntü aracına bildirir.
- İzleme aracısı, gerçek bir JVM çalıştırmasından yapılandırmayı otomatik olarak oluşturur.
- Hiçbir şeyin atlanmaması için tüm kod yollarını, özellikle testleri çalıştırın.
- Popüler kitaplıklar için paylaşılan üst veri deposunu kullanın.
Sıkça Sorulan Sorular
“Yansıma ve Yapılandırma” dersi ücretsiz mi?
Evet — “Yansıma ve Yapılandırma” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Java Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Java Academy kursu toplamda 4 dersten oluşur.
“Yansıma ve Yapılandırma” dersinde ne öğreneceğim?
Dinamik özellikleri ele alın Java Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Java Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Java Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.
“Yansıma ve Yapılandırma” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Java Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Java Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- GraalVM Nedir
- Yerel Görüntü Oluşturma
- Yansıma ve Yapılandırma
- Yerel Görüntünün Ödünleşimleri