Virtual Threads JEP 444
Platform thread'i bloklamadan yüksek eşzamanlılık. I/O ağırlıklı servislerde thread pool boyutlandırma derdi biter.
try (var ex = Executors.newVirtualThreadPerTaskExecutor()) {
ex.submit(() -> repo.findAll());
}
Java Ekibi · Teknik Notlar · Güncelleme 2026.10
Java 21 LTS'e geçiş tamamlandı. Bu sayfa ekibin ortak not defteri: yeni dil özellikleri, Spring Boot 3 geçiş kalemleri, sık kullanılan Maven/Gradle komutları ve JVM ayarları tek yerde.
Platform thread'i bloklamadan yüksek eşzamanlılık. I/O ağırlıklı servislerde thread pool boyutlandırma derdi biter.
try (var ex = Executors.newVirtualThreadPerTaskExecutor()) {
ex.submit(() -> repo.findAll());
}
Kayıtların bileşenlerine doğrudan desen eşleme ile ayrıştırma. instanceof + cast zincirleri kaybolur.
if (obj instanceof Point(int x, int y)) {
return x + y;
}
Hiyerarşiyi kapat, switch yoruculuğunu derleyiciye devret. Domain modellemede alt tip kaçağı olmaz.
sealed interface Shape
permits Circle, Square {}
Tip desenleri ve guard koşulları ile ifade tabanlı dallanma.
return switch (s) {
case Circle c when c.r() > 0 -> Math.PI * c.r() * c.r();
case Square q -> q.side() * q.side();
};
getFirst() / getLast() / reversed() artık ortak arayüzde.
var last = list.getLast();
var rev = list.reversed();
Kullanılmayan bileşenler için _. Derleyici uyarısı ve gereksiz değişken gürültüsü biter.
case Point(int x, _) -> x;
Tüm javax.persistence, javax.servlet, javax.validation import'ları jakarta.* olur. Toplu dönüşüm için IntelliJ migration refactor'ü kullan.
WebSecurityConfigurerAdapter kaldırıldı. SecurityFilterChain bean'i ve lambda DSL zorunlu.
Micrometer + Actuator varsayılan. Tracing için management.tracing.enabled=true yeterli.
GraalVM 21 ile spring-boot-maven-plugin üzerinden AOT derleme destekli. Reflection kayıtlarını kontrol et.
| İşlem | Maven | Gradle |
|---|---|---|
| Derle | mvn -q compile | ./gradlew compileJava |
| Testler | mvn test | ./gradlew test |
| Paketle (test atla) | mvn -DskipTests package | ./gradlew build -x test |
| Bağımlılık ağacı | mvn dependency:tree | ./gradlew dependencies |
| Etkin profil | mvn help:active-profiles | ./gradlew properties |
| Format | mvn spotless:apply | ./gradlew spotlessApply |
java -XX:MaxRAMPercentage=75 \
-XX:+UseG1GC \
-XX:+ExitOnOutOfMemoryError \
-XX:NativeMemoryTracking=summary \
-jar app.jar
-Xmx yerine MaxRAMPercentage kullan; limit değişince ayar bozulmaz.ExitOnOutOfMemoryError olmadan OOM sonrası süreç yarı ölü kalır, orchestrator restart etmez.-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/dumps.LazyInitializationExceptionEntity session dışında erişiliyor. Çözüm: sorguda join fetch veya @EntityGraph. open-in-view açmak çözüm değil, semptomu gizler.
NoSuchBeanDefinitionExceptionBileşen taranmıyor. @SpringBootApplication sınıfının paket hiyerarşisini kontrol et; alt pakette değilse @ComponentScan gerekir.
Port 8080 already in uselsof -i :8080 ile süreci bul, ya da server.port ile taşı. Container içinde eski instance kalmış olabilir.
OutOfMemoryError: MetaspaceGenellikle dinamik proxy / class generation. MaxMetaspaceSize ver ve sızıntıyı jcmd GC.class_stats ile izle.