New Score :0
High Score :0
Run Best
NICE BUSINESS TYPE INDICATOR
3. ๊ธ์ ์ ์น๊ตฌ์๊ฒ ๋น๋ ธ๋๋ฐ ์ค๋์ด ๋์ ์ฃผ๊ธฐ๋ก ํ๋ .. ๊ทธ๋ฐ๋ฐ ์นด๋๊ฐ์ ๋ด์ผํ๋ ๋ ๋ ์ค๋์ธ๋ฐ... ์ด๊ฑธ ์ด์ฉ๋...
4. ์ฐ๋ฆฌ ํ์ฌ๋ ์ค์ํ ์์ฌ ๊ฒฐ์ ์ ํ ๋?
5. ์ด์ฌํ ์ผํ ๋๋ฅผ ์ํ ์ ๋ฌผ์ ์ฃผ๊ณ ์ถ๋ค. ์ด๋ค๊ฒ ์ข์๊น?
6. ์ํ์์ ํฌ์์ํ์ ์ถ์ฒ๋ฐ์๋ค. ์ด๋ค๊ฑธ ๊ฐ์ ํ์ง?
7. ํ์ฌ์์์ ๋๋?
8. ๊ฟ์์ ๊นจ์ด๋๋ 20๋ ์ ์ผ๋ก ๋์๊ฐ๋ค. ๋น์ ์ด ์ ์ผ ๋จผ์ ํ๋์ผ์?
9. ๋ด๊ฐ ์ธ์ฌ ๋ด๋น์๋ผ๋ฉด ์ ๊ท ์ ์ฌ์ ์ฑ์ฉ ์ ์ ์ผ ์ค์ํ๊ฒ ๋ณด๋๊ฒ์?
10. ํ์ฌ์ ์ ๋ง ์ซ์ดํ๋ ๋๋ฃ๊ฐ ์๋ค๋ฉด?
11. ๊ฐ๋ํ ์ง์ ๊ฐ์ฅ์ด ๋์๋ค.. ์๋ ์ ์์ผ ๋ ์ ๋ฌผ์?
12. ํ์ ํ์ฌ ์ถ๊ทผ ์คํ์ผ์?
13.ํ์ฌ ์ฒด์ก๋ํ ํ๋ ๋ ์ด๋ค. ์ค๋ ๋ญํ์ง?
14. ๋์ ์ ๋ฌด ์คํ์ผ์?
Java 21 Release
์์ ๋๋ก 9์ 19์ผ์๋ก Java 21 GA ๋ฆด๋ฆฌ์ฆ ๋์์ต๋๋ค.
(์ด๋ฏธ์ง ์ถ์ฒ - Inside Java)
1. Java 21 Release Note
Java 21 ์ ์ฒด ๋ฆด๋ฆฌ์ฆ ๋ ธํธ๋ ์ฌ๊ธฐ์ ํ์ธํ ์ ์์ต๋๋ค.
2. ์ฃผ์ ๊ธฐ๋ฅ ์์ฝ
Java 21์ ์ถ๊ฐ๋๋ ์๋ก์ด ๊ธฐ๋ฅ๋ค ์ค Preview๋ Incubator๋ ์ ์ธํ๊ณ , ์ฃผ์ ๊ธฐ๋ฅ๋ง ์ดํด๋ณด๋ฉด ์๋์ ๊ฐ์ต๋๋ค.
2.1 Virtual Threads (Project Loom) ๊ฐ ์ถ๊ฐ๋ฉ๋๋ค. (**JEP 444**)
*"๊ฐ์ ์ค๋ ๋๊ฐ ๋ง์ดํฌ๋ก์๋น์ค์์ ์ํฐํ๋ผ์ด์ฆ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ด๋ฅด๊ธฐ๊น์ง ๋น๋๊ธฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ๊ณ ๋ฐฐํฌํ๋ ๋ฐฉ์์ ์ํฅ์ ๋ฏธ์น ๊ฒ์ด๊ธฐ ๋๋ฌธ์ Java 21์ ๊ฐ์ฅ ์ค์ํ Java ๋ฆด๋ฆฌ์ค ์ค ํ๋์ ๋๋ค."*
Agile Developer, Inc์ ์ค๋ฆฝ์ ๋ฒค์บ ์๋ธ๋ผ๋ง๋์(Venkat Subramaniam)
๊ฐ์ ์ค๋ ๋๋ ๊ณ ์ฑ๋ฅ Java ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋ฉํฐํ์คํน์ ๊ด๋ฆฌํ ์ ์๋ ์๋กญ๊ณ ํจ์จ์ ์ธ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค.
๊ธฐ์กด Java ๊ฐ๋ฐ์์ ์ค๋ ๋๋ ์ฌ๋ฌ ์์ ์ ๋์์ ์คํํ๊ธฐ ์ํ ๋ฉ์ปค๋์ฆ์ ๋๋ค. ํ์ง๋ง ์ด๋ฌํ ๊ธฐ์กด ์ค๋ ๋๋ ์ด์ ์ฒด์ ์ ๋ฌถ์ฌ ์์ด ํ ๋ฒ์ ํ์ฑํํ ์ ์๋ ์ค๋ ๋ ์๊ฐ ์ ํ๋์ด ์์ต๋๋ค. ์ด ์ ํ์ผ๋ก ์ธํด ๋ ๋ง์ ์์ ์ด๋ ์ฌ์ฉ์๋ฅผ ์ฒ๋ฆฌํ๋๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ ํ์ฅํ๊ธฐ๊ฐ ์ด๋ ต์ต๋๋ค.
๊ฐ๋ฐ์๋ ๊ฐ ์ฌ์ฉ์ ์์ฒญ์ ํ๋์ ์ค๋ ๋๋ฅผ ํ ๋นํ์ต๋๋ค. ์ด "์์ฒญ๋น ํ๋์ ์ค๋ ๋" ์ ๊ทผ ๋ฐฉ์์ ๊ฐ๋จํ์ง๋ง ์์คํ ์ ํ์ผ๋ก ์ธํด ๋ฒฝ์ ๋ถ๋ชํ์ต๋๋ค. ๋์์ผ๋ก '๋น๋๊ธฐ ํ๋ก๊ทธ๋๋ฐ'์ ์ฌ์ฉํ๋๋ฐ, ์ด ๋ฐฉ๋ฒ์ ๋ ํจ์จ์ ์ด๊ธด ํ์ง๋ง ์ฝ๋๊ฐ ๋ ๋ณต์กํ๊ณ ์ดํดํ๊ธฐ ์ด๋ ค์ ์ต๋๋ค.
๊ฐ์ ์ค๋ ๋๋ ๋ ๊ฐ์ง ์ฅ์ ์ ๊ฒฐํฉํ ๊ฒ์ ๋๋ค. ๊ฐ๋ฐ์๋ '์์ฒญ๋น ํ๋์ ์ค๋ ๋' ์คํ์ผ์ ์ฌ์ฉํ๋ฉด์ ์ด์ ์ฒด์ ์ ์ฝ๋งค์ธ ์ ํ์ ํผํ ์ ์์ต๋๋ค. ๊ฐ์ ์ค๋ ๋๋ฅผ ์ฌ์ฉํ๋ฉด ์์คํ ์ ํ์ ๋ํ ๊ฑฑ์ ์์ด ๋ง์ ์์ ์ค๋ ๋๋ฅผ ๋ณด์ ํ ์ ์์ต๋๋ค.
์ฝํ๋ฆฐ๊ณผ ๊ฐ์ ์ธ์ด์์ ์ฝ๋ฃจํด์ ์ด์ฉํด์ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ๋ ์์์ผ๋, ์ด์ ๋ JVM ๋ ๋ฒจ์์ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํด์ก๋ค๊ณ ๋ณด์๋ฉด ๋ฉ๋๋ค.
๋จ, ์๋ชป ์๋ ค์ง ๊ฒ์ด ์๋๋ฐ ๊ธฐ์กด ์ค๋ ๋ ๊ตฌํ์ ์ ๊ฑฐํ๊ฑฐ๋ ๊ธฐ์กด ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ์ ์ค๋ ๋๋ฅผ ์ฌ์ฉํ๋๋ก ์กฐ์ฉํ ๋ง์ด๊ทธ๋ ์ด์ ํ๋ ๊ฒ์ด ๋ชฉํ๊ฐ ์๋๋ผ๊ณ ์คํ ๋ฌธ์์ ๋ช ์๋์ด ์์ต๋๋ค.
์์
// ๊ธฐ์กด ๋ฐฉ์
Thread thread = new Thread(() -> {
// Do some task
});
thread.start();
// ๊ฐ์ ์ฐ๋ ๋
Thread.ofVirtual().unstarted(() -> {
// Do some task
}).start();
2.2 Sequenced Collections ์ด ์ถ๊ฐ๋ฉ๋๋ค. (**JEP 431**)
*"Java 21์ ์ํ์ค ์ปฌ๋ ์ ๊ธฐ๋ฅ์ ๊ฐ๋ฐ์ ์ปค๋ฎค๋ํฐ๋ฅผ ์ํ ํ๋ฅญํ ์ถ๊ฐ ๊ธฐ๋ฅ์ ๋๋ค. ๊ฐ๋ฐ์๋ ๋ ์ด์ JUnit ํ ์คํธ์์ ์ค์๋ก ์ธ์นด์ดํฐ ์์์ ์์กดํ๋ค๊ฐ ๋น๋ ์๋ฒ**, ์ ๊ทธ๋ ์ด๋ ๋๋ ๋ค๋ฅธ ๊ณณ์์ ์คํจํ ๊น ๋ด ๊ฑฑ์ ํ ํ์๊ฐ ์์ต๋๋ค.***"
Java ์ฑํผ์ธ์ธ Jeanne Boyarsky
์ ํด์ง ์์๋๋ก ์์ดํ ์ ์กฐํํ ์ ์๋ ์ปฌ๋ ์ ์ ์๋ก์ด ์ธํฐํ์ด์ค๊ฐ ์ถ๊ฐ๋ฉ๋๋ค.
interface SequencedCollection<E> extends Collection<E> {
// new method
SequencedCollection<E> reversed();
// methods promoted from Deque
void addFirst(E);
void addLast(E);
E getFirst();
E getLast();
E removeFirst();
E removeLast();
}
2.3 Switch ๋ฌธ์ ํจํด ๋งค์นญ์ด ๊ฐํ๋์์ต๋๋ค (**JEP 441**)
- Switch ๋ฌธ์์ ํน์ ํ์ ์ ๋ฐ๋ผ ๋ถ๊ธฐ ์ฒ๋ฆฌํ ์ ์๋ ๊ตฌ๋ฌธ์ด ์ง์๋ฉ๋๋ค.
- Switch ๋ฌธ์์ Null ์ธ ์ผ์ด์ค๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ์์ด ์ง์๋ฉ๋๋ค.
- Switch ๋ฌธ์์ when ํค์๋๋ฅผ ์ด์ฉํด ๋ณด๋ค ๋ณต์กํ ์ผ์ด์ค ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํด์ง๋๋ค.
- Switch ๋ฌธ์์ Enum ์ ๋ณด๋ค ์ ์ฐํ๊ฒ ์ง์ํฉ๋๋ค.
2.4 Record Pattern ์ ์ด์ฉํ์ฌ ์ข ๋ ๊น๋ํ ์ฝ๋๋ฅผ ์์ฑ๊ฐ๋ฅํฉ๋๋ค. (**JEP 440**)
- ๋ ์ฝ๋ ํจํด์ ์ถ์ถ๋ ์ปดํฌ๋ํธ์ ๋ํ ์ง์ญ ๋ณ์ ์ ์ธ์ ์ ๊ฑฐํ๊ณ ํจํด๊ณผ ๊ฐ์ด ์ผ์นํ ๋ ์ ๊ทผ์ ๋ฉ์๋๋ฅผ ํธ์ถํ์ฌ ์ปดํฌ๋ํธ๋ฅผ ์ด๊ธฐํํฉ๋๋ค.
if (obj instanceof Point(int x, int y)) {
System.out.println(x+y);
}
2.5 Z Garbage Collector(ZGC) (**JEP 439**)
- Z ๊ฐ๋น์ง ์ปฌ๋ ํฐ(ZGC)๋ฅผ ํ์ฅํ์ฌ ์ ์ ๊ฐ์ฒด์ ์ค๋๋ ๊ฐ์ฒด์ ์ธ๋๋ฅผ ๋ถ๋ฆฌํ์ฌ ์ ์งํจ์ผ๋ก์จ ์ ํ๋ฆฌ์ผ์ด์ ์ฑ๋ฅ์ ๊ฐ์ ํฉ๋๋ค.
2.6 ์ํธํ ์๊ณ ๋ฆฌ์ฆ KEM ์ ์ฌ์ฉํ ์ ์๋๋ก ์ง์ํฉ๋๋ค (**JEP 452**)
- ๊ณต๊ฐ ํค ์ํธํ๋ฅผ ์ฌ์ฉํ์ฌ ๋์นญ ํค๋ฅผ ๋ณดํธํ๋ ์ํธํ ๊ธฐ์ ์ธ ํค ์บก์ํ ๋ฉ์ปค๋์ฆ(KEM)์ ์ํ API๊ฐ ์ถ๊ฐ๋ฉ๋๋ค.
3. Java 21 Support
Java 17 ๋ค์์ LTS ๋ฒ์ ์ด๋ผ์ ๋ง์ด๋ค ๊ธฐ๋ค๋ฆฌ์ จ์ํ ๋ฐ์.
Java ์ํ๊ณ๋ ์์ง ์ค๋น ์ค์ด๋ผ ๋ณธ๊ฒฉ์ ์ธ ๋์ ๊น์ง๋ ์๊ฐ์ด ์ข ๋ ํ์ํด๋ณด์ ๋๋ค.
- Spring Boot๋ v3.2.0 ๋ถํฐ ์ง์ ์์ ์ด๋ฉฐ, ํ์ฌ, M2 ๋จ๊ณ์ด๊ณ , 11์ 23์ผ ๋ฆด๋ฆฌ์ฆ ๋ชฉํ์ ๋๋ค.
- Gradle๋ v8.4 ๋ถํฐ ์ง์ ์์ ์ด๋ฉฐ, ํ์ฌ Java 20์ ์๋ฒฝ ์ง์ํ๋ v8.3 ์ด๋ฉฐ, v8.4 ์ผ์ ์ ๋ฏธ์ ์ ๋๋ค.
- JDK 21 ์ฉ GraalVM ์ ์ถ์๋์์ต๋๋ค.
4. Java 21 Launch Event - Live Streaming
- ํ๊ตญ์๊ฐ 9์ 19์ผ 21์๋ถํฐ ์๋ฒฝ 6์๊น์ง 8์๊ฐ ๋์ ๋ผ์ด๋ธ์คํธ๋ฆฌ๋ฐ์ ํตํด Java ์ถ์์ ๊ด๋ จ๋ ๋ผ์ด๋ธ ์ธ์ ๋ค์ด ์งํ๋ฉ๋๋ค. ์ธ๋ถ ์์ ๋ค๋ ์๋ด ํ์ด์ง๋ฅผ ์ฐธ๊ณ ํด์ฃผ์ธ์.
- ์๋ด ํ์ด์ง : https://dev.java/community/java-21-launch/
- ์ ํ๋ธ ๋งํฌ : https://www.youtube.com/live/E8NV68ihJyY?si=tzPyfdGh9O1hcpck
5. JDK 21 ๋ค์ด๋ก๋
5.1 OpenJDK JDK 21
5.2 Oracle
- https://www.oracle.com/java/technologies/downloads/
- Oracle JDK 21 ๋ฐ์ด๋๋ฆฌ๋ ํ๋ก๋์ ํ๊ฒฝ์์ ๋ฌด๋ฃ๋ก ์ฌ์ฉํ ์ ์์ผ๋ฉฐ, ์ค๋ผํด ๋ฌด๋ฃ ์ฌ์ฉ ์ฝ๊ด(NFTC)์ ๋ฐ๋ผ ๋ฌด๋ฃ๋ก ์ฌ๋ฐฐํฌํ ์ ์์ต๋๋ค.
- JDK 21์ ๋ค์ LTS๊ฐ ์ถ์๋๊ณ 1๋ ํ์ธ 2026๋ 9์๊น์ง NFTC์ ๋ฐ๋ผ ์ ๋ฐ์ดํธ๊ฐ ์ ๊ณต๋ฉ๋๋ค. ์ดํ JDK 21 ์ ๋ฐ์ดํธ๋ Java SE OTN ๋ผ์ด์ ์ค(OTN)์ ๋ฐ๋ผ ๋ผ์ด์ ์ค๊ฐ ๋ถ์ฌ๋๋ฉฐ, OTN ๋ผ์ด์ ์ค์ ์ ํ๋ ๋ฌด๋ฃ ๋ถ์ฌ๋ฅผ ์ด๊ณผํ์ฌ ํ๋ก๋์ ํ๊ฒฝ์์ ์ฌ์ฉํ๋ ค๋ฉด ์ ๋ฃ๋ก ์ฌ์ฉํด์ผ ํฉ๋๋ค.
5.3 Azul Zulu
5.4 Amazon Corretto
5.5 RedHat
5.6 Eclipse Temurin (์์ง ์์)
5.7 Microsoft (์์ง ์์)
(์ฐธ๊ณ ) ์คํ์์ค ๊ธฐ์ฌ (JDK 11 ์ดํ)
- Java 21์์ ์์ ๋ ๊ฒ์ผ๋ก ํ์๋ 2,585๊ฐ์ JIRA ์ด์ ์ค 1,868๊ฐ๋ ์ค๋ผํด์ด ์๋ฃํ์ผ๋ฉฐ, 717๊ฐ๋ Java ์ปค๋ฎค๋ํฐ์ ๋ค๋ฅธ ๊ตฌ์ฑ์์ด ๊ธฐ์ฌํ์ต๋๋ค.
- ์ค๋ผํด์ Amazon, ARM, Azul, Google, Huawei, IBM, Intel , ISCAS, Red Hat, Rivos, SAP ๋ฐ Tencent ๋ฑ์ ์กฐ์ง์์ ์ผํ๋ ๊ฐ๋ฐ์๋ค์ ๋ฐ์ด๋ ๊ธฐ์ฌ์ ๊ฐ์ฌ๋ฅผ ํํฉ๋๋ค.
๋ ๋ณด๊ธฐ
The arrival of java 21! -- Inside.java
Java 21 Features: Practical Examples and Insights (howtodoinjava.com)
Oracle Releases Java 21 and Extends Support Roadmap (prnewswire.com)
Java 21 is Coming -- Know the Latest Features in JDK 21 - DEV Community
[Java] Java 21์ ์ถ๊ฐ๋ ์๋ก์ด ๊ธฐ๋ฅ๋ค(Java 21 Features) - MangKyu's Diary (tistory.com)
Java 21 Features: Practical Examples and Insights
This article discusses the new developer features in Java 21 including Virtual Threads, Unnamed classes, Sequenced Collections and Record Patterns.
howtodoinjava.com
The arrival of java 21! – Inside.java
Oracle is proud to announce the general availability of JDK 21. This release is the 12th Feature Release delivered on time through the six-month release cadence. This level of predictability allows developers to easily manage their adoption of innov…
inside.java