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

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

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

เบ„เบธเบ™เบ™เบฐเบชเบปเบกเบšเบฑเบ”เปƒเบซเบกเปˆเปƒเบ™ Java 20 เบ›เบฐเบเบญเบšเบกเบต:

  • ะŸั€ะตะดะปะพะถะตะฝะฐ ะฟั€ะตะดะฒะฐั€ะธั‚ะตะปัŒะฝะฐั ะฟะพะดะดะตั€ะถะบะฐ ะพะณั€ะฐะฝะธั‡ะตะฝะฝั‹ั… ะทะฝะฐั‡ะตะฝะธะน (Scoped Values), ะฟะพะทะฒะพะปััŽั‰ะธั… ัะพะฒะผะตัั‚ะฝะพ ะธัะฟะพะปัŒะทะพะฒะฐั‚ัŒ ะฝะตะธะทะผะตะฝัะตะผั‹ะต ะดะฐะฝะฝั‹ะต ะฒ ะฟะพั‚ะพะบะฐั… ะธ ัั„ั„ะตะบั‚ะธะฒะฝะพ ะพะฑะผะตะฝะธะฒะฐั‚ัŒัั ะดะฐะฝะฝั‹ะผะธ ะผะตะถะดัƒ ะดะพั‡ะตั€ะฝะธะผะธ ะฟะพั‚ะพะบะฐะผะธ (ะทะฝะฐั‡ะตะฝะธั ะฝะฐัะปะตะดัƒัŽั‚ัั). Scoped Values ั€ะฐะทะฒะธะฒะฐัŽั‚ัั ะดะปั ะทะฐะผะตะฝั‹ ะผะตั…ะฐะฝะธะทะผะฐ ะฟะตั€ะตะผะตะฝะฝั‹ั… ะปะพะบะฐะปัŒะฝั‹ั… ะบ ะฟะพั‚ะพะบัƒ (thread-local variables) ะธ ะฑะพะปะตะต ัั„ั„ะตะบั‚ะธะฒะฝั‹ ะฟั€ะธ ะธัะฟะพะปัŒะทะพะฒะฐะฝะธะธ ะพั‡ะตะฝัŒ ะฑะพะปัŒัˆะพะณะพ ั‡ะธัะปะฐ ะฒะธั€ั‚ัƒะฐะปัŒะฝั‹ั… ะฟะพั‚ะพะบะพะฒ (ั‚ั‹ััั‡ะธ ะธ ะผะธะปะปะธะพะฝั‹ ะฟะพั‚ะพะบะพะฒ). ะ“ะปะฐะฒะฝะพะต ะพั‚ะปะธั‡ะธะต Scoped Values ะพั‚ ะฟะตั€ะตะผะตะฝะฝั‹ั… ะปะพะบะฐะปัŒะฝั‹ั… ะบ ะฟะพั‚ะพะบัƒ ะฒ ั‚ะพะผ, ั‡ั‚ะพ ะฟะตั€ะฒั‹ะต ะทะฐะฟะธัั‹ะฒะฐัŽั‚ัั ะพะดะธะฝ ั€ะฐะท, ะฒ ะดะฐะปัŒะฝะตะนัˆะตะผ ะฝะต ะผะพะณัƒั‚ ะฑั‹ั‚ัŒ ะธะทะผะตะฝะตะฝั‹ ะธ ะพัั‚ะฐัŽั‚ัั ะดะพัั‚ัƒะฟะฝั‹ ั‚ะพะปัŒะบะพ ะฝะฐ ะฒั€ะตะผั ะฒั‹ะฟะพะปะฝะตะฝะธั ะฟะพั‚ะพะบะฐ. class Server { final static ScopedValue CURRENT_USER = new ScopedValue(); void serve(Request request, Response response) { var level = (request. isAuthorized()? ADMIN : GUEST); var user = new User(level); ScopedValue.where(CURRENT_USER, user) .run(() -> Application.handle(request, response)); } } class DatabaseManager { DBConnection open() { var user = Server.CURRENT_USER.get(); if (!user.canOpen()) throw new InvalidUserException(); return new DBConnection(โ€ฆ); } }
  • ะ”ะพะฑะฐะฒะปะตะฝะฐ ะฒั‚ะพั€ะฐั ะฟั€ะตะดะฒะฐั€ะธั‚ะตะปัŒะฝะฐั ั€ะตะฐะปะธะทะฐั†ะธั ัˆะฐะฑะปะพะฝะพะฒ ะทะฐะฟะธัะตะน (record pattern), ั€ะฐััˆะธั€ััŽั‰ะฐั ะฟะพัะฒะธะฒัˆัƒัŽัั ะฒ Java 16 ะฒะพะทะผะพะถะฝะพัั‚ัŒ ัะพะฟะพัั‚ะฐะฒะปะตะฝะธั ั ะพะฑั€ะฐะทั†ะพะผ ัั€ะตะดัั‚ะฒะฐะผะธ ะดะปั ั€ะฐะทะฑะพั€ะฐ ะทะฝะฐั‡ะตะฝะธะน ะบะปะฐััะพะฒ ั‚ะธะฟะฐ record. ะะฐะฟั€ะธะผะตั€: record Point(int x, int y) {} static void printSum(Object obj) { if (obj instanceof Point p) { int x = p.x(); int y = p.y(); System.out.println(x+y); } }
  • ะ”ะพะฑะฐะฒะปะตะฝะฐ ั‡ะตั‚ะฒั‘ั€ั‚ะฐั ะฟั€ะตะดะฒะฐั€ะธั‚ะตะปัŒะฝะฐั ั€ะตะฐะปะธะทะฐั†ะธั ัะพะฟะพัั‚ะฐะฒะปะตะฝะธั ะฟะพ ัˆะฐะฑะปะพะฝัƒ ะฒ ะฒั‹ั€ะฐะถะตะฝะธัั… ยซswitchยป, ะฟะพะทะฒะพะปััŽั‰ะฐั ะฒ ะผะตั‚ะบะฐั… ยซcaseยป ะธัะฟะพะปัŒะทะพะฒะฐั‚ัŒ ะฝะต ั‚ะพั‡ะฝั‹ะต ะทะฝะฐั‡ะตะฝะธั, ะฐ ะณะธะฑะบะธะต ัˆะฐะฑะปะพะฝั‹, ะพั…ะฒะฐั‚ั‹ะฒะฐัŽั‰ะธะต ัั€ะฐะทัƒ ัะตั€ะธัŽ ะทะฝะฐั‡ะตะฝะธะน, ะดะปั ะบะพั‚ะพั€ั‹ั… ั€ะฐะฝะตะต ะฟั€ะธั…ะพะดะธะปะพััŒ ะธัะฟะพะปัŒะทะพะฒะฐั‚ัŒ ะณั€ะพะผะพะทะดะบะธะต ั†ะตะฟะพั‡ะบะธ ะฒั‹ั€ะฐะถะตะฝะธะน ยซifโ€ฆelseยป. static String formatterPatternSwitch(Object obj) { return switch (obj) { case Integer i -> String.format(ยซint %dยป, i); case Long l -> String.format(ยซlong %dยป, l); case Double d -> String.format(ยซdouble %fยป, d); case String s -> String.format(ยซString %sยป, s); default -> o.toString(); }; }
  • ะ”ะพะฑะฐะฒะปะตะฝะฐ ะฒั‚ะพั€ะฐั ะฟั€ะตะดะฒะฐั€ะธั‚ะตะปัŒะฝะฐั ั€ะตะฐะปะธะทะฐั†ะธั API FFM (Foreign Function & Memory), ะฟะพะทะฒะพะปััŽั‰ะตะณะพ ะพั€ะณะฐะฝะธะทะพะฒะฐั‚ัŒ ะฒะทะฐะธะผะพะดะตะนัั‚ะฒะธะต Java-ะฟั€ะพะณั€ะฐะผะผ ั ะฒะฝะตัˆะฝะธะผะธ ะบะพะดะพะผ ะธ ะดะฐะฝะฝั‹ะผะธ ั‡ะตั€ะตะท ะฒั‹ะทะพะฒ ั„ัƒะฝะบั†ะธะน ะธะท ะฒะฝะตัˆะฝะธั… ะฑะธะฑะปะธะพั‚ะตะบ ะธ ะดะพัั‚ัƒะฟ ะบ ะฟะฐะผัั‚ะธ ะฒะฝะต JVM.
  • ะ”ะพะฑะฐะฒะปะตะฝะฐ ะฒั‚ะพั€ะฐั ะฟั€ะตะดะฒะฐั€ะธั‚ะตะปัŒะฝะฐั ั€ะตะฐะปะธะทะฐั†ะธั ะฒะธั€ั‚ัƒะฐะปัŒะฝั‹ั… ะฟะพั‚ะพะบะพะฒ, ะฟั€ะตะดัั‚ะฐะฒะปััŽั‰ะธั… ัะพะฑะพะน ะปะตะณะบะพะฒะตัะฝั‹ะต ะฟะพั‚ะพะบะธ, ะทะฝะฐั‡ะธั‚ะตะปัŒะฝะพ ัƒะฟั€ะพั‰ะฐัŽั‰ะธะต ะฝะฐะฟะธัะฐะฝะธะต ะธ ัะพะฟั€ะพะฒะพะถะดะตะฝะธะต ะฒั‹ัะพะบะพะฟั€ะพะธะทะฒะพะดะธั‚ะตะปัŒะฝั‹ั… ะผะฝะพะณะพะฟะพั‚ะพั‡ะฝั‹ั… ะฟั€ะธะปะพะถะตะฝะธะน.
  • ะ”ะพะฑะฐะฒะปะตะฝ ะฒั‚ะพั€ะพะน ะฒะฐั€ะธะฐะฝั‚ ัะบัะฟะตั€ะธะผะตะฝั‚ะฐะปัŒะฝะพะณะพ API ะดะปั cั‚ั€ัƒะบั‚ัƒั€ะธั€ะพะฒะฐะฝะฝะพะณะพ ะฟะฐั€ะฐะปะปะตะปะธะทะผะฐ, ัƒะฟั€ะพั‰ะฐัŽั‰ะตะณะพ ั€ะฐะทั€ะฐะฑะพั‚ะบัƒ ะผะฝะพะณะพะฟะพั‚ะพั‡ะฝั‹ั… ะฟั€ะธะปะพะถะตะฝะธะน ะทะฐ ัั‡ั‘ั‚ ะพะฑั€ะฐะฑะพั‚ะบะธ ะฝะตัะบะพะปัŒะบะธั… ะทะฐะดะฐั‡, ะฒั‹ะฟะพะปะฝัะตะผั‹ั… ะฒ ั€ะฐะทะฝั‹ั… ะฟะพั‚ะพะบะฐั…, ะบะฐะบ ะตะดะธะฝะพะณะพ ะฑะปะพะบะฐ.
  • ะ”ะพะฑะฐะฒะปะตะฝะฐ ะฟัั‚ะฐั ะฟั€ะตะดะฒะฐั€ะธั‚ะตะปัŒะฝะฐั ั€ะตะฐะปะธะทะฐั†ะธั API Vector, ะฟั€ะตะดะพัั‚ะฐะฒะปััŽั‰ะตะณะพ ั„ัƒะฝะบั†ะธะธ ะดะปั ะฒะตะบั‚ะพั€ะฝั‹ั… ะฒั‹ั‡ะธัะปะตะฝะธะน, ะบะพั‚ะพั€ั‹ะต ะฒั‹ะฟะพะปะฝััŽั‚ัั ั ะธัะฟะพะปัŒะทะพะฒะฐะฝะธะตะผ ะฒะตะบั‚ะพั€ะฝั‹ั… ะธะฝัั‚ั€ัƒะบั†ะธะน ะฟั€ะพั†ะตััะพั€ะพะฒ x86_64 ะธ AArch64 ะธ ะฟะพะทะฒะพะปััŽั‚ ะพะดะฝะพะฒั€ะตะผะตะฝะฝะพ ะฟั€ะธะผะตะฝะธั‚ัŒ ะพะฟะตั€ะฐั†ะธะธ ัั€ะฐะทัƒ ะบ ะฝะตัะบะพะปัŒะบะธะผ ะทะฝะฐั‡ะตะฝะธัะผ (SIMD). ะ’ ะพั‚ะปะธั‡ะธะต ะพั‚ ะฟั€ะตะดะพัั‚ะฐะฒะปัะตะผั‹ั… ะฒ JIT-ะบะพะผะฟะธะปัั‚ะพั€ะต HotSpot ะฒะพะทะผะพะถะฝะพัั‚ะตะน ะฟะพ ะฐะฒั‚ะพะฒะตะบั‚ะพั€ะธะทะฐั†ะธะธ ัะบะฐะปัั€ะฝั‹ั… ะพะฟะตั€ะฐั†ะธะน, ะฝะพะฒั‹ะน API ะดะฐั‘ั‚ ะฒะพะทะผะพะถะฝะพัั‚ัŒ ัะฒะฝะพ ัƒะฟั€ะฐะฒะปัั‚ัŒ ะฒะตะบั‚ะพั€ะธะทะฐั†ะธะตะน ะดะปั ะฟะฐั€ะฐะปะปะตะปัŒะฝะพะน ะพะฑั€ะฐะฑะพั‚ะบะธ ะดะฐะฝะฝั‹ั….

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

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