Java 10 Yayınlandı!

Arif Acar
2 min readMar 20, 2018

--

Daha Java 8'e adapte olmaya çalışırken Java 9 ve şimdi de Java 10 yayınlandı!

Java 8 ile gelen bir çok yenilik (Lambda expressions, Functional interfaces, Method references, Stream API…) geliştiriciler tarafından tam uygulanmaya ve benimsenmeye başlamışken bu Java 10 da nerden çıktı?

Java 9 ile de 4 temel yeni özelliğinden bahsedelim. JShell(Java Shell) ile REPL(Read-Eval-Print-Loop) aracı geliştirildi. Scala ve JavaScript gibi dillerde sıklıkla kullanılan kodu önce oku (read), sonra çalıştır (eval), sonucu ekrana yazdır (print) ve bir sonraki adımda koddan döngüye devam et (loop) prensibine dayanıyor. Java 9 Module System ile artık siz kullanmak istediğiniz jar dosyasının sadece kullanıma açtığınız birimlerini kullanabiliyorsunuz. Artık Java projesi geliştirirken jar paketinin tamamını eklemek zorunda değilsiniz ve böylece projedeki dosya sayısını da azaltmış oluyoruz. Modular Run-Time Images; JRE ile çalışmasını istediğiniz kodun bir imajı alınıyor ve siz derlediğiniz kodu çalıştırmak istediğinizde oluşturulan image koşuluyor. Process API ile işletim sistemi içerisinde bazı proseslerin yönetimi için JVM kullanarak prosesleri çalıştırabilir, duraklatabilir veya kapatabilirsiniz.

Java 10 ile gelen yenilikleri biraz daha detaylı ele alalım.

Sanırım temel özelliklerinden bahsederken en çarpıcı değişiklik Local-variable type inference dediğimiz olay. Artık değişkenleri aşağıdaki gibi tanımlayabileceğiz.

var list = new ArrayList<String>();
var stream = list.stream();

Bu değişiklik C geçmişi olan veya Scala geliştiren geliştiriciler için yabancı bir şey değil. Ancak benim hoşuma gitmeyen bir yenilik. Çünkü geliştirme esnasında tipin ne olduğu belli olmaması kodu anlamayı ve okumasını zorlaştırdığını düşünenlerdenim. Hatta değişken tipleri yüzüden hataların kod aralarında saklanabileceğini düşünüyorum. Tiplerin AnyVal olması da derleme esnasında muhtemel hataları göz ardı etmiş olacak.

ArrayList<Map.Entry<Integer, Set<YourBusinessObject>>> obj = FactoryMethod();

gibi uzun bir satır yerine;

obj = FactoryMethod();

yazıp geçebileceğiz.

Java 10 ile Garbage collector’e eklenen yeni özelliklerle temizleme işleri daha da güçleniyor.

Application Class-Data Sharing ve Experimental Java-Based JIT Compiler özelliklerinden ve Java 10'la alakalı diğer yenilikleri indirip test ettikten sonra daha detaylı olarak bu sayfaya ekleyeceğim.

Bir hatırlatma; her bir yeni sürüm her 6 ayda bir yayınlanıyor ancak LTS (Long Term Support) sürümleri 3 yılda bir yapılmaktadır. Bir sonraki LTS sürümü Java 11 ile gelecek ve önümüzdeki Eylül ayında yayınlanması planlanmaktadır. Naçizane önerim projelerinizi Java 9 ve Java 10'a geçrimek için acele etmeyin. Eğer JavaFX kullanıyorsanız size kötü bir haberimizi var; Java 11 ile artık JFX Java JDK’dan kaldırılacak.

--

--