# ๐Ÿ“š Java ่ฏญ่จ€ๆ ธๅฟƒ

Java ๆ–ฐ็‰นๆ€งๆ ‘ๅฝข็ป“ๆž„ (8 โ†’ 11 โ†’ 17 โ†’ 21)
โ”‚
โ”œโ”€โ”€ โ—‰ Java 8 LTS (2014) - ้ฉๅ‘ฝๆ€งๆ›ดๆ–ฐ
โ”‚   โ”œโ”€โ”€ ่ฏญ่จ€็‰นๆ€ง
โ”‚   โ”‚   โ”œโ”€โ”€ Lambda ่กจ่พพๅผ
โ”‚   โ”‚   โ”œโ”€โ”€ ๆ–นๆณ•ๅผ•็”จ
โ”‚   โ”‚   โ”œโ”€โ”€ ๅ‡ฝๆ•ฐๅผๆŽฅๅฃ (`@FunctionalInterface`)
โ”‚   โ”‚   โ”œโ”€โ”€ ๆŽฅๅฃ็š„้ป˜่ฎคๆ–นๆณ•ๅ’Œ้™ๆ€ๆ–นๆณ•
โ”‚   โ”‚   โ””โ”€โ”€ Optional ็ฑป
โ”‚   โ”œโ”€โ”€ API ๅขžๅผบ
โ”‚   โ”‚   โ”œโ”€โ”€ Stream API
โ”‚   โ”‚   โ”œโ”€โ”€ ๆ–ฐ็š„ๆ—ฅๆœŸๆ—ถ้—ด API (java.time)
โ”‚   โ”‚   โ””โ”€โ”€ CompletableFuture
โ”‚   โ””โ”€โ”€ JVM/ๅทฅๅ…ท
โ”‚       โ”œโ”€โ”€ ็งป้™คๆฐธไน…ไปฃ (PermGen)๏ผŒๅผ•ๅ…ฅๅ…ƒ็ฉบ้—ด (Metaspace)
โ”‚       โ”œโ”€โ”€ Nashorn JavaScript ๅผ•ๆ“Ž
โ”‚       โ””โ”€โ”€ ๅ‚ๆ•ฐ `-parameters` (ไฟ็•™ๅ‚ๆ•ฐๅ)
โ”‚
โ”œโ”€โ”€ โ—‰ Java 11 LTS (2018) - ็ŽฐไปฃๅŒ–ไธŽๆจกๅ—ๅŒ–
โ”‚   โ”œโ”€โ”€ ่ฏญ่จ€็‰นๆ€ง
โ”‚   โ”‚   โ””โ”€โ”€ ๅฑ€้ƒจๅ˜้‡็ฑปๅž‹ๆŽจๆ–ญ (`var`)
โ”‚   โ”œโ”€โ”€ API ๅขžๅผบ
โ”‚   โ”‚   โ”œโ”€โ”€ ๆ–ฐ็š„ HTTP Client (java.net.http)
โ”‚   โ”‚   โ”œโ”€โ”€ ๅญ—็ฌฆไธฒ API ๅขžๅผบ
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ `isBlank()`, `lines()`, `repeat()`, `strip()`
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ `String.stripIndent()`, `String.translateEscapes()`
โ”‚   โ”‚   โ”œโ”€โ”€ Collection.toArray(IntFunction) ๆ–นๆณ•
โ”‚   โ”‚   โ””โ”€โ”€ ๆ–ฐ็š„ๆ–‡ไปถๆ–นๆณ• (`Files.readString`, `writeString`)
โ”‚   โ”œโ”€โ”€ ๅทฅๅ…ท
โ”‚   โ”‚   โ””โ”€โ”€ ๅ•ๆ–‡ไปถๆบไปฃ็ ๅฏๅŠจ (็›ดๆŽฅ่ฟ่กŒ `.java` ๆ–‡ไปถ)
โ”‚   โ”œโ”€โ”€ ๅžƒๅœพๆ”ถ้›†ๅ™จ
โ”‚   โ”‚   โ”œโ”€โ”€ Epsilon GC (ๆ— ๆ“ไฝœๅžƒๅœพๆ”ถ้›†ๅ™จ)
โ”‚   โ”‚   โ””โ”€โ”€ ZGC (ๅฎž้ชŒๆ€ง)
โ”‚   โ””โ”€โ”€ ้‡่ฆๅ˜ๆ›ด
โ”‚       โ”œโ”€โ”€ ็งป้™ค Java EE ๅ’Œ CORBA ๆจกๅ—
โ”‚       โ”œโ”€โ”€ ็งป้™ค JavaFX (ๅˆ†็ฆปไธบ็‹ฌ็ซ‹ๆจกๅ—)
โ”‚       โ””โ”€โ”€ HTTP API ่ฟ‡ๆ—ถ๏ผŒๆŽจ่ไฝฟ็”จๆ–ฐ็š„ HTTP Client
โ”‚
โ”œโ”€โ”€ โ—‰ Java 17 LTS (2021) - ๆ–ฐๆ—ถไปฃ็š„ๅŸบ็Ÿณ
โ”‚   โ”œโ”€โ”€ ่ฏญ่จ€็‰นๆ€ง
โ”‚   โ”‚   โ”œโ”€โ”€ ๅฏ†ๅฐ็ฑป (Sealed Classes) (JEP 409)
โ”‚   โ”‚   โ””โ”€โ”€ ๆจกๅผๅŒน้… (้ข„่งˆ/ๆœ€็ปˆๅŒ–)
โ”‚   โ”‚       โ”œโ”€โ”€ `instanceof` ๆจกๅผๅŒน้… (JEP 394) - ๆœ€็ปˆ็‰ˆ
โ”‚   โ”‚       โ””โ”€โ”€ Switch ๆจกๅผๅŒน้… (JEP 406) - ้ข„่งˆ
โ”‚   โ”œโ”€โ”€ API ๅขžๅผบ
โ”‚   โ”‚   โ”œโ”€โ”€ ๆ–‡ๆœฌๅ— (Text Blocks) (JEP 378) - ๆœ€็ปˆ็‰ˆ
โ”‚   โ”‚   โ””โ”€โ”€ ๆ–ฐ็š„ macOS ๆธฒๆŸ“็ฎก้“
โ”‚   โ”œโ”€โ”€ ๅžƒๅœพๆ”ถ้›†ๅ™จ
โ”‚   โ”‚   โ”œโ”€โ”€ ๅผƒ็”จๅนถๅ‡†ๅค‡็งป้™ค Parallel Scavenge + SerialOld GC ็ป„ๅˆ
โ”‚   โ”‚   โ””โ”€โ”€ ๅผบๅŒ– ZGC ๅ’Œ Shenandoah GC
โ”‚   โ””โ”€โ”€ ๅฎ‰ๅ…จ/ๅ†…้ƒจ
โ”‚       โ”œโ”€โ”€ ๅผบๅฐ่ฃ… JDK ๅ†…้ƒจ API (้™ๅˆถไฝฟ็”จ `--illegal-access`)
โ”‚       โ”œโ”€โ”€ ๆ–ฐ็š„้šๆœบๆ•ฐ็”Ÿๆˆๅ™จ API (JEP 356)
โ”‚       โ””โ”€โ”€ ไธŠไธ‹ๆ–‡็‰นๅฎš็š„ๅๅบๅˆ—ๅŒ–่ฟ‡ๆปคๅ™จ (JEP 415)
โ”‚
โ””โ”€โ”€ โ—‰ Java 21 LTS (2023) - ๅนถๅ‘็š„ๆ–ฐ็บชๅ…ƒ
โ”‚   โ”œโ”€โ”€ ่ฏญ่จ€็‰นๆ€ง (ๆ ธๅฟƒไบฎ็‚น)
โ”‚   โ”‚   โ”œโ”€โ”€ ่™šๆ‹Ÿ็บฟ็จ‹ (Virtual Threads) (JEP 444) - ๆœ€็ปˆ็‰ˆ
โ”‚   โ”‚   โ”œโ”€โ”€ ่ฎฐๅฝ•ๆจกๅผ (Record Patterns) (JEP 440) - ๆœ€็ปˆ็‰ˆ
โ”‚   โ”‚   โ”œโ”€โ”€ Switch ็š„ๆจกๅผๅŒน้… (Pattern Matching for switch) (JEP 441) - ๆœ€็ปˆ็‰ˆ
โ”‚   โ”‚   โ””โ”€โ”€ ๅญ—็ฌฆไธฒๆจกๆฟ (String Templates) (JEP 430) - ้ข„่งˆ
โ”‚   โ”œโ”€โ”€ API ๅขžๅผบ
โ”‚   โ”‚   โ”œโ”€โ”€ ๅบๅˆ—ๅŒ–้›†ๅˆ (Sequenced Collections) (JEP 431)
โ”‚   โ”‚   โ””โ”€โ”€ ๅˆ†ไปฃๅผ ZGC (Generational ZGC) (JEP 439)
โ”‚   โ”œโ”€โ”€ ๅžƒๅœพๆ”ถ้›†ๅ™จ
โ”‚   โ”‚   โ””โ”€โ”€ ๅˆ†ไปฃๅผ ZGC (ๆ้ซ˜ๆ€ง่ƒฝ๏ผŒๅ‡ๅฐ‘ๅ†…ๅญ˜ๅผ€้”€)
โ”‚   โ””โ”€โ”€ ๅ…ถไป–
โ”‚        โ””โ”€โ”€ ๅผƒ็”จ Windows 32 ไฝ x86 ็ซฏๅฃ
โ”‚
โ”œโ”€โ”€ ๐Ÿง  JVM ๆทฑๅบฆ็†่งฃ
โ”‚   โ”œโ”€โ”€ ๅ†…ๅญ˜ๆจกๅž‹ (JMM)
โ”‚   โ”œโ”€โ”€ ๅžƒๅœพๅ›žๆ”ถๆœบๅˆถ
โ”‚   โ”‚   โ”œโ”€โ”€ GC ็ฎ—ๆณ• (ๆ ‡่ฎฐๆธ…้™คใ€ๅคๅˆถใ€ๆ ‡่ฎฐๆ•ด็†)
โ”‚   โ”‚   โ”œโ”€โ”€ ๅžƒๅœพๆ”ถ้›†ๅ™จ (G1ใ€ZGCใ€Shenandoah)
โ”‚   โ”‚   โ””โ”€โ”€ GC ่ฐƒไผ˜
โ”‚   โ”œโ”€โ”€ ็ฑปๅŠ ่ฝฝๆœบๅˆถ
โ”‚   โ”œโ”€โ”€ ๅญ—่Š‚็ ๆ‰ง่กŒ
โ”‚   โ”œโ”€โ”€ JVM ่ฐƒไผ˜
โ”‚   โ””โ”€โ”€ JVM ๆ€ง่ƒฝ็›‘ๆŽง
โ”‚       โ”œโ”€โ”€ jstackใ€jmapใ€jstat
โ”‚       โ”œโ”€โ”€ VisualVM
โ”‚       โ”œโ”€โ”€ JMX
โ”‚       โ””โ”€โ”€ Arthas
โ”‚
โ””โ”€โ”€ โšก ๅนถๅ‘็ผ–็จ‹
    โ”œโ”€โ”€ Java ๅ†…ๅญ˜ๆจกๅž‹ (JMM)
    โ”œโ”€โ”€ ็บฟ็จ‹ๆฑ ๅŽŸ็†ไธŽไฝฟ็”จ
    โ”œโ”€โ”€ ๅนถๅ‘ๅทฅๅ…ท็ฑป
    โ”‚   โ”œโ”€โ”€ CountDownLatch
    โ”‚   โ”œโ”€โ”€ CyclicBarrier
    โ”‚   โ”œโ”€โ”€ Semaphore
    โ”‚   โ””โ”€โ”€ Phaser
    โ”œโ”€โ”€ ๅนถๅ‘้›†ๅˆ
    โ”‚   โ”œโ”€โ”€ ConcurrentHashMap
    โ”‚   โ”œโ”€โ”€ CopyOnWriteArrayList
    โ”‚   โ””โ”€โ”€ BlockingQueue
    โ”œโ”€โ”€ Atomic ๅŒ…
    โ”œโ”€โ”€ CompletableFuture
    โ””โ”€โ”€ Fork/Join ๆก†ๆžถ