Ana içeriğe geç
Programlama

Java'nın yeni AOT önbellek özelliği uyumluluk sorunları barındırıyor

Öne çıkanlar

  • AOT sınıf bağlama süreci derleme ortamına özgü işlemci yönergeleri içeren yerel bağdaştırıcı kodları oluşturuyor.
  • İşlemci özellikleri uyuşmayan sistemlerde JVM illegal instruction ve SIGILL hatalarıyla çöküyor.
  • Örtük kısıtlamalar ve kuluçka modülleri sınıf bağlama optimizasyonunu sessizce devre dışı bırakabiliyor.

XPipe geliştiricileri yayımladıkları teknik analizde, Java ekosistemine yeni eklenen önceden derleme (AOT) önbellek özelliğinin dağıtık ve son kullanıcıya ulaşan uygulamalarda ciddi kararsızlıklar yarattığını açıkladı. Geliştirme ekibi, uygulamanın başlangıç ve ısınma sürelerini iyileştirmesi hedeflenen bu mekanizmanın, farklı işlemci mimarilerine sahip istemci sistemlerinde beklenmedik çökmelere yol açtığını bildirdi.

Analize göre AOT sınıf bağlama işlemi, eğitim ortamındaki işlemcinin AVX gibi özel donanım yönergelerini içeren bağdaştırıcı (adapter) makine kodları üretiyor. Önbelleğin oluşturulduğu derleme makinesi ile uygulamanın çalıştırıldığı hedef sistem arasındaki işlemci yetenekleri uyuşmadığında sanal makine SIGILL veya yasa dışı yönerge hatalarıyla aniden kapanıyor. Varsayılan olarak etkinleştirilen bağdaştırıcı önbellekleme davranışının kapatılması için belgelenmemiş tanı parametrelerinin kullanılması gerekiyor.

Ekip ayrıca AOT günlük çıktılarının anlaşılması zor yapısına ve sınıf bağlama optimizasyonunun son derece kırılgan kurallarına dikkat çekti. Modül grafiğindeki en ufak bir uyumsuzluk, deneme aşamasındaki modüllerin varlığı veya belirli JVM bayrakları optimizasyonları sessizce devre dışı bırakıyor. Gelecek JDK sürümlerinde tam işlemci eşleşmesi denetimlerinin planlanması, dağıtılan masaüstü uygulamalarında AOT kod önbelleğinin verimli kullanılmasını daha da zorlaştırıyor.

Kaynak

Bu özet yapay zekâ ile hazırlanmıştır; ayrıntılar ve doğrulama için orijinal kaynağa başvurun.