Java SE 14 release

Nei seis moannen fan ûntwikkeling, Oracle frijlitten perron JavaSE 14 (Java Platform, Standard Edition 14), it iepen-boarne OpenJDK-projekt wurdt brûkt as referinsjeimplementaasje. Java SE 14 behâldt efterútkompatibiliteit mei eardere releases fan it Java-platfoarm; alle earder skreaune Java-projekten sille sûnder feroaringen wurkje as se wurde lansearre ûnder de nije ferzje. Ready-to-install Java SE 14 builds (JDK, JRE en Server JRE) taret foar Linux (x86_64), Windows en macOS. Referinsje-ymplemintaasje ûntwikkele troch it OpenJDK-projekt Java 14 is folslein iepen boarne ûnder de GPLv2-lisinsje, mei GNU ClassPath-útsûnderings wêrtroch dynamyske keppeling mei kommersjele produkten mooglik is.

Java SE 14 is klassifisearre as in algemiene stipe-release en sil updates trochgean oant de folgjende release. De branch fan Long Term Support (LTS) soe Java SE 11 wêze moatte, dy't oant 2026 updates sil trochgean. De foarige LTS-tûke fan Java 8 sil oant desimber 2020 wurde stipe. De folgjende LTS-release is pland foar septimber 2021. Lit ús jo herinnerje dat te begjinnen mei de frijlitting fan Java 10, it projekt oerstapt nei in nij ûntwikkelingsproses, wat in koartere syklus betsjuttet foar de foarming fan nije releases. Nije funksjonaliteit is no ûntwikkele yn ien konstant bywurke mastertûke, dy't klear makke wizigingen omfettet en wêrfan tûken elke seis moanne fertakke wurde om nije releases te stabilisearjen.

Из ynnovaasjes Java 14 kin mark:

  • Eksperimintele stipe tafoege patroan matching yn 'e "instanceof" operator, wêrtroch jo fuortendaliks in lokale fariabele kinne definiearje om tagong te krijen ta de kontrolearre wearde. Jo kinne bygelyks fuortendaliks skriuwe "if (obj instanceof String s && s.length() > 5) {.. s.contains(..) ..}" sûnder eksplisyt te definiearjen "String s = (String) obj".

    wie:

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

    No kinne jo dwaan sûnder de definysje "Groep groep = (Groep) obj":

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

  • Eksperimintele stipe tafoege foar it nije kaaiwurd "opnimme", dy't in kompakte foarm leveret foar it definiearjen fan klassen, wêrtroch jo kinne foarkomme dat jo ferskate metoaden op leech nivo eksplisyt definiearje, lykas equals(), hashCode() en toString() yn gefallen dêr't gegevens allinich opslein wurde yn fjilden wêrfan it gedrach net feroaret. As in klasse standert ymplemintaasjes brûkt fan 'e metoaden equals (), hashCode () en toString (), kin it dwaan sûnder har eksplisite definysje:

    iepenbiere record BankTransaction (LocalDate date,
    dûbele bedrach
    String beskriuwing) {}

    Dizze deklaraasje sil automatysk ymplemintaasjes tafoegje fan 'e metoaden equals (), hashCode () en toString () neist de konstruktor- en getter-metoaden.

  • Standerdisearre en stipe foar in nije foarm fan "switch" útdrukkingen is standert ynskeakele, dy't net fereasket it opjaan fan de "break" operator, kinne jo kombinearje werhelle labels en kin brûkt wurde net allinnich yn 'e foarm fan in operator, mar ek as in útdrukking.

    var log = switch (evenemint) {
    gefal PLAY -> "Brûker hat de spielknop aktivearre";
    gefal STOP, PAUSE -> "Brûker hat in skoft nedich";
    standert -> {
    String message = event.toString();
    LocalDateTime now = LocalDateTime.now();
    yield "Unbekend barren" + berjocht +
    » oanmeld » + no;
    }
    };

  • Utwreide eksperimintele stipe tekst blokken - in nije foarm fan lettertekens wêrmei jo tekstgegevens mei meardere rigels yn 'e boarnekoade kinne opnimme sûnder karakter te ûntsnappen en de orizjinele tekstopmaak yn it blok te bewarjen. It blok wurdt framed troch trije dûbele quotes. Yn Java 14 stypje tekstblokken no de ûntsnappingsekwinsje "\s" om in inkele spaasje te definiearjen en "\" om te ferbinen mei de folgjende rigel (nije rigels negearje as jo in heul lange rigel moatte printsje). Bygelyks, ynstee fan koade

    String html = " » +
    "\n\t" + " » +
    "\n\t\t" + " \"Java 1 is hjir!\" » +
    "\n\t" + " » +
    "\n" + " ";

    jo kinne oantsjutte:

    String html = """


    »Java 1\
    is hjir!

    """;

  • De ynformaasjeynhâld fan diagnostyk as útsûnderings foarkomme is útwreide NullPointerException. Wylst it flaterberjocht earder allinich ferwiisde nei it rigelnûmer, beskriuwt it no hokker metoade de útsûndering feroarsake hat. Avansearre diagnoaze binne op it stuit allinich ynskeakele as se lansearre wurde mei de flagge "-XX:+ShowCodeDetailsInExceptionMessages". Bygelyks, by it opjaan fan dizze flagge, de útsûndering yn 'e line

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

    sil resultearje yn in berjocht

    Utsûndering yn thread "main" java.lang.NullPointerException: Kin "Location.getCity()" net oproppe
    omdat de weromwearde fan "User.getLocation()" nul is
    at NullPointerExample.main(NullPointerExample.java:5):5)

    dy't dúdlik makket dat de metoade Location.getCity () net neamd waard en User.getLocation () nul weromjûn.

  • Implementearre In foarbyld fan it jpackage-hulpprogramma, wêrmei jo pakketten kinne meitsje foar selsstannige Java-applikaasjes. It hulpprogramma is basearre op javapackager fan JavaFX en lit jo pakketten meitsje yn formaten dy't lânseigen binne op ferskate platfoarms (msi en exe foar Windows, pkg en dmg foar macOS, deb en rpm foar Linux). De pakketten omfetsje alle fereaske ôfhinklikens.
  • Nei de G1 jiskefet tafoege in nij ûnthâld tawizing meganisme dat rekken hâldt mei de spesifiken fan wurkjen oan grutte systemen mei help fan de arsjitektuer YN. De nije ûnthâldallokator is ynskeakele mei de flagge "+XX:+UseNUMA" en kin de prestaasjes op NUMA-systemen signifikant ferbetterje.
  • Added API foar on-the-fly monitoring fan JFR (JDK Flight Recorder) eveneminten, bygelyks foar it organisearjen fan trochgeande monitoring.
  • Added jdk.nio.mapmode module, dy't biedt nije modes (READ_ONLY_SYNC, WRITE_ONLY_SYNC) foar it meitsjen fan yn kaart brocht byte buffers (MappedByteBuffer) ferwiist nei net-flechtich ûnthâld (NVM).
  • Implementearre In foarbyld fan 'e Foreign-Memory Access API, wêrtroch Java-applikaasjes feilich en effisjint tagong krije ta ûnthâldregio's bûten de Java-heap troch de nije MemorySegment-, MemoryAddress- en MemoryLayout-abstraksjes te manipulearjen.
  • Oankundige ferâldere havens foar de Solaris OS- en SPARC-processors (Solaris / SPARC, Solaris / x64 en Linux / SPARC) mei de bedoeling om dizze havens yn 'e takomst te ferwiderjen. It ôfbrekken fan dizze havens sil de mienskip de ûntwikkeling fan nije OpenJDK-funksjes fersnelle kinne sûnder tiid te fergriemen mei it behâld fan Solaris- en SPARC-spesifike funksjes.
  • Wiske de CMS (Concurrent Mark Sweep) garbage collector, dat waard markearre ferâldere twa jier lyn en bleau unmaintained (CMS waard ferfongen lang lyn troch de G1 garbage collector). Neist, oankundige deprecated it brûken fan in kombinaasje fan ParallelScavenge en SerialOld garbage collection algoritmen (rinne mei de opsjes "-XX:+UseParallelGC -XX:-UseParallelOldGC").
  • Eksperimintele stipe foar de ZGC (Z Garbage Collector) garbage collector is levere op macOS- en Windows-platfoarms (earder allinich stipe op Linux). ZGC operearret yn passive modus, minimalisearret wachttiid fanwege garbage sammeljen safolle mooglik (stall tiid by it brûken fan ZGC net mear as 10 ms.) En kin wurkje mei sawol lytse en grutte heaps, fariearjend yn grutte fan ferskate hûndert megabytes oant in protte terabytes.
  • Fuorthelle Toolkit en API foar it komprimearjen fan JAR-bestannen mei it Pack200-algoritme.

Boarne: opennet.ru

Add a comment