Java 9
Interfaces
"Interface"ler private metotlara sahip oldu.
public interface CategoryDAO{
private static void categoryPrivate(){
System.out.println("Private metot!");
}
}
Diamond Operatörü
//Listeye ekleme yaparken compile time da değil run time da hata verecektir
List<String> categories = new LinkedList();
categories.add("Yoğurt");
categories.add(Boolean.TRUE); // Compile time da hata vermez
categories.forEach(System.out::println);
// java.lang.Boolean cannot be cast to java.lang.String
//Hatası verecektir
//Diamond operatörü ile bunun önüne geçebiliriz.
List<String> categories = new LinkedList<String>();
categories.add("Yoğurt");
categories.add(Boolean.TRUE); // Compile time da hata verecek
Collections
Collections modülüne kullanışlı yeni metotlar eklendi
List<String> categoryList = List.of("Yoğurt", "Ayran", "Tatlı");
Set<String> categorySet = Set.of("Ayran", "Ayran", "Yoğurt");
Map<String, int> categoryMap = Map.of("Ayran", 1, "Yoğurt", 2);
Streams
Streams modülüne yeni metotlar eklendi
Stream<String> stream = Stream.iterate("", s -> s + "s")
.takeWhile(s -> s.length() < 10);
Optionals
Objelere null atamak yerine tip seviyesinde bir çözüm sunan Optionals modülünde metot referensları için güncelleme yapıldı.
category.ifPresentOrElse(this::getProducts, this::printNotFound);
JShell
Terminal üzeinden basit komutları yazıp hemen sonucunun alınabileceği bir java shell aracı geldi.
$ jshell
| Welcome to JShell -- Version 9
| For an introduction type: /help intro
jshell> int demo = 9
demo ==> 9
HTTPClient
Java 9 dan önce HTTP desteği konusunda third party kütüphanelere bağımlılık vardı. Java 9 ile beraber varsayılan destek de sağlandı.
Jigsaw
Jigsaw Modül Sistemi ile beraber birden fazla JVM versiyonuna jar dosyalarının release edilmesi sağlandı.