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

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

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

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

  • Эксперименттік қолдау қосылды үлгі сәйкестігі «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() әдістерін іске асыруды автоматты түрде қосады.

  • Стандартталған және «ажырату» өрнектерінің жаңа формасын қолдау әдепкі бойынша қосылады, ол «үзіліс» операторын көрсетуді қажет етпейді, қайталанатын белгілерді біріктіруге мүмкіндік береді және оператор түрінде ғана емес, сонымен қатар өрнек.

    var log = ауысу (оқиға) {
    case PLAY -> «Пайдаланушы ойнату түймешігін іске қосты»;
    case STOP, PAUSE -> «Пайдаланушыға үзіліс қажет»;
    әдепкі -> {
    Жолдық хабарлама = event.toString();
    LocalDateTime now = LocalDateTime.now();
    "Белгісіз оқиға" + хабарлама + береді
    » жүйеге кірді » + қазір;
    }
    };

  • Кеңейтілген эксперименттік қолдау мәтіндік блоктар - блоктағы бастапқы мәтін пішімдеуін сақтамай және таңбадан шығуды пайдаланбай, бастапқы кодқа көп жолды мәтіндік деректерді қосуға мүмкіндік беретін жол литералдарының жаңа түрі. Блок үш қос тырнақшамен жиектелген. Java 14-де мәтін блоктары енді жалғыз бос орынды анықтау үшін «\s» және келесі жолмен біріктіру үшін «\» шығу ретін қолдайды (өте ұзын жолды басып шығару қажет болғанда жаңа жолдарды елемеді). Мысалы, кодтың орнына

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

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

    Жол html = """


    »Java 1\
    осында!

    """;

  • Ерекшеліктер туындаған кездегі диагностиканың ақпараттық мазмұны кеңейтілді NullPointerException. Бұрын қате туралы хабар тек жол нөміріне қатысты болса, енді ол қай әдіс ерекшелік тудырғанын егжей-тегжейлі көрсетеді. Жетілдірілген диагностика қазіргі уақытта «-XX:+ShowCodeDetailsInExceptionMessages» жалаушасымен іске қосылғанда ғана қосылады. Мысалы, бұл жалаушаны көрсеткенде, жолдағы ерекшелік

    var name = user.getLocation().getCity().getName();

    хабарлама пайда болады

    "main" java.lang.NullPointerException ағынындағы ерекше жағдай: "Location.getCity()" шақыру мүмкін емес.
    себебі "User.getLocation()" қайтару мәні нөлге тең
    NullPointerExample.main(NullPointerExample.java:5):5)

    бұл Location.getCity() әдісі шақырылмағанын және User.getLocation() нөлді қайтаратынын көрсетеді.

  • Орындалды Дербес Java қолданбалары үшін пакеттер жасауға мүмкіндік беретін jpackage утилитасының алдын ала қарауы. Утилита JavaFX ұсынған javapackager негізінде жасалған және әртүрлі платформаларға тән пішімдерде пакеттер жасауға мүмкіндік береді (Windows үшін msi және exe, macOS үшін pkg және dmg, Linux үшін deb және rpm). Пакеттер барлық қажетті тәуелділіктерді қамтиды.
  • G1 қоқыс жинағышына қосылды архитектураны пайдалана отырып, үлкен жүйелерде жұмыс істеу ерекшеліктерін ескеретін жадты бөлудің жаңа механизмі IN. Жаңа жад бөлгіші «+XX:+UseNUMA» жалаушасы арқылы қосылады және NUMA жүйелеріндегі өнімділікті айтарлықтай жақсарта алады.
  • Қосылды JFR (JDK Flight Recorder) оқиғаларын жедел бақылауға арналған API, мысалы, үздіксіз бақылауды ұйымдастыру үшін.
  • Қосылды jdk.nio.mapmode модулі, ол тұрақты жадқа (NVM) сілтеме жасайтын салыстырылған байт буферлерін (MappedByteBuffer) жасау үшін жаңа режимдерді (READ_ONLY_SYNC, WRITE_ONLY_SYNC) ұсынады.
  • Орындалды Жаңа MemorySegment, MemoryAddress және MemoryLayout абстракцияларын өңдеу арқылы Java қолданбаларына Java үймесінен тыс жад аймақтарына қауіпсіз және тиімді қатынасуға мүмкіндік беретін Сыртқы жадқа кіру API интерфейсін алдын ала қарау.
  • Жарияланды Болашақта осы порттарды жою ниетімен Solaris OS және SPARC процессорлары (Solaris/SPARC, Solaris/x64 және Linux/SPARC) үшін ескірген порттар. Бұл порттардың ескіруі қауымдастыққа Solaris және SPARC-ға тән мүмкіндіктерді қолдауға уақыт жоғалтпай, жаңа OpenJDK мүмкіндіктерін әзірлеуді жеделдетуге мүмкіндік береді.
  • Жойылды екі жыл бұрын ескірген және жөндеусіз қалған CMS (Concurrent Mark Sweep) қоқыс жинағышы (CMS бұрыннан G1 қоқыс жинағышымен ауыстырылған). Сонымен қатар, жариялады ParallelScavenge және SerialOld қоқыс жинау алгоритмдерінің тіркесімін пайдалану ескірген («-XX:+UseParallelGC -XX:-UseParallelOldGC» опцияларымен іске қосыңыз).
  • ZGC (Z Garbage Collector) қоқыс жинағышына эксперименттік қолдау macOS және Windows платформаларында (бұрын тек Linux жүйесінде қолдау көрсетілетін) қамтамасыз етілген. ZGC пассивті режимде жұмыс істейді, қоқыс жинауға байланысты кідірістерді мүмкіндігінше азайтады (ZGC пайдалану кезінде тоқтау уақыты 10 мс аспайды) және өлшемі бірнеше жүз мегабайттан көптеген терабайттарға дейінгі шағын және үлкен үйінділермен де жұмыс істей алады.
  • Жойылған Pack200 алгоритмі арқылы JAR файлдарын қысуға арналған құралдар жинағы және API.

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

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