Java SE 20 шығарылымы

Алты айлық әзірлеуден кейін Oracle анықтамалық іске асыру ретінде OpenJDK ашық бастапқы жобасын пайдаланатын Java SE 20 (Java Platform, Standard Edition 20) платформасын шығарды. Кейбір ескірген мүмкіндіктердің жойылуын қоспағанда, Java SE 20 Java платформасының алдыңғы шығарылымдарымен кері үйлесімділікті сақтайды — бұрын жазылған Java жобаларының көпшілігі жаңа нұсқада іске қосылған кезде өзгеріссіз жұмыс істейді. Java SE 20 (JDK, JRE және Server JRE) орнатуға дайын жинақтары Linux (x86_64, AArch64), Windows (x86_64) және macOS (x86_64, AArch64) үшін дайындалған. OpenJDK жобасы әзірлеген Java 20 анықтамалық іске асыру коммерциялық өнімдермен динамикалық байланыстыруға мүмкіндік беру үшін GNU ClassPath ерекшеліктері бар GPLv2 лицензиясы бойынша толық ашық көзі болып табылады.

Java SE 20 келесі шығарылымға дейін шығарылатын жаңартулары бар тұрақты қолдау шығарылымы ретінде жіктеледі. Ұзақ мерзімді қолдау (LTS) тармағы Java SE 17 болуы керек, ол 2029 жылға дейін жаңартуларды алады. Естеріңізге сала кетейік, Java 10 шығарылымынан бастап жоба жаңа әзірлеу процесіне көшті, бұл жаңа шығарылымдарды қалыптастырудың қысқа циклін білдіреді. Жаңа функционалдылық қазірдің өзінде аяқталған өзгерістерді қамтитын және жаңа шығарылымдарды тұрақтандыру үшін жарты жылда бір рет тармақталып тұратын бір негізгі бөлімде жаңа функционалдылық әзірленуде.

Java 20-дағы жаңа мүмкіндіктер мыналарды қамтиды:

  • Ауыстырылған мәндерге алдын ала қолдау бар, ол өзгермейтін деректерді ағындар арқылы бөлісуге және деректерді еншілес ағындар арасында тиімді алмасуға мүмкіндік береді (мәндер мұраланған). Ауқымды мәндер ағындық жергілікті айнымалылар механизмін ауыстыру үшін әзірленуде және виртуалды ағындардың өте үлкен санын (мыңдаған немесе миллиондаған ағындар) пайдаланған кезде тиімдірек. Scoped Values ​​және ағындық жергілікті айнымалылар арасындағы негізгі айырмашылық біріншісі бір рет жазылады, болашақта өзгертілмейді және ағынның орындалу уақытында ғана қолжетімді болады. сынып сервері { соңғы статикалық ScopedValue CURRENT_USER = жаңа ScopedValue(); void service(Сұраныс сұрауы, Жауап жауабы) { var деңгейі = (сұрау. isAuthorized()? ADMIN : GUEST); var user = new User(level); ScopedValue.where(CURRENT_USER, user).run(() -> Application.handle(сұрау, жауап)); } } class DatabaseManager { DBConnection open() { var user = Server.CURRENT_USER.get(); егер (!user.canOpen()) жаңа InvalidUserException(); жаңа DBConnection қайтару(...); } }
  • Жазба класстарының мәндерін талдау үшін Java 16 жүйесінде енгізілген үлгіні сәйкестендіру мүмкіндігін кеңейтетін жазба үлгілерінің екінші алдын ала қарауы қосылды. Мысалы: жазба Point(int x, int y) {} static void printSum(Object obj) { if (obj instanceof Point p) { int x = px(); int y = py(); System.out.println(x+y); } }
  • «Ауыстыру» мәлімдемелерінде үлгіні сәйкестендірудің төртінші алдын ала іске асырылуы қосылды, бұл «жағдай» белгілеріне дәл мәндерді емес, бір уақытта мәндер сериясын қамтитын икемді үлгілерді пайдалануға мүмкіндік береді, олар үшін бұрын ауыртпалықты пайдалану қажет болды. “if...else” өрнектерінің тізбектері. static String formatterPatternSwitch(Object obj) {қайтару қосқышы (obj) { 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(); }; }
  • FFM (Foreign Function & Memory) API екінші алдын ала іске асырылуы қосылды, ол сыртқы кітапханалардан функцияларды шақыру және JVM-ден тыс жадқа қол жеткізу арқылы Java бағдарламаларының сыртқы кодпен және деректермен өзара әрекеттесуін ұйымдастыруға мүмкіндік береді.
  • Виртуалды ағындардың екінші алдын ала қарауы қосылды, олар жазуды айтарлықтай жеңілдететін және өнімділігі жоғары көп ағынды қолданбаларға қолдау көрсететін жеңіл ағындар.
  • Құрылымдық параллелизмге арналған екінші эксперименттік API қосылды, ол әртүрлі ағындарда орындалатын бірнеше тапсырмаларды бір блок ретінде қарастыру арқылы көп ағынды қолданбаларды әзірлеуді жеңілдетеді.
  • x86_64 және AArch64 процессорларында векторлық нұсқауларды қолдану арқылы орындалатын және бірнеше мәндерге (SIMD) бір уақытта операцияларды қолдануға мүмкіндік беретін векторлық есептеулерге арналған функцияларды қамтамасыз ететін Vector API бесінші алдын ала қарауы қосылды. Скалярлық операцияларды автовекторлау үшін HotSpot JIT компиляторында берілген мүмкіндіктерден айырмашылығы, жаңа API деректерді параллель өңдеу үшін векторизацияны анық басқаруға мүмкіндік береді.

Ақпарат көзі: opennet.ru

пікір қалдыру