JavaRush /Java Blogu /Random-AZ /Java 12 burada: nə yenilik var?

Java 12 burada: nə yenilik var?

Qrupda dərc edilmişdir
Beləliklə, Java 12-ci yerdə çıxdı. Baxmayaraq ki, bu LTS buraxılışı deyil (yəni, uzunmüddətli dəstək deyil, uzun müddət dəstəklənəcək bir buraxılış deyil. Versiya 11 səkkizli versiya ilə ilk LTS buraxılışı hesab olunur. il dəstək dövrü ), yeniliklərində maraqlı şeylər ortaya çıxdı. Onlardan ən vaciblərinə nəzər salaq. Xatırladaq ki, Java-da dəyişiklik təklifləri qısaldılmış şəkildə jeps kimi yazılır (JDK Enhancement Proposal-dan). Java 12 burada: nə yenilik var?  - 1

Ən maraqlısı Jep-in JDK 12

189: Shenandoah: Az Pauzalı Zibil Kollektoru (Eksperimental) Zibil Kollektoru Shenandoah, işləyən Java mövzuları ilə eyni vaxtda təmizləyərək iş vaxtını azaldan yeni alqoritmdən istifadə edir. Bu halda, Shenandoah-da pauza vaxtı yığının ölçüsündən asılı olmayaraq eyni olacaq. Nədənsə Oracle Sheandoah-ı "rəsmi" buraxılış quruluşlarına daxil etmədi, baxmayaraq ki, tərtibatçılar bu xüsusiyyəti yeni buraxılışda ən vaciblərdən biri hesab edirlər. Beləliklə, əgər siz təkmil Zibil Kollektorunu sınaqdan keçirməyi planlaşdırırsınızsa, Azul kimi üçüncü tərəf quruluşlarından istifadə etməlisiniz . 230: Microbenchmark Suite Microbenchmark bəzi kiçik elementlərin işini ölçən mikrobençmarkdır. Java-da onlar JMH çərçivəsi ilə yazılır və işlədilir. 12-ci versiyadan bəri JMH JDK-ya əlavə edildi və artıq orada yazılmış testlər var ki, bu da tərtibatçıların həyatını asanlaşdırır. 325: Keçid İfadələri (Ön baxış) keçid ifadəsi ilə ifadənin yazılmasının yeni forması. Xüsusiyyət səhifəsi ənənəvi keçiddən istifadə edərək nümunə kodu təqdim edir, burada fasilədən daimi istifadə onu lazımsız şəkildə ətraflı edir və tez-tez təsadüfi səhvlərə səbəb olur.
switch (day) {
    case MONDAY:
    case FRIDAY:
    case SUNDAY:
        System.out.println(6);
        break;
    case TUESDAY:
        System.out.println(7);
        break;
    case THURSDAY:
    case SATURDAY:
        System.out.println(8);
        break;
    case WEDNESDAY:
        System.out.println(9);
        break;
}
Yeniləmə müəllifləri bu etiket uyğun olduqda yalnız etiketin sağındakı kodun yerinə yetiriləcəyini aydın şəkildə göstərmək üçün “case L ->” keçid etiketinin yeni formasını təqdim etməyi təklif edirlər. Beləliklə, yuxarıda göstərilən kodu yeni sintaksisdən istifadə edərək əhəmiyyətli dərəcədə qısaltmaq olar:
switch (day) {
    case MONDAY, FRIDAY, SUNDAY -> System.out.println(6);
    case TUESDAY                -> System.out.println(7);
    case THURSDAY, SATURDAY     -> System.out.println(8);
    case WEDNESDAY              -> System.out.println(9);
}
334: JVM Constants API Sabit hovuzda yüklənə bilən sabitlər var. Bunlar, məsələn, String tipli və ya hər hansı primitiv tipli dəyərlər, eləcə də siniflər və metodlar kimi icra zamanı artefaktlarıdır. Sinif faylları ilə işləyərkən proqramçılar yüklənə bilən sabitləri manipulyasiya etmək üçün əlverişli vasitələrdən faydalanacaqlar. Bu jep-in müəllifləri bu problemi hər biri müəyyən bir sabit tipini təsvir edəcək simvolik bağlantıların yeni dəyərə əsaslanan növlərini təqdim etməklə həll etməyə başladılar. İnnovasiya kodu . 340: Bir AArch64 Port, İki Yox Bu mürəkkəb ad, Java 9-da Oracle-ın 64-bitlik ARM portları və Red Hat-dan aarch64-ün eyni vaxtda dəstdə göründüyü zaman yaranan problemin həllini gizlədir. Üstəlik, artıq JDK 11-in buraxılışı zamanı hətta Oracle özü də Oracle portlarının 64 bitlik versiyasını dəstəkləmirdi. Beləliklə, indi 64 bitlik Oracle portları silinərək 32 bitlik ARM32 və 64 bitlik daha məhsuldar aarch64-ü buraxdı. 341: Defolt CDS Arxivləri Çox gözəl yeniləmə, çünki o, həqiqətən proqramların işə salınmasını sürətləndirir. Heç kimə sirr deyil ki, Java proqramı işə salındıqda çoxlu sayda siniflər yüklənməyə başlayır və bu, kifayət qədər uzun bir prosesdir. CDS, Class Data Sharing mənasını verir və bu funksiya sizə eyni siniflərin standart siyahısından istifadə edərək, başlanğıcda işə salınan bütün bu sinifləri xüsusi sinif məlumat mübadiləsi arxivinə yığmağa imkan verir. Nəticədə, tətbiqin işə salınma sürəti əhəmiyyətli dərəcədə artır. 344: G1 G1 üçün ləğv edilə bilən Qarışıq Kolleksiyalar Paralel GC-ni əvəz edərək JDK 9-da əsas zibil yığıcıya çevrilən zibil yığıcıdır. Java 10-da G1 çoxlu mövzularda zibil toplamağı öyrəndi. Ancaq hər kəs onun işindən razı deyildi, əsas problemlərdən biri uzun fasilələr idi. İndi onlar ləğv edilə bilər. G1, proqramın davranışının təhlilinə əsaslanaraq, işin həcmini müəyyənləşdirir və sonra dayanmadan hər şeyi toplayana qədər "canlı" obyektləri Kolleksiya dəstinə toplayır. Tez-tez G1 iş həcminin hesablanmasını qaçırdı və çox uzun müddət işləyirdi. jep-344 tətbiq edildikdən sonra, G1 artımlı zibil yığımına keçə bilər və növbəti addımın başa çatdırılması məqbul olandan daha uzun sürərsə, bu addım dayandırıla bilər. 346: G1-dən istifadə olunmamış yaddaşı dərhal qaytarın Və yuxarıda qeyd olunan G1 assemblerinin düşərgəsində daha bir neçə yeniləmə. Bəzən elə olurdu ki, bir dəstə Java yığın yaddaşı var idi, amma heç kim ondan istifadə etmirdi, bu yaddaş. Java 12-də siz indi qeyri-aktiv yaddaşı əməliyyat sisteminə “qaytara” bilərsiniz. Əvvəllər G1-in yaddaşdan imtina etməsi çox nadir idi, lakin indi hər şey sadələşdirilmişdir. Yeni funksiya ilə, əgər sonuncu qurulmadan sonra interval bitibsə və paralel dövr yoxdursa, tətbiq qeyri-aktiv kimi müəyyən edilir. Başqa bir vəziyyət, bir müddətdir izlənilən getloadavg() funksiyasının müəyyən edilmiş məqbul həddən aşağı yük göstərməsi və ya olmasıdır. İki hadisədən biri baş verərsə, zibilin qismən yığılması başlayır. Java 12-də nə yoxdur: Raw String Literals Bir çox tərtibatçılar bu xüsusiyyətlə maraqlanırdılar, lakin bu buraxılışda heç vaxt görünməmişdir. Onun müəllifləri qərara gəldilər ki, onun hələ də işə ehtiyacı var. Beləliklə, Java-nın növbəti versiyalarından birində sətir literalları ilə rahat işləmə funksiyasının görünəcəyinə ümid etməyə cəsarət edirik. Xam sətir literallarına dəstək dildən asılı olmayaraq sətir məlumatı ilə işləməyə imkan verir. Bu, qoruyucu ehtiyacı aradan qaldırır. Xüsusilə tərs kəsiklərin geniş istifadə olunduğu müntəzəm ifadələrdə və tərs kəsiklərin məhdudlaşdırıcı kimi istifadə edildiyi Windows yolunda faydalıdır. Yəni belə konstruksiyalardan qaçmaq üçün: C:\\My\\Test\\Pack\\
Hər bir proqramçı öz işində tez-tez bu və ya digər çətinliklə qarşılaşır. Bəzən onlar tərtibatçının təcrübəsizliyi ilə, bəzən isə alətin özünün qeyri-kamilliyi ilə əlaqələndirilir. Java əla dildir, lakin mükəmməllikdən uzaqdır. Yəqin ki, siz artıq Java-da bir şeylə qarşılaşmısınız və “alətinizdə” (dilinizdə) nəyi dəyişmək istədiyinizi bilirsiniz? Şərhlərdə paylaşın!

nəticələr

Java 12-də heç bir inqilab olmadı. Ancaq bunu heç kim planlaşdırmayıb. Bununla belə, bir sıra yeniliklər tətbiqlərin işini optimallaşdırmağa və işi sürətləndirməyə yönəlib ki, bu da yaxşı xəbərdir. Yeri gəlmişkən, IDEA artıq JDK 12-ni dəstəkləyir, ona görə də onun imkanlarını sınaya bilərsiniz. Əlbəttə, bir neçə yeniləmə birbaşa yeni başlayanlara təsir edir, baxmayaraq ki, hətta JavaRush-u yeni öyrənməyə başlayanlar da yeni keçidlə oynaya bilərlər (-enable-preview bayrağını təyin etdikdən sonra).
Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION