Нашри Java SE 18

Пас аз шаш моҳи таҳия, Oracle платформаи Java SE 18 (Java Platform, Standard Edition 18) -ро баровард, ки лоиҳаи кушодаи OpenJDK-ро ҳамчун татбиқи истинод истифода мебарад. Ба истиснои бартараф кардани баъзе хусусиятҳои кӯҳнашуда, Java SE 18 мутобиқати қафоро бо версияҳои қаблии платформаи Java нигоҳ медорад - аксари лоиҳаҳои қаблан навишташудаи Java ҳангоми иҷро кардани версияи нав бидуни тағирот кор хоҳанд кард. Сохтаҳои насбшавандаи Java SE 18 (JDK, JRE ва Server JRE) барои Linux (x86_64, AArch64), Windows (x86_64) ва macOS (x86_64, AArch64) омода карда шудаанд. Татбиқи истинодҳои Java 18, ки аз ҷониби лоиҳаи OpenJDK таҳия шудааст, манбаи пурра дар доираи иҷозатномаи GPLv2 бо истисноҳои GNU ClassPath барои имкон додани пайвасти динамикӣ ба маҳсулоти тиҷоратӣ мебошад.

Java SE 18 ҳамчун як нашрияи муқаррарии дастгирӣ гурӯҳбандӣ карда мешавад, ки навсозиҳо бояд пеш аз нашри навбатӣ бароварда шаванд. Филиали Дастгирии дарозмуддат (LTS) бояд Java SE 17 бошад, ки то соли 2029 навсозиҳо мегирад. Ёдовар мешавем, ки аз нашри Java 10 оғоз шуда, лоиҳа ба раванди нави рушд гузашт, ки давраи кӯтоҳтари ташаккули релизҳои навро дар назар дорад. Ҳоло дар як филиали устои доимо таҷдидшаванда функсияҳои нав таҳия карда мешаванд, ки тағиротҳои аллакай анҷомёфтаро дар бар мегирад ва аз он филиалҳо ҳар шаш моҳ барои мӯътадил кардани релизҳои нав филиалҳо ҷудо карда мешаванд.

Хусусиятҳои нав дар Java 18 иборатанд аз:

  • Бо нобаёнӣ, рамзгузорӣ UTF-8 аст. API-ҳои Java, ки маълумотҳои матниро дар асоси рамзгузории аломатҳо коркард мекунанд, ҳоло новобаста аз танзимоти система ва танзимоти маҳаллӣ UTF-8-ро ба таври нобаёнӣ дар ҳама платформаҳо истифода мебаранд. Барои баргаштан ба рафтори кӯҳна, ки дар он рамзгузорӣ дар асоси маҳалли система интихоб мешавад, шумо метавонед имконоти "-Dfile.encoding=COMPAT"-ро истифода баред.
  • Маҷмӯа бастаи com.sun.net.httpserver-ро дар бар мегирад, ки утилитаи jwebserver ва API API-ро бо татбиқи сервери оддии http барои хидматрасонии мундариҷаи статикӣ дар бар мегирад (CGI ва коркардкунандагони ба сервлет дастгирӣ карда намешавад). Сервери дарунсохташудаи HTTP барои сарбории корӣ оптимизатсия нашудааст ва назорати дастрасӣ ва аутентификатсияро дастгирӣ намекунад, зеро он асосан барои истифода дар раванди таҳия барои прототипсозӣ, ислоҳ ва санҷиши лоиҳаҳо нигаронида шудааст.
  • JavaDoc теги "@snippet"-ро барои ворид кардани мисолҳои корӣ ва порчаҳои код ба ҳуҷҷатҳои API дастгирӣ мекунад, ки дар он шумо метавонед асбобҳои тасдиқкунӣ, равшансозии синтаксис ва ҳамгироии IDE-ро истифода баред.
  • Амалисозии Java.lang.reflect API (Core Reflection), ки барои гирифтани маълумот дар бораи усулҳо, майдонҳо ва созандагони синфҳо, инчунин дастрасӣ ба сохтори дохилии синфҳо пешбинӣ шудааст, аз нав тарҳрезӣ шудааст. Худи API-и java.lang.reflect бетағйир боқӣ мемонад, аммо ҳоло ба ҷои истифодаи генераторҳои байткод, бо истифода аз дастаҳои методе, ки модули java.lang.invoke пешниҳод кардааст, амалӣ карда мешавад. Тағирот ба мо имкон дод, ки татбиқи java.lang.reflect ва java.lang.invoke муттаҳид карда, нигоҳдории онҳоро содда кунем.
  • Пешнамоиши сеюми API Vector пешниҳод карда шудааст, ки функсияҳоро барои ҳисобҳои векторӣ таъмин мекунад, ки бо истифода аз дастурҳои векторӣ дар протсессори x86_64 ва AArch64 иҷро карда мешаванд ва имкон медиҳанд, ки амалиётҳо дар як вақт ба арзишҳои сершумор (SIMD) татбиқ карда шаванд. Баръакси қобилиятҳое, ки дар компилятори HotSpot JIT барои автовекторизатсияи амалиёти скалярӣ пешбинӣ шудаанд, API-и нав имкон медиҳад, ки векторизатсияро барои коркарди параллелӣ идора карда шавад.
  • Интерфейси SPI (интерфейси провайдери хидматрасон) барои ҳалли номҳои ҳост ва суроғаҳои IP илова карда шудааст, ки ба шумо имкон медиҳад, ки ҳалкунандаҳои алтернативӣ дар java.net.InetAddress, ки бо коркардкунандагони пешниҳодкардаи системаи оператсионӣ алоқаманд нестанд, истифода баред.
  • Пешнамоиши дуюми API-и Function & Memory Foreign Function пешниҳод шудааст, ки ба барномаҳо имкон медиҳад, ки бо код ва додаҳо берун аз вақти Java кор кунанд. API-и нав ба шумо имкон медиҳад, ки ба таври муассир ба функсияҳои ғайри JVM занг занед ва ба хотираи идоранашавандаи JVM дастрасӣ пайдо кунед. Масалан, шумо метавонед функсияҳоро аз китобхонаҳои муштараки беруна занг занед ва бе истифодаи JNI ба маълумоти раванд дастрасӣ пайдо кунед.
  • Татбиқи дуюми таҷрибавии мутобиқати намуна дар ибораҳои "гузариш" илова карда шуд, ки имкон медиҳад, ки намунаҳои чандирро дар тамғакоғазҳои "касе" истифода баранд, на арзишҳои дақиқ, ки як қатор арзишҳоро якбора фаро мегиранд, ки қаблан барои онҳо истифода бурдан лозим буд занҷирҳои вазнини ибораҳои "агар... вагарна". Объект o = 123L; Сатри форматшуда = гузариш (o) { case Integer i -> String.format("int %d", i); case Long l -> String.format("long %d", l); case Double d -> String.format("double %f", d); case String s -> String.format("String %s", s); пешфарз -> o.toString(); };
  • Механизми ниҳоӣ ва усулҳои алоқаманди он ба монанди Object.finalize(), Enum.finalize(), Runtime.runFinalization() ва System.runFinalization() бекор карда шудаанд ва дар нашри оянда ғайрифаъол карда мешаванд.
  • Ҷамъоварии партовҳои ZGC (Z Garbage Collector), SerialGC ва ParallelGC такрори сатрҳоро дастгирӣ мекунанд.

Манбаъ: opennet.ru

Илова Эзоҳ