Java SE 14 saki

Bayan watanni shida na ci gaba, Oracle saki dandamali JavaSE 14 (Java Platform, Standard Edition 14), buΙ—e tushen aikin OpenJDK ana amfani dashi azaman aiwatar da tunani. Java SE 14 yana kula da dacewa da baya tare da abubuwan da aka saki na dandali na Java; duk ayyukan Java da aka rubuta a baya za su yi aiki ba tare da canje-canje ba yayin gudanar da sabon sigar. Shirye-shiryen shigar Java SE 14 yana ginawa (JDK, JRE da Server JRE) shirya don Linux (x86_64), Windows da macOS. Aiwatar da tunani wanda aikin OpenJDK ya haΙ“aka Java 14 cikakken buΙ—aΙ—Ι—en tushe ne Ζ™arΖ™ashin lasisin GPLv2, tare da keΙ“ancewar GNU ClassPath da ke ba da damar haΙ—in kai tare da samfuran kasuwanci.

Java SE 14 an rarraba shi azaman sakin tallafi na gabaΙ—aya kuma zai ci gaba da karΙ“ar sabuntawa har zuwa saki na gaba. Reshen Tallafin Dogon Lokaci (LTS) yakamata ya zama Java SE 11, wanda zai ci gaba da karΙ“ar sabuntawa har zuwa 2026. Za a tallafawa reshen LTS na baya na Java 8 har zuwa Disamba 2020. An tsara sakin LTS na gaba don Satumba 2021. Bari mu tunatar da ku cewa farawa tare da sakin Java 10, aikin ya canza zuwa sabon tsarin ci gaba, yana nuna gajeriyar zagayowar don samuwar sabbin abubuwan. Sabbin ayyuka yanzu an haΙ“aka su a cikin reshe mai Ι—aukaka koyaushe, wanda ya haΙ—a da shirye-shiryen sauye-sauye kuma daga waΙ—anda ake reshe rassan kowane wata shida don daidaita sabbin abubuwan da aka fitar.

Daga sababbin abubuwa Java 14 iya Alama:

  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° daidaitaccen tsari a cikin ma'aikacin "misali", wanda ke ba ku damar ayyana maΙ“alli na gida nan da nan don samun damar Ζ™imar da aka bincika. Misali, zaku iya rubuta "idan (obj misalin String s && s.length()> 5) {.. s.contains(..)

    Ya kasance:

    idan (abu misali na rukuni) {
    Rukuni = (Group) obj;
    var shigarwar = rukuni.getEntries ();
    }

    Yanzu zaku iya yin ba tare da ma'anar "Rukunin Rukunin = (Group) obj" ba:

    idan (obj misalin rukunin rukuni) {
    var shigarwar = rukuni.getEntries ();
    }

  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова Β«rikodin", wanda ke ba da Ζ™aΖ™Ζ™arfan tsari don ayyana azuzuwan, yana ba ku damar guje wa fayyace Ζ™ayyadaddun Ζ™ananan matakai daban-daban kamar daidai (), hashCode () da toString () a cikin yanayin da aka adana bayanai kawai a cikin filayen da halayensu ba su canzawa. Lokacin da aji yayi amfani da daidaitattun aiwatarwa na daidaitattun (), hashCode() da hanyoyin toString(), yana iya yin ba tare da fayyace ma'anarsu ba:

    rikodin jama'a BankTransaction (LocalDate date,
    adadin biyu
    Bayanin zaren) {}

    Wannan sanarwar za ta Ζ™ara aiwatarwa ta atomatik (), hashCode() da hanyoyin toString() ban da hanyoyin ginawa da hanyoyin samun.

  • Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π° ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π½ΠΎΠ²ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡ‹ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Β«switchΒ», Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰Π΅ΠΉ указания ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Β«breakΒ», ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅ΠΉ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΠ΅ΡΡ ΠΌΠ΅Ρ‚ΠΊΠΈ ΠΈ Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‰Π΅ΠΉ использованиС Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ„ΠΎΡ€ΠΌΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°, Π½ΠΎ ΠΈ ΠΊΠ°ΠΊ выраТСния.

    var log = switch (event) {
    case PLAY -> Β«User has triggered the play buttonΒ»;
    case STOP, PAUSE -> Β«User needs a breakΒ»;
    default -> {
    String message = event.toString();
    LocalDateTime now = LocalDateTime.now();
    yield Β«Unknown event Β» + message +
    Β» logged on Β» + now;
    }
    };

  • Π Π°ΡΡˆΠΈΡ€Π΅Π½Π° ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° tubalan rubutu β€” Π½ΠΎΠ²ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡ‹ строковых Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΎΠ², ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΡ… Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π² исходный ΠΊΠΎΠ΄ многострочныС тСкстовыС Π΄Π°Π½Π½Ρ‹Π΅ Π±Π΅Π· примСнСния Π² Π½ΠΈΡ… экранирования символов ΠΈ сохраняя исходноС форматирования тСкста Π² Π±Π»ΠΎΠΊΠ΅. ΠžΠ±Ρ€Π°ΠΌΠ»Π΅Π½ΠΈΠ΅ Π±Π»ΠΎΠΊΠ° осущСствляСтся трСмя Π΄Π²ΠΎΠΉΠ½Ρ‹ΠΌΠΈ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°ΠΌΠΈ. Π’ Java 14 Π² тСкстовых Π±Π»ΠΎΠΊΠ°Ρ… Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° escape-ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Β«\sΒ» для опрСдСлСния ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ±Π΅Π»Π° ΠΈ Β«\Β» для объСдинСния со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ строкой (игнорирования ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° строки, ΠΊΠΎΠ³Π΄Π° Π½ΡƒΠΆΠ½ΠΎ вывСсти ΠΎΡ‡Π΅Π½ΡŒ Π΄Π»ΠΈΠ½Π½ΡƒΡŽ строку). НапримСр, вмСсто ΠΊΠΎΠ΄Π°

    String html = "" +
    "\n\t" + "" +
    "\n\t\t" + "\"Java 1 na nan!\" " +
    "\n\t" + " " +
    "\n" + "";

    za ku iya Ζ™ayyade:

    html ruwa = """


    Β»Java 1\
    yana nan!”

    "";

  • Π Π°ΡΡˆΠΈΡ€Π΅Π½Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ диагностики ΠΏΡ€ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ NullPointerException. Если Ρ€Π°Π½ΡŒΡˆΠ΅ сообщСниС ΠΎΠ± ошибкС лишь ΡΡΡ‹Π»Π°Π»ΠΎΡΡŒ Π½Π° Π½ΠΎΠΌΠ΅Ρ€ строки, Ρ‚ΠΎ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π² Π½Ρ‘ΠΌ дСтализируСтся ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠ· ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π²Ρ‹Π·Π²Π°Π» ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅. Π Π°ΡΡˆΠΈΡ€Π΅Π½Π½Π°Ρ диагностика ΠΏΠΎΠΊΠ° Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ запускС с Ρ„Π»Π°Π³ΠΎΠΌ Β«-XX:+ShowCodeDetailsInExceptionMessagesΒ». НапримСр, ΠΏΡ€ΠΈ ΡƒΠΊΠ°Π·Π°Π½ΠΈΠΈ Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ„Π»Π°Π³Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π² строкС

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

    ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Ρ‚ ΠΊ Π²Ρ‹Π²ΠΎΠ΄Ρƒ сообщСния

    Exception in thread Β«mainΒ» java.lang.NullPointerException: Cannot invoke Β«Location.getCity()Β»
    because the return value of Β«User.getLocation()Β» is null
    at NullPointerExample.main(NullPointerExample.java:5):5)

    ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ позволяСт ΠΏΠΎΠ½ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ Location.getCity() Π½Π΅ Π±Ρ‹Π» Π²Ρ‹Π·Π²Π°Π½, Π° User.getLocation() Π²Π΅Ρ€Π½ΡƒΠ» Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ null.

  • An aiwatar ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ jpackage, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅ΠΉ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ для самодостаточных (self-contained) Java-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π£Ρ‚ΠΈΠ»ΠΈΡ‚Π° базируСтся Π½Π° javapackager ΠΈΠ· JavaFX ΠΈ позволяСт Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°Ρ…, Ρ€ΠΎΠ΄Π½Ρ‹Ρ… для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ (msi ΠΈ exe для Windows, pkg ΠΈ dmg для macOS, deb ΠΈ rpm для Linux). ΠŸΠ°ΠΊΠ΅Ρ‚Ρ‹ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ зависимости.
  • Π’ сборщик мусора G1 ya kara da cewa Π½ΠΎΠ²Ρ‹ΠΉ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ распрСдСлСния памяти, ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ спСцифику Ρ€Π°Π±ΠΎΡ‚Ρƒ Π½Π° ΠΊΡ€ΡƒΠΏΠ½Ρ‹Ρ… систСмах, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΡ… Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ IN. Новый Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ памяти Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Ρ„Π»Π°Π³Π° Β«+XX:+UseNUMAΒ» ΠΈ позволяСт сущСствСнно ΠΏΠΎΠ΄Π½ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π½Π° NUMA-систСмах.
  • Kara API для отслСТивания Π½Π° Π»Π΅Ρ‚Ρƒ событий JFR (JDK Flight Recorder), Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠ³ΠΎ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π°.
  • Kara ΠΌΠΎΠ΄ΡƒΠ»ΡŒ jdk.nio.mapmode, ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‰ΠΈΠΉ Π½ΠΎΠ²Ρ‹Π΅ Ρ€Π΅ΠΆΠΈΠΌΡ‹ (READ_ONLY_SYNC, WRITE_ONLY_SYNC) для создания ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΡ‹Ρ… Π±Π°ΠΉΡ‚ΠΎΠ²Ρ‹Ρ… Π±ΡƒΡ„Π΅Ρ€ΠΎΠ² (MappedByteBuffer), ΡΡΡ‹Π»Π°ΡŽΡ‰ΠΈΡ…ΡΡ Π½Π° ΡΠ½Π΅Ρ€Π³ΠΎΠ½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡƒΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒ (NVM).
  • An aiwatar ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ API Foreign-Memory Access, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ Java-прилоТСниям бСзопасно ΠΈ эффСктивно ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ областям памяти, Π²Π½Π΅ ΠΊΡƒΡ‡ΠΈ Java, манипулируя Π½ΠΎΠ²Ρ‹ΠΌΠΈ абстракциями MemorySegment, MemoryAddress ΠΈ MemoryLayout.
  • ΠžΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠΌΠΈ ΠΏΠΎΡ€Ρ‚Ρ‹ для ОБ Solaris ΠΈ процСссоров SPARC (Solaris/SPARC, Solaris/x64 ΠΈ Linux/SPARC) c Π½Π°ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅ΠΌ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎΡ€Ρ‚Ρ‹ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ. ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΡ€Ρ‚ΠΎΠ² Π² разряд ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΡ… ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ сообщСству ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π½ΠΎΠ²Ρ‹Ρ… возмоТностСй OpenJDK, Π½Π΅ тратя врСмя Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅ особСнностСй, спСцифичных для Solaris ΠΈ SPARC.
  • An share сборщик мусора CMS (Concurrent Mark Sweep), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄Π²Π° Π³ΠΎΠ΄Π° Π½Π°Π·Π°Π΄ Π±Ρ‹Π» ΠΎΡ‚ΠΌΠ΅Ρ‡Π΅Π½ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠΌ ΠΈ остался Π±Π΅Π· сопровоТдСния (Π½Π° смСну CMS Π΄Π°Π²Π½ΠΎ ΠΏΡ€ΠΈΡˆΡ‘Π» сборщик мусора G1). ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, sanar ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠΌ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² сборки мусора ParallelScavenge ΠΈ SerialOld (запуск с опциями Β«-XX:+UseParallelGC -XX:-UseParallelOldGCΒ»).
  • ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½Π° ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° сборщика мусора ZGC (Z Garbage Collector) Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ… macOS ΠΈ Windows (Ρ€Π°Π½Π΅Π΅ поддСрТивался Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Linux). ZGC Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² пассивном Ρ€Π΅ΠΆΠΈΠΌΠ΅, насколько это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΈΠ·-Π·Π° сборки мусора (врСмя остановки ΠΏΡ€ΠΈ использовании ZGC Π½Π΅ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ 10 мс.) ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ с нСбольшими, Ρ‚Π°ΠΊ ΠΈ с ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹ΠΌΠΈ ΠΊΡƒΡ‡Π°ΠΌΠΈ, Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ ΠΎΡ‚ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… сотСн ΠΌΠ΅Π³Π°Π±Π°ΠΉΡ‚ Π΄ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… Ρ‚Π΅Ρ€Π°Π±Π°ΠΉΡ‚.
  • An cire инструмСнтарий ΠΈ API для сТатия JAR-Ρ„Π°ΠΉΠ»ΠΎΠ² с использованиСм Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Pack200.

source: budenet.ru

Add a comment