Java SE 14 ngabebaskeun

Saatos genep bulan pangwangunan, Oracle dileupaskeun platform Jawa SE 14 (Java Platform, Standard Edition 14), proyék OpenJDK open-source digunakeun salaku palaksanaan rujukan. Java SE 14 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 14 ngawangun (JDK, JRE sareng Server JRE) disiapkeun pikeun Linux (x86_64), Windows sareng macOS. Palaksanaan rujukan dikembangkeun ku proyék OpenJDK Java 14 sumber terbuka sapinuhna dina lisénsi GPLv2, sareng pengecualian GNU ClassPath ngamungkinkeun tautan dinamis sareng produk komérsial.

Java SE 14 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 14 bisa tanda:

  • Ditambahkeun dukungan ékspérimén 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 ();
    }

  • Ditambahkeun dukungan ékspérimén pikeun kecap konci énggal "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.

  • Distandarisasi sarta rojongan pikeun formulir anyar "switch" éksprési diaktipkeun sacara standar, nu teu merlukeun nangtukeun operator "break", ngidinan Anjeun pikeun ngagabungkeun labél ulang tur bisa dipaké teu ukur dina bentuk operator, tapi ogé salaku éksprési.

    var log = switch (acara) {
    bisi PLAY -> "Pamaké geus micu tombol play";
    hal STOP, PAUSE -> "Pamaké perlu istirahat";
    standar -> {
    String pesen = event.toString();
    LocalDateTime ayeuna = LocalDateTime.now ();
    ngahasilkeun "Acara kanyahoan" + pesen +
    »asup» + ayeuna;
    }
    };

  • rojongan ékspériméntal dimekarkeun 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. Dina Java 14, blok téks ayeuna ngarojong runtuyan kabur "\s" pikeun nangtukeun spasi tunggal jeung "\" pikeun concatenate kalawan baris salajengna (ignore newlines mun anjeun kudu nyitak garis pisan panjang). 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!

    """;

  • Eusi inpormasi diagnostik nalika aya pengecualian parantos dilegaan NullPointerException. Padahal samemehna pesen kasalahan ngan ukur ngarujuk kana nomer garis, ayeuna sacara rinci metode mana anu nyababkeun pengecualian. Diagnostik canggih ayeuna ngan ukur diaktipkeun nalika diluncurkeun nganggo bandéra "-XX: + ShowCodeDetailsInExceptionMessages". Contona, nalika nangtukeun bandéra ieu, iwal dina garis

    var ngaran = user.getLocation().getCity().getName();

    bakal ngahasilkeun pesen

    Pangecualian dina thread "utama" java.lang.NullPointerException: Teu bisa nelepon "Location.getCity ()"
    sabab nilai balik "User.getLocation ()" nyaeta null
    di NullPointerExample.main(NullPointerExample.java:5):5)

    nu ngajadikeun eta jelas yén Location.getCity () metoda teu disebut na User.getLocation () balik null.

  • Dilaksanakeun A sawangan tina 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.
  • Ka tukang sampah G1 ditambihan mékanisme alokasi memori anyar nu tumut kana akun spésifik gawé dina sistem badag ngagunakeun arsitektur Nomer. Allocator mémori anyar diaktipkeun nganggo bendera "+XX: + UseNUMA" sareng tiasa sacara signifikan ningkatkeun kinerja dina sistem NUMA.
  • Ditambahkeun API pikeun ngawaskeun on-the-fly tina JFR (JDK Flight Recorder) acara, contona pikeun ngatur monitoring kontinyu.
  • Ditambahkeun modul jdk.nio.mapmode, nu nawarkeun modus anyar (READ_ONLY_SYNC, WRITE_ONLY_SYNC) pikeun nyieun dipetakeun bait buffers (MappedByteBuffer) ngarujuk memori non-volatile (NVM).
  • Dilaksanakeun Tilik API Aksés Mémori-Asing, ngamungkinkeun aplikasi Java ngaksés daérah mémori anu aman sareng éfisién di luar tumpukan Java ku cara ngamanipulasi abstraksi MemorySegment, MemoryAddress, sareng MemoryLayout énggal.
  • Ngumumkeun palabuhan deprecated pikeun prosesor Solaris OS na SPARC (Solaris / SPARC, Solaris / x64 jeung Linux Ubuntu / SPARC) kalawan niat miceun port ieu dina mangsa nu bakal datang. Deprecating palabuhan ieu bakal ngidinan masarakat pikeun ngagancangkeun ngembangkeun fitur OpenJDK anyar tanpa wasting waktos ngajaga Solaris- sarta fitur SPARC-spésifik.
  • Dipupus nu CMS (Concurrent Tandaan Sweep) kolektor sampah, nu ieu ditandaan luntur dua taun ka pengker na tetep unmaintained (CMS geus lila diganti ku G1 tukang sampah). Salian ti éta, ngumumkeun deprecated pamakéan kombinasi ParallelScavenge jeung algoritma kempelan sampah SerialOld (ngajalankeun kalawan pilihan "-XX: + UseParallelGC -XX: -UseParallelOldGC").
  • Pangrojong ékspérimén pikeun pangumpul sampah ZGC (Z Garbage Collector) parantos disayogikeun dina platform macOS sareng Windows (saméméhna dirojong ngan dina Linux). 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 tumpukan leutik tur badag, mimitian dina ukuran tina sababaraha ratus megabyte mun loba terabytes.
  • Dipiceun Toolkit sareng API pikeun ngompres file JAR nganggo algoritma Pack200.

sumber: opennet.ru

Tambahkeun komentar