ИзданиС на Java SE 23 и OpenJDK 23

Π‘Π»Π΅Π΄ ΡˆΠ΅ΡΡ‚ΠΌΠ΅ΡΠ΅Ρ‡Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°, компания Oracle ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Java SE 23 (Java Platform, Standard Edition 23), чиято Π΅Ρ‚Π°Π»ΠΎΠ½Π½Π° рСализация Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΡŠΡ‚ OpenJDK с ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ ΠΊΠΎΠ΄. Π‘ ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΡ€Π΅ΠΌΠ°Ρ…Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° някои остарСли Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Java SE 23 Π·Π°ΠΏΠ°Π·Π²Π° ΠΎΠ±Ρ€Π°Ρ‚Π½Π°Ρ‚Π° ΡΡŠΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ с ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½ΠΈΡ‚Π΅ вСрсии Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Java β€” ΠΏΠΎΠ²Π΅Ρ‡Π΅Ρ‚ΠΎ ΠΎΡ‚ Π²Π΅Ρ‡Π΅ написанитС Java ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ Ρ‰Π΅ работят Π±Π΅Π· промяна ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π° с Π½ΠΎΠ²Π°Ρ‚Π° вСрсия. Π“ΠΎΡ‚ΠΎΠ²ΠΈ Π·Π° инсталиранС вСрсии Π½Π° Java SE 22 (JDK, JRE ΠΈ Server JRE) са ΠΏΠΎΠ΄Π³ΠΎΡ‚Π²Π΅Π½ΠΈ Π·Π° Linux (x86_64, AArch64), Windows (x86_64) ΠΈ macOS (x86_64, AArch64). Π•Ρ‚Π°Π»ΠΎΠ½Π½Π°Ρ‚Π° рСализация Java 23, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π΅Π½Π° Π² Ρ€Π°ΠΌΠΊΠΈΡ‚Π΅ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° OpenJDK, Π΅ напълно ΠΎΡ‚Π²ΠΎΡ€Π΅Π½Π° ΠΏΠΎΠ΄ лицСнзия GPLv2 с ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π½Π° GNU ClassPath, Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π²Π°Ρ‰ΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π½ΠΎ ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅ с Ρ‚ΡŠΡ€Π³ΠΎΠ²ΡΠΊΠΈ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈ.

Java SE 23 Π΅ отнСсСн към катСгорията издания с ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ срок Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°, обновлСния Π·Π° ΠΊΠΎΠΈΡ‚ΠΎ Ρ‰Π΅ ΠΈΠ·Π»ΠΈΠ·Π°Ρ‚ Π΄ΠΎ слСдващото ΠΈΠ·Π΄Π°Π½ΠΈΠ΅. Π—Π° Π΄ΡŠΠ»Π³ΠΎΡΡ€ΠΎΡ‡Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° (LTS) слСдва Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Java SE 21 ΠΈΠ»ΠΈ Java SE 17, обновлСния Π·Π° ΠΊΠΎΠΈΡ‚ΠΎ Ρ‰Π΅ ΠΈΠ·Π»ΠΈΠ·Π°Ρ‚ Π΄ΠΎ 2031 ΠΈ 2029 Π³ΠΎΠ΄ΠΈΠ½Π° ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΎ (ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΈΡ‚Π΅ β€” Π΄ΠΎ 2028 ΠΈ 2026 Π³ΠΎΠ΄ΠΈΠ½Π°). Π Π°Π·ΡˆΠΈΡ€Π΅Π½Π°Ρ‚Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° LTS ΠΊΠ»ΠΎΠ½Π° Java SE 8 Ρ‰Π΅ ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠΈ Π΄ΠΎ 2030 Π³ΠΎΠ΄ΠΈΠ½Π°, Π° Java SE 11 β€” Π΄ΠΎ 2032 Π³ΠΎΠ΄ΠΈΠ½Π°.

Π‘Ρ€Π΅Π΄ новоститС, ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈ Π² Java SE 23:

  • Π’ΠΊΠ»ΡŽΡ‡Π΅Π½ Π΅ ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ гСнСративният Ρ€Π΅ΠΆΠΈΠΌ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° Π½Π° сборщика Π½Π° Π±ΠΎΠΊΠ»ΡƒΠΊ ZGC (Generational Z Garbage Collector), ΠΊΠΎΠΉΡ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΎΡ‚Π΄Π΅Π»Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° "стари" ΠΈ "ΠΌΠ»Π°Π΄ΠΈ" ΠΎΠ±Π΅ΠΊΡ‚ΠΈ, ΠΊΠΎΠ΅Ρ‚ΠΎ повишава СфСктивността Π½Π° почистванСто Π½Π° наскоро създадСни ΠΎΠ±Π΅ΠΊΡ‚ΠΈ с малък ΠΆΠΈΠ·Π½Π΅Π½ Ρ†ΠΈΠΊΡŠΠ». Π£ΠΏΠΎΡ‚Ρ€Π΅Π±Π°Ρ‚Π° Π½Π° Generational ZGC намалява рисковСтС ΠΎΡ‚ спиранС ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° разпрСдСлянС Π½Π° рСсурси, сниТава Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° CPU ΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚ ΠΏΡ€ΠΈ ΡΡŠΠ±ΠΈΡ€Π°Π½Π΅ Π½Π° Π±ΠΎΠΊΠ»ΡƒΠΊΠ°. ВСстовСтС Π½Π° Generational ZGC с Apache Cassandra 4 ΠΏΠΎΠΊΠ°Π·Π°Ρ…Π° ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π½Π° пропускната способност Ρ‡Π΅Ρ‚ΠΈΡ€ΠΈΠΊΡ€Π°Ρ‚Π½ΠΎ ΠΏΡ€ΠΈ фиксиран Ρ€Π°Π·ΠΌΠ΅Ρ€ Π½Π° ΠΊΡƒΠΏΡ‡ΠΈΠ½Π°Ρ‚Π° (heap) ΠΈ Π½Π°ΠΌΠ°Π»Π΅Π½ΠΈΠ΅ Π½Π° Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π½Π° ΠΊΡƒΠΏΡ‡ΠΈΠ½Π°Ρ‚Π° с Π΅Π΄Π½Π° Ρ‡Π΅Ρ‚Π²ΡŠΡ€Ρ‚ ΠΏΡ€ΠΈ Π½Π΅ΠΏΡ€ΠΎΠΌΠ΅Π½Π΅Π½Π° пропускна способност.
  • Π’ JavaDoc Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Markdown синтаксис Π·Π° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΊΠΎΠ΄ Π² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΡ‚Π΅, ΠΊΠΎΠΉΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ вмСсто смСсицата ΠΎΡ‚ HTML ΠΈ @-Ρ‚Π΅Π³ΠΎΠ²Π΅Ρ‚Π΅ Π½Π° JavaDoc.
    ИзданиС на Java SE 23 и OpenJDK 23
  • ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΈΡ‚Π΅ Π·Π° сопоставянС с ΠΎΠ±Ρ€Π°Π·Π΅Ρ† са Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈ с ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½ΠΈ Ρ‚ΠΈΠΏΠΎΠ²Π΅ (int, byte, char ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ основни Ρ‚ΠΈΠΏΠΎΠ²Π΅, ΠΊΠΎΠΈΡ‚ΠΎ Π½Π΅ са ΠΎΠ±Π΅ΠΊΡ‚ΠΈ) Π² всички Π²ΠΈΠ΄ΠΎΠ²Π΅ шаблони, Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° β€žinstanceofβ€œ ΠΈ Π² Π±Π»ΠΎΠΊΠΎΠ²Π΅Ρ‚Π΅ β€žswitchβ€œ. switch (x.getStatus()) { case 0 -> β€žΠΎΠΊΠ΅ΠΉβ€œ; case 1 -> β€žΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅β€œ; case 2 -> β€žΠ³Ρ€Π΅ΡˆΠΊΠ°β€œ; case int i -> β€žΠ½Π΅ΠΈΠ·Π²Π΅ΡΡ‚Π΅Π½ статус: β€œ + i; } if (i instanceof byte b) { … b … }
  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΈΠ·Ρ€Π°Π·Π° β€žimport module Mβ€œ Π·Π° Π΅Π΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π΅Π½ ΠΈΠΌΠΏΠΎΡ€Ρ‚ Π½Π° всички ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ, Скспортирани ΠΎΡ‚ посочСния ΠΌΠΎΠ΄ΡƒΠ». Π’ΠΎΠ²Π° Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ опростява ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΡ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΌΠΎΠ΄ΡƒΠ»Π½ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, позволявайки Π²ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅ Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈ класовС Π±Π΅Π· нСобходимост ΠΎΡ‚ опрСдСлянС Π½Π° тяхното мСстополоТСниС Π² йСрархията Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈΡ‚Π΅. НапримСр, ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅Ρ‚ΠΎ β€žimport module java.baseβ€œ Ρ‰Π΅ Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€Π°Π½Π΅ Π½Π° всички 54 ΠΏΠ°ΠΊΠ΅Ρ‚Π°, Π²ΠΊΠ»ΡŽΡ‡Π²Π°Ρ‰ΠΈ сС Π² ΠΌΠΎΠ΄ΡƒΠ»Π° java.base, ΠΊΠΎΠΈΡ‚ΠΎ ΠΏΠΎ-Ρ€Π°Π½ΠΎ Ρ‚Ρ€ΡΠ±Π²Π°ΡˆΠ΅ Π΄Π° сС спомСнават ΠΏΠΎΠΎΡ‚Π΄Π΅Π»Π½ΠΎ (β€žimport java.io.*β€œ, β€žimport java.util.*β€œ ΠΈ Ρ‚.Π½.).

    ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π° Π΅ Π²Ρ‚ΠΎΡ€Π° ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»Π½Π° рСализация Π½Π° API Class-File Π·Π° Π°Π½Π°Π»ΠΈΠ·, Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½Π΅ ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π°Π½Π΅ Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ с Java класовС. ClassFile cf = ClassFile.of(); ClassModel classModel = cf.parse(bytes); byte[] newBytes = cf.build(classModel.thisClass().asSymbol(), classBuilder -> { for (ClassElement ce : classModel) { if (!(ce instanceof MethodModel mm && mm.methodName().stringValue().startsWith(β€ždebugβ€œ))) { classBuilder.with(ce); } } });

  • ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π° Π΅ осма ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»Π½Π° рСализация Π½Π° API Vector, прСдоставяща Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π·Π° Π²Π΅ΠΊΡ‚ΠΎΡ€Π½ΠΈ прСсмятания, ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Π½ΠΈ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Π²Π΅ΠΊΡ‚ΠΎΡ€Π½ΠΈ инструкции Π½Π° процСсоритС x86_64 ΠΈ AArch64, позволяващи Π΅Π΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΏΡ€ΠΈΠ»Π°Π³Π°Π½Π΅ Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ към няколко стойности (SIMD). Π’ противовСс Π½Π° Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈΡ‚Π΅ Π·Π° автовСкторизация Π½Π° скалярни ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π½ΠΈ Π² JIT ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€Π° HotSpot, новият API прСдоставя Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° явно ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° вСкторизацията Π·Π° ΠΏΠ°Ρ€Π°Π»Π΅Π»Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° Π΄Π°Π½Π½ΠΈ.
  • Π’ класа java.io.Console са Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΡ‚Π΅ format, printf, readPassword ΠΈ readLine Π·Π° Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€Π°Π½Π΅, ΠΈΠ·Π²Π΅ΠΆΠ΄Π°Π½Π΅ ΠΈ Ρ‡Π΅Ρ‚Π΅Π½Π΅ Π½Π° тСкст с ΠΎΠ³Π»Π΅Π΄ Π½Π° ΠΈΠ·Π±Ρ€Π°Π½Π°Ρ‚Π° локализация. System.console().printf(Locale.FRANCE, β€ž%1$tY-%1$tB-%1$te %1$tAβ€œ, new Date()) 2024-ΠΌΠ°ΠΈ-16 Ρ‡Π΅Ρ‚Π²ΡŠΡ€Ρ‚ΡŠΠΊ
  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π²Ρ‚ΠΎΡ€Π° ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»Π½Π° вСрсия Π½Π° Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΎΡ‚ΠΎ API Π½Π° Stream, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° собствСни ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π½ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΏΠΎΠ»Π΅Π·Π½ΠΈ Π² случаи, ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰ΠΈΡ‚Π΅ Π²Π³Ρ€Π°Π΄Π΅Π½ΠΈ ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π½ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π΅ са Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΈ Π·Π° ΠΆΠ΅Π»Π°Π½ΠΎΡ‚ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ. БобствСнитС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈ сС ΡΠ²ΡŠΡ€Π·Π²Π°Ρ‚ Ρ‡Ρ€Π΅Π· Π½ΠΎΠ²Π°Ρ‚Π° ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π½Π° опСрация Stream::gather(Gatherer), която ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π° Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ‚Π΅ Π½Π° ΠΏΠΎΡ‚ΠΎΠΊΠ°, ΠΏΡ€ΠΈΠ»Π°Π³Π°Ρ‰Π° зададСния ΠΎΡ‚ потрСбитСля ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ. jshell> Stream.of(1,2,3,4,5,6,7,8,9).gather(new WindowFixed(3)).toList() $1 ==> [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Ρ‚Ρ€Π΅Ρ‚Π° ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»Π½Π° вСрсия Π½Π° нСявно Π΄Π΅ΠΊΠ»Π°Ρ€ΠΈΡ€Π°Π½ΠΈΡ‚Π΅ класовС ΠΈ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΈ инстанции Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° β€žmainβ€œ, Π² ΠΊΠΎΠΈΡ‚ΠΎ Π΅ възмоТно Π΄Π° сС заобиколят Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ†ΠΈΠΈ public/static, ΠΏΡ€Π΅Π΄Π°Π²Π°Π½Π΅ Π½Π° масив ΠΎΡ‚ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΈ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ субСкти, ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ с Π΄Π΅ΠΊΠ»Π°Ρ€ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° клас. // ΠΏΡ€Π΅Π΄ΠΈ public class HelloWorld { public static void main(String[] args) { System.out.println("Hello world!"); } } // сСга Π΅ възмоТно void main() { System.out.println("Hello, World!"); }
  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π²Ρ‚ΠΎΡ€Π° ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»Π½Π° вСрсия Π½Π° Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚Ρ‚Π° Π΄Π° сС ΡƒΠΊΠ°Π·Π²Π°Ρ‚ ΠΈΠ·Ρ€Π°Π·ΠΈ Π² конструкторитС ΠΏΡ€Π΅Π΄ΠΈ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° super(...), ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ Π·Π° явното ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° конструктора Π½Π° родитСлския клас ΠΎΡ‚ конструктора Π½Π° наслСдяван клас, Π°ΠΊΠΎ Ρ‚Π΅Π·ΠΈ ΠΈΠ·Ρ€Π°Π·ΠΈ Π½Π΅ сС отнасят към създадСния ΠΎΡ‚ конструктора инстанция. class Outer { void hello() { System.out.println("Hello"); } class Inner { Inner() { hello(); super(); } } }
  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Ρ‚Ρ€Π΅Ρ‚Π° ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»Π½Π° вСрсия Π½Π° ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΡ‚Π΅ стойности (Scoped Values), позволяващи ΡΡŠΠ²ΠΌΠ΅ΡΡ‚Π½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° нСизмСняСми Π΄Π°Π½Π½ΠΈ Π² ΠΏΠΎΡ‚ΠΎΡ†ΠΈΡ‚Π΅ ΠΈ Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π΅Π½ ΠΎΠ±ΠΌΠ΅Π½ Π½Π° Π΄Π°Π½Π½ΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ Π΄ΡŠΡ‰Π΅Ρ€Π½ΠΈ ΠΏΠΎΡ‚ΠΎΡ†ΠΈ (стойноститС сС наслСдяват). Scoped Values сС Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‚ Π·Π° замяна Π½Π° ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° Π½Π° Π»ΠΎΠΊΠ°Π»Π½ΠΈΡ‚Π΅ Π·Π° ΠΏΠΎΡ‚ΠΎΠΊΠ° ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ (thread-local variables) ΠΈ са ΠΏΠΎ-Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΈ ΠΏΡ€ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΌΠ½ΠΎΠ³ΠΎ голям Π±Ρ€ΠΎΠΉ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½ΠΈ ΠΏΠΎΡ‚ΠΎΡ†ΠΈ (хиляди ΠΈ ΠΌΠΈΠ»ΠΈΠΎΠ½ΠΈ ΠΏΠΎΡ‚ΠΎΡ†ΠΈ). ΠžΡΠ½ΠΎΠ²Π½Π°Ρ‚Π° Ρ€Π°Π·Π»ΠΈΠΊΠ° ΠΌΠ΅ΠΆΠ΄Ρƒ Scoped Values ΠΈ Π»ΠΎΠΊΠ°Π»Π½ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π·Π° ΠΏΠΎΡ‚ΠΎΠΊΠ° Π΅, Ρ‡Π΅ ΠΏΡŠΡ€Π²ΠΈΡ‚Π΅ сС записват Π΅Π΄ΠΈΠ½ ΠΏΡŠΡ‚, слСд ΠΊΠΎΠ΅Ρ‚ΠΎ Π½Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ промСняни ΠΈ остават Π΄ΠΎΡΡ‚ΡŠΠΏΠ½ΠΈ само Π·Π° Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π½Π° изпълнСниС Π½Π° ΠΏΠΎΡ‚ΠΎΠΊΠ°.
  • ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ Π·Π° тСстванС трСтият ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»Π΅Π½ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π½Π° API Π·Π° структурирана конкурСнтност (Structured Concurrency), ΠΊΠΎΠΉΡ‚ΠΎ опростява Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π½Π° ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΈ прилоТСния, ΠΊΠ°Ρ‚ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π° няколко Π·Π°Π΄Π°Ρ‡ΠΈ, изпълнявани Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΏΠΎΡ‚ΠΎΡ†ΠΈ, ΠΊΠ°Ρ‚ΠΎ Π΅Π΄ΠΈΠ½Π΅Π½ Π±Π»ΠΎΠΊ.
  • ОбявСни Π·Π° остарСли ΠΈ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄Π΅Π½ΠΈ Π·Π° ΠΏΡ€Π΅ΠΌΠ°Ρ…Π²Π°Π½Π΅ са ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΡ‚Π΅ Π·Π° Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ външна ΠΏΠ°ΠΌΠ΅Ρ‚ (извън JVM), прСдоставяни ΠΎΡ‚ класа sun.misc.Unsafe. Π—Π° Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ ΠΏΠ°ΠΌΠ΅Ρ‚ извън ΠΊΡƒΠΏΡ‡ΠΈΠ½Π°Ρ‚Π° (off-heap) ΠΈ взаимодСйствиС с външСн ΠΊΠΎΠ΄ сС ΠΏΡ€Π΅ΠΏΠΎΡ€ΡŠΡ‡Π²Π° Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ API VarHandle ΠΈ API FFM (Foreign Function & Memory).

Π”ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΎΡ‚Π±Π΅Π»Π΅ΠΆΠΈ ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π·Π° създаванС Π½Π° прилоТСния с Π³Ρ€Π°Ρ„ΠΈΡ‡Π΅Π½ интСрфСйс JavaFX 23 ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° JIT ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€Π° GraalVM Π² основния ΡΡŠΡΡ‚Π°Π² Π½Π° Oracle JDK 23.

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π΅Π½ Π΅ ΠΈ новия Ρ€Π΅Π»ΠΈΠ· Π½Π° унивСрсалната Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½Π° машина GraalVM, която ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° стартиранС Π½Π° прилоТСния Π½Π° JavaScript (Node.js), Python, Ruby, R, всякакви Π΅Π·ΠΈΡ†ΠΈ Π·Π° JVM (Java, Scala, Clojure, Kotlin) ΠΈ Π΅Π·ΠΈΡ†ΠΈ, Π·Π° ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π° Π±ΠΈΡ‚ΠΊΠΎΠ΄ LLVM (C, C++, Rust). ОсвСн ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°Ρ‚Π° Π½Π° JDK 23, Π² Π½ΠΎΠ²Π°Ρ‚Π° вСрсия Π΅ ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½Π° оптимизация Π½Π° ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚ ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π½Π° изпълняСмия ΠΊΠΎΠ΄, Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π° Π΅ пълна ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° инструмСнти Π·Π° Π²Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° Python ΠΈ WebAssembly Π² Java ΠΊΠΎΠ΄ с ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° JIT компилация.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster