Java SE 15 ngabebaskeun

Saatos genep bulan pangwangunan, Oracle dileupaskeun platform Jawa SE 15 (Java Platform, Standard Edition 15), proyék OpenJDK open-source digunakeun salaku palaksanaan rujukan. Java SE 15 mertahankeun kasaluyuan mundur sareng rilis platform Java sateuacana; sadaya proyék Java anu ditulis saacanna bakal tiasa dianggo tanpa parobihan nalika diluncurkeun dina versi énggal. Siap-pasang Java SE 15 ngawangun (JDK, JRE sareng Server JRE) disiapkeun pikeun Linux (x86_64), Windows sareng macOS. Palaksanaan rujukan dikembangkeun ku proyék OpenJDK Java 15 sumber terbuka sapinuhna dina lisénsi GPLv2, sareng pengecualian GNU ClassPath ngamungkinkeun tautan dinamis sareng produk komérsial.

Java SE 15 digolongkeun salaku sékrési pangrojong biasa sareng bakal teras nampi apdet dugi ka sékrési salajengna. Cabang Long Term Support (LTS) kedahna Java SE 11, anu bakal terus nampi apdet dugi ka 2026. Cabang LTS Java 8 saméméhna bakal dirojong dugi ka Désémber 2020. Pelepasan LTS salajengna dijadwalkeun pikeun Séptémber 2021. Hayu urang ngingetan yén dimimitian ku sékrési Java 10, proyék pindah ka prosés pangwangunan anyar, implying siklus pondok pikeun formasi release anyar. Pungsi anyar ayeuna dikembangkeun dina hiji cabang master anu terus diropéa, anu kalebet parobihan anu siap-siap sareng cabang mana cabangna unggal genep bulan pikeun nyaimbangkeun sékrési énggal.

ti inovasi Java 15 bisa tanda:

  • Diwangun-di dukungan pikeun EdDSA (Edwards-Curve Digital Signature Algorithm) algoritma nyiptakeun tanda tangan digital RFC 8032). Palaksanaan EdDSA diusulkeun henteu gumantung kana platform hardware, ditangtayungan tina serangan sisi-kanal (waktos konstan sadaya itungan ieu ensured) tur leuwih gancang dina kinerja ti palaksanaan ECDSA aya ditulis dina basa C, kalawan tingkat panyalindungan sarua. Contona, EdDSA ngagunakeun kurva elliptic kalawan konci 126-bit némbongkeun kinerja sarupa ECDSA kalawan kurva elliptic secp256r1 jeung konci 128-bit.
  • Ditambahkeun rojongan eksperimen pikeun kelas disegel jeung interfaces, nu teu bisa dipaké ku kelas sejen tur interfaces pikeun inherit, manjangkeun, atawa override palaksanaan. Kelas anu disegel ogé nyayogikeun cara anu langkung déklaratif pikeun ngawatesan panggunaan superclass tibatan modifier aksés, dumasar kana daptar sacara eksplisit subkelas anu diidinan pikeun ekstensi.

    pakét com.example.geometry;

    umum disegel kelas Wangun
    idin com.example.polar.Circle,
    com.example.quad.Rectangle,
    com.example.quad.simple.Kuadrat {…}

  • Ditambahkeun rojongan pikeun kelas disumputkeun nu teu bisa dipaké langsung ku bytecode sahiji kelas séjén. Tujuan konci kelas disumputkeun nyaéta pikeun dianggo dina kerangka anu sacara dinamis ngahasilkeun kelas dina waktos runtime sareng dianggo sacara henteu langsung, ngalangkungan refleksi. kelas sapertos biasana boga siklus hirup kawates, jadi ngajaga aranjeunna pikeun aksés ti kelas statically dihasilkeun teu diyakinkeun sarta ngan bakal ngakibatkeun ngaronjat konsumsi memori. Kelas disumputkeun ogé ngaleungitkeun kabutuhan pikeun sun.misc.Unsafe API non-standar::defineAnonymousClass, anu dijadwalkeun pikeun dihapus dina mangsa nu bakal datang.
  • Koléktor sampah ZGC (Z Garbage Collector) parantos distabilkeun sareng diakui siap dianggo sacara umum. ZGC beroperasi dina modeu pasip, ngaminimalkeun latency alatan ngumpulkeun sampah saloba mungkin (waktu lapak lamun ngagunakeun ZGC teu ngaleuwihan 10 mdet.) Sarta bisa digawekeun ku duanana numpuk leutik tur badag, mimitian dina ukuran tina sababaraha ratus megabyte mun loba terabytes.
  • Stabil sarta kapanggih siap pikeun pamakéan umum
    pamulung runtah Shenandoah, gawé bareng jeda minimal (Low-Pause-Time Garbage Collector). Shenandoah dikembangkeun ku Red Hat sareng kasohor pikeun ngagunakeun algoritma anu ngirangan waktos lapak nalika ngumpulkeun sampah ku jalan ngabersihan paralel sareng palaksanaan aplikasi Java. Ukuran reureuh diwanohkeun ku kolektor sampah téh bisa diprediksi sarta henteu gumantung kana ukuran numpuk, i.e. pikeun tumpukan 200 MB sareng 200 GB telatna bakal sami (ulah kaluar ngaleuwihan 50 ms sareng biasana dina 10 ms);

  • Rojongan geus stabilized tur diwanohkeun kana basa blok téks - wangun anyar string literals nu ngidinan Anjeun pikeun ngawengku data téks multi-garis dina kode sumber tanpa ngagunakeun karakter escaping na preserving pormat téks aslina dina blok. Blok dipiguraan ku tilu tanda petik ganda.

    Contona, tinimbang kode

    String html = " » +
    "\n\t" + " » +
    "\n\t\t" + " \"Java 1 aya di dieu!\" » +
    "\n\t" + " » +
    "\n" + " ";

    Anjeun tiasa nangtukeun:

    String html = """


    »Jawa 1\
    aya di dieu!

    """;

  • Didesain deui Warisan DatagramSocket API. Palaksanaan lami java.net.DatagramSocket sareng java.net.MulticastSocket parantos diganti ku palaksanaan modéren anu langkung gampang pikeun debug sareng mertahankeun, sareng ogé cocog sareng aliran virtual anu dikembangkeun dina proyék. Terus. Dina hal kamungkinan incompatibility jeung kode nu aya, palaksanaan heubeul teu dihapus sarta bisa diaktipkeun maké pilihan jdk.net.usePlainDatagramSocketImpl.
  • Palaksanaan eksperimen kadua diajukeun cocog pola dina operator "instanceof", nu ngidinan Anjeun pikeun langsung nangtukeun variabel lokal pikeun ngakses nilai dipariksa. Contona, anjeun bisa langsung nulis "lamun (obj instanceof String s && s.length () > 5) {.. s.contains (..) ..}" tanpa eksplisit nangtukeun "String s = (String) obj".

    Éta:

    lamun (obj instanceof Grup) {
    Grup grup = (Grup)obj;
    var éntri = group.getEntries ();
    }

    Ayeuna anjeun tiasa ngalakukeun tanpa definisi "Grup grup = (Grup) obj":

    lamun (obj instanceof grup Grup) {
    var éntri = group.getEntries ();
    }

  • Disarankeun palaksanaan eksperimen kadua tina kecap konci "catetan", nu nyadiakeun formulir kompak pikeun nangtukeun kelas, ngidinan Anjeun pikeun ngahindarkeun eksplisit nangtukeun rupa métode-tingkat low kayaning sarua (), hashCode () jeung toString () dina kasus dimana data disimpen ukur dina widang anu kabiasaan teu robah. Nalika kelas ngagunakeun palaksanaan baku tina sarua (), hashCode () jeung toString () métode, éta bisa ngalakukeun tanpa harti eksplisit maranéhna:

    catetan umum BankTransaction(LocalDate tanggal,
    jumlah ganda
    Pedaran string) {}

    deklarasi ieu bakal otomatis nambahkeun palaksanaan tina sarua (), hashCode () jeung toString () métode salian constructor jeung métode getter.

  • Diajukeun sawangan kadua tina Foreign-Memory Access API, ngamungkinkeun aplikasi Java pikeun aman jeung éfisién ngaksés wewengkon mémori di luar tumpukan Java ku cara ngamanipulasi abstraksi MemorySegment, MemoryAddress, jeung MemoryLayout anyar.
  • ditumpurkeun sarta deprecated téhnik optimasi Ngonci bias dipaké dina HotSpot JVM pikeun ngurangan ngonci overhead. Téhnik ieu geus leungit relevansi na on sistem kalawan parentah atom disadiakeun ku CPUs modern, sarta teuing kuli-intensif pikeun ngajaga alatan pajeulitna na.
  • Ngumumkeun mékanisme luntur Aktipkeun RMI, nu bakal dihapus dina release nu bakal datang. Perhatikeun yén RMI Aktivasina geus luntur, relegated kana kategori hiji pilihan di Java 8 sarta ampir pernah dipaké dina prakték modern.
  • Dipupus mesin JavaScript Nashorn, anu dileungitkeun di Java SE 11.
  • Dipiceun palabuhan pikeun Solaris OS na prosesor SPARC (Solaris / SPARC, Solaris / x64 jeung Linux Ubuntu / SPARC). Nyoplokkeun palabuhan ieu bakal ngidinan masarakat pikeun ngagancangkeun ngembangkeun fitur OpenJDK anyar tanpa wasting waktu ngajaga Solaris na SPARC fitur husus.

sumber: opennet.ru

Tambahkeun komentar