Java Ekosistemi Mart Ayı Notları(2024)

Nesrin Asan
3 min readApr 8, 2024

--

Spring’in 20. yılına özel bir kapakla ortama giriş yapmış bulunuyorum.

Ben de Spring’in AI’da LLM üzerine ufak bir çalışma yaptım. linkini bırakıyroum

Java 22 release olduuuu. https://start.spring.io/ üzerinden de erişilebilir durumda. Eskiden bu sürüm geçişleri çok daha yavaş olduğu için eski sürümlerde kalmak çok sorun olmuyordu belki ama şuan çok ürkütücü değil mii. yatıyorsun kalkıyorsun java versionu artmış. Lütfen yöneticilerinizden ısrarla version yükseltmek için yetki metki bişeyler isteyin :)

https://start.spring.io/

Java 22'nin dikkat çeken birkaç özelliği üzerine en son konuşabiliriz. Öncesinde spring dünyasından haberler :

Spring 20. yılını kutladı. Evet 20 yıldır hayatımızda ve biz ondan razıyız :) 20.yıla özel Spring’in yazarı Rod Johnson ile yapılan söyleşinin linkini ilgilisi için şöyle bırakıyorum.

Happy birthday Spring

Spring Boot 3.3.0-M3 sürümü yayınlandı. Release notlarında gördüklerim: flyway sürümü 10.10'a upgrade edilmiş.

Undertow için Virtual thread desteği geri alınmış.

Yine bir JVM feature olan CDS(Class Data Sharing is a JVM feature that can help reduce the startup time and memory footprint of Java applications). desteği gelmiş. Hayırlı uğurlu olsun :D

YAPAY ZEKA

Yapay Zeka tarafı hız kesmeden devam ediyor: GPT-5 geliyor. Sam Altman GPT-4 için berbat demiş. artık GPT-5 nasıl olur merak ediyorum ben de. NVDIA zaten aldı başını yürüdü. GROOT adındaki projeyle birlikte robotların dil, görüntü, video algılamasına olanak sağlanacak. Jetgiller’in Rosie’si geliyor yakın zamanda. NVIDIA yeni yapay zeka çipini(Blackwell) tanıttı. Bunun anlamı şu ki yeni AI modelleri çok daha güçlü olacak.

Son olarakta Elon Musk’un yapay zeka robotu Grok’unu X’te beta sürüm olarak gördüm. OpenAI’a bir gönderme yapıyor ama tutar mı bilinmez. Henüz denemedim.

Son olarak Java 22 ile ilgili de örnekleirmi aşağıya bırakıyorum.

Asıl kaynağının bulunduğu JEP listesinin linkini ilgilisi için buraya bırakıyorum. https://jdk.java.net/22/release-notes

JEP 456 Unnamed Variables & Patterns :

Aslında birçok dilde de bulunan bir özellikten bahsediyoruz. “_” kullanabilme. Hemen bir örnek üzerinden bakacak olursak: JAva 22 öncesinde aşağıdaki gibi bir kod yazıyorduk.

static int count(Iterable<Order> orders) {
int total = 0;
for (Order order : orders) // order is unused
total++;
return total;
}

Java 22 ile beraber yukarıda kullanmadığımı order nesnesi için “_” tanımı yapabiliyoruz. Örnek:

static int count(Iterable<Order> orders) {
int total = 0;
for (Order _ : orders) // order is unused
total++;
return total;
}

JEP 447: Statements before super(…) (Preview)

Birbirini extend eden classlarda super() anahtar kelimesinin ne işe yaradığını biliriz. Görevlerinden biri; parent classın bir varsayılan constructor’ı kullanılmıyorsa subclassta oluşturduğum constructor parent class’ın constructor’unu öncelikli ve zorunlu olarak alır. daha sonra istediğimiz gibi doldurabilirz constructor içerisini.

public class A {
public A(){

}


}
public class B extends A{

public B(){
super();
sout("")

}
}

Java 22 ile birlikte bu durumda bir değişikliğe gidildi. As-is yapıda B classının değişkenlerinin başlatılması için önce A classınınkilerinin başlatılması gerekiyor. Ancak yeni düzenleme ile A classına daha hiç gitmeden bir kontrol koyabiliriz. Örnek:

public class PositiveBigInteger extends BigInteger {

public PositiveBigInteger(long value) {
super(verifyPositive(value));
}

private static long verifyPositive(long value) {
if (value <= 0)
throw new IllegalArgumentException("non-positive value");
return value;
}

}

veya:

public class Car { 
protected String model;
Car(String model) {
this.model = model;
}
}

public class BMW extends Car{
BMW(String model, String model) {
//verify code
sout("verify kod")
super(model);
}
}

Gibi gibi birçok yapıyı JEP’ler üzerinden inceleyebilirisiniz.

Mart ayı özetim bu şekilde. Tüm bu konular ve daha fazlasını JUG ISTANBUL podcast yayınlarımızda konuşuyoruz.

Bug’sız günler :)

--

--