Ana içeriğe geç
Programlama

Jactl Java 8 üzerinde sanal iş parçacığı mekanizmasını hayata geçirdi

Öne çıkanlar

  • Jactl, Java 8 ortamında engelleme işlemlerini yığın izi üretmeyen istisnalarla askıya alıyor.
  • Yürütme durumu zincirleme nesnelerle saklanıp bayt dizisi olarak diske kaydedilebiliyor.
  • Java 21 ve üzeri sürümlerde bu mekanizma kapatılarak doğrudan sanal iş parçacıkları kullanılabiliyor.

Java uygulamaları için geliştirilen betik dili Jactl, Java 8 ve Java 11 sürümlerinde sanal iş parçacığı benzeri asenkron yürütmeyi sağlamak amacıyla özel bir devamlılık mimarisi sundu. Java 21 öncesindeki sürümlerde çağrı yığınını doğrudan saklama imkanı bulunmadığı için dilin derleyicisi engelleme yapan işlemleri özel bir istisna zinciriyle yakalayan bir altyapı kullanıyor. Bu sayede Vert.x benzeri olay döngüsü mimarilerinde çalışan uygulamalar, engelleme işlemlerinde ana iş parçacığını kilitlemeden betik kodunu askıya alıp tekrar çalıştırabiliyor.

Sistem, uzun süren veya engelleme gerektiren fonksiyon çağrılarında yığın izi oluşturmayan hafif bir istisna fırlatarak çalışıyor. Yığın basamaklarındaki her Jactl fonksiyonu bu istisnayı yakalayarak yerel değişkenlerini ve yürütme konumunu bir devamlılık nesnesi içine kaydediyor. İşlemin tamamlanmasının ardından zincirlenen devamlılık nesneleri MethodHandle çağrılarıyla sırasıyla yeniden işletilerek betiğin kaldığı yerden devam etmesi sağlanıyor. Ayrıca yakalanan bu yürütme durumları bayt dizisine dönüştürülerek kontrol noktaları oluşturulabiliyor ve hata kurtarma süreçlerinde durum yedeklemesi yapılabiliyor.

Paylaşılan JMH karşılaştırma testi sonuçlarına göre, yığın izi üretilmeden fırlatılan devamlılık istisnaları askıya alma ve devam ettirme süreçlerinde ihmal edilebilir düzeyde ek yük getiriyor. Java 21 ve daha yeni sürümlerde çalışan uygulamalar ise dilerlerse tek bir bayrakla bu mekanizmayı devre dışı bırakarak doğrudan platformun sunduğu yerel sanal iş parçacıklarını tercih edebiliyor.

Kaynak

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