αααααΆααααΈααΆαα’αα·ααααααααααααααΆααα½ααα Oracle ααΆαα ααααααΆααααα·ααΆ Java SE 22 (Java Platform, Standard Edition 22) αααααααΎαααααα OpenJDK αααααααΎαα αα ααΆααΆαα’αα»ααααα―αααΆααααααααααΆα ααΎααααααααΆαααα ααααΌααααααααα·ααααα½αα ααα½αααααααααααΎ Java SE 22 αααααΆααΆαααααααΆαααααααααΆαα½αααΉαααΆαα ααααααΆααα»αααααααα·ααΆ Java - αααααα Java αααααΆααααααααΈαα»αααΆαα αααΎαααΉαααααΎαααΆαααααα·αααΆαααΆαααααΆααααααΌααα αααααααΎαααΆααααααααααααααΈα ααΆααααααΎα Java SE 22 (JDK, JRE αα·α Server JRE) αααααααααα½α ααΆααααα αααααΆααααΆαααα‘αΎαααααΌαααΆααααα ααααααΆαα... Linux (x86_64, AArch64), Windows (x86_64) αα·α macOS (x86_64, AArch64)α αααααΎαα‘αΎαααααααααα OpenJDK ααΆαα’αα»ααααα―αααΆαααα Java 22 ααΊααΆαααααααΎαα αα ααααααααααααα’αΆααααΆααααα GPLv2 ααΆαα½α GNU ClassPath Exception αααα’αα»ααααΆαα±ααααΆαααΆααααααΆααααΆαααααααΆαα½αααα·αααααΆαα·αααααααα
Java SE 22 ααααΌαβααΆαβα αΆααβααααΆααβααΆβααΆαβα ααβααααΆαβααΆαβααΆααααβααΆβαααα αΆα α αΎαβααΉαβααααβααα½αβααΆαβααΆαβα’αΆαααααβαα αΌαβαααβααΆαβα ααβααααΆαβααΎαβαααααα ααΆααΆαααα½αααααααααα (LTS) αα½αααααΆ Java SE 21 α¬ Java SE 17 αααααΉαααα½αααΆαααΆαα’αΆααααααα αΌααααααααΆα 2031 αα·α 2029 αααααααΆ (ααΆααΌαα ααΆααα αΌααααααααΆα 2028 αα·α 2026)α ααΆαααΆααααααΆααΆααααααααΆααααΆααΆ LTS αα Java SE 11 ααΆααααα ααααΆαααΈαααααααΆααααΆααα»α ααα»ααααααΆαααΆααααααααααααΉααααααα αΌααααααααΆα 2032α ααΆαααΆαααααααααααααααΆααααΆααΆ LTS αα Java SE 8 ααΉααααααα αΌααααααααΆα 2030α
α’αα»ααααΆαα±ααααΎαααααΉαα’αααααΆααΆαα αΆααααααΎαααΆαα½αααΉαααΆαα ααααααΆααα Java 10 αααααααααααΆαααααΌααα ααααΎαααΆαα’αα·ααααααααααΈααααααα αΆαααΈααααααααΈαααααΆααααΆααααααΎαααΆαα ααααααΆαααααΈα αα»αααΆαααααΈα₯α‘αΌααααααααΌαααΆααααααΎαα‘αΎααα αααα»αααΆααΆαααααααΆαααααΎαα αα α»ααααααααΆαα₯αααααα ααααα½ααααα αΌαααΆαααααΆααααααΌααααααααααα½α ααΆααααα αα·αααΈααΆααΆααΆαααααααΌαααΆααααααααΆαααααΆααααααΆααα½ααααααα ααΎααααΈαααααααΆαααΆαα ααααααΆαααααΈα
αααααααα·αααααααΈαα αααα»α Java 22 αα½αααΆα:
- α’ααααααααΌαααααΆα G1 αα½ααααα αΌαααΆαααΆαααααααααΆααααΆαααααΆααααααα αααα’αα»ααααΆαα±ααα’ααααα½ααα»αααΈααΆααααααααααα» Java ααΆααααααα’αΆαααααααα»αα’αααα αα αΆα ααΎααααΈαααααΆααα½αααΆααααΌαααΆαααααΆααααΈαααα’ααααααααΌαααααΆα αα·αα’αα»ααααΆαα±ααα―αααΆαααααα ααΆααααααα»ααΆαααααααααααΆααααααα»ααααα·ααΆααααΆα Java αα·αααΌαααΎαα ααΆαααααΆααα’αα»ααααΆαα±ααα’αααααΆαααααααααΆαααΊααααΆα αα·ααααααΆαααΆααα·αααΆααααααΌαααααΆααα αααααααΎαααΆααααααααααΆαααα JNI (Java Native Interface) ααΆαα½αααΉαααΌαααΎα (αααααααααα»αααααα·ααααα·αααααααΆααααα JVM αα·ααα½αααααΆααααΈααααα»ααααΆαααααααΆααααααΉααα½ααα ααΎααααΈαααααΆααααααααααααααΆαα)α ααΆαααααΆααααααααα»ααααΆαααα ααααΈαα·αααααΆαα’ααααααααΌαααααΆα αααα’αΆα αααααααα’αΆαααααααααααα·αααΆαααααΆααα
- αα»αααΆααααααααΌαααΆααααααα ααΎααααΈα’αα»ααααΆαα±ααααααααααααΌαααΆααααααΆαααα αααα»α constructors αα»ααααα α super(...) αααααααΌαααΆαααααΎααΎααααΈα α constructor class ααααΈα’ααααααααΎα class αααααααΌαααΆαααα½ααααα ααααα·αααΎααααααααΆααααααα·ααααα αα ααΎ instance ααααααααΎαα‘αΎαααα constructorα ααααΆααααΆααααα { void hello() { System.out.println("ααααΆααα½α"); } class Inner { Inner() { hello(); super(); } } }
- FFM (Foreign Function & Memory) API ααααΌαααΆαααααΎα±ααααΆααααααααΆα αααα’αα»ααααΆαα±ααααΆαα’αααααααααααααααα·ααΈ Java ααΆαα½αααΉαααΌαααΆααααα αα·ααα·αααααααααααΆαα α αα»αααΆαααΈαααααΆαααααΆααααα αα·αααΆαα αΌαααααΎα’αααα αα αΆαααΆααααα JVM ααααα·αα αΆαααΆα αααααΎ JNI (Java Native Interface)α
- ααΆαααΆαααααααααΆααα’ααααααααααΆαααααα αα·αααΆαααααΌααααααααΆαααααΌαααΆαααΎα - αααα½αα±ααα’ααα αα·αααααΆαααααα·αααααΎ ααα»ααααα αΆαααΆα ααα αααα α ααΌααααα α₯α‘αΌααααα’αααα’αΆα αααααΆαααα½α’αααα β_β ααΆαα // was String pageName = switch (page) { case GitHubIssuePage(var url, var content, var links, int issueNumber) -> βISSUE #β + issueNumber; ... }; // α₯α‘αΌααααα’αααα’αΆα String pageName = switch (page) { case GitHubIssuePage(_, _, _, int issueNumber) -> βISSUE #β + issueNumber; };
- ααΆαα’αα»ααααααααα Class-File API ααααΌαααΆαααααΎα‘αΎααααααΆααααΆαααα αααααΎα αα·ααααααααα―αααΆαααααΆαα Java α ClassFile cf = ClassFile.of(); ClassModel classModel = cf.parse(αα); byte[] newBytes = cf.build(classModel.thisClass().asSymbol(), classBuilder -> { for (ClassElement ce : classModel) { if (!(ce instanceof MethodModel mm && mm.methodName().stringValue(). startsWith("ααααΆααααα α»α"))) { classBuilder.with(ce);
- α§αααααααααΎααααΆαα java αααααααΌααααααααΆααααα»αααΆαααααΎαααΆααααααα·ααΈ Java αααααααΌαααΆααααααααααααααα»αααααααααΆα―αααΆαααΌαααΆα
αααΎα α¬αααααΆαααααααΆαααααααΆαα
αααααααΆαα»α ααααα·αα
αΆαααΆα
αα
αααααα―αααΆαααΆαααααααΆα
ααααα‘αα αα·αααααα·αααααααα
ααΆααααααααααααααααααΆααααα αα»αααΆαααααΈααααΎα±ααααΆααΆααααααΆααααα½ααααα»αααΆαααααΎαααΆααααααα·ααΈαααααΌαααααααΆααααααααααααΌαααΆαααααααα
ααΆα―αααΆαααΆα
ααααα‘ααα Prog.java: class Prog { public static void main(String[] args) { Helper.run(); } } Helper.java: class Helper { static void run() { System.out.println("Hello!"); } }
α§ααΆα ααα ααΎααααΈααααΎαααΆααααααα·ααΈαααααΆαα―αααΆαααΈα "Prog.java" αα·α "Helper.java" α₯α‘αΌααααααΆαααααααααΆααα αΎααααα»αααΆαααααΎαααΆα "java Prog.java" αααααΉαα αααααααααΆαα Prog αααααααα ααααΈααααα ααααΆαααααα½αα ααααααα αα·αα αααααα―αααΆα Helper java αα·αα α αα·ααΈααΆαααααααααΆααα
- ααΆαααααααααΆαα’αα»αααααααααΈααΈαααααααΌααααα’αααα αααααααΌαααΆαα’αα»ααααααααααααΎα’ααααα’αααα αα·ααααα»αα’αααααα ααααΌααααα’ααααα’αα»ααααΆαα±ααα’ααααααα αΌαααααΆααΌαα’αααααααΆαα½αααΉααααααααααααΆαααααΆ αα·αα’αααααααα·αα αΆαααΆα αααααΎ + ααααα·ααααα·ααα ααΆααααα½αααααααααααΌαααΆαα’αα»αααααααααααΎααΆααααα½α \{..} α αΎαα§ααααααααααααΆααα·αααα’αΆα ααααΌαααΆααααααΆααααΎααααΈαα·αα·αααααΎαααΆαααααΉαααααΌαααααααααααα½αα α§ααΆα ααα αααΆαααΈα SQL αα·αα·αααααααααααααααΌαααΆααααα½ααα αααα»αααΌα SQL α αΎααααα‘ααααααα» java.sql.Statement ααΆαααααα αααααααααααααΎαααΆα JSON αααα½ααα·αα·αααααΆαααααΉαααααΌαααααΆααααα½α JSON αα·ααααα‘αα JsonNode α String query = "SELECT * FROM Person p WHERE p α" +αααααα + " = '" + ααααα + "'"; // was Statement query = SQL."""SELECT * FROM Person p WHERE p.\{property} = '\{value}'"""; // ααΆαααααΆαααΆ
- ααΆαααΎαααΆαα»αααΈααααΆαααΈααα Vector API ααααΌαααΆααααααα ααααααααααΌααα»αααΆααααααΆααααΆαααααΆααα·α ααααααααααΌαααΆαα’αα»αααααααααααΎααΆαααααΆαααα·α ααααα ααΎααααααααααααΎαααΆα x86_64 αα·α AArch64 α αΎαα’αα»ααααΆαα±ααααααα·ααααα·ααΆαααααΌαααΆαα’αα»αααααααα»ααααααααΆαααααΆα αααααααααα αααΎα (αααΈαααΈ)α αα·αααΌα αααααααΆααααααΆαααααααα αααα»ααααααα·ααΈα ααααα HotSpot JIT αααααΆααααΆαααααΎαα·αααααααααααααααααααα·ααααααα·ααααα·ααΆαααΆαααααααΆα API ααααΈααααΎα±ααααΆα’αΆα αααααααααααα·α ααααααΆαα αααΆααααΆαααααααΆααααααΎαααΆααα·ααααααααααααααΆα
- ααΆαα’αα»ααααααααα API ααααααΈαααααααααααΌαααΆααααααα αααααΆααααααΆααααααααααα·ααααα·ααΆαααααα·ααααααααααα’ααα αααα’αΆα ααΆααααααααααααα»αααααΈαααααααα·ααααα·ααΆαααααα·αααααααααααΆαααααΆαααα·ααααααααααΆαααααααΆααααΆαααααααααα·αααααααααα’αααα ααααΆαα α§ααααααααααααΆαααΎαααααΌαααΆαααααΆαααααααααΎααααα·ααααα·ααΆαααααα·ααααααααααΈ Stream::gather(Gatherer) αααααααΎαααΆαααΆαα»ααααααΈααααα’αα»ααααα§ααααααααααααΆαααααααααΆαααααα’αααααααΎααααΆαααα αα½αααα jshell> Stream.of(1,2,3,4,5,6,7,8,9).gather(new WindowFixed(3)).toList() $1 ==> [[1, 2, 3], [α€, α₯, α¦], [α§, α¨, α©]]
- ααααααΈααΈααα API αα·ααααααααααΆαα Structured Concurrency ααααΌαααΆαααααΎα‘αΎααααααΆααααΆαααααΎααααα ααααα½αααααα½ααααααΆαα’αα·αααααααααααα·ααΈαα α»αααα αααααααΎαααΆααα·α αα ααΆαααΆα αααΎααααααΆαααααα·ααααα·αααα»ααααααααα‘αΆαααααααααααΆααΆαααα»ααααα½αα
- ααΆαααααααααΆαα’αα»αααααααααΈααΈαααααααΆαααααααΆααααααΆαααααααααα αα·αααααΈααααα·ααααα ααααααααααα·ααΈααΆααααα "αα" αααα’αΆα α ααα αΆαααΆαα½αααΆααααααΆαααΆααΆααΆααα/αα·αα·αααα ααααααΆααα’αΆααααα’αΆαα»ααααα αα·αα’αααααΆααααααααααααααΆααααααΉαααΆααααααΆαααααΆααα // ααΆααααΆααααΆααΆααα HelloWorld { public static void main(String[] args) { System.out.println("Hello world!"); } } // α₯α‘αΌααααα’αααα’αΆα α αΆαααα»αααΆαααα main() { System.out.println("αα½ααααΈαα·ααααα!"); }
- ααΆαααααααααΆαα’αα»ααααααΆαααΎαααΆαα»αααΆααΎαααΈααΈαααααααααα·ααΆαααΆα αααα’αα»ααααΆαα±αααα·ααααααααααα·αα’αΆα ααααΆααααααΌαααΆαααΎααααΈα ααααααααα ααΌααΆαααααααααα‘αΆα αα·ααα·αααααααααααααΆααααααΌαααααααααααααα·αααααΆααααΆααααααααα‘αΆαααΌα (αααααααααΌαααΆαααα½ααααα)α ααααααααααΆααα·ααΆαααΆααααα»αααααΌαααΆααααααΎαα‘αΎαααΎααααΈαααα½αααααααΆαα’ααααααααααααα‘αΆα-ααΌαααααΆα α αΎαααΆαααααα·αααααΆαααΆααα αααααααΎα ααα½ααααααααααααααα‘αΆααα·αααα·α (ααΆααααΆαα α¬ααΆααααΆααααααααααα‘αΆα)α ααΆααα»αααααΆααααΆαααααΆα Scoped Values ββαα·αα’ααα thread-local ααΊααΆα’ααΈαααααΌαααΆαααααααααα αα·αα’αΆα ααααΆααααααΌαααΆααα αααα’ααΆαα α αΎααα ααααΆααααααΆααααααααααααααΆαααααα·ααααα·αααα thread ααα»αααααα
- α§ααααααααααΌαααααΆααααΆαααΆα‘ααααΆαααααΎα±αααααααΎαα‘αΎαααΌαααΆαα’αα»αααααα αααααααΎααΆαααΆαα½αα’αΆααααααααααααα»α ααΆααααααΎαααααα·αααααΆαααΆαααααΎα±ααααΆα’αΆα ααααΎαα ααΆααα αααα»αααΆαααααΎααααααα½αα ααα½αααΆαα½αααΉαα’αΆααααααααααααα»ααΎααααΈααΆαααααααααΆααααααΆαααααα»ααααα αΆααααααΎααααααααααααα»αα½α 20% α
ααΎαααΈαααααα α’αααα’αΆα
ααααααααΆααααΆαααααα»αααααααΆααα
αα
α»ααααααααΆααα
ααΆαααααα·ααΆαααααΆαααααααΎααααααα·ααΈαααααΆαα
ααα»α
αααααΆααααααΆα ααα·α JavaFX 22 α
ααααα: opennet.ru
