ã¿ãªãããä»æ¥ãï¾ï¾ï¾ï¾ï¾ï½¯ï½¸ï½½ï¾ï¾ï½¨ï½¯ï½¸ï½³ï¾ï½«ï½²ï¾ï¾ï¾ï½²ï¾ãã¦ã¾ããï¼
ï½¼ï¾ï½¬ï¾ï¾ã¨è¨ãã°ï¾ï¾ï¾ï¾ï¾ï½¯ï½¸ï½½ï¾ï¾ï½¨ï½¯ï½¸ï½³ï¾ï½«ï½²ï¾ï¾ï¾ï½²ï¾ã§ãããã
æè¿ã¯IDEã§main
[tab]ã¨å
¥åããã°è£å®ãã¦ãããã¨ã¯ãããã³ã¼ããèªãã¨ãã«ã¯ç®ã«å
¥ã£ã¦ããããã¾ããã
ãããªï¾ï¾ï¾ï¾ï¾ï½¯ï½¸ï½½ï¾ï¾ï½¨ï½¯ï½¸ï½³ï¾ï½«ï½²ï¾ï¾ï¾ï½²ï¾ã®åªæãã解æ¾ãããæ¥ãè¿ã¥ãã¦ãã¾ãã
TL; DR
9æãªãªã¼ã¹ã®Java 21ã®è©¦ç¨æ©è½ã¨ãã¦
void main() { System.out.println("Hello"); }
ãhello.javaã§ä¿åããããjava hello.java
ã§å®è¡ã§ããããã«ãªãã¾ãã
(Java 21ã§ã¯--enable-preview --source 21
ãå¿
è¦)
Javaã§ã¯ããã°ã©ã ãéå§ããã¨ãã«public
ãªclass
ãªã©ã«String
ã®é
åãåãåãpublic
ã§static
ã§æ»ãå¤ãè¿ããªãmain
ã¨ããååã®ã¡ã½ãããå®ç¾©ããå¿
è¦ãããã¾ãã
public class Hello { public static void main(String[] args) { System.out.println("Hello Java!"); } }
æä½éå¿ è¦ãªã®ã¯ ãã®é¨åã ããªã®ã«ãããããã¤ãã¦ãã¾ãã
println("Hello Java!");
ãããåé¡ãªã®ã¯ãJavaããã°ã©ãã³ã°ã®éå§æã«æããªãã¨ãããªããã¨ãå¤ãããã¨ãããã¨ã§ããã¯ã©ã¹ãã¢ã¯ã»ã¹æå®ãstaticãã¡ã½ããå®ç¾©ãå¼æ°ãStringãé
åãã¯ã©ã¹ã¡ã³ãã¼ãã¤ã³ã¹ã¿ã³ã¹ã¡ã³ãã¼ãã¡ã½ããå¼ã³åºããç¥ã£ã¦ããå¿
è¦ãããã¾ãã
ãã®ä¸ã§ãã¡ã½ããå¼ã³åºãã¯æ©è½å®ç¾ã«å¿
è¦ã§ããããã¡ã½ããå®ç¾©ãçµå±æ©ãææã«å¿
è¦ã«ãªãã®ã§ãã£ã¦ãããã¨æãã¾ããã¯ã©ã¹ããã¾ãããããæ¹éã¨ãã¦è¨±å®¹ç¯å²ã
ããããã¢ã¯ã»ã¹æå®ã¯è¤æ°ã®ã¯ã©ã¹ãå®ç¾©ããªãã¨èª¬æãã§ãã¾ãããããã¦staticã¯ã¤ã³ã¹ã¿ã³ã¹ã説æããªãã¨ãããªãããstaticãªãã®ã¡ã³ãã¼ã¨ã®ããã¨ãã®èª¬æãããªã大å¤ã§ããé
åãå²ã¨é¢åã
ã¨ãããã¨ã§ã9æãªãªã¼ã¹äºå®ã®Java 21ãã試ç¨æ©è½ã¨ãã¦æ¬¡ã®ããã«æ¸ãã¾ãã
void main() { System.out.println("Hello Java"); }
JEP 445ã¨ãã¦ã¾ã¨ãããã¦ãã¾ãã
JEP 445: Unnamed Classes and Instance Main Methods (Preview)
JEP 445ã¯å
é±ã®Build 26ã§åãè¾¼ã¾ãã¦ä½¿ããããã«ãªã£ã¦ãã¾ãã
https://jdk.java.net/21/
ãããå®è¡ããã«ã¯ã次ã®ããã«--enable-preview
ã--source
ã®æå®ãå¿
è¦ã§ãã
> java --source 21 --enable-preview hello.java ãã¼ã: hello.javaã¯Java SE 21ã®ãã¬ãã¥ã¼æ©è½ã使ç¨ãã¾ãã ãã¼ã: 詳細ã¯ã-Xlint:previewãªãã·ã§ã³ãæå®ãã¦åã³ã³ãã¤ã«ãã¦ãã ããã Hello Java
ä¸æ¦ã³ã³ãã¤ã«ããå ´åã¯ãjavaã³ãã³ãã«ã¯--source
ã¯ä¸è¦ã§ããã½ã¼ã¹ãã¡ã¤ã«åã¨åãååã®classãã¡ã¤ã«ãã§ãã¾ãã
>javac --enable-preview --source 21 hello.java ãã¼ã: hello.javaã¯Java SE 21ã®ãã¬ãã¥ã¼æ©è½ã使ç¨ãã¾ãã ãã¼ã: 詳細ã¯ã-Xlint:previewãªãã·ã§ã³ãæå®ãã¦åã³ã³ãã¤ã«ãã¦ãã ããã > java --enable-preview hello Hello Java
ãã©ã¾ããã³ãã³ãã©ã¤ã³ã§åããã¨ãã«ããããã³ã³ãã¤ã«ã¯ ããªãã§ããã
ã¯ã©ã¹ãæ¸ããããªãããã§ãOKã§ãã
class Hello { void main() { System.out.println("Hello Java"); } }
ã¤ã¾ããã¢ã¯ã»ã¹æå®ã¯private
以å¤ãªããªãã§ããããmain
ã«String[]
å¼æ°ããã£ã¦ããªãã¦ããããstatic
ã§ãstatic
ãããªãã¦ããããã¯ã©ã¹ããã£ã¦ããªãã¦ãããã¨ãããã¨ã«ãªã£ã¦ãã¾ãã
ã¯ã©ã¹ããªãå ´åã¯ãå®éã«ã¯Object
ã®å¿åã¯ã©ã¹ã¨ãããã¨ã«ãªãã¾ãã
new Object() { void main() { System.out.println("Hello Java"); } }.main();
ã§ãã¯ã©ã¹ã¨ãstaticã¨ãä¸è¦ãªã®ãããµã³ãã«ããã°ã©ã ãæ¸ãã®ã«ã¨ã¦ãããã§ããéã«ããã°ããã¾ã¾ã§ï¾ï¾ï¾ï¾ï¾ï½¯ï½¸ï½½ï¾ï¾ï½¨ï½¯ï½¸ï½³ï¾ï½«ï½²ï¾ï¾ï¾ï½²ï¾ã¯ããªãéªéã«ãªã£ã¦ããã¨ãããã¨ã§ãã
é«åº¦ã«çºå±ããï½¼ï¾ï½¬ï½³ï¾ï½§ï¾ï¾ï¾ï½¸ï¾ï¾ï¾ï½°ã«ã¨ã£ã¦ï¾ï¾ï¾ï¾ï¾ï½¯ï½¸ï½½ï¾ï¾ï½¨ï½¯ï½¸ï½³ï¾ï½«ï½²ï¾ï¾ï¾ï½²ï¾ã¯èªåçã«è¦çããæ¶ãã¦ããããã§ãããå®éã«æ¶ããã¨ãããè¦ãã¨ããã£ã±å
¨ç¶éãã¾ããã
ããã¯ãé«åº¦ã«çºå±ããï½¼ï¾ï½¬ï½³ï¾ï½§ï¾ï¾ï¾ï½¸ï¾ï¾ï¾ï½°ã«ã¨ã£ã¦å¿åã¯ã©ã¹ã¯èªåçã«ã¯ãã¼ã¸ã£ã«è¦ãã¦ããã®ããã©ã ãå¼ãå°å
¥ãããã¨ãã£ã±éªéã ã£ãã¨ããã®ã¨åãã§ããã
ã¾ããé«åº¦ã«çºå±ããï½¼ï¾ï½¬ï½³ï¾ï½§ï¾ï¾ï¾ï½¸ï¾ï¾ï¾ï½°ã¯èª¤éåããã¨ãã¦ããç´ã®éèªã®æåæ°ã¯èª¤éåããªãã®ã§ããã
ã¯ã©ã¹å®ç¾©ã§ã©ãã©ãç´ãå§è¿«ãã¦ãã¾ãã®ã§ãå®å
¨ãªå½¢ã®ã³ã¼ãã¯æ°è»½ã«ã¯ç¤ºãããã¯ã©ã¹ãmainãçç¥ããå½¢ã§è¼ãããã¨ã«ãªã£ã¦ãã¾ããããã®å ´åã«public static void main(String[])
ãåºãã¦ãã¾ãã¨ãè¨ããããã¨ãé ããã®ã§çµå±ã¯ã³ã¼ãé¨åã ãè¼ãããã¨ã«ãªã£ã¦ã¾ããã
ãããããã¨ãã°Streamã®èª¬æã§ã次ã®ã³ã¼ãã§ã¡ããã¨åãããããã°ã©ã ã¨ãã¦æ示ã§ããããã§ãã
import java.util.stream.Stream; void main() { Stream.of("apple", "banana") .map(String::toUpperCase) .forEach(s -> System.out.println(STR."ããã¯\{s}ã§ã")); }
ã¯ã©ã¹ã®import
ã¨ããã使ãã³ã¼ããè¿ããªãã®ã§ã¨ã¦ãããã
ãã¨ãæååã«å¤ãåãè¾¼ããString Templateãããã§ããããããJava 21ã§è©¦ç¨æ©è½ã¨ãã¦å°å
¥ããã¾ãã
JEP 430: String Templates (Preview)
ï¾ï¾ï¾ï¾ï¾ï½¯ï½¸ï½½ï¾ï¾ï½¨ï½¯ï½¸ï½³ï¾ï½«ï½²ï¾ï¾ï¾ï½²ï¾ããªããªãã¨ãï½¼ï¾ï½¬ï¾ï¾ã«è¦ããªããªãã¾ãã
ãã¨ã¯System.out
ã«ï½¼ï¾ï½¬ï¾ï¾ããããæ®ãã¾ããããããæãããã®ãã¡æ¶ãã¾ãã
System.out.println
ãããã©ã«ãã®static import
ã«ãããã¨ãã話ããã¦ãã¾ããã¨ããããä»åã®JEP 445ã¯æ¬¡ã®ãå
¥å£ã®èè£
ãã¨ãã話ã®ä¸é¨ã«ãªã£ã¦ãã¾ãã
Paving the on-ramp
å»å¹´ã®9æã«è©±ãåºã¦ãã¦ä»å¹´ã®9æã«å®è£ ãããã¨ããã¹ãã¼ãæãããã«Pythonã®ãã¬ãã·ã£ã¼æãã¦ããããããã¾ããã
ã¨ãããã¨ã§ã6æ24æ¥çºå£²ã®WEB+DB PRESS Vol.135ã§ã®ãµã³ãã«ã³ã¼ãã¯ã»ã¨ãã©ãã¹ã¦void main()
ã§å²ãã§æ¸ãã¦ãã¾ããã»ãã«ãJava 21ã®æ©è½ãæ´»ãããªãããµã³ãã«ãæ¸ãã¦ããã®ã§è¦ã¦ã¿ã¦ãã ããã
コï¾ï¾ï½¼ï¾ï½¬ï¾ï¾ï¾ï¾ï¾ï¾
ï½²ã¨ãªãã¾ãã
主é¡ã¯ãããã°ã©ã ã®å¦çãã©ãèãããã¨ãã話ãªã®ã§ãï½¼ï¾ï½¬ï¾ï¾ãããªã人ãèªãã§ãã ããã
â»è¿½è¨ 19:35 JEP443ã«ãã¦ãã®ããJEP445ã«ä¿®æ£ãã¾ããã
ãã¨ããããã¸ã§ã¯ãã«ï¼åæ¸ãã°ãããã¨ããã³ã¡ã³ãããã¾ãããå
¥éæã«ã¯1ãã¼ã¸ã«1åæ¸ããããã¾ãã1æéã®ææ¥ã§3ã¤4ã¤æ¸ããã¨ãããã¾ãããããã¨ãstaticã¯å
¥éæã«é常ã«éªéãªã®ã§ãªããªã£ã¦ãããããã
C#ããã¬ãã·ã£ä¸ããã»ã©è¿½ãä¸ãã¦ãããããªæ°é
ã¯ãªãããC#対æã§ããã°ã¨ã³ããªãã¤ã³ãæ¹åã¯æå¹ã§ã¯ãªãã¨æãã¾ãã
â»è¿½è¨ 20:58
ã·ã³ã¿ãã¯ã¹ã·ã¥ã¬ã¼ã¯è¦ãããã¨ãå¢ããã¨ãã話ããã¾ãããè¦ããã¿ã¤ãã³ã°ã®åé¡ã§ããå
¥éããã¦ã§ä½ãããããã¨ãã«ãããªãè¦ãããã¨ãå¤ããã¦ããè¦ãªãã£ããã¨ã«ãã¦ãã¨è¨ããããããªãã®ã¯æããããã§çµæ§ãªé害ã«ãªãã¾ãããã¨staticã¨éstaticã®ä½¿ãåããããªããã£ããã§ãã
ããç¨åº¦ããã°ã©ãã³ã°ãç解ãã¦ããæãããã¨ãã§ããããã«ãªãã®ã¯ãã¨ã¦ããããããã§ãã