Java SE 14 เป€เบ›เบตเบ”เบ•เบปเบง

เบซเบผเบฑเบ‡เบˆเบฒเบเบซเบปเบเป€เบ”เบทเบญเบ™เบ‚เบญเบ‡เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ, Oracle เบ›เปˆเบญเบเบญเบญเบเบกเบฒ เป€เบงเบ—เบต JavaSE 14 (Java Platform, Standard Edition 14), เป‚เบ„เบ‡เบเบฒเบ™ open-source OpenJDK เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบ›เบฑเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบญเป‰เบฒเบ‡เบญเบตเบ‡. Java SE 14 เบฎเบฑเบเบชเบฒเบ„เบงเบฒเบกเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป„เบ”เป‰เบเบฑเบšเบฅเบธเป‰เบ™เป€เบเบปเปˆเบฒเบ‚เบญเบ‡เปเบžเบฅเบฐเบ•เบฐเบŸเบญเบก Java; เบžเป‰เบญเบกเบ•เบดเบ”เบ•เบฑเป‰เบ‡ Java SE 14 builds (JDK, JRE เปเบฅเบฐ Server JRE) เบเบฐเบเบฝเบก เบชเปเบฒเบฅเบฑเบš Linux (x86_64), Windows เปเบฅเบฐ macOS. เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เป€เบญเบเบฐเบชเบฒเบ™เบญเป‰เบฒเบ‡เบญเบตเบ‡เบ—เบตเปˆเบžเบฑเบ”เบ—เบฐเบ™เบฒเป‚เบ”เบเป‚เบ„เบ‡เบเบฒเบ™ OpenJDK Java 14 เป€เบ›เบฑเบ™เปเบซเบผเปˆเบ‡เป€เบ›เบตเบ”เบขเปˆเบฒเบ‡เป€เบ•เบฑเบกเบ—เบตเปˆเบžเบฒเบเปƒเบ•เป‰เปƒเบšเบญเบฐเบ™เบธเบเบฒเบ” GPLv2, เบกเบตเบ‚เปเป‰เบเบปเบเป€เบงเบฑเป‰เบ™ GNU ClassPath เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบกเบตเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เปเบšเบšเป€เบ„เบทเปˆเบญเบ™เป„เบซเบงเบเบฑเบšเบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เบเบฒเบ™เบ„เป‰เบฒ.

Java SE 14 เบ–เบทเบเบˆเบฑเบ”เป€เบ›เบฑเบ™เบฅเบธเป‰เบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบ—เบปเปˆเบงเป„เบ›เปเบฅเบฐเบˆเบฐเบชเบทเบšเบ•เปเปˆเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เบˆเบปเบ™เบเปˆเบงเบฒเบเบฒเบ™เบ›เปˆเบญเบเบ•เปเปˆเป„เบ›. เบชเบฒเบ‚เบฒเบเบฒเบ™เบŠเปˆเบงเบเป€เบซเบผเบทเบญเป„เบฅเบเบฐเบเบฒเบง (LTS) เบ„เบงเบ™เป€เบ›เบฑเบ™ Java SE 11, เป€เบŠเบดเปˆเบ‡เบˆเบฐเบชเบทเบšเบ•เปเปˆเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เบˆเบปเบ™เบเปˆเบงเบฒ 2026. เบชเบฒเบ‚เบฒ LTS เบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒเบ‚เบญเบ‡ Java 8 เบˆเบฐเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบˆเบปเบ™เบเปˆเบงเบฒเป€เบ”เบทเบญเบ™เบ—เบฑเบ™เบงเบฒ 2020. เบเบฒเบ™เบ›เปˆเบญเบ LTS เบ•เปเปˆเป„เบ›เปเบกเปˆเบ™เบเปเบฒเบ™เบปเบ”เบชเปเบฒเบฅเบฑเบšเป€เบ”เบทเบญเบ™เบเบฑเบ™เบเบฒ 2021. เปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเป€เบ•เบทเบญเบ™เบ—เปˆเบฒเบ™เบงเปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ”เป‰เบงเบเบเบฒเบ™เป€เบ›เบตเบ”เบ•เบปเบงเบ‚เบญเบ‡ Java 10, เป‚เบ„เบ‡เบเบฒเบ™เป„เบ”เป‰เบ›เปˆเบฝเบ™เป„เบ›เบชเบนเปˆเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเปƒเบซเบกเปˆ, เป€เบŠเบดเปˆเบ‡เบซเบกเบฒเบเป€เบ–เบดเบ‡เบงเบปเบ‡เบˆเบญเบ™เบ—เบตเปˆเบชเบฑเป‰เบ™เบเบงเปˆเบฒเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเป‰เบฒเบ‡เบ•เบฑเป‰เบ‡เบเบฒเบ™เบ›เปˆเบญเบเปƒเบซเบกเปˆ. เบŸเบฑเบ‡เบŠเบฑเบ™เปƒเบซเบกเปˆเปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เป„เบ”เป‰เบ–เบทเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบขเบนเปˆเปƒเบ™เบชเบฒเบ‚เบฒเบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบšเบ—เบตเปˆเบกเบตเบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เบขเปˆเบฒเบ‡เบ•เปเปˆเป€เบ™เบทเปˆเบญเบ‡, เป€เบŠเบดเปˆเบ‡เบ›เบฐเบเบญเบšเบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ—เบตเปˆเบเบฝเบกเบžเป‰เบญเบกเปเบฅเบฐเบˆเบฒเบเบชเบฒเบ‚เบฒเปƒเบ”เบ–เบทเบเปเบเบเบญเบญเบเบ—เบธเบเป†เบซเบปเบเป€เบ”เบทเบญเบ™เป€เบžเบทเปˆเบญเบชเบฐเบ–เบฝเบ™เบฅเบฐเบžเบฒเบšเบเบฒเบ™เบ›เปˆเบญเบเปƒเบซเบกเปˆ.

เบˆเบฒเบ เบ™เบฐเบงเบฑเบ”เบ•เบฐเบเปเบฒ Java 14 เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เป„เบ”เป‰ เปเบฒเบ:

  • ะ”ะพะฑะฐะฒะปะตะฝะฐ ัะบัะฟะตั€ะธะผะตะฝั‚ะฐะปัŒะฝะฐั ะฟะพะดะดะตั€ะถะบะฐ เบเบฒเบ™เบˆเบฑเบšเบ„เบนเปˆเบฎเบนเบšเปเบšเบš เปƒเบ™เบ•เบปเบงเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™ "เบ•เบปเบงเบขเปˆเบฒเบ‡", เป€เบŠเบดเปˆเบ‡เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบเปเบฒเบ™เบปเบ”เบ•เบปเบงเปเบ›เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™เปƒเบ™เบ—เบฑเบ™เบ—เบตเป€เบžเบทเปˆเบญเป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบกเบนเบ™เบ„เปˆเบฒเบ—เบตเปˆเบ–เบทเบเบเบงเบ”เบชเบญเบš. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ‚เบฝเบ™เบ—เบฑเบ™เบ—เบต "เบ–เป‰เบฒ (obj instanceof String s && s.length() > 5) {.. s.contains (..) ..}" เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบเปเบฒเบ™เบปเบ”เบขเปˆเบฒเบ‡เบŠเบฑเบ”เป€เบˆเบ™เบงเปˆเบฒ "String s = (String) obj".

    เปเบกเปˆเบ™:

    เบ–เป‰เบฒ (obj เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบเบธเปˆเบก) {
    เบเบธเปˆเบก = (เบเบธเปˆเบก)obj;
    var entries = group.getEntry();
    }

    เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เป„เบ”เป‰เป‚เบ”เบเบšเปเปˆเบกเบตเบ„เปเบฒเบ™เบดเบเบฒเบก "เบเบธเปˆเบกเบเบธเปˆเบก = (เบเบธเปˆเบก) obj":

    เบ–เป‰เบฒ (obj เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบเบธเปˆเบกเบเบธเปˆเบก) {
    var entries = group.getEntry();
    }

  • ะ”ะพะฑะฐะฒะปะตะฝะฐ ัะบัะฟะตั€ะธะผะตะฝั‚ะฐะปัŒะฝะฐั ะฟะพะดะดะตั€ะถะบะฐ ะฝะพะฒะพะณะพ ะบะปัŽั‡ะตะฒะพะณะพ ัะปะพะฒะฐ ยซเบเบฒเบ™เบšเบฑเบ™เบ—เบถเบ", เป€เบŠเบดเปˆเบ‡เบชเบฐเบซเบ™เบญเบ‡เบฎเบนเบšเปเบšเบšเบ—เบตเปˆเบซเบ™เบฒเปเบซเบ™เป‰เบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเปเบฒเบ™เบปเบ”เบซเป‰เบญเบ‡เบฎเบฝเบ™, เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบซเบผเบตเบเป€เบงเบฑเป‰เบ™เบเบฒเบ™เบเปเบฒเบ™เบปเบ”เบงเบดเบ—เบตเบเบฒเบ™เบฅเบฐเบ”เบฑเบšเบ•เปˆเปเบฒเบ•เปˆเบฒเบ‡เป†เบขเปˆเบฒเบ‡เบˆเบฐเปเบˆเป‰เบ‡เป€เบŠเบฑเปˆเบ™: equals(), hashCode() เปเบฅเบฐ toString() เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ—เบตเปˆเบ‚เปเป‰เบกเบนเบ™เบ–เบทเบเป€เบเบฑเบšเป„เบงเป‰เปƒเบ™เบžเบฒเบเบชเบฐเบซเบ™เบฒเบกเบ—เบตเปˆเบžเบถเบ”เบ•เบดเบเปเบฒเบšเปเปˆเบ›เปˆเบฝเบ™เปเบ›เบ‡. เป€เบกเบทเปˆเบญเบซเป‰เบญเบ‡เบฎเบฝเบ™เปƒเบŠเป‰เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบ‚เบญเบ‡เบงเบดเบ—เบตเบเบฒเบ™ equals(), hashCode() เปเบฅเบฐ toString(), เบกเบฑเบ™เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เป„เบ”เป‰เป‚เบ”เบเบšเปเปˆเบกเบตเบ„เปเบฒเบ™เบดเบเบฒเบกเบ—เบตเปˆเบŠเบฑเบ”เป€เบˆเบ™:

    เบเบฒเบ™โ€‹เบšเบฑเบ™โ€‹เบ—เบถเบโ€‹เบชเบฒโ€‹เบ—เบฒโ€‹เบฅเบฐโ€‹เบ™เบฐ BankTransaction(เบงเบฑเบ™โ€‹เบ—เบตโ€‹เบ—เป‰เบญเบ‡โ€‹เบ–เบดเปˆเบ™โ€‹,
    เบˆเปเบฒเบ™เบงเบ™เบชเบญเบ‡เป€เบ—เบปเปˆเบฒ
    เบ„เบณเบญเบฐเบ—เบดเบšเบฒเบเบชเบฐเบ•เบฃเบดเบ‡) {}

    เบเบฒเบ™เบ›เบฐเบเบฒเบ”เบ™เบตเป‰เบˆเบฐเป€เบžเบตเปˆเบกเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‚เบญเบ‡เบงเบดเบ—เบตเบเบฒเบ™ equals(), hashCode() เปเบฅเบฐ toString() เบ•เบทเปˆเบกเปƒเบชเปˆเบงเบดเบ—เบตเบเบฒเบ™ constructor เปเบฅเบฐ getter.

  • ะกั‚ะฐะฝะดะฐั€ั‚ะธะทะธั€ะพะฒะฐะฝะฐ ะธ ะฒะบะปัŽั‡ะตะฝะฐ ะฟะพ ัƒะผะพะปั‡ะฐะฝะธัŽ ะฟะพะดะดะตั€ะถะบะฐ ะฝะพะฒะพะน ั„ะพั€ะผั‹ ะฒั‹ั€ะฐะถะตะฝะธะน ยซswitchยป, ะฝะต ั‚ั€ะตะฑัƒัŽั‰ะตะน ัƒะบะฐะทะฐะฝะธั ะพะฟะตั€ะฐั‚ะพั€ะฐ ยซbreakยป, ะฟะพะทะฒะพะปััŽั‰ะตะน ะพะฑัŠะตะดะธะฝัั‚ัŒ ะฟะพะฒั‚ะพั€ััŽั‰ะธะตัั ะผะตั‚ะบะธ ะธ ะดะพะฟัƒัะบะฐัŽั‰ะตะน ะธัะฟะพะปัŒะทะพะฒะฐะฝะธะต ะฝะต ั‚ะพะปัŒะบะพ ะฒ ั„ะพั€ะผะต ะพะฟะตั€ะฐั‚ะพั€ะฐ, ะฝะพ ะธ ะบะฐะบ ะฒั‹ั€ะฐะถะตะฝะธั.

    var log = switch (event) {
    case PLAY -> ยซUser has triggered the play buttonยป;
    case STOP, PAUSE -> ยซUser needs a breakยป;
    default -> {
    String message = event.toString();
    LocalDateTime now = LocalDateTime.now();
    yield ยซUnknown event ยป + message +
    ยป logged on ยป + now;
    }
    };

  • ะ ะฐััˆะธั€ะตะฝะฐ ัะบัะฟะตั€ะธะผะตะฝั‚ะฐะปัŒะฝะฐั ะฟะพะดะดะตั€ะถะบะฐ เบšเบฅเบฑเบญเบเบ‚เปเป‰เบ„เบงเบฒเบก โ€” ะฝะพะฒะพะน ั„ะพั€ะผั‹ ัั‚ั€ะพะบะพะฒั‹ั… ะปะธั‚ะตั€ะฐะปะพะฒ, ะฟะพะทะฒะพะปััŽั‰ะธั… ะฒะบะปัŽั‡ะฐั‚ัŒ ะฒ ะธัั…ะพะดะฝั‹ะน ะบะพะด ะผะฝะพะณะพัั‚ั€ะพั‡ะฝั‹ะต ั‚ะตะบัั‚ะพะฒั‹ะต ะดะฐะฝะฝั‹ะต ะฑะตะท ะฟั€ะธะผะตะฝะตะฝะธั ะฒ ะฝะธั… ัะบั€ะฐะฝะธั€ะพะฒะฐะฝะธั ัะธะผะฒะพะปะพะฒ ะธ ัะพั…ั€ะฐะฝัั ะธัั…ะพะดะฝะพะต ั„ะพั€ะผะฐั‚ะธั€ะพะฒะฐะฝะธั ั‚ะตะบัั‚ะฐ ะฒ ะฑะปะพะบะต. ะžะฑั€ะฐะผะปะตะฝะธะต ะฑะปะพะบะฐ ะพััƒั‰ะตัั‚ะฒะปัะตั‚ัั ั‚ั€ะตะผั ะดะฒะพะนะฝั‹ะผะธ ะบะฐะฒั‹ั‡ะบะฐะผะธ. ะ’ Java 14 ะฒ ั‚ะตะบัั‚ะพะฒั‹ั… ะฑะปะพะบะฐั… ั€ะตะฐะปะธะทะพะฒะฐะฝะฐ ะฟะพะดะดะตั€ะถะบะฐ escape-ะฟะพัะปะตะดะพะฒะฐั‚ะตะปัŒะฝะพัั‚ะธ ยซ\sยป ะดะปั ะพะฟั€ะตะดะตะปะตะฝะธั ะพะดะฝะพะณะพ ะฟั€ะพะฑะตะปะฐ ะธ ยซ\ยป ะดะปั ะพะฑัŠะตะดะธะฝะตะฝะธั ัะพ ัะปะตะดัƒัŽั‰ะตะน ัั‚ั€ะพะบะพะน (ะธะณะฝะพั€ะธั€ะพะฒะฐะฝะธั ะฟะตั€ะตะฒะพะดะฐ ัั‚ั€ะพะบะธ, ะบะพะณะดะฐ ะฝัƒะถะฝะพ ะฒั‹ะฒะตัั‚ะธ ะพั‡ะตะฝัŒ ะดะปะธะฝะฝัƒัŽ ัั‚ั€ะพะบัƒ). ะะฐะฟั€ะธะผะตั€, ะฒะผะตัั‚ะพ ะบะพะดะฐ

    String html = " ยป +
    "\n\t" + " ยป +
    "\n\t\t" + " \"Java 1 เบกเบฒเปเบฅเป‰เบง!\" ยป +
    "\n\t" + " ยป +
    "\n" + " ";

    เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบฅเบฐเบšเบธ:

    String html = """


    ยป Java 1\
    เปเบกเปˆเบ™โ€‹เบ—เบตเปˆโ€‹เบ™เบตเป‰!

    """;

  • ะ ะฐััˆะธั€ะตะฝะฐ ะธะฝั„ะพั€ะผะฐั‚ะธะฒะฝะพัั‚ัŒ ะดะธะฐะณะฝะพัั‚ะธะบะธ ะฟั€ะธ ะฒะพะทะฝะธะบะฝะพะฒะตะฝะธะธ ะธัะบะปัŽั‡ะตะฝะธะน NullPointerException. ะ•ัะปะธ ั€ะฐะฝัŒัˆะต ัะพะพะฑั‰ะตะฝะธะต ะพะฑ ะพัˆะธะฑะบะต ะปะธัˆัŒ ััั‹ะปะฐะปะพััŒ ะฝะฐ ะฝะพะผะตั€ ัั‚ั€ะพะบะธ, ั‚ะพ ั‚ะตะฟะตั€ัŒ ะฒ ะฝั‘ะผ ะดะตั‚ะฐะปะธะทะธั€ัƒะตั‚ัั ะบะฐะบะพะน ะธะท ะผะตั‚ะพะดะพะฒ ะฒั‹ะทะฒะฐะป ะธัะบะปัŽั‡ะตะฝะธะต. ะ ะฐััˆะธั€ะตะฝะฝะฐั ะดะธะฐะณะฝะพัั‚ะธะบะฐ ะฟะพะบะฐ ะฒะบะปัŽั‡ะฐะตั‚ัั ั‚ะพะปัŒะบะพ ะฟั€ะธ ะทะฐะฟัƒัะบะต ั ั„ะปะฐะณะพะผ ยซ-XX:+ShowCodeDetailsInExceptionMessagesยป. ะะฐะฟั€ะธะผะตั€, ะฟั€ะธ ัƒะบะฐะทะฐะฝะธะธ ะดะฐะฝะฝะพะณะพ ั„ะปะฐะณะฐ ะธัะบะปัŽั‡ะตะฝะธะต ะฒ ัั‚ั€ะพะบะต

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

    ะฟั€ะธะฒะตะดั‘ั‚ ะบ ะฒั‹ะฒะพะดัƒ ัะพะพะฑั‰ะตะฝะธั

    Exception in thread ยซmainยป java.lang.NullPointerException: Cannot invoke ยซLocation.getCity()ยป
    because the return value of ยซUser.getLocation()ยป is null
    at NullPointerExample.main(NullPointerExample.java:5):5)

    ะบะพั‚ะพั€ะพะต ะฟะพะทะฒะพะปัะตั‚ ะฟะพะฝัั‚ัŒ, ั‡ั‚ะพ ะผะตั‚ะพะด Location.getCity() ะฝะต ะฑั‹ะป ะฒั‹ะทะฒะฐะฝ, ะฐ User.getLocation() ะฒะตั€ะฝัƒะป ะทะฝะฐั‡ะตะฝะธะต null.

  • เบ›เบฐเบ•เบดเบšเบฑเบ” ะฟั€ะตะดะฒะฐั€ะธั‚ะตะปัŒะฝั‹ะน ะฒะฐั€ะธะฐะฝั‚ ัƒั‚ะธะปะธั‚ั‹ jpackage, ะฟะพะทะฒะพะปััŽั‰ะตะน ัะพะทะดะฐะฒะฐั‚ัŒ ะฟะฐะบะตั‚ั‹ ะดะปั ัะฐะผะพะดะพัั‚ะฐั‚ะพั‡ะฝั‹ั… (self-contained) Java-ะฟั€ะธะปะพะถะตะฝะธะน. ะฃั‚ะธะปะธั‚ะฐ ะฑะฐะทะธั€ัƒะตั‚ัั ะฝะฐ javapackager ะธะท JavaFX ะธ ะฟะพะทะฒะพะปัะตั‚ ั„ะพั€ะผะธั€ะพะฒะฐั‚ัŒ ะฟะฐะบะตั‚ั‹ ะฒ ั„ะพั€ะผะฐั‚ะฐั…, ั€ะพะดะฝั‹ั… ะดะปั ั€ะฐะทะปะธั‡ะฝั‹ั… ะฟะปะฐั‚ั„ะพั€ะผ (msi ะธ exe ะดะปั Windows, pkg ะธ dmg ะดะปั macOS, deb ะธ rpm ะดะปั Linux). ะŸะฐะบะตั‚ั‹ ะฒะบะปัŽั‡ะฐัŽั‚ ะฒัะต ะฝะตะพะฑั…ะพะดะธะผั‹ะต ะทะฐะฒะธัะธะผะพัั‚ะธ.
  • ะ’ ัะฑะพั€ั‰ะธะบ ะผัƒัะพั€ะฐ G1 เป€เบžเบตเปˆเบก ะฝะพะฒั‹ะน ะผะตั…ะฐะฝะธะทะผ ั€ะฐัะฟั€ะตะดะตะปะตะฝะธั ะฟะฐะผัั‚ะธ, ัƒั‡ะธั‚ั‹ะฒะฐัŽั‰ะธะน ัะฟะตั†ะธั„ะธะบัƒ ั€ะฐะฑะพั‚ัƒ ะฝะฐ ะบั€ัƒะฟะฝั‹ั… ัะธัั‚ะตะผะฐั…, ะธัะฟะพะปัŒะทัƒัŽั‰ะธั… ะฐั€ั…ะธั‚ะตะบั‚ัƒั€ัƒ เบ„เบ„เบŠ. ะะพะฒั‹ะน ั€ะฐัะฟั€ะตะดะตะปะธั‚ะตะปัŒ ะฟะฐะผัั‚ะธ ะฒะบะปัŽั‡ะฐะตั‚ัั ะฟั€ะธ ะฟะพะผะพั‰ะธ ั„ะปะฐะณะฐ ยซ+XX:+UseNUMAยป ะธ ะฟะพะทะฒะพะปัะตั‚ ััƒั‰ะตัั‚ะฒะตะฝะฝะพ ะฟะพะดะฝัั‚ัŒ ะฟั€ะพะธะทะฒะพะดะธั‚ะตะปัŒะฝะพัั‚ัŒ ะฝะฐ NUMA-ัะธัั‚ะตะผะฐั….
  • เป€เบžเบตเปˆเบกเปเบฅเป‰เบง API ะดะปั ะพั‚ัะปะตะถะธะฒะฐะฝะธั ะฝะฐ ะปะตั‚ัƒ ัะพะฑั‹ั‚ะธะน JFR (JDK Flight Recorder), ะฝะฐะฟั€ะธะผะตั€ ะดะปั ะพั€ะณะฐะฝะธะทะฐั†ะธะธ ะฝะตะฟั€ะตั€ั‹ะฒะฝะพะณะพ ะผะพะฝะธั‚ะพั€ะธะฝะณะฐ.
  • เป€เบžเบตเปˆเบกเปเบฅเป‰เบง ะผะพะดัƒะปัŒ jdk.nio.mapmode, ะฟั€ะตะดะปะฐะณะฐัŽั‰ะธะน ะฝะพะฒั‹ะต ั€ะตะถะธะผั‹ (READ_ONLY_SYNC, WRITE_ONLY_SYNC) ะดะปั ัะพะทะดะฐะฝะธั ะพั‚ะพะฑั€ะฐะถะฐะตะผั‹ั… ะฑะฐะนั‚ะพะฒั‹ั… ะฑัƒั„ะตั€ะพะฒ (MappedByteBuffer), ััั‹ะปะฐัŽั‰ะธั…ัั ะฝะฐ ัะฝะตั€ะณะพะฝะตะทะฐะฒะธัะธะผัƒัŽ ะฟะฐะผัั‚ัŒ (NVM).
  • เบ›เบฐเบ•เบดเบšเบฑเบ” ะฟั€ะตะดะฒะฐั€ะธั‚ะตะปัŒะฝั‹ะน ะฒะฐั€ะธะฐะฝั‚ API Foreign-Memory Access, ะฟะพะทะฒะพะปััŽั‰ะธะน Java-ะฟั€ะธะปะพะถะตะฝะธัะผ ะฑะตะทะพะฟะฐัะฝะพ ะธ ัั„ั„ะตะบั‚ะธะฒะฝะพ ะฟะพะปัƒั‡ะธั‚ัŒ ะดะพัั‚ัƒะฟ ะบ ะพะฑะปะฐัั‚ัะผ ะฟะฐะผัั‚ะธ, ะฒะฝะต ะบัƒั‡ะธ Java, ะผะฐะฝะธะฟัƒะปะธั€ัƒั ะฝะพะฒั‹ะผะธ ะฐะฑัั‚ั€ะฐะบั†ะธัะผะธ MemorySegment, MemoryAddress ะธ MemoryLayout.
  • ะžะฑัŠัะฒะปะตะฝั‹ ัƒัั‚ะฐั€ะตะฒัˆะธะผะธ ะฟะพั€ั‚ั‹ ะดะปั ะžะก Solaris ะธ ะฟั€ะพั†ะตััะพั€ะพะฒ SPARC (Solaris/SPARC, Solaris/x64 ะธ Linux/SPARC) c ะฝะฐะผะตั€ะตะฝะธะตะผ ัƒะดะฐะปะธั‚ัŒ ะดะฐะฝะฝั‹ะต ะฟะพั€ั‚ั‹ ะฒ ะฑัƒะดัƒั‰ะตะผ. ะŸะตั€ะตะฒะพะด ัƒะบะฐะทะฐะฝะฝั‹ั… ะฟะพั€ั‚ะพะฒ ะฒ ั€ะฐะทั€ัะด ัƒัั‚ะฐั€ะตะฒัˆะธั… ะฟะพะทะฒะพะปะธั‚ ัะพะพะฑั‰ะตัั‚ะฒัƒ ัƒัะบะพั€ะธั‚ัŒ ั€ะฐะทั€ะฐะฑะพั‚ะบัƒ ะฝะพะฒั‹ั… ะฒะพะทะผะพะถะฝะพัั‚ะตะน OpenJDK, ะฝะต ั‚ั€ะฐั‚ั ะฒั€ะตะผั ะฝะฐ ะฟะพะดะดะตั€ะถะฐะฝะธะต ะพัะพะฑะตะฝะฝะพัั‚ะตะน, ัะฟะตั†ะธั„ะธั‡ะฝั‹ั… ะดะปั Solaris ะธ SPARC.
  • เบฅเบถเบšเปเบฅเป‰เบง ัะฑะพั€ั‰ะธะบ ะผัƒัะพั€ะฐ CMS (Concurrent Mark Sweep), ะบะพั‚ะพั€ั‹ะน ะดะฒะฐ ะณะพะดะฐ ะฝะฐะทะฐะด ะฑั‹ะป ะพั‚ะผะตั‡ะตะฝ ัƒัั‚ะฐั€ะตะฒัˆะธะผ ะธ ะพัั‚ะฐะปัั ะฑะตะท ัะพะฟั€ะพะฒะพะถะดะตะฝะธั (ะฝะฐ ัะผะตะฝัƒ CMS ะดะฐะฒะฝะพ ะฟั€ะธัˆั‘ะป ัะฑะพั€ั‰ะธะบ ะผัƒัะพั€ะฐ G1). ะšั€ะพะผะต ั‚ะพะณะพ, เบ›เบฐโ€‹เบเบฒเบ” ัƒัั‚ะฐั€ะตะฒัˆะธะผ ะฟั€ะธะผะตะฝะตะฝะธะต ะบะพะผะฑะธะฝะฐั†ะธะธ ะฐะปะณะพั€ะธั‚ะผะพะฒ ัะฑะพั€ะบะธ ะผัƒัะพั€ะฐ ParallelScavenge ะธ SerialOld (ะทะฐะฟัƒัะบ ั ะพะฟั†ะธัะผะธ ยซ-XX:+UseParallelGC -XX:-UseParallelOldGCยป).
  • ะžะฑะตัะฟะตั‡ะตะฝะฐ ัะบัะฟะตั€ะธะผะตะฝั‚ะฐะปัŒะฝะฐั ะฟะพะดะดะตั€ะถะบะฐ ัะฑะพั€ั‰ะธะบะฐ ะผัƒัะพั€ะฐ ZGC (Z Garbage Collector) ะฝะฐ ะฟะปะฐั‚ั„ะพั€ะผะฐั… macOS ะธ Windows (ั€ะฐะฝะตะต ะฟะพะดะดะตั€ะถะธะฒะฐะปัั ั‚ะพะปัŒะบะพ ะฒ Linux). ZGC ั€ะฐะฑะพั‚ะฐะตั‚ ะฒ ะฟะฐััะธะฒะฝะพะผ ั€ะตะถะธะผะต, ะฝะฐัะบะพะปัŒะบะพ ัั‚ะพ ะฒะพะทะผะพะถะฝะพ ะผะธะฝะธะผะธะทะธั€ัƒะตั‚ ะทะฐะดะตั€ะถะบะธ ะธะท-ะทะฐ ัะฑะพั€ะบะธ ะผัƒัะพั€ะฐ (ะฒั€ะตะผั ะพัั‚ะฐะฝะพะฒะบะธ ะฟั€ะธ ะธัะฟะพะปัŒะทะพะฒะฐะฝะธะธ ZGC ะฝะต ะฟั€ะตะฒั‹ัˆะฐะตั‚ 10 ะผั.) ะธ ะผะพะถะตั‚ ั€ะฐะฑะพั‚ะฐั‚ัŒ ะบะฐะบ ั ะฝะตะฑะพะปัŒัˆะธะผะธ, ั‚ะฐะบ ะธ ั ะพะณั€ะพะผะฝั‹ะผะธ ะบัƒั‡ะฐะผะธ, ั€ะฐะทะผะตั€ะพะผ ะพั‚ ะฝะตัะบะพะปัŒะบะธั… ัะพั‚ะตะฝ ะผะตะณะฐะฑะฐะนั‚ ะดะพ ะผะฝะพะณะธั… ั‚ะตั€ะฐะฑะฐะนั‚.
  • เบฅเบถเบšเบญเบญเบเปเบฅเป‰เบง ะธะฝัั‚ั€ัƒะผะตะฝั‚ะฐั€ะธะน ะธ API ะดะปั ัะถะฐั‚ะธั JAR-ั„ะฐะนะปะพะฒ ั ะธัะฟะพะปัŒะทะพะฒะฐะฝะธะตะผ ะฐะปะณะพั€ะธั‚ะผะฐ Pack200.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: opennet.ru

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™