Java Ekosistemi Eylül-Ekim ayı notları

Nesrin Asan
3 min readOct 25, 2023

Seçtiğim fotoğraf Java’nın isim uzayının Jakarta olarak değiştirilmesine ithafendir. Java ismi Endonzeya’da bir ada’dır. Java’nın Jakarta olarak güncellenmesindeki isim seçimi konusunu araştırmamıştım hiç. Bugün öğrendiğim bilgiyle yazıma başlamak istiyorum. Jakarta, Endonezya’nın başkenti ve en büyük şehridir. neden Jakarta ismi seçildi sorusunun Google Bard’ın cevabı: Java EE’nin kurucuları, Java EE’nin Jakarta’nın küresel bir teknoloji lideri olarak rolünü yansıtan bir isim taşımasını istediler. Jakarta, Endonezya’nın en büyük şehri ve en önemli ekonomik, kültürel ve politik merkezidir. Jakarta, aynı zamanda bir teknoloji merkezidir ve birçok uluslararası teknoloji şirketinin merkezidir.

Evet başlayabiliriz :)

Eylül 19'da büyük bir event ile birlikte Java 21 release oldu. Tam 8 saat süren bir launch event gerçekleştirildi. Bu event içerisinde java core takımında olan developer, yönetici title’ına sahip kişilerle söyleşi yapıldı, Java 21 ile gelen özelliklerin örneklemesinin yapıldığı session’lar düzenlendi, Project Loom, Helidon, Weblogic gibi büyük projelerin architectleri ile röportaj tadında sessionlar düzenlendi. Burada birçok kişi canlı yayında sorularını iletti ve cevaplarını projeleri yazanların ağzından almış oldu. Bence inanılmaz güzel bir event oldu. Düşünsenize virtual thread’ler geliyor diye aylarca konuşuyoruz, takip ediyoruz süreci ama karşınızda bu projenin takım lideri var ve onun ağzından süreçle ilgili bilgi alabiliyorsun. Gerçi Java geliştiricileri yayınladıkları JEP’lerle üzerinde çalıştıkları feature’larla ilgili birçok bilgiyi bizlerle paylaşıyor(bir feature’u geliştirmedeki ya da deprecate etmedeki motivasyonlarına kadar) ama yine de böyle bir event olması biz geliştirciler için de çok değerli bence.

Eylül ayının en önemli özelliği buydu. Java 21 launch eventinin tamamını izlemek isteyenler bu link’ten ulaşabilir.

Spring tarafı da tabiki bu gelişmeleri yakından takip ediyor. Spring ekibinden Josh Long’un şu makalesinde Java 21 ile ilgili özetini paylaşmak istiyorum. “There’s never been a better time to be a JVM developer.”

Aynı zamanda yine Jakarta projelerinin lideri ve Payara’nın kurucusu olan Steve Millidge’in ise java 21 release’i sonrası çıkacak olan Jakarta EE 11 için söylediği şu cümleyi iletmek istiyorum. “Jakarta EE 11 The First Big Leap for Jakarta” bu cümlenin altında jakarta EE 9, Jakarta EE 10 ile aslında sistemin oturtulmaya çalışılması bir nevi refactoring işlemleri yapıldığını ve Jakarta EE 11 ile birlikte artık daha büyük yeniliklerin, güncellemelerin geleceğinden bahsediyor. Bunu sağlayacak en büyük yapılardan biri de Java 21 release’i olacak. Makalenin tamamını okumak isteyenler için link’ini bırakıyorum.

Java 21'in en çok konuşulan yeniliği hiç şüphesiz Project Loom kapsamında geliştirilen virtual thread’ler oldu. Ve launch event’ta da en çok soru sorulan konuların başında geliyordu. Hatta panel’de konuşan java geliştiriclerine de Java 21 ile ilgili en sevdiğiniz özellik nedir dediklerinde virtual thread’lerin gelmesi olduğunu belirtiyorlar. Bunun sebepleri arasında da virtual thread’lerin çok rahat debug edilebilmesi, kodunun çok daha anlaşılır ve traditional thread’lere göre karmaşıklığının olmaması ve bunların yanında çok iyi scale edilebilmesi gösteriliyordu.

İlgimi çeken diğer bir nokta Jakarta persistence 3.2 preivew yayınlandı. Bu preview içerisinde java’da bir class tipi olan record’ların entity’lerde kullanma yolu açılıyor. Recordlar immutable yapıda canonical bir constucture’a sahiptirler ve proxy nesneler değiller bu nedenle bir entity class olarak kullanılamıyor. Ancak bu yeni sürümlerle birlikte recodları entity classlar üzerinde embeddable olarak kullanabileceğiz. Yani aslında yine tam bir entity olarak değil ama entity’leri ve recordları birlikte kullanabileceğimiz bir yapı sunuyor olacak bize. Aynı durum hibernate 6.2.0 release’in de de geçerli olacak.

Spring Boot 3.2.0 snapshot sürümüyle gelen bir özelikten bahsedeğim. SpringBoot son sürümlerinde bizim çokça kullandığımız rest template, jdbc template gibi yapıları bir standarda oturuyor. Ve ben bunu çok beğendim. Geçen aylarda altyapısı yine rest template’ten beslenecek şekilde rest call’ları yapmamız için RestClient adında bir API geliştirdi. Aslında Spring cloud kullananlar bu yapıya aşinadır. Çünkü haberleşme için kullanılan WebClient fluent API denilen yapıyı kullanıyor. Böylece bir bir instance oluşturmadan direkt WebClient üzerinden functional programing mantığında rest call yapabiliyoruz. Aynı durum artık Spring cloud kullanılmayan projeler için de geçerli olacak. Rest call’larımız için RestClient database bağlantımızı kurduğumuz jdbc template için artık JDBC Client’ı kullanabileceğiz. JDBC template kullananlar bilirler her zaman bir customRowMapper classı oluştururuz ve tek tek tablo kolonlarını bu class içerisinde nesne üzerindeki alanlara matchleriz. JDBC RestClient ile bu da yok artık. Verdiğimiz class üzerinde bu matchleme işlemi otomatik yapılıyor olacak. Bir nevi json dosyasını nesnelere matchleyen object-mapper kütüphanesi gibi düşünebilirsiniz. Bu standart gerçekten güzel oldu. Zira ben hala ezberden resttemplate yazamıyorum ve jdbc templatteki row mapper classında manuel matchleme yapmayı pek sevmiyorum:)

Bu iki ay için okuduğum, takip ettiğim gelişmeler bunlar.

Bug’sız günler dilerim :)

--

--