Java 22

Paylaş

Java 22 ile gelen yenilikler Statements before super, Foreign Function & Memory API, Class-File API, Launch Multi-File Source-Code Programs ve diğer özellikler ile ilgili bilgiler ve kullanımı yer alıyor.

Region Pinning for G1 – JEP 423

Özellik JNI kullanımında çöp toplayıcının devre dışı bırakılmasına ihtiyaç duymadan çalıştırarak geçikmeleri önlemeyi ve Java uygulamalarında performans artışını sağlar.

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

Özellik kurucularda super anahtar kelimeleri öncesinde Java komutları eklemeyi sağlar.

public class PositiveBigInteger extends BigInteger {

    public PositiveBigInteger(long value) {
        super(value);               // Potentially unnecessary work
        if (value <= 0)
            throw new IllegalArgumentException("non-positive value");
    }

}

Yerine artık aşağıdaki kod geçerli olacaktır.

public class PositiveBigInteger extends BigInteger {

    public PositiveBigInteger(long value) {
        if (value <= 0)
            throw new IllegalArgumentException("non-positive value");
        super(value);
    }

}

Foreign Function & Memory API – JEP 454

Java 14 ile birlikte Java 15, Java 16, Java 17, Java 18, Java 19, Java 20, Java 21 ile geliştirilmesi devam edilen Java tarafından yönetilmeyen bellek alanlarına erişimi sağlayan Foreign Function & Memory API (FFM API) Java 22 ile birlikte standart hale gelmiştir.

Aşağıdaki örnekte C kütüphanesindeki strlen fonksiyonunun kullanımı yer almaktadır.

Linker linker = Linker.nativeLinker();
MethodHandle strlen = linker.downcallHandle(
        linker.defaultLookup().find("strlen").get(),
        FunctionDescriptor.of(JAVA_LONG, ADDRESS)
);

try (Arena arena = Arena.ofConfined()) {
    MemorySegment str = arena.allocateFrom("Yusuf Sezer");
    long len = (long) strlen.invoke(str);
    System.out.println(len);
}

Unnamed Variables & Patterns – JEP 456

Java 20 ile birlikte gelen Unnamed Variables & Patterns özelliği Java 22 ile birlikte standart hale gelmiştir.

Class-File API (Preview) – JEP 457

Java sınıflarını oluşturma, ayrıştırma (parsing) ve dönüştürme işlemi için java.lang.classfile paketinde tanımlı arayüz, sınıf ve metotlarla standart API sağlar.

ClassFile cf = ClassFile.of();
ClassModel classModel = cf.parse(bytes);
byte[] newBytes = cf.build(classModel.thisClass().asSymbol(),
        classBuilder -> {
            for (ClassElement ce : classModel) {
                if (!(ce instanceof MethodModel mm
                        && mm.methodName().stringValue().startsWith("debug"))) {
                    classBuilder.with(ce);
                }
            }
        });

ASM, BCEL ve Javassist gibi ek paketler tarafından sağlanan işlemleri standart hale getirmektedir.

NOT: Özelliğin geliştirilmesi devam etmektedir.

Launch Multi-File Source-Code Programs – JEP 458

Java 11 ile birlikte gelen tek dosya çalıştırma özelliğin genişleterek birden fazla dosyanın çalıştırılabilmesini sağlar.

class App {
    public static void main(String[] args) { Helper.run(); }
}

class Helper {
    static void run() { System.out.println("Merhaba Java"); }
}

Ayrı dosyadaki kodlar java aracı ile doğrudan çalışacaktır.

java Prog.java

String Templates (Second Preview) – JEP 459

Java 21 ile birlikte gelen özellik geliştirilmeye devam etmektedir.

Vector API (Seventh Incubator) – JEP 460

Java 16 ile birlikte gelen Java 17, Java 18, Java 19, Java 20, Java 21 ile devam Vector API geliştirilmeye devam etmektedir.

Özellik içsel olarak Java uygulamalarını daha performanslı çalıştırmak için yapılan güncelleme olduğundan sınıf, paket tarafında herhangi bir değişiklik yapılmamaktadır.

Stream Gatherers (Preview) – JEP 461

Java 8 ile birlikte gelen Stream API özelliğine java.util.stream.Gatherer arayüzü ile birlikte ara işlem yapma özelliği gelmiştir.

NOT: Özellik geliştirme aşamasındadır.

Structured Concurrency (Second Preview) – JEP 462

Java 19 ile birlikte gelen Java 20, Java 21 ile geliştirilmeye devam Structured Concurrency özelliği geliştirilmeye devam etmektedir.

Implicitly Declared Classes and Instance Main Methods (Second Preview) – JEP 463

Java 21 ile birlikte gelen Unnamed Classes and Instance Main Methods (Preview) özelliği yeniden adlandırılarak geliştirmeye devam etmektedir.

Scoped Values (Second Preview) – JEP 464

Java 20 ile birlikte gelen Scoped Values özelliği Java 21 sonrasında geliştirilmeye devam etmektedir.

Diğer

Java 22 ile gelen yenilikler arasında uzun süredir önizleme ve test aşamasında olan Foreign Function & Memory API özelliğinin standart olması Class-File API ve Statements before super öne çıkmaktadır.

Java Derslerine buradan ulaşabilirsiniz.

Hayırlı günler dilerim.


Bunlarda ilgini çekebilir


LinkedIn grubuna buradan katılın.