Java SE 15 release

Sawise nem sasi pembangunan, Oracle dirilis platform Jawa SE 15 (Platform Java, Edisi Standar 15), proyek OpenJDK open-source digunakake minangka implementasi referensi. Java SE 15 njaga kompatibilitas mundur karo rilis platform Java sadurunge; kabeh proyek Java sing wis ditulis sadurunge bakal bisa digunakake tanpa owah-owahan nalika diluncurake ing versi anyar. Siap-instal Java SE 15 mbangun (JDK, JRE lan Server JRE) disiapake kanggo Linux (x86_64), Windows lan macOS. Implementasi referensi sing dikembangake dening proyek OpenJDK Jawa 15 mbukak sumber kanthi lengkap miturut lisensi GPLv2, kanthi pengecualian GNU ClassPath ngidini ngubungake dinamis karo produk komersial.

Java SE 15 diklasifikasikake minangka rilis dhukungan umum lan bakal terus nampa nganyari nganti rilis sabanjure. Cabang Dhukungan Jangka Panjang (LTS) kudu Java SE 11, sing bakal terus nampa nganyari nganti 2026. Cabang LTS Jawa 8 sadurunge bakal didhukung nganti Desember 2020. Rilis LTS sabanjure dijadwalake ing September 2021. Ayo kita ngelingake yen wiwit rilis Java 10, proyek kasebut ngalih menyang proses pangembangan anyar, tegese siklus sing luwih cendhek kanggo pambentukan rilis anyar. Fungsi anyar saiki dikembangake ing siji cabang master sing terus dianyari, sing kalebu owah-owahan sing wis siap lan cabang-cabang sing dicabang saben nem sasi kanggo nyetabilake rilis anyar.

Saka inovasi Jawa 15 bisa tandha:

  • Dibangun ing dhukungan kanggo algoritma nggawe tandha digital EdDSA (Edwards-Curve Digital Signature Algorithm). RFC 8032). Implementasi EdDSA ngajokaken ora gumantung ing platform hardware, dilindhungi saka serangan sisih-saluran (wektu pancet kabeh petungan wis menthekake) lan luwih cepet ing kinerja saka implementasine ECDSA ana ditulis ing basa C, karo tingkat pangayoman padha. Contone, EdDSA nggunakake kurva elips kanthi tombol 126-bit nuduhake kinerja sing padha karo ECDSA kanthi kurva elips secp256r1 lan tombol 128-bit.
  • Ditambahake dhukungan eksperimen kanggo kelas lan antarmuka sing disegel, sing ora bisa digunakake dening kelas lan antarmuka liyane kanggo entuk warisan, ngluwihi, utawa ngilangi implementasine. Kelas sing disegel uga nyedhiyakake cara sing luwih deklaratif kanggo mbatesi panggunaan superclass tinimbang modifier akses, adhedhasar dhaptar subkelas sing diidini kanggo ekstensi.

    paket com.example.geometry;

    umum nutup kelas Shape
    ijin com.example.polar.Circle,
    com.example.quad.Rectangle,
    com.example.quad.simple.Kotak {…}

  • Ditambahake support kanggo kelas didhelikake sing ora bisa digunakake langsung dening bytecode saka kelas liyane. Tujuan utama kelas sing didhelikake yaiku digunakake ing kerangka kerja sing ngasilake kelas kanthi dinamis nalika runtime lan digunakake kanthi ora langsung, liwat bayangan. Kelas kuwi biasane duwe siklus urip winates, supaya njaga kanggo akses saka kelas statically kui ora sabdho lan mung bakal mimpin kanggo nambah konsumsi memori. kelas didhelikake uga ngilangke perlu kanggo non-standar API sun.misc.Unsafe :: defineAnonymousClass, kang dijadwal kanggo aman ing mangsa.
  • Pengumpul sampah ZGC (Z Garbage Collector) wis distabilake lan diakoni minangka siap digunakake. ZGC makaryakke ing mode pasif, nyilikake latensi amarga koleksi uwuh okehe (wektu warung nalika nggunakake ZGC ora ngluwihi 10 ms.) Lan bisa karo tumpukan cilik lan ageng, kiro-kiro ing ukuran saka sawetara atus megabyte kanggo akeh terabyte.
  • Stabil lan ditemokake siap kanggo panggunaan umum
    tukang sampah Shenandoah, nggarap ngaso minimal (Low-Pause-Time Garbage Collector). Shenandoah dikembangake dening Red Hat lan misuwur amarga nggunakake algoritma sing nyuda wektu stall sajrone nglumpukake sampah kanthi ngresiki sejajar karo eksekusi aplikasi Java. Ukuran wektu tundha sing diwenehake dening tukang sampah bisa diprediksi lan ora gumantung saka ukuran tumpukan, yaiku. kanggo tumpukan 200 MB lan 200 GB wektu tundha bakal padha (aja metu ngluwihi 50 ms lan biasane ing 10 ms);

  • Dhukungan wis stabil lan dikenalake ing basa kasebut pamblokiran teks - wangun anyar saka string literals sing ngijini sampeyan kanggo nyakup data teks multi-baris ing kode sumber tanpa nggunakake karakter uwal lan ngreksa format teks asli ing pemblokiran. Blok kasebut dibingkai kanthi telung kuotasi ganda.

    Contone, tinimbang kode

    String html = " Β»+
    "\n\t" + " Β»+
    "\n\t\t" + " \"Jawa 1 wis ana!\" Β»+
    "\n\t" + " Β»+
    "\n" + " ";

    sampeyan bisa nemtokake:

    String html = """


    Β»Jawa 1\
    wis kene!

    """;

  • Digawe maneh DatagramSocket API warisan. Implementasi lawas java.net.DatagramSocket lan java.net.MulticastSocket wis diganti karo implementasi modern sing luwih gampang kanggo debug lan njaga, lan uga kompatibel karo aliran virtual sing dikembangake ing proyek kasebut. Loom. Ing cilik saka bisa incompatibility karo kode ana, implementasine lawas durung dibusak lan bisa diaktifake nggunakake pilihan jdk.net.usePlainDatagramSocketImpl.
  • Implementasi eksperimen kapindho diusulake cocog pola ing operator "instanceof", sing ngidini sampeyan langsung nemtokake variabel lokal kanggo ngakses nilai sing dicenthang. Contone, sampeyan bisa langsung nulis "yen (obj instanceof String s && s.length () > 5) {.. s.contains (..) ..}" tanpa nemtokake kanthi jelas "String s = (String) obj".

    Iku:

    yen (obj instanceof Group) {
    Grup klompok = (Group)obj;
    var entri = group.getEntries();
    }

    Saiki sampeyan bisa nindakake tanpa definisi "Grup grup = (Group) obj":

    if (obj instanceof Group group) {
    var entri = group.getEntries();
    }

  • Diusulake implementasi eksperimen kapindho saka tembung kunci "rekaman", sing nyedhiyakake wangun kompak kanggo nemtokake kelas, ngijini sampeyan supaya ora nemtokake kanthi jelas macem-macem cara tingkat rendah kayata padha (), hashCode () lan toString () ing kasus sing data disimpen mung ing lapangan sing prilaku ora owah. Nalika kelas nggunakake implementasine standar saka witjaksono (), hashCode () lan toString () cara, bisa nindakake tanpa definisi eksplisit sing:

    cathetan umum BankTransaction(LocalDate date,
    jumlah pindho
    Deskripsi string) {}

    Pranyatan iki bakal kanthi otomatis nambah implementasine saka witjaksono (), hashCode () lan toString () cara saliyane cara konstruktor lan getter.

  • Diusulake pratinjau kaloro saka Foreign-Memory Access API, ngidini aplikasi Java ngakses wilayah memori kanthi aman lan efisien ing njaba tumpukan Jawa kanthi manipulasi abstraksi MemorySegment, MemoryAddress, lan MemoryLayout anyar.
  • dipatΓ¨ni lan nolak teknik optimasi Biased Locking sing digunakake ing JVM HotSpot kanggo nyuda overhead ngunci. Technique iki wis ilang relevansi ing sistem karo instruksi atom diwenehake dening CPU modern, lan banget pegawe-intensif kanggo njaga amarga kerumitan sawijining.
  • Diumumake mekanisme outdated Aktifasi RMI, sing bakal dibusak ing release mangsa. Kacathet yen RMI Activation wis ketinggalan jaman, diturunake menyang kategori opsi ing Jawa 8 lan meh ora tau digunakake ing praktik modern.
  • Dibusak mesin JavaScript Nashorn, sing ora digunakake ing Java SE 11.
  • Dibusak port kanggo prosesor Solaris OS lan SPARC (Solaris / SPARC, Solaris / x64 lan Linux / SPARC). Mbusak port kasebut bakal ngidini komunitas nyepetake pangembangan fitur OpenJDK anyar tanpa mbuwang wektu kanggo njaga fitur khusus Solaris lan SPARC.

Source: opennet.ru

Add a comment