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

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

Java SE 15 тұрақты қолдау шығарылымы ретінде жіктеледі және келесі шығарылымға дейін жаңартуларды алуды жалғастырады. Ұзақ мерзімді қолдау (LTS) тармағы Java SE 11 болуы керек, ол 2026 жылға дейін жаңартуларды алуды жалғастырады. Java 8 алдыңғы LTS тармағына 2020 жылдың желтоқсанына дейін қолдау көрсетіледі. Келесі LTS шығарылымы 2021 жылдың қыркүйегіне жоспарланған. Естеріңізге сала кетейік, Java 10 шығарылымынан бастап жоба жаңа шығарылымдарды қалыптастырудың қысқа циклін білдіретін жаңа әзірлеу процесіне көшті. Жаңа функционалдылық енді бір үнемі жаңартылып отыратын негізгі бөлімде әзірленді, ол дайын өзгерістерді қамтиды және жаңа шығарылымдарды тұрақтандыру үшін филиалдар жарты жылда бір рет тармақталады.

Қайдан инновациялар Java 15 болады белгі:

  • Кірістірілген EdDSA (Edwards-Curve Digital Signature Algorithm) цифрлық қолтаңбаны жасау алгоритмін қолдау RFC 8032). Ұсынылған EdDSA енгізуі аппараттық платформаларға тәуелді емес, бүйірлік арналық шабуылдардан қорғалған (барлық есептеулердің тұрақты уақыты қамтамасыз етіледі) және бірдей қорғаныс деңгейімен Си тілінде жазылған қолданыстағы ECDSA іске асыруға қарағанда өнімділігі жылдамырақ. Мысалы, 126-биттік кілті бар эллиптикалық қисық сызығын пайдаланатын EdDSA secp256r1 эллиптикалық қисығы және 128-биттік кілті бар ECDSA-ға ұқсас өнімділікті көрсетеді.
  • Қосылды басқа сыныптар мен интерфейстер жүзеге асыруды мұраға алу, кеңейту немесе қайта анықтау үшін пайдалана алмайтын мөрленген сыныптар мен интерфейстерге эксперименттік қолдау. Жабық сыныптар сонымен қатар кеңейтуге рұқсат етілген ішкі сыныптарды нақты тізімдеуге негізделген қол жеткізу модификаторларына қарағанда суперклассты пайдалануды шектеудің неғұрлым декларациялық әдісін қамтамасыз етеді.

    com.example.geometry пакеті;

    ашық мөрленген сынып Пішіні
    com.example.polar.Circle рұқсат етеді,
    com.example.төртбұрыш.Тіктөртбұрыш,
    com.example.quad.қарапайым.Квадрат {…}

  • Қосылды басқа сыныптардың байт коды арқылы тікелей пайдаланылмайтын жасырын сыныптарды қолдау. Жасырын сыныптардың негізгі мақсаты орындалу уақытында сыныптарды динамикалық түрде жасайтын және оларды жанама түрде пайдаланатын фреймворктарда пайдалану болып табылады. рефлексия. Мұндай сыныптардың әдетте шектеулі өмірлік циклі бар, сондықтан оларды статикалық түрде жасалған сыныптардан қол жеткізу үшін қолдау ақталмайды және тек жадты тұтынудың жоғарылауына әкеледі. Сондай-ақ жасырын сыныптар стандартты емес API sun.misc.Unsafe::defineAnonymousClass қажеттілігін жояды, ол болашақта жойылады.
  • ZGC (Z Garbage Collector) қоқыс жинағышы тұрақтандырылды және кеңінен қолдануға дайын деп танылды. ZGC пассивті режимде жұмыс істейді, қоқыс жинауға байланысты кідірісті мүмкіндігінше азайтады (ZGC пайдалану кезінде тоқтау уақыты 10 мс аспайды) және өлшемі бірнеше жүз мегабайттан көптеген терабайттарға дейінгі шағын және үлкен үйінділермен жұмыс істей алады.
  • Тұрақтандырылған және жалпы пайдалануға дайын
    қоқыс жинағыш Шенандоа, минималды үзілістермен жұмыс істеу (Төмен кідірту уақыты қоқыс жинағыш). Shenandoah Red Hat әзірлеген және Java қолданбаларының орындалуымен қатар тазалауды жүргізу арқылы қоқыс жинау кезінде тоқтау уақытын азайтатын алгоритмді қолдануымен ерекшеленеді. Қоқыс жинағыш енгізген кідірістердің мөлшері болжамды және үйіндінің өлшеміне байланысты емес, яғни. 200 МБ және 200 ГБ үймелер үшін кешігулер бірдей болады (шықпа 50 мс жоғары және әдетте 10 мс ішінде);

  • Қолдау тұрақталып, тілге енгізілді мәтіндік блоктар - блоктағы бастапқы мәтін пішімдеуін сақтамай және таңбадан шығуды пайдаланбай, бастапқы кодқа көп жолды мәтіндік деректерді қосуға мүмкіндік беретін жол литералдарының жаңа түрі. Блок үш қос тырнақшамен жиектеледі.

    Мысалы, кодтың орнына

    Жол html = " » +
    "\n\t" + " » +
    "\n\t\t" + " \"Java 1 осында!\" » +
    "\n\t" + " » +
    "\n" + " ";

    көрсетуге болады:

    Жол html = """


    »Java 1\
    осында!

    """;

  • Қайта жасалған Бұрынғы DatagramSocket API. Java.net.DatagramSocket және java.net.MulticastSocket ескі іске асырулары жөндеуге және жөндеуге оңай, сонымен қатар жоба аясында әзірленген виртуалды ағындармен үйлесімді заманауи енгізумен ауыстырылды. Лом. Қолданыстағы кодпен сәйкес келмеуі мүмкін болған жағдайда, ескі енгізу жойылған жоқ және оны jdk.net.usePlainDatagramSocketImpl опциясы арқылы қосуға болады.
  • Екінші эксперименттік енгізу ұсынылды үлгі сәйкестігі «instanceof» операторында, ол тексерілген мәнге қол жеткізу үшін жергілікті айнымалыны дереу анықтауға мүмкіндік береді. Мысалы, «String s = (String) obj» нақты анықтамасынсыз «if (obj instanceof String s && s.length() > 5) {.. s.contains(..) ..}» деп бірден жазуға болады.

    Бұл:

    if (obj instance of Group) {
    Топ тобы = (Group)obj;
    var entries = group.getEntries();
    }

    Енді сіз «Топтық топ = (Топ) obj» анықтамасынсыз жасай аласыз:

    егер (топ тобының нысаны) {
    var entries = group.getEntries();
    }

  • Ұсынылған кілт сөзінің екінші эксперименттік орындалуырекорд", бұл класстарды анықтауға арналған ықшам пішінді қамтамасыз етеді, бұл теңдік(), hashCode() және toString() сияқты әртүрлі төмен деңгейлі әдістерді анық анықтаудан аулақ болуға мүмкіндік береді, бұл деректер тек мінез-құлқы өзгермейтін өрістерде сақталған жағдайда. Класс equals(), hashCode() және toString() әдістерінің стандартты іске асыруларын пайдаланғанда, ол олардың анық анықтамасынсыз орындай алады:

    Банктік транзакцияның жария жазбасы (ЖергіліктіКүні,
    екі еселенген сома
    Жол сипаттамасы) {}

    Бұл мәлімдеме конструктор және гетер әдістеріне қосымша equals(), hashCode() және toString() әдістерін іске асыруды автоматты түрде қосады.

  • Ұсынылған Java қолданбаларына жаңа MemorySegment, MemoryAddress және MemoryLayout абстракцияларын өңдеу арқылы Java үймесінен тыс жад аймақтарына қауіпсіз және тиімді қатынасуға мүмкіндік беретін Foreign-Memory Access API екінші алдын ала қарауы.
  • Өшірілген және құлыптау шығындарын азайту үшін HotSpot JVM жүйесінде қолданылатын Biased Locking оңтайландыру әдісін ескірген. Бұл әдіс қазіргі заманғы процессорлар беретін атомдық нұсқаулары бар жүйелерде өзектілігін жоғалтты және күрделілігіне байланысты қолдау үшін тым көп еңбекті қажет етеді.
  • Жарияланды ескірген механизм RMI белсендіру, ол болашақ шығарылымда жойылады. RMI Activation ескіргені, Java 8-де опция санатына жатқызылғаны және заманауи тәжірибеде ешқашан қолданылмағаны атап өтілген.
  • Жойылды JavaScript қозғалтқышы Nashorn, ол Java SE 11 нұсқасында ескірген.
  • Жойылған Solaris OS және SPARC процессорларына арналған порттар (Solaris/SPARC, Solaris/x64 және Linux/SPARC). Бұл порттарды жою қоғамдастыққа Solaris және SPARC-арнайы мүмкіндіктерді қолдауға уақытты жоғалтпай, жаңа OpenJDK мүмкіндіктерін әзірлеуді жеделдетуге мүмкіндік береді.

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

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