23 ãæã®éçºåŸãOracle ã¯ããªãŒãã³ãœãŒã¹ã® OpenJDK ãããžã§ã¯ãããªãã¡ã¬ã³ã¹å®è£ ãšããŠäœ¿çšãã Java SE 23 ãã©ãããã©ãŒã (Java Platform, Standard Edition 23) ãå ¬éããŸãããäžéšã®å»æ¢ãããæ©èœã®åé€ãé€ããJava SE 22 㯠Java ãã©ãããã©ãŒã ã®ä»¥åã®ãªãªãŒã¹ãšã®äžäœäºææ§ãç¶æããŸãã以åã«äœæããã Java ãããžã§ã¯ãã®ã»ãšãã©ã¯ãæ°ããããŒãžã§ã³ã§å®è¡ããŠã倿Žããã«æ©èœããŸããããã«ã€ã³ã¹ããŒã«ã§ãã Java SE 86 ãã«ã (JDKãJREãããã³ Server JRE) ã¯ãLinux (x64_64ãAArch86)ãWindows (x64_86)ãããã³ macOS (x64_64ãAArch23) çšã«çšæãããŠããŸãã OpenJDK ãããžã§ã¯ãã«ãã£ãŠéçºããã Java 2 ãªãã¡ã¬ã³ã¹å®è£ ã¯ãGPLvXNUMX ã©ã€ã»ã³ã¹ã®äžã§å®å šã«ãªãŒãã³ ãœãŒã¹ã§ãããåçšè£œåãšã®åçãªã³ã¯ãå¯èœã«ãã GNU ClassPath äŸå€ããããŸãã
Java SE 23 ã¯éåžžã®ãµããŒã ãªãªãŒã¹ãšããŠåé¡ãããŠãããæ¬¡ã®ãªãªãŒã¹ãŸã§æŽæ°ãåãåãç¶ããŸãã Long Term Support (LTS) ãã©ã³ã㯠Java SE 21 ãŸã㯠Java SE 17 ã§ããå¿ èŠãããããããã 2031 幎㚠2029 幎ãŸã§ã¢ããããŒããåãåããŸã (é垞㯠2028 幎㚠2026 幎ãŸã§å©çšå¯èœ)ã Java SE 8 ã® LTS ãã©ã³ãã®å»¶é·ãµããŒã㯠2030 幎ãŸã§ãJava SE 11 㯠2032 幎ãŸã§ç¶ããŸãã
Java SE ã§ææ¡ãããŠãã 23 ã®ã€ãããŒã·ã§ã³ã«ã¯æ¬¡ã®ãããªãã®ããããŸãã
- ZGC (Generation Z Garbage Collector) ã¬ããŒãž ã³ã¬ã¯ã¿ãŒã®åäœã®çæã¢ãŒãã¯ããã©ã«ãã§æå¹ã«ãªã£ãŠããããå€ãããªããžã§ã¯ããšãè¥ãããªããžã§ã¯ããåå¥ã«åŠçãããããæè¿äœæãããæå¹æéã®çããªããžã§ã¯ãã®ã¯ãªãŒã³ã¢ããå¹çãåäžããŸããäžä»£å¥ ZGC ã䜿çšãããšããªãœãŒã¹å²ãåœãŠäžã®ã¹ããŒã«ã®ãªã¹ã¯ã軜æžãããã¬ããŒãž ã³ã¬ã¯ã·ã§ã³äžã® CPU è² è·ãšã¡ã¢ãªæ¶è²»ã軜æžãããŸãã Apache Cassandra 4 ã䜿çšããŠäžä»£å¥ ZGC ããã¹ããããšãããåºå®ããŒã ãµã€ãºã§ã¯ã¹ã«ãŒãããã 4 åå¢å ããäžå®ã®ã¹ã«ãŒãããã§ã¯ããŒã ãµã€ãºã XNUMX åã® XNUMX ã«æžå°ããããšãããããŸããã
- JavaDoc ã§ã¯ãMarkdown ã䜿çšããŠã³ã¡ã³ãå
ã®ã³ãŒããææžåããããã®ãµããŒãã远å ãããŸãããããã¯ãHTML ãš JavaDoc @ ã¿ã°ãçµã¿åããã代ããã«äœ¿çšã§ããŸãã

- ãã¿ãŒã³ ãããã³ã° ã¡ã«ããºã ã¯ããã¹ãŠã®çš®é¡ã®ãã³ãã¬ãŒãããinstanceofãã¹ããŒãã¡ã³ããããã³ãswitchããããã¯ã§ã®ããªããã£ãå (intãbyteãcharãããã³ãã®ä»ã®éãªããžã§ã¯ãåºæ¬å) ã®äœ¿çšãæ«å®çã«ãµããŒãããããšã§åŒ·åãããŸããã switch (x.getStatus()) { case 0 -> âokâ;ã±ãŒã¹ 1 -> ãèŠåã;ã±ãŒã¹ 2 -> ããšã©ãŒã; case int i -> âäžæãªã¹ããŒã¿ã¹:â + i; } if (i ã€ã³ã¹ã¿ã³ã¹ãªããã€ã b) { ⊠b ⊠}
- åäžã®ãimport module Mãã¹ããŒãã¡ã³ãã䜿çšããŠãæå®ãããã¢ãžã¥ãŒã«ã«ãã£ãŠãšã¯ã¹ããŒãããããã¹ãŠã®ããã±ãŒãžãäžåºŠã«ã€ã³ããŒãããããã®äºåãµããŒãã远å ãããŸããããã®å€æŽã«ãããã¢ãžã¥ãŒã« ã©ã€ãã©ãªã®åå©çšã倧å¹
ã«ç°¡çŽ åãããããã±ãŒãžéå±€å
ã®äœçœ®ã決å®ããããšãªãã©ã€ãã©ãªãã¯ã©ã¹ãå«ããããšãã§ããããã«ãªããŸããããšãã°ããimport module java.baseããšæå®ãããšãjava.base ã¢ãžã¥ãŒã«ã«å«ãŸãã 54 åã®ããã±ãŒãžãã¹ãŠãã€ã³ããŒããããŸãããããŸã§ã¯åå¥ã«æå®ããå¿
èŠããããŸãã (ãimport java.io.*ãããimport java.util.*ã)ã ããªã©ïŒã
Class-File API ã® 2 çªç®ã®æ«å®å®è£ ã¯ãJava ã¯ã©ã¹ ãã¡ã€ã«ãè§£æãçæã倿ããããã«ææ¡ãããŠããŸããã¯ã©ã¹ãã¡ã€ã« cf = ã¯ã©ã¹ãã¡ã€ã«.of();ã¯ã©ã¹ã¢ãã« classModel = cf.parse(ãã€ã); byte[] newBytes = cf.build(classModel.thisClass().asSymbol(), classBuilder -> { for (ClassElement ce : classModel) { if (!(ce instanceof MethodModel mm && mm.methodName().stringValue(). beginsWith("ãããã°"))) { classBuilder.with(ce);
- Vector API ã® 86 çªç®ã®ãã¬ãã¥ãŒã¯ãx64_64 ããã³ AArchXNUMX ããã»ããµäžã§ãã¯ãã«åœä»€ã䜿çšããŠå®è¡ããããã¯ãã«èšç®ã®é¢æ°ãæäŸããæäœãè€æ°ã®å€ (SIMD) ã«åæã«é©çšã§ããããã«ããŸãã HotSpot JIT ã³ã³ãã€ã©ã§æäŸãããã¹ã«ã©ãŒæŒç®ã®èªåãã¯ãã«åæ©èœãšã¯ç°ãªããæ°ãã API ã§ã¯äžŠåããŒã¿åŠçã®ãã¯ãã«åãæç€ºçã«å¶åŸ¡ã§ããŸãã
- éžæãããã±ãŒã«ã«åºã¥ããŠããã¹ãã®æžåŒèšå®ã衚瀺ãèªã¿åããè¡ãããã«ãformatãprintfãreadPasswordãããã³ readLine ã¡ãœããã java.io.Console ã¯ã©ã¹ã«è¿œå ããŸããã System.console().printf(Locale.FRANCE, "%1$tY-%1$tB-%1$te %1$tA", new Date()) 2024-mai-16 jeudi
- æ¡åŒµã¹ããªãŒã API ã® 1,2,3,4,5,6,7,8,9 çªç®ã®ãã¬ãã¥ãŒå®è£ ã远å ãããŸãããããã¯ãç¬èªã®äžéæäœã®å®çŸ©ããµããŒãããŸããããã¯ãæ¢åã®çµã¿èŸŒã¿ã®äžéæäœã§ã¯ç®çã®ããŒã¿å€æã«ååã§ã¯ãªãå Žåã«åœ¹ç«ã¡ãŸãããã€ãã£ã ãã³ãã©ãŒã¯ãæ°ããäžéæäœ Stream::gather(Gatherer) ã䜿çšããŠæ¥ç¶ãããŸãããã®æäœã¯ããŠãŒã¶ãŒæå®ã®ãã³ãã©ãŒãã¹ããªãŒã èŠçŽ ã«é©çšããããšã«ãã£ãŠã¹ããªãŒã èŠçŽ ãåŠçããŸãã jshell> Stream.of(3).gather(new WindowFixed(1)).toList() $1 ==> [[2, 3, 4], [5ã6ã7]ã[8ã9ãXNUMX]]
- æé»çã«å®£èšãããã¯ã©ã¹ãšãmainãã¡ãœããã®ååã®ãªãã€ã³ã¹ã¿ã³ã¹ã® 3 çªç®ã®äºåå®è£ ã远å ããŸãããããã«ãããpublic/static 宣èšãäžèŠã«ãªããåŒæ°ã®é åãã¯ã©ã¹å®£èšã«é¢é£ä»ãããããã®ä»ã®ãšã³ãã£ãã£ãæž¡ãããšãã§ããŸãã // public class HelloWorld { public static void main(String[] args) { System.out.println("Hello world!"); } } // ããã§ void main() { System.out.println("Hello, World!"); }
- super(...) ãåŒã³åºãåã«ã³ã³ã¹ãã©ã¯ã¿ãŒãåŒãæå®ã§ããæ©èœã® 2 çªç®ã®ãã¬ãã¥ãŒã远å ããŸããããã®æ©èœã¯ãåŒãã³ã³ã¹ãã©ã¯ã¿ãŒã«ãã£ãŠäœæãããã€ã³ã¹ã¿ã³ã¹ãåç §ããŠããªãå Žåã«ãç¶æ¿ãããã¯ã©ã¹ã®ã³ã³ã¹ãã©ã¯ã¿ãŒãã芪ã¯ã©ã¹ã®ã³ã³ã¹ãã©ã¯ã¿ãŒãæç€ºçã«åŒã³åºãããã«äœ¿çšãããŸããã¯ã©ã¹ ã¢ãŠã¿ãŒ { void hello() { System.out.println("Hello"); } ã¯ã©ã¹å éš { Inner() { hello();çŽ æŽãããïŒïŒ; } } }
- ã¹ã³ãŒãä»ãå€ã® 3 çªç®ã®ãã¬ãã¥ãŒå®è£ ã远å ããŸãããããã«ãããäžå€ããŒã¿ãã¹ã¬ããéã§å ±æããããåã¹ã¬ããéã§ããŒã¿ãå¹ççã«äº€æãããã§ããŸã (å€ã¯ç¶æ¿ãããŸã)ãã¹ã³ãŒãä»ãå€ã¯ãã¹ã¬ããããŒã«ã«å€æ°ã¡ã«ããºã ã眮ãæããããã«éçºãããŠãããéåžžã«å€æ°ã®ä»®æ³ã¹ã¬ãã (æ°åãŸãã¯æ°çŸäžã®ã¹ã¬ãã) ã䜿çšããå Žåã«ããå¹ççã§ããã¹ã³ãŒãä»ãã®å€ãšã¹ã¬ããããŒã«ã«å€æ°ã®äž»ãªéãã¯ãåè ã¯äžåºŠæžã蟌ãŸããå°æ¥å€æŽããããšãã§ãããã¹ã¬ããã®å®è¡äžã®ã¿äœ¿çšå¯èœãªãŸãŸã§ããããšã§ãã
- Structured Concurrency API ã® 3 çªç®ã®ãã¬ãã¥ãŒããã¹ãçšã«ææ¡ãããŠãããç°ãªãã¹ã¬ããã§å®è¡ãããè€æ°ã®ã¿ã¹ã¯ã 1 ã€ã®ãããã¯ãšããŠåŠçããããšã§ããã«ãã¹ã¬ãã ã¢ããªã±ãŒã·ã§ã³ã®éçºãç°¡çŽ åããŸãã
- sun.misc.Unsafe ã¯ã©ã¹ã«ãã£ãŠæäŸãããå€éšã¡ã¢ãª ã¢ã¯ã»ã¹ ã¡ãœãã (JVM ã®å€éš) ã¯éæšå¥šãšãªããåé€ãããäºå®ã§ãããªãããŒã ã¡ã¢ãªã«ã¢ã¯ã»ã¹ããŠå€éšã³ãŒããšå¯Ÿè©±ããã«ã¯ãVarHandle API ãš FFM (Foreign Function & Memory) API ã䜿çšããããšããå§ãããŸãã
ããã«ãJavaFX 23 ã°ã©ãã£ã«ã« ã€ã³ã¿ãŒãã§ã€ã¹ã䜿çšããŠã¢ããªã±ãŒã·ã§ã³ãäœæããããã®ãã©ãããã©ãŒã ã®ã¢ããããŒããå ¬éãããã¡ã€ã³ã® Oracle JDK 23 ã« GraalVM JIT ã³ã³ãã€ã©ãçµã¿èŸŒãŸããããšã«ã泚ç®ããŠãã ããã
ãŸãããŠãããŒãµã«ä»®æ³ãã·ã³ GraalVM ã®æ°ãããªãªãŒã¹ãçºè¡šãããŸãããããã¯ãJavaScript (Node.js)ãPythonãRubyãRãJVM çšã®ä»»æã®èšèª (JavaãScalaãClojureãKotlin) ããã³èšèªã§ã®ã¢ããªã±ãŒã·ã§ã³ã®å®è¡ããµããŒãããŸãã LLVM ãããã³ãŒããçæã§ãããã® (CãC++ãRust)ã JDK 23 ã®ãµããŒãã«å ããŠãæ°ããããŒãžã§ã³ã§ã¯ã¡ã¢ãªæ¶è²»ãšå®è¡å¯èœã³ãŒãã®ãµã€ãºãæé©åãããJIT ã³ã³ãã€ã«ã䜿çšã㊠Python ãš WebAssembly ã Java ã³ãŒãã«åã蟌ãããã®ããŒã«ãå®å
šã«ãµããŒããããŸãã
åºæïŒ ãªãŒãã³ããã.ru

