Java SE 14 buraxılışı

Altı aylıq inkişafdan sonra Oracle azad edilib bir platforma JavaSE 14 (Java Platforması, Standard Edition 14), açıq mənbəli OpenJDK layihəsi istinad tətbiqi kimi istifadə olunur. Java SE 14 Java platformasının əvvəlki buraxılışları ilə geriyə uyğunluğu qoruyur; əvvəllər yazılmış bütün Java layihələri yeni versiyada işə salındıqda heç bir dəyişiklik olmadan işləyəcək. Quraşdırmağa hazır Java SE 14 quruculuqları (JDK, JRE və Server JRE) hazırladılar Linux (x86_64), Windows və macOS üçün. OpenJDK layihəsi tərəfindən hazırlanmış istinad tətbiqi Java 14 kommersiya məhsulları ilə dinamik əlaqə yaratmağa imkan verən GNU ClassPath istisnaları ilə GPLv2 lisenziyası altında tam açıq mənbədir.

Java SE 14 ümumi dəstək buraxılışı kimi təsnif edilir və növbəti buraxılışa qədər yeniləmələri almağa davam edəcək. Long Term Support (LTS) filialı 11-cı ilə qədər yeniləmələri almağa davam edəcək Java SE 2026 olmalıdır. Java 8-in əvvəlki LTS filialı 2020-ci ilin dekabr ayına qədər dəstəklənəcək. Növbəti LTS buraxılışı 2021-ci ilin sentyabrına planlaşdırılır. Nəzərinizə çatdıraq ki, Java 10-un buraxılışından başlayaraq, layihə yeni buraxılışların formalaşması üçün daha qısa dövrü nəzərdə tutan yeni inkişaf prosesinə keçdi. Hazır 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ıb.

Haqqında yeniliklər Java 14 olar işarə:

  • Eksperimental dəstək əlavə edildi model uyğunluğu yoxlanılan dəyərə daxil olmaq üçün dərhal yerli dəyişəni təyin etməyə imkan verən “instanceof” operatorunda. Məsələn, “String s = (String) obj” ifadəsini açıq şəkildə təyin etmədən dərhal “if (obj instanceof String s && s.length() > 5) {.. s.contains(..) ..}” yaza bilərsiniz.

    Bu idi:

    əgər (Qrupun obyekt nümunəsi) {
    Qrup qrupu = (Qrup)obj;
    var entries = group.getEntries();
    }

    İndi "Qrup qrupu = (Qrup) obj" tərifi olmadan edə bilərsiniz:

    if (Qrup qrupunun obyekti) {
    var entries = group.getEntries();
    }

  • Yeni açar sözü üçün eksperimental dəstək əlavə edildi "rekord", məlumatların yalnız davranışı pozan sahələrdə saxlandığı hallarda, equals(), hashCode() və toString() kimi müxtəlif aşağı səviyyəli metodların açıq şəkildə müəyyənləşdirilməsi ehtiyacını aradan qaldıran sinifləri müəyyən etmək üçün kompakt forma təqdim edir. dəyişməz. Sinif equals(), hashCode() və toString() metodlarının standart tətbiqlərindən istifadə etdikdə, o, onların açıq tərifi olmadan edə bilər:

    ictimai qeyd BankTransaction(YerliTarix tarixi,
    ikiqat məbləğ
    Sətir təsviri) {}

    Bu bəyannamə konstruktor və alıcı metodlarına əlavə olaraq equals(), hashCode() və toString() metodlarının tətbiqlərini avtomatik əlavə edəcək.

  • Standartlaşdırılmış və “keçid” ifadələrinin yeni formasına dəstək defolt olaraq aktivdir, bu, “break” operatorunun göstərilməsini tələb etmir, təkrarlanan etiketləri birləşdirməyə imkan verir və yalnız operator şəklində deyil, həm də istifadə edilə bilər. ifadə.

    var log = keçid (hadisə) {
    case PLAY -> “İstifadəçi oynamaq düyməsini işə saldı”;
    case STOP, PAUSE -> "İstifadəçiyə fasilə lazımdır";
    default -> {
    String message = event.toString();
    İndi LocalDateTime = LocalDateTime.now();
    "Naməlum hadisə" + mesaj + verir
    » daxil oldu » + indi;
    }
    };

  • Genişləndirilmiş eksperimental dəstək mətn blokları - simvoldan qaçışdan istifadə etmədən və blokda orijinal mətn formatını qorumadan çoxsətirli mətn məlumatlarını mənbə koduna daxil etməyə imkan verən sətirli hərflərin yeni forması. Blok üç qoşa dırnaqla çərçivəyə alınmışdır. Java 14-də mətn blokları indi tək boşluq müəyyən etmək üçün "\s" və növbəti sətirlə birləşmək üçün "\" qaçış ardıcıllığını dəstəkləyir (çox uzun sətir çap etmək lazım olduqda yeni sətirlərə məhəl qoymur). Məsələn, kod yerinə

    Sətir html = " » +
    "\n\t" + " » +
    "\n\t\t" + " \"Java 1 buradadır!\" » +
    "\n\t" + " » +
    "\n" + " ";

    müəyyən edə bilərsiniz:

    Sətir html = """


    »Java 1\
    burada!

    """;

  • İstisnalar baş verdikdə diaqnostikanın məlumat məzmunu genişləndirilib NullPointerException. Əvvəllər səhv mesajı yalnız sətir nömrəsinə istinad edirdisə, indi istisnaya hansı metodun səbəb olduğunu ətraflı izah edir. Qabaqcıl diaqnostika hazırda yalnız “-XX:+ShowCodeDetailsInExceptionMessages” bayrağı ilə işə salındıqda aktiv edilir. Məsələn, bu bayrağı göstərərkən sətirdəki istisna

    var name = user.getLocation().getCity().getName();

    mesajla nəticələnəcək

    "Main" mövzuda istisna java.lang.NullPointerException: "Location.getCity()" işə salına bilməz
    çünki "User.getLocation()" qaytarma dəyəri sıfırdır
    NullPointerExample.main ünvanında(NullPointerExample.java:5):5)

    bu aydın olur ki, Location.getCity() metodu çağırılmamışdır və User.getLocation() null dəyərini qaytarmışdır.

  • Həyata keçirilən Sizə müstəqil Java proqramları üçün paketlər yaratmağa imkan verən jpackage yardım proqramının ön baxışı. Utilit JavaFX-dən javapackager-ə əsaslanır və müxtəlif platformalar üçün (Windows üçün msi və exe, macOS üçün pkg və dmg, Linux üçün deb və rpm) orijinal formatlarda paketlər yaratmağa imkan verir. Paketlərə bütün tələb olunan asılılıqlar daxildir.
  • G1 zibil kollektoruna əlavə etdi arxitekturadan istifadə edərək böyük sistemlərdə işin xüsusiyyətlərini nəzərə alan yeni yaddaş ayırma mexanizmi IN. Yeni yaddaş ayırıcısı “+XX:+UseNUMA” bayrağı ilə işə salınıb və NUMA sistemlərində performansı əhəmiyyətli dərəcədə yaxşılaşdıra bilər.
  • Əlavə edilib JFR (JDK Flight Recorder) hadisələrinin anında monitorinqi üçün API, məsələn, davamlı monitorinqin təşkili üçün.
  • Əlavə edilib Qeyri-uçucu yaddaşa (NVM) istinad edən xəritələnmiş bayt buferləri (MappedByteBuffer) yaratmaq üçün yeni rejimlər (READ_ONLY_SYNC, WRITE_ONLY_SYNC) təklif edən jdk.nio.mapmode modulu.
  • Həyata keçirilən Java proqramlarına yeni MemorySegment, MemoryAddress və MemoryLayout abstraksiyalarını manipulyasiya etməklə Java yığınından kənar yaddaş bölgələrinə təhlükəsiz və səmərəli daxil olmağa imkan verən Xarici Yaddaş Girişi API-nin önizləməsi.
  • elan etdi gələcəkdə bu portları silmək niyyəti ilə Solaris OS və SPARC prosessorları (Solaris/SPARC, Solaris/x64 və Linux/SPARC) üçün köhnəlmiş portlar. Bu limanların köhnəlməsi cəmiyyətə Solaris və SPARC-ə xas funksiyaları saxlamaqla vaxt itirmədən yeni OpenJDK funksiyalarının inkişafını sürətləndirməyə imkan verəcək.
  • Silindi iki il əvvəl köhnəlmiş və baxımsız qalan CMS (Concurrent Mark Sweep) zibil toplayıcısı (CMS çoxdan G1 zibil kollektoru ilə əvəz edilmişdir). Bundan başqa, elan etdi ParallelScavenge və SerialOld zibil toplama alqoritmlərinin kombinasiyasından istifadəni dayandırdı (“-XX:+UseParallelGC -XX:-UseParallelOldGC” seçimləri ilə işləyin).
  • ZGC (Z Garbage Collector) zibil toplayıcısı üçün eksperimental dəstək macOS və Windows platformalarında (əvvəllər yalnız Linux-da dəstəklənirdi) təmin edilmişdir. ZGC passiv rejimdə işləyir, zibilin yığılması ilə əlaqədar gecikməni mümkün qədər minimuma endirir (ZGC-dən istifadə zamanı dayanma müddəti 10 ms-dən çox deyil) və ölçüləri bir neçə yüz meqabaytdan çoxlu terabaytlara qədər dəyişən həm kiçik, həm də nəhəng yığınlarla işləyə bilir.
  • Silindi Pack200 alqoritmindən istifadə edərək JAR fayllarını sıxmaq üçün alətlər dəsti və API.

Mənbə: opennet.ru

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