เบซเบผเบฑเบเบเบฒเบเบซเบปเบเปเบเบทเบญเบเบเบญเบเบเบฒเบเบเบฑเบเบเบฐเบเบฒ, 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