Java SE 14 lage

Apre sis mwa nan devlopman, Oracle lage platfòm JavaSE 14 (Java Platform, Standard Edition 14), yo itilize pwojè OpenJDK sous louvri kòm yon aplikasyon referans. Java SE 14 kenbe konpatibilite bak ak degaje anvan yo nan platfòm Java a; tout pwojè Java ki te ekri deja pral travay san chanjman lè yo te lanse anba nouvo vèsyon an. Pare-pou-enstale Java SE 14 bati (JDK, JRE ak sèvè JRE) prepare pou Linux (x86_64), Windows ak macOS. Referans aplikasyon pwojè OpenJDK devlope Java 14 se sous totalman louvri anba lisans GPLv2, ak eksepsyon GNU ClassPath ki pèmèt lyen dinamik ak pwodwi komèsyal yo.

Java SE 14 klase kòm yon lage sipò jeneral epi li pral kontinye resevwa mizajou jiska pwochen lage a. Branch Sipò Alontèm (LTS) ta dwe Java SE 11, ki pral kontinye resevwa mizajou jiska 2026. Branch LTS anvan Java 8 la pral sipòte jiska desanm 2020. Pwochen piblikasyon LTS la pwograme pou septanm 2021. Se pou nou raple w ke kòmanse ak lage nan Java 10, pwojè a chanje nan yon nouvo pwosesis devlopman, ki vle di yon sik ki pi kout pou fòmasyon nan nouvo degaje. Nouvo fonksyonalite kounye a devlope nan yon sèl branch mèt toujou ap mete ajou, ki gen ladann chanjman ki pare yo epi ki soti nan ki branch yo branch chak sis mwa estabilize nouvo degaje.

Nan inovasyon Java 14 yon sèl kapab make:

  • Te ajoute sipò eksperimantal matche modèl nan "instanceof" operatè a, ki pèmèt ou imedyatman defini yon varyab lokal jwenn aksè nan valè a tcheke. Pou egzanp, ou ka imedyatman ekri "si (obj instanceof String s && s.length() > 5) {.. s.contains(..) ..}" san yo pa defini klèman "String s = (String) obj".

    Te:

    if (obj instanceof Group) {
    Gwoup gwoup = (Gwoup)obj;
    var antre = group.getEntries();
    }

    Koulye a, ou ka fè san yo pa definisyon "Gwoup group = (Group) obj":

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

  • Te ajoute sipò eksperimantal pou nouvo mo kle a "dosye", ki bay yon fòm kontra enfòmèl ant pou defini klas yo, ki pèmèt ou evite klèman defini divès kalite metòd ba nivo tankou equals(), hashCode() ak toString() nan ka kote done yo estoke sèlman nan jaden ki gen konpòtman pa chanje. Lè yon klas sèvi ak aplikasyon estanda equals(), hashCode() ak toString() metòd, li ka fè san yo pa definisyon eksplisit yo:

    dosye piblik Tranzaksyon Bank (LocalDate dat,
    doub kantite lajan
    deskripsyon chèn) {}

    Deklarasyon sa a pral otomatikman ajoute aplikasyon equals(), hashCode() ak toString() metòd anplis metòd konstrukteur ak getter.

  • Standardize ak sipò pou yon nouvo fòm ekspresyon "chanjman" pèmèt pa default, ki pa mande pou presize operatè a "kraze", pèmèt ou konbine etikèt repete epi yo ka itilize pa sèlman nan fòm lan nan yon operatè, men tou kòm yon ekspresyon.

    var log = switch (evènman) {
    case PLAY -> "Itilizatè a te deklanche bouton jwe nan";
    ka STOP, PAUSE -> "Itilizatè a bezwen yon ti repo";
    default -> {
    Chaîne mesaj = event.toString ();
    LocalDateTime kounye a = LocalDateTime.now ();
    bay "Evènman enkoni" + mesaj +
    » konekte » + kounye a;
    }
    };

  • Elaji sipò eksperimantal blòk tèks - yon nouvo fòm literal fisèl ki pèmèt ou mete done tèks milti-liy nan kòd sous la san yo pa itilize karaktè chape epi konsève fòma tèks orijinal la nan blòk la. Blòk la ankadre pa twa quotes doub. Nan Java 14, blòk tèks yo kounye a sipòte sekans chape "\s" pou defini yon sèl espas ak "\" pou konekte ak liy kap vini an (inyore newlines lè ou bezwen enprime yon liy trè long). Pou egzanp, olye pou yo kòd

    Chaîne html = " » +
    "\n\t" + " » +
    "\n\t\t" + " \"Java 1 la!\" » +
    "\n\t" + " » +
    "\n" + " ";

    ou ka presize:

    String html = """


    »Java 1\
    se isit la!

    """;

  • Kontni enfòmasyon nan dyagnostik lè eksepsyon rive yo te elaji NullPointerException. Lè nou konsidere ke anvan mesaj erè a sèlman refere li bay nimewo liy lan, kounye a li detaye ki metòd ki te lakòz eksepsyon an. Aktyèlman dyagnostik avanse yo aktive sèlman lè yo lanse ak drapo "-XX:+ShowCodeDetailsInExceptionMessages". Pou egzanp, lè espesifye drapo sa a, eksepsyon nan liy lan

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

    pral lakòz yon mesaj

    Eksepsyon nan fil "principal" java.lang.NullPointerException: Pa ka envoke "Location.getCity()"
    paske valè retounen nan "User.getLocation()" se nil
    nan NullPointerExample.main(NullPointerExample.java:5):5)

    ki fè li klè ke Location.getCity() metòd la pa te rele ak User.getLocation() tounen nil.

  • Aplike Yon aperçu de sèvis piblik jpackage, ki pèmèt ou kreye pakè pou aplikasyon Java endepandan. Itilite a baze sou javapackager ki soti nan JavaFX epi li pèmèt ou kreye pakè nan fòma natif natal nan divès platfòm (msi ak ègzekutabl pou Windows, pkg ak dmg pou macOS, deb ak rpm pou Linux). Pake yo gen ladan tout depandans obligatwa yo.
  • Pou pèseptè fatra G1 la te ajoute yon nouvo mekanis alokasyon memwa ki pran an kont spesifik yo nan travay sou gwo sistèm lè l sèvi avèk achitekti a NAN. Nouvo alokasyon memwa a pèmèt lè l sèvi avèk drapo "+XX:+UseNUMA" la epi li ka amelyore pèfòmans nan sistèm NUMA yo.
  • Te ajoute API pou siveyans on-the-fly nan JFR (JDK Flight Recorder) evènman, pou egzanp pou òganize siveyans kontinyèl.
  • Te ajoute jdk.nio.mapmode modil, ki ofri nouvo mòd (READ_ONLY_SYNC, WRITE_ONLY_SYNC) pou kreye tanpon byte kat (MappedByteBuffer) fè referans a memwa ki pa temèt (NVM).
  • Aplike Yon aperçu API Aksè pou Memwa Etranje a, ki pèmèt aplikasyon Java yo jwenn aksè nan rejyon memwa yo an sekirite ak efikasman andeyò pil Java a lè yo manipile nouvo abstraksyon MemorySegment, MemoryAddress ak MemoryLayout.
  • Te anonse pò depreche pou Solaris OS ak processeurs SPARC (Solaris/SPARC, Solaris/x64 ak Linux/SPARC) ak entansyon pou retire pò sa yo alavni. Depreke pò sa yo pral pèmèt kominote a akselere devlopman nan nouvo karakteristik OpenJDK san yo pa pèdi tan kenbe Solaris- ak SPARC karakteristik espesifik.
  • Efase Pèseptè fatra CMS (Concurrent Mark Sweep), ki te make demode de ane de sa epi ki te rete san antretyen (CMS te ranplase depi lontan pa pèseptè fatra G1). Anplis, te anonse depreche itilizasyon yon konbinezon de algoritm koleksyon fatra ParallelScavenge ak SerialOld (kouri ak opsyon "-XX:+UseParallelGC -XX:-UseParallelOldGC").
  • Yo te bay sipò eksperimantal pou pèseptè fatra ZGC (Z Garbage Collector) sou platfòm macOS ak Windows (anvan sipòte sèlman sou Linux). ZGC opere nan mòd pasif, minimize latansi akòz koleksyon fatra otank posib (tan ki bloke lè w ap itilize ZGC pa depase 10 ms.) epi li ka travay ak tou de ti ak gwo pil, ki varye nan gwosè soti nan plizyè santèn megabyte ak anpil teraocte.
  • Retire Toolkit ak API pou konpresyon fichye JAR lè l sèvi avèk algorithm Pack200 la.

Sous: opennet.ru

Add nouvo kòmantè