19๊ฐ์๊ฐ์ ๊ฐ๋ฐ ๋์ Oracle์ OpenJDK ์คํ ์์ค ํ๋ก์ ํธ๋ฅผ ์ฐธ์กฐ ๊ตฌํ์ผ๋ก ์ฌ์ฉํ๋ Java SE 19(Java Platform, Standard Edition 19) ํ๋ซํผ์ ์ถ์ํ์ต๋๋ค. ์ฌ์ฉ๋์ง ์๋ ์ผ๋ถ ๊ธฐ๋ฅ์ด ์ ๊ฑฐ๋ ๊ฒ์ ์ ์ธํ๊ณ Java SE 19์ Java ํ๋ซํผ์ ์ด์ ๋ฆด๋ฆฌ์ค์์ ํ์ ํธํ์ฑ์ ์ ์งํฉ๋๋ค. ์ด์ ์ ์์ฑ๋ ๋๋ถ๋ถ์ Java ํ๋ก์ ํธ๋ ์ ๋ฒ์ ์์ ์คํ๋ ๋ ์์ ์์ด ๊ณ์ ์๋ํฉ๋๋ค. Java SE 86(JDK, JRE ๋ฐ Server JRE)์ ๋ฐ๋ก ์ค์น ๊ฐ๋ฅํ ๋น๋๋ Linux(x64_64, AArch86), Windows(x64_86) ๋ฐ macOS(x64_64, AArch19)์ฉ์ผ๋ก ์ค๋น๋์ด ์์ต๋๋ค. OpenJDK ํ๋ก์ ํธ์์ ๊ฐ๋ฐํ Java 2 ์ฐธ์กฐ ๊ตฌํ์ ์์ฉ ์ ํ์ ๋ํ ๋์ ์ฐ๊ฒฐ์ ํ์ฉํ๊ธฐ ์ํด GNU ClassPath ์์ธ๊ฐ ์๋ GPLvXNUMX ๋ผ์ด์ ์ค์ ๋ฐ๋ผ ์์ ํ ๊ฐ๋ฐฉ๋ฉ๋๋ค.
Java SE 19์ ์ผ๋ฐ ์ง์ ๋ฆด๋ฆฌ์ค๋ก ๋ถ๋ฅ๋๋ฉฐ ๋ค์ ๋ฆด๋ฆฌ์ค ์ ์ ์ ๋ฐ์ดํธ๊ฐ ๋ฆด๋ฆฌ์ค๋ฉ๋๋ค. ์ฅ๊ธฐ ์ง์(LTS) ๋ถ๊ธฐ๋ Java SE 17์ด์ด์ผ ํ๋ฉฐ 2029๋ ๊น์ง ์ ๋ฐ์ดํธ๋ฅผ ๋ฐ์ต๋๋ค. Java 10 ๋ฆด๋ฆฌ์ค๋ถํฐ ํ๋ก์ ํธ๊ฐ ์ ๊ฐ๋ฐ ํ๋ก์ธ์ค๋ก ์ ํ๋์ด ์ ๋ฆด๋ฆฌ์ค ํ์ฑ ์ฃผ๊ธฐ๊ฐ ๋ ์งง์์ก๋ค๋ ์ ์ ๊ธฐ์ตํ์ญ์์ค. ์๋ก์ด ๊ธฐ๋ฅ์ ์ด์ ์ง์์ ์ผ๋ก ์ ๋ฐ์ดํธ๋๋ ํ๋์ ๋ง์คํฐ ๋ธ๋์น์์ ๊ฐ๋ฐ๋๊ณ ์์ต๋๋ค. ๋ง์คํฐ ๋ธ๋์น๋ ์ด๋ฏธ ์๋ฃ๋ ๋ณ๊ฒฝ ์ฌํญ์ ํตํฉํ๊ณ ์ ๋ฆด๋ฆฌ์ค๋ฅผ ์์ ํํ๊ธฐ ์ํด XNUMX๊ฐ์๋ง๋ค ๋ธ๋์น๊ฐ ๋ถ๊ธฐ๋ฉ๋๋ค.
Java 19์ ์๋ก์ด ๊ธฐ๋ฅ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ๋ ์ฝ๋ ํด๋์ค์ ๊ฐ์ ๊ตฌ๋ฌธ ๋ถ์ํ๋ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ Java 16์ ๋์ ๋ ํจํด ์ผ์น ๊ธฐ๋ฅ์ ํ์ฅํ์ฌ ๋ ์ฝ๋ ํจํด์ ๋ํ ์๋น ์ง์์ด ์ ์๋์์ต๋๋ค. ์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค. Record Point(int x, int y) {} void printSum(Object o) { if (o instanceof Point(int x, int y)) { System.out.println(x+y); } }
- Linux ๋น๋๋ RISC-V ์ํคํ ์ฒ์ ๋ํ ์ง์์ ์ ๊ณตํฉ๋๋ค.
- ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ํจ์๋ฅผ ํธ์ถํ๊ณ JVM ์ธ๋ถ ๋ฉ๋ชจ๋ฆฌ์ ์ก์ธ์คํ์ฌ Java ํ๋ก๊ทธ๋จ๊ณผ ์ธ๋ถ ์ฝ๋ ๋ฐ ๋ฐ์ดํฐ์ ์ํธ ์์ฉ์ ๊ตฌ์ฑํ ์ ์๋ FFM(์ธ๋ถ ํจ์ ๋ฐ ๋ฉ๋ชจ๋ฆฌ) API์ ๋ํ ์๋น ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค.
- ๊ณ ์ฑ๋ฅ ๋ฉํฐ ์ค๋ ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ฑ ๋ฐ ์ ์ง ๊ด๋ฆฌ๋ฅผ ํฌ๊ฒ ๋จ์ํํ๋ ๊ฒฝ๋ ์ค๋ ๋์ธ ๊ฐ์ ์ค๋ ๋์ ๋ํ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค.
- x86_64 ๋ฐ AArch64 ํ๋ก์ธ์์์ ๋ฒกํฐ ๋ช ๋ น์ ์ฌ์ฉํ์ฌ ์คํ๋๊ณ ์์ ์ ์ฌ๋ฌ ๊ฐ(SIMD)์ ๋์์ ์ ์ฉํ ์ ์๋ ๋ฒกํฐ ๊ณ์ฐ์ ์ํ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ Vector API์ ๋ค ๋ฒ์งธ ๋ฏธ๋ฆฌ ๋ณด๊ธฐ๊ฐ ์ ์๋์์ต๋๋ค. ์ค์นผ๋ผ ์์ ์ ์๋ ๋ฒกํฐํ๋ฅผ ์ํด HotSpot JIT ์ปดํ์ผ๋ฌ์์ ์ ๊ณต๋๋ ๊ธฐ๋ฅ๊ณผ ๋ฌ๋ฆฌ ์ API๋ฅผ ์ฌ์ฉํ๋ฉด ๋ณ๋ ฌ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฅผ ์ํด ๋ฒกํฐํ๋ฅผ ๋ช ์์ ์ผ๋ก ์ ์ดํ ์ ์์ต๋๋ค.
- "switch" ํํ์์์ ํจํด ์ผ์น์ ์ธ ๋ฒ์งธ ์คํ์ ๊ตฌํ์ด ์ถ๊ฐ๋์ด "case" ๋ ์ด๋ธ์ ์ ํํ ๊ฐ์ด ์๋ ์ผ๋ จ์ ๊ฐ์ ํ ๋ฒ์ ํฌ๊ดํ๋ ์ ์ฐํ ํจํด์ ์ฌ์ฉํ ์ ์๊ฒ ๋์์ต๋๋ค. "if...else" ํํ์์ ๋ฒ๊ฑฐ๋ก์ด ์ฒด์ธ์ ์ฌ์ฉํฉ๋๋ค. ๊ฐ์ฒด o = 123L; ๋ฌธ์์ด ํ์ = ์ค์์น (o) { ์ผ์ด์ค ์ ์ i -> String.format("int %d", i); case Long l -> String.format("long %d", l); case Double d -> String.format("double %f", d); case String s -> String.format("String %s", s); ๊ธฐ๋ณธ๊ฐ -> o.toString(); };
- ์๋ก ๋ค๋ฅธ ์ค๋ ๋์์ ์คํ๋๋ ์ฌ๋ฌ ์์ ์ ๋จ์ผ ๋ธ๋ก์ผ๋ก ์ฒ๋ฆฌํ์ฌ ๋ค์ค ์ค๋ ๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ๋จ์ํํ๋ ๊ตฌ์กฐ์ ๋ณ๋ ฌ ์ฒ๋ฆฌ๋ฅผ ์ํ ์คํ์ API๋ฅผ ์ถ๊ฐํ์ต๋๋ค.
์ถ์ฒ : opennet.ru