Java SE 20 buraxılışı

Altı aylıq inkişafdan sonra Oracle, OpenJDK açıq mənbə layihəsindən istinad tətbiqi kimi istifadə edən Java SE 20 (Java Platform, Standard Edition 20) platformasını buraxdı. Bəzi köhnəlmiş xüsusiyyətlərin silinməsi istisna olmaqla, Java SE 20 Java platformasının əvvəlki buraxılışları ilə geriyə uyğunluğu qoruyur - əvvəllər yazılmış Java layihələrinin əksəriyyəti yeni versiya altında işləyərkən heç bir dəyişiklik olmadan işləyəcək. Java SE 20 (JDK, JRE və Server JRE) quraşdırmaya hazır quruluşları Linux (x86_64, AArch64), Windows (x86_64) və macOS (x86_64, AArch64) üçün hazırlanmışdır. OpenJDK layihəsi tərəfindən hazırlanmış Java 20 istinad tətbiqi kommersiya məhsulları ilə dinamik əlaqəyə imkan vermək üçün GNU ClassPath istisnaları ilə GPLv2 lisenziyası altında tam açıqdır.

Java SE 20 müntəzəm dəstək buraxılışı kimi təsnif edilir və yeniləmələr növbəti buraxılışdan əvvəl buraxılacaq. Uzunmüddətli dəstək (LTS) filialı 17-cu ilə qədər yeniləmələri alacaq Java SE 2029 olmalıdır. Xatırladaq ki, Java 10-un buraxılışından başlayaraq, layihə yeni relizlərin formalaşması üçün daha qısa dövrü nəzərdə tutan yeni inkişaf prosesinə keçdi. Artıq tamamlanmış dəyişiklikləri özündə cəmləşdirən və yeni buraxılışları sabitləşdirmək üçün hər altı aydan bir budaqlanan filiallardan ibarət daimi yenilənən bir master filialda yeni funksionallıq hazırlanır.

Java 20-da yeni xüsusiyyətlərə aşağıdakılar daxildir:

  • Dəyişməz məlumatların mövzular arasında paylaşılmasına və uşaq mövzular arasında səmərəli şəkildə mübadilə edilməsinə imkan verən Scoped Values ​​üçün ilkin dəstək var (dəyərlər miras alınır). Scoped Dəyərlər yerli iplik dəyişənləri mexanizmini əvəz etmək üçün hazırlanır və çox sayda virtual başlıqdan (minlərlə və ya milyonlarla iplik) istifadə edərkən daha səmərəlidir. Scoped Values ​​və thread-lokal dəyişənlər arasındakı əsas fərq ondan ibarətdir ki, birincilər bir dəfə yazılır, gələcəkdə dəyişdirilə bilməz və yalnız ipin icrası müddətində əlçatan qalır. class Server { son statik ScopedValue CURRENT_USER = yeni ScopedValue(); void server(Sorğu sorğusu, Cavab cavabı) { var səviyyə = (sorğu. isAuthorized()? ADMIN : GUEST); var user = yeni İstifadəçi (səviyyə); ScopedValue.where(CURRENT_USER, user).run(() -> Application.handle(sorğu, cavab)); } } class DatabaseManager { DBConnection open() { var user = Server.CURRENT_USER.get(); əgər (!user.canOpen()) yeni InvalidUserException(); yeni DBConnection (...) qaytarın; } }
  • Rekord siniflərinin dəyərlərini təhlil etmək üçün Java 16-da təqdim edilən nümunə uyğunluğu xüsusiyyətini genişləndirən qeyd nümunələrinin ikinci bir baxışı əlavə edildi. Məsələn: qeyd Nöqtə(int x, int y) {} statik void printSum(Obyekt obyekti) { if (obj instanceof Point p) { int x = px(); int y = py(); System.out.println(x+y); } }
  • "Keçid" ifadələrində nümunə uyğunluğunun dördüncü ilkin tətbiqi əlavə edildi, bu "case" etiketlərinə dəqiq dəyərlərdən deyil, eyni anda bir sıra dəyərləri əhatə edən çevik nümunələrdən istifadə etməyə imkan verir, bunun üçün əvvəllər çətin istifadə etmək lazım idi. “if...else” ifadələrinin zəncirləri. statik String formatterPatternSwitch(Obyekt obyekti) { qaytarma keçidi (obj) { hal Tam ədəd i -> String.format("int %d", i); case Long l -> String.format("uzun %d", l); case Double d -> String.format("double %f", d); case String s -> String.format("String %s", s); default -> o.toString(); }; }
  • Xarici kitabxanalardan funksiyaları çağırmaq və JVM-dən kənar yaddaşa daxil olmaq vasitəsilə Java proqramlarının xarici kod və verilənlərlə qarşılıqlı əlaqəsini təşkil etməyə imkan verən FFM (Xarici Funksiya və Yaddaş) API-nin ikinci ilkin tətbiqi əlavə edilmişdir.
  • Virtual başlıqların ikinci önizləməsi əlavə edildi ki, onlar yazmağı və yüksək performanslı çox yivli tətbiqləri saxlamağı xeyli asanlaşdıran yüngül iplərdir.
  • Strukturlaşdırılmış paralellik üçün ikinci eksperimental API əlavə edildi ki, bu da müxtəlif mövzularda işləyən çoxsaylı tapşırıqları bir blok kimi nəzərdən keçirməklə çox yivli proqramların inkişafını asanlaşdırır.
  • X86_64 və AArch64 prosessorlarında vektor təlimatlarından istifadə etməklə yerinə yetirilən və əməliyyatların eyni vaxtda birdən çox dəyərə (SIMD) tətbiq edilməsinə imkan verən vektor hesablamaları üçün funksiyaları təmin edən Vektor API-nin beşinci baxışı əlavə edildi. Skayar əməliyyatların avtomatik vektorlaşdırılması üçün HotSpot JIT kompilyatorunda təqdim edilən imkanlardan fərqli olaraq, yeni API paralel verilənlərin emalı üçün vektorlaşdırmanı açıq şəkildə idarə etməyə imkan verir.

Mənbə: opennet.ru

Добавить комментарий