Пас аз шаш моҳи таҳия, 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-ро дар бар мегирад, ки сервери оддии HTTP-ро барои хидматрасонии мундариҷаи статикӣ амалӣ мекунад (CGI ва коркардкунандагони ба сервлет дастгирӣ карда намешавад). Сервери дарунсохташудаи HTTP барои сарбории истеҳсолӣ оптимизатсия карда нашудааст ва назорати дастрасӣ ё аутентификатсияро дастгирӣ намекунад, зеро он асосан барои истифода ҳангоми таҳияи лоиҳаҳои прототипсозӣ, ислоҳкунӣ ва санҷиш пешбинӣ шудааст.
- JavaDoc ҳоло теги @snippet-ро барои ворид кардани мисолҳои корӣ ва порчаҳои код дар ҳуҷҷатҳои API дастгирӣ мекунад, ки мумкин аст бо абзорҳо барои тасдиқ, равшансозии синтаксис ва ҳамгироии IDE истифода шавад.
- API-и java.lang.reflect (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 дастрасӣ пайдо кард.
- Татбиқи дуюми таҷрибавии мутобиқати намуна дар ифодаҳои коммутаторӣ илова карда шуд, ки ба тамғакоғазҳои парванда имкон медиҳад, ки намунаҳои чандирро истифода баранд, на арзишҳои дақиқ, ки қаблан занҷирҳои вазнини ифодаҳои if...else талаб мекарданд. Объект 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
