Java 10, 20 Mart 2018’de yayımlandı. Java 9’un ardından yalnızca 6 ay sonra çıkan bu sürüm, büyük değişikliklerden çok yazılımcıların günlük işini kolaylaştıracak pratik özellikler getirdi.
Bu yazıda, Java 10 ile gelen onlarca yenilik arasından yazılımcılar için en önemli 3 özelliği inceleyeceğiz.
Java 10 ile Gelen Özellikler
varile Yerel Değişken Tip Çıkarımı- Değiştirilemeyen Koleksiyonlar (
copyOf(),toUnmodifiableX) Optional.orElseThrow()
var ile Yerel Değişken Tip Çıkarımı
Java 10’un en dikkat çeken özelliği var anahtar kelimesidir. Artık yerel değişkenlerin tipini derleyici otomatik çıkarsayabiliyor.
public class VarExample {
public static void main(String[] args) {
var mesaj = "Merhaba Java 10"; // String
var sayi = 42; // int
var liste = java.util.List.of("elma", "armut", "muz"); // List<String>
System.out.println(mesaj);
for (var meyve : liste) {
System.out.println(meyve);
}
}
}
💡 var sadece yerel değişkenlerde kullanılabilir. Metot parametrelerinde, sınıf alanlarında veya dönüş tiplerinde kullanılamaz.
👉 Bu özellik, kodu daha temiz ve okunabilir hale getirir.
Değiştirilemeyen Koleksiyonlar (copyOf(), toUnmodifiableX)
Java 9 ile gelen List.of(), Set.of() gibi metodlara ek olarak Java 10’da copyOf() metotları geldi. Böylece mevcut koleksiyonlardan değiştirilemeyen kopyalar üretebiliriz.
import java.util.*;
public class CopyOfExample {
public static void main(String[] args) {
List<String> meyveler = Arrays.asList("elma", "armut", "muz");
List<String> sabitListe = List.copyOf(meyveler);
try {
sabitListe.add("kiraz");
} catch (UnsupportedOperationException e) {
System.out.println("Liste değiştirilemez!");
}
}
}
Ayrıca Collectors.toUnmodifiableList(), toUnmodifiableSet() gibi metodlarla Stream API’den de değiştirilemeyen koleksiyonlar oluşturulabilir.
👉 Bu özellik, özellikle çok iş parçacıklı (multi-threaded) uygulamalarda büyük güvenlik sağlar.
Optional.orElseThrow()
Java 10’da Optional sınıfına yeni bir metot eklendi:
import java.util.Optional;
public class OptionalExample {
public static void main(String[] args) {
Optional<String> bos = Optional.empty();
try {
String deger = bos.orElseThrow(); // NoSuchElementException
} catch (Exception e) {
System.out.println("Değer bulunamadı: " + e);
}
}
}
💡 Bu metot, Optional.get() yerine daha temiz ve anlamlı bir çözüm sunar.
👉 Optional kullanan projelerde daha güvenli ve okunabilir bir yaklaşım sağlar.
Sonuç 🎯
Java 10, yazılımcılar için özellikle şu üç noktada önemliydi:
- ✅
varile daha kısa ve okunabilir kod - ✅
copyOf()vetoUnmodifiableX()ile güvenli koleksiyonlar - ✅
Optional.orElseThrow()ile daha temiz Optional API
Bunun dışında G1 Garbage Collector iyileştirmeleri, Class-Data Sharing gibi JVM seviyesinde geliştirmeler de mevcut; fakat bunlar daha çok performans tarafında etkili.
👉 Bir sonraki yazımızda, Java 11 ile birlikte gelen LTS sürümünün yeniliklerini inceleyeceğiz.
➡️ Java 11 – Yeni String Metodları, HTTP Client ve LTS
📝 Kaynaklar:


