JavaRush /Java блогу /Random-KY /Java 12 бул жерде: эмне жаңылык?

Java 12 бул жерде: эмне жаңылык?

Группада жарыяланган
Ошентип, Java 12-орунда пайда болду. Жана бул LTS релизи болбосо да (башкача айтканда, Узак мөөнөттүү колдоо эмес, узак убакыт бою колдоого алынуучу релиз эмес. 11- version сегиз-биринчи LTS релизинен турат. жылдык колдоо мөөнөтү ), кызыктуу нерселер жаңыртууларда пайда болду. Алардын эң негизгилерин карап көрөлү. Эске салсак, Java тorнде өзгөртүү сунуштары jeps катары кыскартылган (JDK Enhancement Proposalден). Java 12 бул жерде: эмне жаңылык?  - 1

Эң кызыктуу Jepдин JDK 12

189: Shenandoah: Тынымсыз убакытта таштанды жыйноочу (эксперименталдык) Таштанды жыйноочу Shenandoah жаңы алгоритмди колдонот, ал Java жиптерин иштетүү менен бир убакта тазалоо менен иштөө убактысын кыскартат. Бул учурда, Шенандоахтагы тыным убактысы үймөктүн көлөмүнө карабастан бирдей болот. Эмнегедир Oracle Sheandoahды өзүнүн “расмий” релизинин түзүмдөрүнө кошкон эмес, бирок иштеп чыгуучулар бул функцияны жаңы релиздеги эң маанилүүлөрдүн бири деп эсептешет. Демек, эгер сиз өркүндөтүлгөн таштанды жыйноочуну сынап көрүүнү пландап жатсаңыз, Azul сыяктуу үчүнчү тараптын түзүлүштөрүн колдонушуңуз керек . 230: Microbenchmark Suite Microbenchmark - бул кандайдыр бир кичинекей элементтин иштешин өлчөй турган микробенчмарк. Java тorнде алар JMH алHowтары аркылуу жазылып, иштетилет. 12-versionсынан баштап, JMH JDKга кошулган жана андагы тесттер жазылган, бул иштеп чыгуучулардын жашоосун жеңилдетет. 325: Которуу туюнтмалары (Алдын ала көрүү) которуу оператору менен туюнтманы жазуунун жаңы формасы. Функциялар барагы салттуу которуштуруунун жардамы менен мисал codeду берет, мында үзгүлтүккө тынымсыз колдонуу аны керексиз кенен кылып, тез-тез кокус каталарга алып келет.
switch (day) {
    case MONDAY:
    case FRIDAY:
    case SUNDAY:
        System.out.println(6);
        break;
    case TUESDAY:
        System.out.println(7);
        break;
    case THURSDAY:
    case SATURDAY:
        System.out.println(8);
        break;
    case WEDNESDAY:
        System.out.println(9);
        break;
}
Жаңыртуунун авторлору эгер бул энбелги ылайыктуу болсо, энбелгинин оң жагындагы code гана аткарыла тургандыгын ачык көрсөтүү үчүн “L case ->” которгуч энбелгинин жаңы формасын киргизүүнү сунушташат. Ошентип, жогоруда көрсөтүлгөн code жаңы синтаксистин жардамы менен олуттуу кыскартылышы мүмкүн:
switch (day) {
    case MONDAY, FRIDAY, SUNDAY -> System.out.println(6);
    case TUESDAY                -> System.out.println(7);
    case THURSDAY, SATURDAY     -> System.out.println(8);
    case WEDNESDAY              -> System.out.println(9);
}
334: JVM Constants API Туруктуу бассейнде жүктөөчү константалар деп аталгандар бар. Булар, мисалы, String түрүндөгү же кандайдыр бир примитивдик типтеги баалуулуктар, ошондой эле класстар жана методдор сыяктуу иштөө убактысынын артефактылары. Класстын файлдары менен иштөөдө программисттер жүктөлүүчү константаларды башкаруу үчүн ыңгайлуу куралдардан пайда көрүшөт. Бу jep муэллифлэри бу проблемы чэ-лилмэ]э символик багла-нышларын ]ени гыммат-лык эсаслы тип-лэри нэзэрдэ тутулмушдур, онларын Ьар бири константаларын конкрет типини ифадэ едир. Инновация codeу . 340: Эки эмес, бир AArch64 порту Бул татаал аталыш Java 9да пайда болгон көйгөйдүн чечorшин жашырат, анда Oracle жана aarch64 64 биттик ARM порттору комплектте бир эле учурда пайда болгон. Мындан тышкары, JDK 11 чыгарылган учурда, ал тургай Oracle өзү Oracle портторунун 64 биттик versionсын колдогон эмес. Ошентип, азыр 64 биттик Oracle порттору алынып салынды, 32 биттик ARM32 жана 64 биттик, жемиштүү, aarch64 калды. 341: Демейки CDS Archives Абдан жакшы жаңыртуу, анткени ал тиркемени ишке киргизүүнү тездетет. Жашыруун эмес, Java тиркемеси башталганда, көптөгөн класстар жүктөлө баштайт жана бул өтө узак процесс. CDS класс маалыматтарын бөлүшүү дегенди билдирет жана бул функция сиз ушул эле класстардын демейки тизмесин колдонуп, башталгычта ишке киргизилген бардык класстарды атайын класстын маалымат бөлүшүү архивине топтоого мүмкүндүк берет. Натыйжада, тиркемени ишке киргизүү ылдамдыгы бир топ жогорулайт. 344: G1 G1 үчүн Abortable Mixed Collections – бул Parallel GCдин ордуна JDK 9да негизги таштанды жыйноочу болуп калган таштанды жыйноочу. Java 10до G1 бир нече жипте таштанды чогултууну үйрөндү. Бирок, анын ишине баары эле ыраазы болгон жок, негизги көйгөйлөрдүн бири узак тыныгуулар болду. Эми аларды жокко чыгарса болот. G1, программанын жүрүм-турумун талдоонун негизинде, иштин көлөмүн аныктайт, андан кийин токтобостон, баарын чогултканга чейин "тирүү" an objectтерди Коллекция топтомуна чогултат. Көбүнчө G1 жумуштун көлөмүн эсептөөнү өткөрүп жиберип, өтө көпкө иштеген. jep-344 ишке ашырылгандан кийин, G1 кошумча таштанды чогултууга өтө алат жана эгерде кийинки кадам акылга сыярлык болгондон көп убакытты талап кылса, бул кадам токтотулушу мүмкүн. 346: G1ден пайдаланылбаган эстутумду тез арада кайтарыңыз Жана дагы бир нече жаңыртуулар жогоруда аталган G1 монтаждоочу лагеринде. Кээде Java үймөк эс тутуму бар болчу, бирок аны эч ким колдонгон эмес, бул эс. Java 12де сиз эми активдүү эмес эстутумду операциялык системага "кайтарсаңыз" болот. Мурда G1дин эс тутумдан баш тартуусу өтө сейрек болчу, бирок азыр бардыгы жөнөкөйлөштүрүлдү. Жаңы функциянын жардамы менен, эгер акыркы куруудан берки интервал бүтсө жана бир эле мезгилде цикл жок болсо, колдонмо жигердүү эмес деп аныкталат. Дагы бир жагдай, бир нече убакыттан бери көзөмөлдөнүп келген getloadavg() функциясы белгиленген алгылыктуу босогодон төмөн жүктү көрсөтсө же көрсөтсө болот. Эгерде эки окуянын бири болуп калса, таштандыны жарым-жартылай чогултуу башталат. Java 12де эмнелер жок: Raw String Literals Көптөгөн иштеп чыгуучулар бул функцияга кызыгышкан, бирок ал эч качан бул чыгарылышта пайда болгон эмес. Анын авторлору ага дагы эле эмгек керек деп чечишти. Ошентип, биз сап литералдары менен ыңгайлуу иштөө функциясы Javaнын кийинки versionларынын биринде пайда болот деп үмүттөнүүгө батынабыз. Чийки сап литералдарын колдоо тилге карабастан сап маалыматы менен иштөөгө мүмкүндүк берет. Бул калкалоо зарылдыгын жок кылат. Айрыкча тескери сызыктар кеңири колдонулган регулярдуу туюнтмаларда жана Windows-жолунда, тескери сызыктар бөлүүчү катары колдонулганда пайдалуу. Башкача айтканда, мындай конструкцияларды болтурбоо үчүн: C:\\My\\Test\\Pack\\
Ар бир программист өз ишинде тигил же бул кыйынчылыкка көп жолугат. Кээде алар иштеп чыгуучунун тажрыйбасыздыгы менен байланышкан, бирок кээде куралдын өзүнүн жеткилеңсиздиги менен байланыштуу. Java - сонун тил, бирок ал идеалдуу эмес. Балким, сиз Java'да бир нерсеге туш болгондурсуз жана "куралыңызда" (тorңизде) эмнени өзгөрткүңүз келгенин билесизби? Комментарийлерде бөлүшүңүз!

корутундулар

Java 12де эч кандай революция болгон эмес. Бирок, аны эч ким пландаштырган эмес. Бирок, бир катар инновациялар тиркемелердин иштешин оптималдаштырууга жана ишти тездетүүгө багытталган, бул жакшы жаңылык. Айтмакчы, IDEA мурунтан эле JDK 12ди колдойт, андыктан анын мүмкүнчүлүктөрүн сынап көрүүгө болот. Албетте, бир нече жаңыртуулар башталгычтарга түздөн-түз таасир этет, бирок JavaRushти жаңыдан үйрөнө баштагандар да жаңы которгуч менен ойной алышат (-enable-preview желекчесин койгондон кийин).
Комментарийлер
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION