Нашри Java SE 20

Пас аз шаш моҳи таҳия, Oracle платформаи Java SE 20 (Java Platform, Standard Edition 20) -ро баровард, ки лоиҳаи кушодаи OpenJDK-ро ҳамчун татбиқи истинод истифода мебарад. Ба истиснои бартараф кардани баъзе хусусиятҳои кӯҳнашуда, Java SE 20 мутобиқати қафоро бо версияҳои қаблии платформаи Java нигоҳ медорад - аксари лоиҳаҳои қаблан навишташудаи Java ҳангоми иҷро кардани версияи нав бидуни тағирот кор хоҳанд кард. Сохтаҳои насбшавандаи Java SE 20 (JDK, JRE ва Server JRE) барои Linux (x86_64, AArch64), Windows (x86_64) ва macOS (x86_64, AArch64) омода карда шудаанд. Татбиқи истинодҳои Java 20, ки аз ҷониби лоиҳаи OpenJDK таҳия шудааст, манбаи пурра дар доираи иҷозатномаи GPLv2 бо истисноҳои GNU ClassPath барои имкон додани пайвасти динамикӣ ба маҳсулоти тиҷоратӣ мебошад.

Java SE 20 ҳамчун як нашрияи муқаррарии дастгирӣ гурӯҳбандӣ карда мешавад, ки навсозиҳо бояд пеш аз нашри навбатӣ бароварда шаванд. Филиали Дастгирии дарозмуддат (LTS) бояд Java SE 17 бошад, ки то соли 2029 навсозиҳо мегирад. Ёдовар мешавем, ки аз нашри Java 10 оғоз шуда, лоиҳа ба раванди нави рушд гузашт, ки давраи кӯтоҳтари ташаккули релизҳои навро дар назар дорад. Ҳоло дар як филиали устои доимо таҷдидшаванда функсияҳои нав таҳия карда мешаванд, ки тағиротҳои аллакай анҷомёфтаро дар бар мегирад ва аз он филиалҳо ҳар шаш моҳ барои мӯътадил кардани релизҳои нав филиалҳо ҷудо карда мешаванд.

Хусусиятҳои нав дар Java 20 иборатанд аз:

  • Дастгирии пешакӣ барои арзишҳои миқёс мавҷуд аст, ки имкон медиҳад додаҳои тағирнашаванда дар байни риштаҳо мубодила карда шаванд ва маълумот байни риштаҳои кӯдакона (арзишҳо мерос гирифта мешаванд). Арзишҳои фарогир барои иваз кардани механизми тағирёбандаҳои риштаи маҳаллӣ таҳия карда мешаванд ва ҳангоми истифодаи миқдори хеле зиёди риштаҳои виртуалӣ (ҳазорҳо ё миллионҳо риштаҳо) самараноктаранд. Фарқи асосии байни арзишҳои миқёсӣ ва тағирёбандаҳои риштаи маҳаллӣ дар он аст, ки аввалӣ як маротиба навишта мешаванд, дар оянда тағир дода намешаванд ва танҳо дар давоми иҷрои ришта дастрас мемонанд. class Server { ниҳоии статикии ScopedValue CURRENT_USER = нав ScopedValue(); void service(Дархост, Ҷавоби ҷавоб) { var level = (дархост. isAuthorized()? ADMIN : GUEST); var user = Корбари нав (сатҳи); ScopedValue.where(CURRENT_USER, корбар).run(() -> Application.handle(дархост, посух)); } } class DatabaseManager { DBConnection open() { var user = Server.CURRENT_USER.get(); агар (!user.canOpen()) нав InvalidUserException(); баргардонидани DBConnection нав(...); } }
  • Пешнамоиши дуюми қолабҳои сабт илова карда шуд, ки хусусияти мувофиқати намунаро дар Java 16 барои таҳлили арзишҳои синфҳои сабт васеъ мекунад. Масалан: сабти Нуқта(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); } }
  • Чорумин татбиқи пешакии мутобиқати намуна дар изҳороти "гузариш" илова карда шуд, ки ба тамғакоғазҳои "касе" имкон медиҳад, ки на арзишҳои дақиқ, балки намунаҳои чандирро истифода баранд, ки як қатор арзишҳоро якбора фаро гиранд, ки қаблан барои онҳо истифода бурдан лозим буд. занҷирҳои ибораҳои "агар... дигаре". static String formatterPatternSwitch(Object 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(); }; }
  • Татбиқи дуюми пешакии API FFM (Foreign Function & Memory) илова карда шуд, ки ба шумо имкон медиҳад ҳамкории барномаҳои Java бо код ва додаҳои беруна тавассути занги функсияҳо аз китобхонаҳои беруна ва дастрасӣ ба хотираи берун аз JVM ташкил карда шавад.
  • Пешнамоиши дуюми риштаҳои виртуалӣ илова карда шуд, ки онҳо риштаҳои сабук мебошанд, ки навиштан ва нигоҳдории барномаҳои сермаҳсули сермаҳсулро содда мекунанд.
  • API-и дуюми таҷрибавӣ барои параллелизми сохторӣ илова карда шуд, ки коркарди замимаҳои бисёр риштаро тавассути коркарди вазифаҳои сершумор дар риштаҳои гуногун ҳамчун як блоки ягона содда мекунад.
  • Пешнамоиши панҷуми API Vector API илова карда шуд, ки функсияҳоро барои ҳисобҳои векторӣ таъмин мекунад, ки бо истифода аз дастурҳои векторӣ дар протсессори x86_64 ва AArch64 иҷро карда мешаванд ва имкон медиҳанд, ки амалиётҳо дар як вақт ба арзишҳои сершумор (SIMD) татбиқ карда шаванд. Баръакси қобилиятҳое, ки дар компилятори HotSpot JIT барои автовекторизатсияи амалиёти скалярӣ пешбинӣ шудаанд, API-и нав имкон медиҳад, ки векторизатсияро барои коркарди параллелӣ идора карда шавад.

Манбаъ: opennet.ru

Илова Эзоҳ