Алты айлық әзірлеуден кейін 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 үшін алдын ала қолдау ұсынылады (мәндер мұраланған). Ауқымды мәндер ағындық жергілікті айнымалылар механизмін ауыстыруға арналған және виртуалды ағындардың өте үлкен санын (мыңдаған және миллиондаған ағындар) пайдаланған кезде тиімдірек болады. Scoped Values және ағындық жергілікті айнымалылар арасындағы негізгі айырмашылық мынада: біріншісі бір рет жазылады, кейін өзгертілмейді және ағынның орындалу уақытында ғана қолжетімді болып қалады. сынып сервері { соңғы статикалық ScopedValue CURRENT_USER = жаңа ScopedValue(); void service(Сұраныс сұрауы, Жауап жауабы) { var деңгейі = (сұрау. isAuthorized()? ADMIN : GUEST); var user = new User(level); ScopedValue.where(CURRENT_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("қос %f", d); case String s -> String.format("String %s", s); әдепкі -> o.toString(); }; }
- FFM (Foreign Function & Memory) API екінші алдын ала іске асырылуы қосылды, ол Java бағдарламаларына сыртқы кітапханалардан функцияларды шақыру және JVM тыс жадқа қол жеткізу арқылы сыртқы кодпен және деректермен өзара әрекеттесуге мүмкіндік береді.
- Виртуалды ағындардың екінші алдын ала іске қосылуы қосылды, олар жазуды айтарлықтай жеңілдететін және өнімділігі жоғары көп ағынды қолданбаларға қолдау көрсететін жеңіл ағындар.
- Құрылымдық параллелизмге арналған эксперименттік API екінші нұсқасы қосылды, ол әртүрлі ағындарда орындалатын бірнеше тапсырмаларды бір бірлік ретінде қарастыру арқылы көп ағынды қолданбаларды әзірлеуді жеңілдетеді.
- Vector API бесінші алдын ала іске қосылуы қосылды. Бұл API x86_64 және AArch64 процессорының векторлық нұсқаулары арқылы орындалатын векторлық есептеулерге арналған функцияларды қамтамасыз етеді және бірнеше мәндерде (SIMD) бір уақытта жұмыс істеуге мүмкіндік береді. HotSpot JIT компиляторының скалярлық операцияларды автовекторизациясынан айырмашылығы, жаңа API параллель деректерді өңдеу үшін векторизацияны нақты басқаруға мүмкіндік береді.
Ақпарат көзі: opennet.ru
