Java SE 16 ngabebaskeun

Sanggeus genep bulan pangwangunan, Oracle ngarilis Java SE 16 (Java Platform, Standard Edition 16), anu ngagunakeun proyék OpenJDK salaku palaksanaan rujukan. Java SE 16 mertahankeun kasaluyuan mundur sareng rilis platform Java sateuacana; sadaya proyék Java anu ditulis sateuacana bakal tiasa dianggo tanpa parobihan nalika diluncurkeun dina versi énggal. Siap-pasang ngawangun Java SE 16 (JDK, JRE sareng Server JRE) disiapkeun pikeun Linux (x86_64, AArch64), Windows sareng macOS. Dimekarkeun ku proyék OpenJDK, palaksanaan rujukan Java 16 pinuh open source handapeun lisénsi GPLv2, kalawan GNU ClassPath iwal ngamungkinkeun linking dinamis jeung produk komérsial.

Java SE 16 digolongkeun salaku sékrési dukungan umum sareng bakal terus 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. 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.

Pikeun nyiapkeun rilis énggal, pamekaran parantos ngalih tina sistem kontrol versi Mercurial ka Git sareng platform pangembangan kolaborasi GitHub. Migrasi diperkirakeun ngaronjatkeun kinerja operasi gudang, ngaronjatkeun efisiensi gudang, nyadiakeun aksés ka parobahan sapanjang sajarah proyék urang, ngaronjatkeun rojongan pikeun review kode, sarta ngaktipkeun API pikeun ngajadikeun otomatis workflows. Salaku tambahan, panggunaan Git sareng GitHub ngajantenkeun proyék langkung pikaresepeun pikeun pamula sareng pamekar anu biasa Git.

Fitur anyar dina Java 16 kalebet:

  • Ditambahkeun modul ékspérimén jdk.incubator.vector kalayan palaksanaan Véktor API, anu nyayogikeun fungsi pikeun itungan vektor anu dilakukeun nganggo petunjuk vektor dina prosesor x86_64 sareng AArch64 sareng ngamungkinkeun operasi diterapkeun sakaligus kana sababaraha nilai (SIMD). Kontras jeung kamampuhan disadiakeun dina kompiler HotSpot JIT pikeun otomatis-vectorization operasi skalar, API anyar ngidinan Anjeun pikeun eksplisit ngadalikeun vectorization pikeun ngolah data paralel.
  • JDK jeung kode VM HotSpot ditulis dina C ++ diwenangkeun ngagunakeun fitur diwanohkeun dina C ++ 14 spésifikasi. Saméméhna, standar C ++ 98/03 diwenangkeun.
  • ZGC (Z Garbage Collector), anu beroperasi dina modeu pasip sareng ngaminimalkeun telat kusabab pengumpulan sampah saloba mungkin, parantos nambihan kamampuan pikeun ngolah tumpukan benang sacara paralel tanpa ngareureuhkeun benang aplikasi. ZGC ayeuna ngan ukur gaduh padamelan anu peryogi gantung, anu gaduh telat konstan, biasana henteu langkung ti sababaraha ratus mikrodetik.
  • Ditambahkeun dukungan pikeun sockets Unix (AF_UNIX) kana kelas SocketChannel, ServerSocketChannel sareng java.nio.channels.
  • Pelabuhan parantos dilaksanakeun pikeun distribusi Linux Alpine kalayan musl perpustakaan C standar, anu populer di lingkungan wadah, jasa mikro, awan sareng sistem anu dipasang. Port anu diusulkeun dina lingkungan sapertos kitu ngamungkinkeun anjeun ngajalankeun program Java sapertos aplikasi biasa. Salaku tambahan, nganggo jlink, anjeun tiasa ngahapus sadaya modul anu henteu dianggo sareng nyiptakeun lingkungan minimal anu cekap pikeun ngajalankeun aplikasi, anu ngamungkinkeun anjeun nyiptakeun gambar kompak khusus aplikasi.
  • Mékanisme Metaspace elastis parantos dilaksanakeun, ngaoptimalkeun operasi alokasi sareng mulangkeun mémori anu dijajah ku metadata kelas (metaspace) dina JVM HotSpot. Pamakéan elastis Metaspace ngurangan fragméntasi memori, ngurangan kelas loader overhead, sarta ogé miboga éfék mangpaat dina kinerja aplikasi server lila-ngajalankeun alatan balik gancang memori dikawasaan ku metadata kelas henteu kapake kana sistem operasi. Pikeun milih modeu sékrési mémori saatos ngabongkar kelas, ditawarkeun pilihan "-XX: MetaspaceReclaimPolicy = (saimbang | agrésif | taya) ".
  • A port JDK geus ditambahkeun pikeun sistem Windows ngajalankeun on hardware kalawan prosesor dumasar kana arsitektur AArch64.
  • Tilik katilu tina Foreign-Memory Access API parantos diusulkeun, ngamungkinkeun aplikasi Java pikeun aman sareng éfisién ngaksés daérah mémori di luar tumpukan Java ku cara ngamanipulasi abstraksi MemorySegment, MemoryAddress, sareng MemoryLayout énggal.
  • API Linker Asing ékspérimén parantos dilaksanakeun, nyayogikeun aksés ti Java kana kode asli. Babarengan API Asing-Memori, antarbeungeut programming anyar ngajadikeun eta loba gampang nyieun wrappers leuwih perpustakaan dibagikeun konvensional.
  • Ditambahkeun utiliti jpackage, nu ngidinan Anjeun pikeun nyieun bungkusan pikeun aplikasi Java timer ngandung. Utiliti dumasar kana javapackager ti JavaFX sareng ngamungkinkeun anjeun nyiptakeun bungkusan dina format asli tina sababaraha platform (msi sareng exe pikeun Windows, pkg sareng dmg pikeun macOS, deb sareng rpm pikeun Linux). Bungkusan kalebet sadayana katergantungan anu diperyogikeun.
  • Enkapsulasi ketat sadaya internal JDK diaktipkeun sacara standar, iwal API kritis sapertos sun.misc.Unsafe. Nilai pilihan "--ilegal-aksés" ayeuna disetel ka "mungkir" tinimbang "idin" sacara standar, nu bakal meungpeuk usaha tina kode pikeun ngakses paling kelas internal, métode jeung widang. Pikeun ngalangkungan larangan, paké pilihan "-illegal-aksés = ijin".
  • Palaksanaan pola cocog dina operator "instanceof" geus stabilized, nu ngidinan Anjeun pikeun langsung nangtukeun variabel lokal pikeun ngarujuk kana nilai dipariksa. Contona, anjeun bisa langsung nulis "lamun (obj instanceof String s && s.length () > 5) {.. s.contains (..) ..}" tanpa eksplisit nangtukeun "String s = (String) obj". Was: if (obj instanceof Group) { Group group = (Group) obj; var éntri = group.getEntries (); } Ayeuna anjeun bisa ngalakukeun tanpa nangtukeun "Group group = (Group) obj": lamun (obj instanceof Grup Grup) {var éntri = group.getEntries (); }
  • Palaksanaan kecap konci "catetan" geus stabilized, nyadiakeun formulir kompak pikeun definisi kelas nu eliminates kudu eksplisit nangtukeun rupa métode-tingkat low kayaning sarua (), hashCode () sarta toString () dina kasus dimana data disimpen. ngan di sawah.nu teu robah. Nalika kelas ngagunakeun palaksanaan standar tina sarua (), hashCode () jeung toString () métode, éta bisa ngalakukeun tanpa harti eksplisit maranéhanana: catetan publik BankTransaction (LocalDate tanggal, jumlah ganda, String pedaran) {}

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

  • Draf kadua diusulkeun 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; kelas disegel umum Bentuk idin com.example.polar.Circle, com.example.quad.Rectangle, com.example.quad.simple.Square {…}

sumber: opennet.ru

Tambahkeun komentar