Издање Јава СЕ 17

Након шест месеци развоја, Орацле је објавио Јава СЕ 17 (Јава платформа, стандардно издање 17), који користи ОпенЈДК опен соурце пројекат као референтну имплементацију. Са изузетком уклањања неких застарелих функција, Јава СЕ 17 одржава компатибилност уназад са претходним издањима Јава платформе – већина претходно написаних Јава пројеката ће радити без промена када се покрене под новом верзијом. Верзије Јава СЕ 17 спремне за инсталацију (ЈДК, ЈРЕ и Сервер ЈРЕ) припремљене су за Линук (к86_64, ААрцх64), Виндовс (к86_64) и мацОС (к86_64, ААрцх64). Развијена од стране ОпенЈДК пројекта, Јава 17 референтна имплементација је потпуно отвореног кода под ГПЛв2 лиценцом, са ГНУ ЦлассПатх изузецима који дозвољавају динамичко повезивање са комерцијалним производима.

Јава СЕ 17 је класификована као издање за дугорочну подршку (ЛТС), које ће наставити да добија ажурирања до 2029. године. Ажурирања за претходно издање Јава 16 прекретница су обустављена. Претходна ЛТС грана Јаве 11 биће подржана до 2026. Следеће ЛТС издање је заказано за септембар 2024. Подсетимо, почевши од издавања Јаве 10, пројекат је прешао на нови развојни процес, подразумевајући краћи циклус за формирање нових издања. Нова функционалност је сада развијена у једној стално ажурираној главној грани, која укључује готове промене и из које се гране гранају сваких шест месеци како би се стабилизовала нова издања.

Нове функције у Јави 17 укључују:

  • Предложена је експериментална имплементација подударања шаблона у изразима „свитцх“, која омогућава коришћење не тачних вредности у ознакама „цасе“, већ флексибилних шаблона који покривају низ вредности одједном, за које је раније било потребно користити гломазне ланци израза „ако...друго“. Поред тога, „свитцх“ има могућност да рукује НУЛЛ вредностима. Објекат о = 123Л; Стринг форматтед = свитцх (о) { цасе Интегер и -> Стринг.формат("инт %д", и); цасе Лонг л -> Стринг.формат("лонг %д", л); цасе Доубле д -> Стринг.формат("доубле %ф", д); цасе Стринг с -> Стринг.формат("Стринг %с", с); дефаулт -> о.тоСтринг(); };
  • Стабилизована подршка за запечаћене класе и интерфејсе, које друге класе и интерфејси не могу да користе за наслеђивање, проширење или поништавање имплементације. Запечаћене класе такође пружају декларативнији начин ограничавања употребе суперкласе од модификатора приступа, на основу експлицитног навођења поткласа дозвољених за проширење. пакет цом.екампле.геометри; јавна затворена класа Схапе дозвољава цом.екампле.полар.Цирцле, цом.екампле.куад.Рецтангле, цом.екампле.куад.симпле.Скуаре {…}
  • Предложен је други преглед Векторског АПИ-ја, који обезбеђује функције за векторске прорачуне које се извршавају помоћу векторских инструкција на к86_64 и ААрцх64 процесорима и омогућавају да се операције истовремено примењују на више вредности (СИМД). За разлику од могућности које пружа ХотСпот ЈИТ компајлер за аутоматску векторизацију скаларних операција, нови АПИ омогућава експлицитну контролу векторизације за паралелну обраду података.
  • Додан је преглед страног АПИ-ја за функције и меморију, који омогућава апликацијама интеракцију са кодом и подацима ван Јава рунтиме-а. Нови АПИ вам омогућава да ефикасно позивате функције које нису ЈВМ и приступате меморији којом не управља ЈВМ. На пример, можете позвати функције из екстерних дељених библиотека и приступити подацима процеса без употребе ЈНИ.
  • МацОС механизам за рендеровање који покреће Јава 2Д АПИ, који заузврат покреће Свинг АПИ, прилагођен је да користи Метал графички АПИ. МацОС платформа и даље подразумевано користи ОпенГЛ, а омогућавање подршке за Метал захтева подешавање „-Дсун.јава2д.метал=труе“ и најмање покретање мацОС-а 10.14.к.
  • Додан порт за мацОС/ААрцх64 платформу (Аппле рачунари засновани на новим Аппле М1 чиповима). Посебна карактеристика порта је подршка за механизам заштите меморије В^Кс (Врите КСОР Екецуте), у коме се меморијским страницама не може истовремено приступити за писање и извршавање. (код се може извршити само након што је уписивање онемогућено, а уписивање на меморијску страницу је могуће само након што је извршење онемогућено).
  • Враћено на коришћење само стрицтфп семантике за изразе са покретним зарезом. Подршка за „подразумевану“ семантику, која је доступна од издавања Јаве 1.2, је укинута, укључујући поједностављења за рад на системима са веома старим к87 математичким копроцесорима (након појаве ССЕ2 инструкција, нестала је потреба за додатном семантиком).
  • Имплементирани су нови типови интерфејса за генераторе псеудослучајних бројева, а имплементирани су и додатни алгоритми за боље генерисање случајних бројева. Апликацијама се даје могућност да изаберу алгоритам за генерисање псеудослучајних бројева. Побољшана подршка за генерисање насумичних токова објеката.
  • Наметнута стриктна енкапсулација свих ЈДК интерних делова, са изузетком критичних АПИ-ја као што је сун.мисц.Унсафе. Строга енкапсулација блокира покушаје кода да приступи интерним класама, методама и пољима. Раније је режим строге енкапсулације могао бити онемогућен коришћењем опције „--иллегал-аццесс=пермит“, али је ово сада застарело. Апликације које захтевају приступ интерним класама, методама и пољима треба да их експлицитно дефинишу помоћу опције --адд-опенс или атрибута Адд-Опенс у датотеци манифеста.
  • Апликацијама је дата могућност да дефинишу филтере десериализације података, који могу бити контекстуално осетљиви и динамички одабрани на основу специфичних операција десериализације. Наведени филтери су применљиви на целу виртуелну машину (ЈВМ-виде), тј. покривају не само саму апликацију, већ и библиотеке трећих страна које се користе у апликацији.
  • Свинг је додао методу јавак.свинг.филецхоосер.ФилеСистемВиев.гетСистемИцон за учитавање великих икона ради побољшања корисничког интерфејса на екранима са високим ДПИ.
  • јава.нет.ДатаграмСоцкет АПИ пружа подршку за повезивање са вишеструким групама без потребе за посебним јава.нет.МултицастСоцкет АПИ-јем.
  • ИГВ (Идеал Грапх Висуализер) услужни програм је побољшан, пружајући интерактивну визуализацију средњег приказа кода у ХотСпот ВМ Ц2 ЈИТ компајлеру.
  • У ЈаваДоц-у, по аналогији са јавац компајлером, када се појави грешка, сада се означава број проблематичне линије у изворној датотеци и локација грешке.
  • Додато својство нативе.енцодинг, које одражава име системског кодирања знакова (УТФ-8, кои8-р, цп1251, итд.).
  • Додан је интерфејс јава.тиме.ИнстантСоурце, који омогућава манипулацију временом без позивања на временску зону.
  • Додат јава.утил.ХекФормат АПИ за претварање у хексадецимални приказ и обрнуто.
  • Компајлеру је додат режим црне рупе, који онемогућава операције елиминације мртвог кода, које се могу користити приликом спровођења тестова перформанси.
  • Додата опција „-Кслог:асинц“ у Рунтиме за снимање дневника у асинхроном режиму.
  • Приликом успостављања безбедних веза, ТЛС 1.3 је подразумевано омогућен (раније је коришћен ТЛС 1.2).
  • Претходно декларисани застарели Апплет АПИ (јава.апплет.Апплет*, јавак.свинг.ЈАпплет), који је коришћен за покретање Јава апликација у претраживачу, премештен је у категорију планираних за уклањање (изгубио је релевантност након престанка подршке за Јава додатак за прегледаче).
  • Сецурити Манагер, који је одавно изгубио на важности и испоставило се да није тражен након престанка подршке за додатак претраживача, пребачен је у категорију оних који су заказани за уклањање.
  • Уклоњен је механизам РМИ активације, који је застарео, гурнут у категорију опција у Јави 8 и скоро се никада не користи у савременој пракси.
  • Експериментални компајлер који подржава ЈИТ (јуст-ин-тиме) за динамичку компилацију Јава кода за ХотСпот ЈВМ, као и режим антиципативне компилације (АОТ, унапред) класа у машински код пре покретања виртуелне машине , је уклоњен из СДК-а. Компајлер је написан на Јави и заснован је на раду Граал пројекта. Напомиње се да одржавање компајлера захтева много рада, што није оправдано када нема потражње програмера.

Извор: опеннет.ру

Додај коментар