Java 20
Java 20 sürümünde gelen Scoped Values özelliği ve önceki sürümlerdeki Record Patterns, Pattern Matching for switch, Foreign Function & Memory API, Virtual Threads, Structured Concurrency, Vector API özellikleriyle ilgili bilgiler yer alıyor.
Scoped Values (Incubator) – JEP 429
Çoklu Thread yönetiminde her iş parçacığı (Thread) için benzersiz değişken tanımlamak için performans ve sınırları olan ThreadLocal kullanılmaktaydı.
Java 20 ile birlikte daha performanslı ve VirtualThreads özelliğini destekleyen Scoped Values özelliği gelmiştir.
VirtualThreads özelliği Java 19 ile birlikte gelen özelliklerden biridir.
Scoped Values immutable, alt iş parçacıkları tarafından miras alınabilme ve kapsama alanı sonrası temizleme özelliğine sahiptir.
public class App {
static final ScopedValue<Integer> RANDOM_NUMBER = ScopedValue.newInstance();
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
new Thread(() -> {
int randomNumber = ThreadLocalRandom.current().nextInt(1, 101);
ScopedValue.where(RANDOM_NUMBER, randomNumber).run(() -> {
System.out.printf("Thread %s: Random number: %d\n",
Thread.currentThread().getName(), RANDOM_NUMBER.get());
});
}).start();
}
}
}
Scoped Values özelliğinin VirtualThreads özeliğini kullanan StructuredTaskScope sınıfı ile kullanımı aşağıdaki gibidir.
public class App {
static final ScopedValue<Integer> RANDOM_NUMBER = ScopedValue.newInstance();
public static void main(String[] args) throws Exception {
try (StructuredTaskScope scope = new StructuredTaskScope()) {
for (int i = 0; i < 10; i++) {
scope.fork(() -> {
int randomNumber = ThreadLocalRandom.current().nextInt(1, 101);
ScopedValue.where(RANDOM_NUMBER, randomNumber).run(() -> {
System.out.printf("Thread %s: Random number: %d\n",
Thread.currentThread().threadId(), RANDOM_NUMBER.get());
});
return null;
});
}
scope.join();
}
}
}
Scoped Values özelliği Tomcat gibi her web isteğine ait benzersiz değerlerin saklandığı uygulamalarda performans artışını VirtualThreads ile birlikte sağlayacaktır.
Record Patterns (Second Preview) – JEP 432
Java 19 ile birlikte gelen Record Patterns özelliği for döngüsünde kullanımı da eklenerek geliştirilmeye devam etmektedir.
Pattern Matching for switch (Fourth Preview) – JEP 433
Önceki Java sürümlerinde yer alan Pattern Matching for switch özelliğinin kullanımı geliştirilmeye devam etmektedir.
Foreign Function & Memory API – JEP 434
Java 14 ile birlikte Java 15, Java 16, Java 17, Java 18, Java 19 ile geliştirilmesi devam edilen Java tarafından yönetilmeyen bellek alanlarına erişimi sağlayan Foreign Function & Memory API (FFM API) geliştirilmeye devam etmektedir.
Virtual Threads (Second Preview) – JEP 436
Java 19 ile birlikte gelen Virtual Threads özelliği ThreadLocal yerine Scoped values özelliği ile daha performanslı çalışmasını içererek geliştirilmeye devam etmektedir.
Structured Concurrency (Second Incubator) – JEP 437
Java 19 ile birlikte gelen Structured Concurrency özelliği geliştirilmeye devam etmektedir.
Vector API (Fifth Incubator) – JEP 438
Java 16 ile birlikte gelen Java 17, Java 18, Java 19 ile devam Vector API geliştirilmeye devam etmektedir.
Özellik içsel olarak Java uygulamalarını daha performanslı çalıştırmak için yapılan güncelleme olduğundan sınıf, paket tarafında herhangi bir değişiklik yapılmamaktadır.
Diğer
Java 20 ile yenilikler arasında Scoped Values özelliği çıkmaktadır.
Diğer özellikler önceki Java sürümlerinde eklenen ve uygulama performansını arttıran özelliklerdir.
Java Derslerine buradan ulaşabilirsiniz.
Hayırlı günler dilerim.