Java SE 14 berdan

Piştî şeş mehên pêşveçûnê, Oracle berdan rawesta axaftevan JavaSE 14 (Platforma Java, Çapa Standard 14), projeya OpenJDK-çavkaniya vekirî wekî pêkanîna referansê tê bikar anîn. Java SE 14 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 dê dema ku di bin guhertoya nû de werin destpêkirin bêyî guhertinan bixebitin. Avahiyên Java SE 14-a-amade-sazkirî (JDK, JRE û Server JRE) amade kirin ji bo Linux (x86_64), Windows û macOS. Pêkanîna referansê ku ji hêla projeya OpenJDK ve hatî pêşve xistin Java 14 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 14 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. Şaxa LTS ya berê ya Java 8 dê heya Kanûna 2020-an were piştgirî kirin. 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.

Ji nûbûnên Java 14 dikare mark:

  • Piştgiriya ceribandinê zêde kir lihevhatina nimûne di operatora "instanceof" de, ku dihêle hûn tavilê guhêrbarek herêmî diyar bikin da ku bigihîjin nirxa kontrolkirî. 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 "Rêz s = (Rêz) obj" diyar bikin.

    Bû:

    heke (nimûneya Grûpê) {
    Koma kom = (Grûp)obj;
    var entries = group.getEntries();
    }

    Naha hûn dikarin bêyî pênase "Koma kom = (Grûp) obj" bikin:

    heke (nimûneya grûpê ya grûpê) {
    var entries = group.getEntries();
    }

  • Piştgiriya ceribandinê ji bo keyworda nû zêde kir "rekor", ku ji bo danasîna çînan formek tevlihev peyda dike, dihêle hûn di rewşên ku dane tenê di qadên ku tevgera wan nayê guheztin de têne hilanîn, ji eşkere danasîna awayên cûrbecûr nizm ên wekî wekhev (), hashCode () û toString () dûr bixin. Dema ku çînek pêkanînên standard ên rêbazên wekhev(), hashCode() û toString() bikar tîne, ew dikare bêyî pênaseya wan a eşkere bike:

    Tomara giştî Veguheztina Bankê (Dîroka Herêmî,
    miqdara du qat
    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.

  • Standardkirin û piştgirî ji bo formek nû ya biwêjên "guhêrbar" ji hêla xwerû ve hatî çalak kirin, ku hewce nake ku operatora "şikestin" diyar bike, dihêle hûn etîketên dubare bi hev re bikin û dikare ne tenê di forma operatorê de, lê di heman demê de wekî operatorek jî were bikar anîn. îfade.

    var têketin = veguherandin (bûyer) {
    doza PLAY -> "Bikarhêner bişkoka lîstikê vekiriye";
    doz STOP, PAUSE -> "Pêwîstiya bikarhêner bi navberê heye";
    default -> {
    Peyama rêzê = bûyer.toString();
    LocalDateTime niha = LocalDateTime.now();
    "Bûyera nenas" + peyam +
    » têketî » + niha;
    }
    };

  • Piştgiriya ezmûnî ya berfireh blokên nivîsê - formek nû ya rêzikên rêzikan ku destûrê dide te ku hûn daneya nivîsê ya pir-xêzik di koda çavkaniyê de bicîh bikin bêyî ku karakter birevin û formata nivîsê ya orîjînal di blokê de biparêzin. Blok bi sê tîpên ducar ve hatî çarçove kirin. Di Java 14-ê de, blokên nivîsê naha rêzika revê "\s" piştgirî dikin da ku cîhek yekane destnîşan bike û "\" bi rêza din ve were girêdan (gava hûn hewce ne ku rêzek pir dirêj çap bikin xetên nû paşguh bikin). Mînakî, li şûna kodê

    String html = " » +
    "\n\t" + " » +
    "\n\t\t" + " \"Java 1 li vir e!\" » +
    "\n\t" + " » +
    "\n" + " ";

    hûn dikarin diyar bikin:

    String html = """


    »Java 1\
    li vir e!

    """;

  • Naveroka agahdarî ya tespîtkirinê dema ku îstîsna çêdibin berfireh bûye NullPointerException. Digel ku berê peyama xeletiyê tenê ji jimareya rêzê re vedibêje, naha ew eşkere dike ka kîjan rêbaz bûye sedema îstîsnayê. Teşhîsên pêşkeftî niha tenê dema ku bi ala "-XX:+ShowCodeDetailsInExceptionMessages" têne destpêkirin têne çalak kirin. Mînakî, dema ku vê ala diyar dike, di rêzê de îstîsna

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

    dê di peyamekê de bi encam bibe

    Di mijara "sereke" de îstîsna java.lang.NullPointerException: Nikare "Location.getCity()" vexwîne.
    ji ber ku nirxa vegerê ya "User.getLocation()" betal e
    li NullPointerExample.main(NullPointerExample.java:5):5)

    ku eşkere dike ku rêbaza Location.getCity() nehate gazîkirin û User.getLocation() null vegerandiye.

  • Pêk anîn Pêşniyarek karûbarê jpackage, 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.
  • Ji berhevkarê çopê G1 re zêde kirin mekanîzmayek veqetandina bîranînê ya nû ku taybetmendiyên xebata li ser pergalên mezin bi karanîna mîmariyê digire nav xwe LI. Veqetandina bîrê ya nû bi karanîna ala "+XX:+UseNUMA" tê çalak kirin û dikare performansa li ser pergalên NUMA bi girîngî baştir bike.
  • Zêde kirin API ji bo şopandina li ser-firînê ya bûyerên JFR (JDK Flight Recorder), mînakî ji bo organîzekirina çavdêriya domdar.
  • Zêde kirin Modula jdk.nio.mapmode, ku modên nû (READ_ONLY_SYNC, WRITE_ONLY_SYNC) pêşkêşî dike ji bo afirandina tamponên baytên nexşandî (MappedByteBuffer) ku behsa bîranîna ne-volatile (NVM) dike.
  • Pêk anîn Pêşdîtinek API-ya Têketinê ya Derveyî-Memory, dihêle ku sepanên Java-yê bi ewlehî û bikêrhatî bigihîjin herêmên bîranînê yên li derveyî girava Java-yê bi manîpulekirina abstractionên MemorySegment, MemoryAddress, û MemoryLayout nû.
  • Hat ragihandin ji bo pêvajoyên Solaris OS û SPARC-ê (Solaris/SPARC, Solaris/x64 û Linux/SPARC) lîmanên betal kirin bi mebesta rakirina van portan di pêşerojê de. Dûrxistina van portan dê rê bide civatê ku lez bide pêşkeftina taybetmendiyên nû yên OpenJDK bêyî ku wext winda bike ji bo domandina taybetmendiyên taybetî yên Solaris û SPARC.
  • Jêbirin berhevkarê çopê CMS (Concurrent Mark Sweep), ku du sal berê kevinbûyî hate nîşankirin û nehat domandin (CMS demek berê bi berhevkarê çopê G1 hate guheztin). Bêyî, ragihand bikaranîna tevliheviya algorîtmayên berhevkirina çopê ParallelScavenge û SerialOld (bi vebijarkên "-XX:+UseParallelGC -XX:-UseParallelOldGC" tê xebitandin, nepejirand.
  • Piştgiriya ceribandinê ya ji bo berhevkarê çopê ZGC (Z Garbage Collector) li ser platformên macOS û Windows-ê (berê tenê li Linux-ê dihat piştgirî kirin) hate peyda kirin. ZGC di moda pasîf de kar dike, derengiya ji ber berhevkirina çopê bi qasî ku gengaz kêm dike (dema rawestanê dema ku ZGC bikar tîne ji 10 ms.) û dikare hem bi girseyên piçûk û hem jî yên mezin re bixebite, ku mezinahiya wan ji çend sed megabyte bigire heya gelek terabyte.
  • Rakirin Toolkit û API ji bo berhevkirina pelên JAR bi karanîna algorîtmaya Pack200.

Source: opennet.ru

Add a comment