Алты айлық әзірлеуден кейін Oracle анықтамалық іске асыру ретінде ашық бастапқы OpenJDK жобасын пайдаланатын Java SE 23 платформасын (Java Platform, Standard Edition 23) шығарды. Кейбір ескірген мүмкіндіктерді алып тастауды қоспағанда, Java SE 23 Java платформасының алдыңғы шығарылымдарымен кері үйлесімділікті сақтайды - бұрын жазылған Java жобаларының көпшілігі жаңа нұсқада іске қосылған кезде өзгеріссіз жұмыс істейді. Java SE 22 (JDK, JRE және Server JRE) орнатуға дайын жинақтары Linux (x86_64, AArch64), Windows (x86_64) және macOS (x86_64, AArch64) үшін дайындалған. OpenJDK жобасымен әзірленген Java 23 анықтамалық іске асыру GPLv2 лицензиясы бойынша толық ашық бастапқы коды болып табылады, GNU ClassPath ерекше жағдайлары коммерциялық өнімдермен динамикалық байланыстыруға мүмкіндік береді.
Java SE 23 тұрақты қолдау шығарылымы ретінде жіктеледі және келесі шығарылымға дейін жаңартуларды алуды жалғастырады. Ұзақ мерзімді қолдау (LTS) тармағы сәйкесінше 21 және 17 жылға дейін жаңартуларды алатын Java SE 2031 немесе Java SE 2029 болуы керек (әдетте 2028 және 2026 жылға дейін қолжетімді). Java SE 8 LTS тармағына кеңейтілген қолдау 2030 жылға дейін, ал Java SE 11 2032 жылға дейін жалғасады.
Java SE-де ұсынылған 23 инновацияның ішінде:
- ZGC (Generation Z қоқыс жинағыш) қоқыс жинағышының генеративті жұмыс режимі әдепкі бойынша қосылып, «ескі» және «жас» нысандарды бөлек өңдеуді пайдаланады, бұл қысқа мерзімде жақында жасалған нысандарды тазалау тиімділігін арттырады. Generational ZGC пайдалану ресурстарды бөлу кезінде орын алу қаупін азайтады, қоқыс жинау кезінде процессор жүктемесін және жадты тұтынуды азайтады. Apache Cassandra 4 көмегімен Generational ZGC сынағы бекітілген үйме өлшемімен өткізу қабілетінің 4 есе ұлғайғанын және тұрақты өткізу қабілетімен үйме өлшемінің төрттен бір есе азайғанын көрсетті.
- JavaDoc HTML және JavaDoc @ тегтерінің қоспасының орнына пайдалануға болатын түсініктемелердегі кодты құжаттау үшін Markdown пайдалануды қолдады.

- Үлгілерді сәйкестендіру механизмдері шаблондардың барлық түрлерінде, «instanceof» операторында және «ауыстырып қосу» блоктарында қарабайыр типтерді (int, байт, char және басқа нысандық емес негізгі типтер) пайдалануды алдын ала қолдау арқылы жетілдірілді. switch (x.getStatus()) { case 0 -> “жарайды”; жағдай 1 -> «ескерту»; жағдай 2 -> «қате»; case int i -> “белгісіз күй: ” + i; } егер (i байт данасы b) { … b … }
- Белгіленген модуль арқылы экспортталған барлық бумаларды бірден импорттау үшін жалғыз «импорттау модулі M» мәлімдемесін пайдалану үшін алдын ала қолдау қосылды. Өзгеріс модульдік кітапханаларды қайта пайдалануды айтарлықтай жеңілдетеді, бума иерархиясындағы орнын анықтамай-ақ кітапханалар мен сыныптарды қосуға мүмкіндік береді. Мысалы, «импорттық java.base модулін» көрсету бұрын бөлек аталу қажет болатын java.base модуліне кіретін барлық 54 буманы импорттайды («import java.io.*», «import java.util.*). » т.б.).
Java класс файлдарын талдау, жасау және түрлендіру үшін Class-File API екінші алдын ала іске асыру ұсынылады. ClassFile cf = ClassFile.of(); ClassModel classModel = cf.parse(байт); byte[] newBytes = cf.build(classModel.thisClass().asSymbol(), classBuilder -> { for (ClassElement ce : classModel) { if (!(ce instance of MethodModel mm && mm.methodName().stringValue(). startsWith("debug"))) { classBuilder.with(ce);
- Vector API сегізінші алдын ала қарауы x86_64 және AArch64 процессорларында векторлық нұсқауларды қолдану арқылы орындалатын векторлық есептеулерге арналған функцияларды қамтамасыз етеді және операцияларды бір уақытта бірнеше мәндерге (SIMD) қолдануға мүмкіндік береді. Скалярлық операцияларды автовекторлау үшін HotSpot JIT компиляторында берілген мүмкіндіктерден айырмашылығы, жаңа API деректерді параллель өңдеу үшін векторизацияны нақты басқаруға мүмкіндік береді.
- Таңдалған тіл негізінде мәтінді пішімдеу, көрсету және оқу үшін java.io.Console сыныбына пішім, printf, readPassword және readLine әдістері қосылды. System.console().printf(Locale.FRANCE, "%1$tY-%1$tB-%1$te %1$tA", жаңа Күн()) 2024 жылдың 16 мамыры
- Қолданыстағы кірістірілген аралық операциялар қажетті деректерді түрлендіру үшін жеткіліксіз болған жағдайларда пайдалы болуы мүмкін жеке аралық операцияларды анықтауды қолдайтын кеңейтілген Stream API екінші алдын ала қарау іске асырылуы қосылды. Жергілікті өңдегіштер пайдаланушы көрсеткен өңдегішті қолдану арқылы ағын элементтерін өңдейтін Stream::gather(Gatherer) жаңа аралық операциясы арқылы қосылады. jshell> Stream.of(1,2,3,4,5,6,7,8,9).gather(жаңа WindowFixed(3)).toList() $1 ==> [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
- Жалпы/статикалық мәлімдемелерден, дәлелдер массивінен және сынып декларациясымен байланыстырылған басқа нысандардан бас тарта алатын "негізгі" әдістің жасырын түрде жарияланған сыныптардың және аталмаған даналарының үшінші алдын ала іске асырылуы қосылды. // жалпыға ортақ класс болды HelloWorld { public static void main(String[] args) { System.out.println("Сәлем әлем!"); } } // енді main() { System.out.println("Сәлем, Әлем!"); }
- Конструкторларға super(...) шақыру алдында өрнектерді көрсетуге мүмкіндік беретін мүмкіндіктің екінші алдын ала қарауы қосылды, егер бұл өрнектер конструктор жасаған данаға сілтеме жасамаса, мұраланған сыныптың конструкторынан ата-аналық сыныптың конструкторын анық шақыру үшін пайдаланылады. class Outer { void hello() { System.out.println("Сәлем"); } class Inner { Inner() { hello(); супер(); } } }
- Ауыстырылған мәндердің үшінші алдын ала қарау іске асырылуы қосылды, бұл өзгермейтін деректерді ағындар арқылы бөлісуге және деректерді еншілес ағындар арасында тиімді алмасуға мүмкіндік береді (мәндер мұраланған). Ауқымды мәндер ағындық жергілікті айнымалылар механизмін ауыстыру үшін әзірленуде және виртуалды ағындардың өте үлкен санын (мыңдаған немесе миллиондаған ағындар) пайдаланған кезде тиімдірек. Scoped Values және ағындық жергілікті айнымалылар арасындағы негізгі айырмашылық біріншісі бір рет жазылады, болашақта өзгертілмейді және ағынның орындалу уақытында ғана қолжетімді болып қалады.
- Тестілеу үшін Structured Concurrency API үшінші алдын ала қарау ұсынылды, ол бір блок ретінде әртүрлі ағындарда орындалатын бірнеше тапсырмаларды өңдеу арқылы көп ағынды қолданбаларды әзірлеуді жеңілдетеді.
- Sun.misc.Unsafe сыныбы қамтамасыз ететін сыртқы жадқа кіру әдістері (JVM сыртында) ескірген және жоюға жоспарланған. Үймеден тыс жадқа қол жеткізу және сыртқы кодпен әрекеттесу үшін VarHandle API және FFM (Foreign Function & Memory) API пайдалану ұсынылады.
Сонымен қатар, JavaFX 23 графикалық интерфейсі бар қосымшаларды құру платформасына жаңартудың жариялануын және GraalVM JIT компиляторының негізгі Oracle JDK 23 құрамына қосылғанын атап өтуге болады.
Сондай-ақ JavaScript (Node.js), Python, Ruby, R, JVM (Java, Scala, Clojure, Kotlin) үшін кез келген тілдерде және тілдерде жұмыс істейтін қолданбаларды қолдайтын GraalVM әмбебап виртуалды машинасының жаңа шығарылымы ұсынылған. ол үшін LLVM бит кодын жасауға болады (C , C++, Rust). JDK 23 қолдауымен қатар, жаңа нұсқа жадты тұтынуды және орындалатын кодтың өлшемін оңтайландырады және JIT компиляциясының көмегімен Python мен WebAssembly Java кодына ендіру құралдарына толық қолдау көрсетеді.
Ақпарат көзі: opennet.ru

