Java SE 16 berdan

Piştî şeş mehên pêşveçûnê, Oracle Java SE 16 (Platform Java, Çapa Standard 16) derxist, ku projeya OpenJDK wekî pêkanîna referansê bikar tîne. Java SE 16 bi serbestberdanên berê yên platforma Java-yê re lihevhatina paşverû diparêze; hemî projeyên Java-yê yên berê hatine nivîsandin dema ku di bin guhertoya nû de werin destpêkirin dê bêyî guhertin bixebitin. Avakirinên amade-sazkirî yên Java SE 16 (JDK, JRE û Server JRE) ji bo Linux (x86_64, AArch64), Windows û macOS têne amadekirin. Ji hêla projeya OpenJDK ve hatî pêşve xistin, pêkanîna referansa Java 16 di bin lîsansa GPLv2 de bi tevahî çavkaniyek vekirî ye, digel îstîsnayên GNU ClassPath ku rê dide girêdana dînamîkî bi hilberên bazirganî re.

Java SE 16 wekî serbestberdana piştevaniya gelemperî tête dabeş kirin û heya serbestberdana paşîn dê wergirtina nûvekirinan bidomîne. Pêdivî ye ku şaxa Piştgiriya Demdirêj (LTS) Java SE 11 be, ku dê heya 2026-an nûvekirinan bigire. Serbestberdana LTS ya paşîn ji bo Îlona 2021-an tê plansaz kirin. Ka em ji we re bi bîr bînin ku bi destpêkirina berdana Java 10-ê re, proje derbasî pêvajoyek nû ya pêşkeftinê bû, ku tê wateya çerxek kurttir ji bo damezrandina weşanên nû. Fonksiyona nû naha di yek şaxek masterê ya bi domdarî nûvekirî de, ku tê de guheztinên amade hene û ji kîjan şeş mehan carekê şax têne dabeş kirin da ku serbestberdanên nû sabît bikin, têne pêşve xistin.

Di amadekirina berdana nû de, pêşkeftin ji pergala kontrola guhertoya Mercurial derbasî Git û platforma pêşkeftina hevkar a GitHub bû. Tê çaverê kirin ku koçberî performansa karûbarên depoyê baştir bike, karbidestiya hilanînê zêde bike, di seranserê dîroka projeyê de gihîştina guhertinan peyda bike, piştgirî ji bo vekolîna kodê baştir bike, û API-an bike ku karûbarên xebatê otomatîk bikin. Wekî din, karanîna Git û GitHub projeyê ji destpêk û pêşdebirên ku bi Git-ê re fêr bûne balkêştir dike.

Taybetmendiyên nû di Java 16 de ev in:

  • Modula ceribandinê jdk.incubator.vector bi pêkanîna Vector API-yê ve hatî zêdekirin, ku fonksiyonên ji bo hesabên vektorê yên ku bi karanîna rêwerzên vektorê yên li ser pêvajoyên x86_64 û AArch64 têne kirin peyda dike û dihêle ku operasyon bi hevdemî li ser gelek nirxan (SIMD) werin sepandin. Berevajî kapasîteyên ku di berhevkarê HotSpot JIT-ê de ji bo vektorîkirina otomatîkî ya operasyonên skalar têne peyda kirin, API-ya nû dihêle hûn bi eşkere vektorîzasyonê ji bo hilberandina daneya paralel kontrol bikin.
  • Koda JDK û VM HotSpot ku bi C ++ hatî nivîsandin destûr e ku taybetmendiyên ku di taybetmendiya C ++14 de hatine destnîşan kirin bikar bînin. Berê, standardên C++98/03 destûr didan.
  • ZGC (Z Garbage Collector), ku di moda pasîf de kar dike û derengiyên ji ber berhevkirina çopê bi qasî ku pêkan kêm dike, şiyana ku pêvajoya tîrêjên tîrêjê bi paralelî bêyî sekinandina mijarên serîlêdanê zêde kiriye. ZGC naha tenê karek heye ku pêdivî bi sekinandinê heye, ku derengiyên domdar hene, bi gelemperî ji çend sed mîkro çirkeyan derbas nakin.
  • Piştgiriya ji bo soketên Unix (AF_UNIX) li çînên SocketChannel, ServerSocketChannel û java.nio.channels zêde kir.
  • Portek ji bo belavkirina Linux Alpine bi musl-ya pirtûkxaneya C-ya standard, ku di hawîrdorên konteyneran, mîkroxizmetan, ewr û pergalên pêvekirî de populer e, hatî bicîh kirin. Porta pêşniyarkirî di hawîrdorên weha de dihêle hûn bernameyên Java-yê mîna serîlêdanên birêkûpêk bimeşînin. Wekî din, bi karanîna jlink-ê, hûn dikarin hemî modulên neyên bikar anîn rakin û jîngehek hindiktirîn ku têra serîlêdanê bike biafirînin, ku destûrê dide te ku hûn wêneyên tevlihev ên serîlêdanê biafirînin.
  • Mekanîzmaya Elastic Metaspace hatiye bicihkirin, optimîzekirina operasyonên veqetandin û vegerandina bîra ku ji hêla metadata pola (metaspace) ve li JVM HotSpot ve hatî dagir kirin. Bikaranîna Elastic Metaspace perçebûna bîranînê kêm dike, sermaya barkerê polê kêm dike, û di heman demê de bandorek bikêr li ser performansa serîlêdanên serverê yên dirêj-dirêj heye ji ber vegerandina zûtir a bîranîna ku ji hêla metadata çîna nekarandî ve li pergala xebitandinê hatî dagir kirin. Ji bo hilbijartina moda berdana bîranînê piştî rakirina dersan, vebijarka "-XX:MetaspaceReclaimPolicy=(hevseng|êrîşkar|ne)" tê pêşkêş kirin.
  • Portek JDK ji bo pergalên Windows-ê ku li ser hardware bi pêvajoyên li ser bingeha mîmariya AArch64-ê têne xebitandin hatî zêdekirin.
  • Pêşniyarek sêyemîn a API-ya Têketinê ya Biyanî-Memory hate pêşniyar kirin, ku dihêle serîlêdanên Java-yê bi ewlehî û bikêrhatî xwe bigihînin herêmên bîranînê yên li derveyî girava Java-yê bi manîpulekirina abstractionên MemorySegment, MemoryAddress, û MemoryLayout nû.
  • API-ya Linker-a Biyanî ya ceribandinî hate bicîh kirin, ku ji Java-yê gihandina koda xwemalî peyda dike. Bi hev re bi API-ya Bîra Derve re, pêwendiya bernamesaziya nû çêkirina pêçanan li ser pirtûkxaneyên hevpar ên kevneşopî hêsantir dike.
  • Alîkariya jpackage lê zêde kir, ku dihêle hûn ji bo serîlêdanên Java-ya xweser pakêtan biafirînin. Karûbar li ser bingeha javapackager ji JavaFX-ê ye û dihêle hûn pakêtan bi formatên xwemalî yên platformên cihêreng biafirînin (msi û exe ji bo Windows, pkg û dmg ji bo macOS, deb û rpm ji bo Linux). Di pakêtan de hemî girêdanên pêwîst hene.
  • Veguheztina hişk a hemî hundurên JDK-ê ji hêla xwerû ve hatî çalak kirin, ji bilî API-yên krîtîk ên wekî sun.misc.Unsafe. Nirxa vebijarka "--gihiştina neqanûnî" naha ji hêla xwerû ve li şûna "destûr" wekî "înkar" hatî danîn, ku dê hewildanên kodê ji bo gihîştina piraniya çîn, rêbaz û qadan hundurîn asteng bike. Ji bo derbaskirina sînorkirinê, vebijarka "-illlegal-access=destûr" bikar bînin.
  • Pêkanîna hevahengiya nimûneyê di operatora "nimûneyaof" de stabîl bûye, ku dihêle hûn tavilê guhêrbarek herêmî diyar bikin da ku nirxa kontrolkirî binav bikin. Mînakî, hûn dikarin tavilê "eger (obj mînaka String s && s.length() > 5) {.. s.contains(..) ..}" binivîsin bêyî ku bi eşkere "String s = (String) obj" diyar bikin. Bû: eger (obj mînaka Komê) { Koma kom = (Grûp) obj; var entries = group.getEntries(); } Niha hûn dikarin bêyî pênasekirina "Koma komê = (Grûp) obj" bikin: eger (objê nimûneya komê) { var entries = group.getEntries(); }
  • Pêkanîna peyva sereke ya "qeyd" hatiye stabîlkirin, ji bo pênaseyên pola formek kompakt peyda dike ku di rewşên ku dane têne hilanîn de hewcedariya eşkere danasîna awayên cûrbecûr nizm ên wekî wekhevî(), hashCode() û toString() peyda dike. tenê di zeviyan de.bi ku nayê guhertin. Dema ku çînek pêkanînên standard ên rêbazên wekhev(), hashCode() û toString() bikar tîne, ew dikare bêyî pênasekirina wan a eşkere bike: Tomara giştî BankTransaction(Dîroka Herêmî, mîqdara ducar, danasîna rêzikê) {}

    Ev danezan dê ji bilî awayên çêker û wergir jixweber pêkanînên rêbazên wekhev(), hashCode() û toString() zêde bike.

  • Pêşnûmayek duyemîn ji bo çîn û navgînên mohrkirî tê pêşniyar kirin ku ji hêla çîn û navbeynkarên din ve nikaribin ji bo mîrasgirtin, dirêjkirin, an jinavbirina pêkanînan werin bikar anîn. Di heman demê de çînên mohrkirî rêgezek eşkeretir peyda dikin ku karanîna superclass ji guhêrbarên gihîştinê sînordar bike, li ser bingeha eşkere navnîşkirina jêr-classên ku ji bo dirêjkirinê têne destûr kirin. pakêt com.example.geometry; pola mohrkirî ya giştî Destûrên Shape com.example.polar.Circle, com.example.quad.Rectangle, com.example.quad.simple.Square {…}

Source: opennet.ru

Add a comment