XNUMX๊ฐ์ ๊ฐ์ ๊ฐ๋ฐ ๋์ Oracle์
Java SE 15๋ ์ผ๋ฐ ์ง์ ๋ฆด๋ฆฌ์ค๋ก ๋ถ๋ฅ๋๋ฉฐ ๋ค์ ๋ฆด๋ฆฌ์ค๊น์ง ๊ณ์ ์ ๋ฐ์ดํธ๋ฅผ ๋ฐ์ ์์ ์ ๋๋ค. LTS(์ฅ๊ธฐ ์ง์) ๋ถ๊ธฐ๋ Java SE 11์ด์ด์ผ ํ๋ฉฐ 2026๋ ๊น์ง ๊ณ์ ์ ๋ฐ์ดํธ๋ฅผ ๋ฐ์ ์ ์์ต๋๋ค. Java 8์ ์ด์ LTS ๋ถ๊ธฐ๋ 2020๋ 2021์๊น์ง ์ง์๋ฉ๋๋ค. ๋ค์ LTS ๋ฆด๋ฆฌ์ค๋ 10๋ XNUMX์๋ก ์์ ๋์ด ์์ต๋๋ค. Java XNUMX ๋ฆด๋ฆฌ์ค๋ถํฐ ํ๋ก์ ํธ๊ฐ ์๋ก์ด ๊ฐ๋ฐ ํ๋ก์ธ์ค๋ก ์ ํ๋์์ผ๋ฉฐ, ์ด๋ ์ ๋ฆด๋ฆฌ์ค ํ์ฑ ์ฃผ๊ธฐ๊ฐ ๋ ์งง์์ก์์ ์๋ฏธํฉ๋๋ค. ์ด์ ์๋ก์ด ๊ธฐ๋ฅ์ ์ง์์ ์ผ๋ก ์ ๋ฐ์ดํธ๋๋ ํ๋์ ๋ง์คํฐ ๋ธ๋์น์์ ๊ฐ๋ฐ๋ฉ๋๋ค. ์ฌ๊ธฐ์๋ ๊ธฐ์ฑ ๋ณ๊ฒฝ ์ฌํญ์ด ํฌํจ๋์ด ์์ผ๋ฉฐ ์ ๋ฆด๋ฆฌ์ค๋ฅผ ์์ ํํ๊ธฐ ์ํด XNUMX๊ฐ์๋ง๋ค ๋ธ๋์น๊ฐ ๋ถ๊ธฐ๋ฉ๋๋ค.
์ผ๋ก
-
๋ด์ฅ EdDSA(Edwards-Curve Digital Signature Algorithm) ๋์งํธ ์๋ช ์์ฑ ์๊ณ ๋ฆฌ์ฆ ์ง์RFC 8032 ). ์ ์๋ EdDSA ๊ตฌํ์ ํ๋์จ์ด ํ๋ซํผ์ ์์กดํ์ง ์๊ณ ๋ถ์ฑ๋ ๊ณต๊ฒฉ์ผ๋ก๋ถํฐ ๋ณดํธ๋๋ฉฐ(๋ชจ๋ ๊ณ์ฐ์ ์ผ์ ํ ์๊ฐ์ด ๋ณด์ฅ๋จ) ๋์ผํ ์์ค์ ๋ณดํธ๋ก C ์ธ์ด๋ก ์์ฑ๋ ๊ธฐ์กด ECDSA ๊ตฌํ๋ณด๋ค ์ฑ๋ฅ์ด ๋ ๋น ๋ฆ ๋๋ค. ์๋ฅผ ๋ค์ด, 126๋นํธ ํค์ ํจ๊ป ํ์ ๊ณก์ ์ ์ฌ์ฉํ๋ EdDSA๋ secp256r1 ํ์ ๊ณก์ ๊ณผ 128๋นํธ ํค๋ฅผ ์ฌ์ฉํ๋ ECDSA์ ์ ์ฌํ ์ฑ๋ฅ์ ๋ํ๋ ๋๋ค. -
์ถ๊ฐ๋จ ๊ตฌํ์ ์์, ํ์ฅ ๋๋ ์ฌ์ ์ํ๊ธฐ ์ํด ๋ค๋ฅธ ํด๋์ค ๋ฐ ์ธํฐํ์ด์ค์์ ์ฌ์ฉํ ์ ์๋ ๋ด์ธ๋ ํด๋์ค ๋ฐ ์ธํฐํ์ด์ค์ ๋ํ ์คํ์ ์ง์์ ๋๋ค. ๋ํ Sealed ํด๋์ค๋ ํ์ฅ์ด ํ์ฉ๋๋ ํ์ ํด๋์ค๋ฅผ ๋ช ์์ ์ผ๋ก ๋์ดํ๋ ๋ฐฉ์์ ๊ธฐ๋ฐ์ผ๋ก ์ก์ธ์ค ํ์ ์๋ณด๋ค ์์ ํด๋์ค์ ์ฌ์ฉ์ ์ ํํ๋ ๋ณด๋ค ์ ์ธ์ ์ธ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค.ํจํค์ง com.example.geometry;
๊ณต๊ฐ ๋ด์ธ ํด๋์ค ๋ชจ์
com.example.pole.Circle์ ํ์ฉํฉ๋๋ค.
com.example.quad.Rectangle,
com.example.quad.simple.Square {...} -
์ถ๊ฐ๋จ ๋ค๋ฅธ ํด๋์ค์ ๋ฐ์ดํธ์ฝ๋์์ ์ง์ ์ฌ์ฉํ ์ ์๋ ์จ๊ฒจ์ง ํด๋์ค๋ฅผ ์ง์ํฉ๋๋ค. ํ๋ ํด๋์ค์ ์ฃผ์ ๋ชฉ์ ์ ๋ฐํ์์ ํด๋์ค๋ฅผ ๋์ ์ผ๋ก ์์ฑํ๊ณ ์ด๋ฅผ ๊ฐ์ ์ ์ผ๋ก ์ฌ์ฉํ๋ ํ๋ ์์ํฌ์์ ์ฌ์ฉ๋๋ ๊ฒ์ ๋๋ค.๋ฐ์ฌ . ์ด๋ฌํ ํด๋์ค๋ ์ผ๋ฐ์ ์ผ๋ก ์๋ช ์ฃผ๊ธฐ๊ฐ ์ ํ๋์ด ์์ผ๋ฏ๋ก ์ ์ ์ผ๋ก ์์ฑ๋ ํด๋์ค์์ ์ก์ธ์คํ ์ ์๋๋ก ์ ์งํ๋ ๊ฒ์ ํ๋นํ์ง ์์ผ๋ฉฐ ๋ฉ๋ชจ๋ฆฌ ์๋น๋ง ์ฆ๊ฐ์ํต๋๋ค. ๋ํ ์จ๊ฒจ์ง ํด๋์ค๋ฅผ ์ฌ์ฉํ๋ฉด ํฅํ ์ ๊ฑฐ ์์ ์ธ ๋นํ์ค API sun.misc.Unsafe::defineAnonymousClass๊ฐ ํ์ํ์ง ์์ต๋๋ค. - ZGC(Z Garbage Collector) ๊ฐ๋น์ง ์ปฌ๋ ํฐ๊ฐ ์์ ํ๋์ด ๋๋ฆฌ ์ฌ์ฉํ ์ ์๋ ๊ฒ์ผ๋ก ์ธ์ ๋์์ต๋๋ค. ZGC๋ ์๋ ๋ชจ๋์์ ์๋ํ๋ฉฐ ๊ฐ๋น์ง ์์ง์ผ๋ก ์ธํ ๋๊ธฐ ์๊ฐ์ ์ต๋ํ ์ต์ํํ๊ณ (ZGC ์ฌ์ฉ ์ ์ ์ง ์๊ฐ์ 10ms๋ฅผ ์ด๊ณผํ์ง ์์) ์๋ฐฑ ๋ฉ๊ฐ๋ฐ์ดํธ์์ ์ ํ ๋ผ๋ฐ์ดํธ์ ์ด๋ฅด๋ ์์ ํ๊ณผ ๊ฑฐ๋ํ ํ ๋ชจ๋์์ ์๋ํ ์ ์์ต๋๋ค.
- ์์ ํ๋์ด ์ผ๋ฐ์ ์ธ ์ฌ์ฉ์ด ๊ฐ๋ฅํ ๊ฒ์ผ๋ก ํ์ธ๋จ
๊ฐ๋น์ง ์์ง๊ธฐShenandoah , ์ต์ํ์ ์ผ์ ์ค์ง๋ก ์์ ํฉ๋๋ค(๋ฎ์ ์ผ์ ์ค์ง ์๊ฐ ๊ฐ๋น์ง ์์ง๊ธฐ). Shenandoah๋ Red Hat์์ ๊ฐ๋ฐํ์ผ๋ฉฐ Java ์ ํ๋ฆฌ์ผ์ด์ ์คํ๊ณผ ๋์์ ์ ๋ฆฌ๋ฅผ ์คํํ์ฌ ๊ฐ๋น์ง ์์ง ์ค ์ ์ง ์๊ฐ์ ์ค์ด๋ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๋ ๊ฒ์ผ๋ก ์ ๋ช ํฉ๋๋ค. ๊ฐ๋น์ง ์์ง๊ธฐ์ ์ํด ๋ฐ์ํ๋ ์ง์ฐ ํฌ๊ธฐ๋ ์์ธก ๊ฐ๋ฅํ๋ฉฐ ํ ํฌ๊ธฐ์ ์์กดํ์ง ์์ต๋๋ค. 200MB ๋ฐ 200GB ํ์ ๊ฒฝ์ฐ ์ง์ฐ์ ๋์ผํฉ๋๋ค(๋์ค์ง ๋ง 50ms ์ด๊ณผ, ์ผ๋ฐ์ ์ผ๋ก 10ms ์ด๋ด) - ์ง์์ด ์์ ํ๋์ด ์ธ์ด์ ๋์
๋์์ต๋๋ค.
ํ ์คํธ ๋ธ๋ก - ๋ฌธ์ ์ด์ค์ผ์ดํ๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ๋ธ๋ก์ ์๋ ํ ์คํธ ํ์์ ์ ์งํ์ง ์๊ณ ๋ ์์ค ์ฝ๋์ ์ฌ๋ฌ ์ค์ ํ ์คํธ ๋ฐ์ดํฐ๋ฅผ ํฌํจํ ์ ์๋ ์๋ก์ด ํํ์ ๋ฌธ์์ด ๋ฆฌํฐ๋ด์ ๋๋ค. ๋ธ๋ก์ ์ธ ๊ฐ์ ํฐ๋ฐ์ดํ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.์๋ฅผ ๋ค์ด ์ฝ๋ ๋์
๋ฌธ์์ด html = " ยป +
"\n\t" + " ยป +
"\n\t\t" + " \"Java 1๊ฐ ์ถ์๋์์ต๋๋ค!\" ยป +
"\n\t" + " ยป +
"\n" + " ";๋ค์์ ์ง์ ํ ์ ์์ต๋๋ค.
๋ฌธ์์ด HTML = """
ยป์๋ฐ 1\
์ฌ๊ธฐ์!
"""; -
์ฌ์ค๊ณ ๋ ๊ฑฐ์ DatagramSocket API. java.net.DatagramSocket ๋ฐ java.net.MulticastSocket์ ์ด์ ๊ตฌํ์ ๋๋ฒ๊ทธ ๋ฐ ์ ์ง ๊ด๋ฆฌ๊ฐ ๋ ์ฝ๊ณ ํ๋ก์ ํธ ๋ด์์ ๊ฐ๋ฐ๋ ๊ฐ์ ์คํธ๋ฆผ๊ณผ๋ ํธํ๋๋ ์ต์ ๊ตฌํ์ผ๋ก ๋์ฒด๋์์ต๋๋ค.์ง์กฐ๊ธฐ . ๊ธฐ์กด ์ฝ๋์ ํธํ๋์ง ์์ ๊ฐ๋ฅ์ฑ์ด ์๋ ๊ฒฝ์ฐ ์ด์ ๊ตฌํ์ ์ ๊ฑฐ๋์ง ์์์ผ๋ฉฐ jdk.net.usePlainDatagramSocketImpl ์ต์ ์ ์ฌ์ฉํ์ฌ ํ์ฑํํ ์ ์์ต๋๋ค. - ๋ ๋ฒ์งธ ์คํ ๊ตฌํ ์ ์
ํจํด ๋งค์นญ "instanceof" ์ฐ์ฐ์์์ ๋ก์ปฌ ๋ณ์๋ฅผ ์ฆ์ ์ ์ํ์ฌ ํ์ธ๋ ๊ฐ์ ์ก์ธ์คํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, "String s = (String) obj"๋ฅผ ๋ช ์์ ์ผ๋ก ์ ์ํ์ง ์๊ณ ๋ "if (obj instanceof String s && s.length() > 5) {.. s.contains(..) ..}"๋ฅผ ์ฆ์ ์์ฑํ ์ ์์ต๋๋ค.๊ทธ๊ฒ์ :
if(obj ์ธ์คํด์คof๊ทธ๋ฃน) {
๊ทธ๋ฃน ๊ทธ๋ฃน = (๊ทธ๋ฃน)obj;
var ํญ๋ชฉ = group.getEntries();
}์ด์ "Group group = (Group) obj" ์ ์ ์์ด๋ ์ํํ ์ ์์ต๋๋ค.
if (obj ์ธ์คํด์คof ๊ทธ๋ฃน ๊ทธ๋ฃน) {
var ํญ๋ชฉ = group.getEntries();
} -
์ ์๋จ "๋ผ๋ ํค์๋์ ๋ ๋ฒ์งธ ์คํ์ ๊ตฌํ๊ธฐ๋ก "๋ ํด๋์ค ์ ์๋ฅผ ์ํ ๊ฐ๊ฒฐํ ํ์์ ์ ๊ณตํ๋ฏ๋ก ๋์์ด ๋ณ๊ฒฝ๋์ง ์๋ ํ๋์๋ง ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋๋ ๊ฒฝ์ฐ equals(), hashCode() ๋ฐ toString()๊ณผ ๊ฐ์ ๋ค์ํ ํ์ ์์ค ๋ฉ์๋๋ฅผ ๋ช ์์ ์ผ๋ก ์ ์ํ์ง ์์๋ ๋ฉ๋๋ค. ํด๋์ค๊ฐ equals(), hashCode() ๋ฐ toString() ๋ฉ์๋์ ํ์ค ๊ตฌํ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๋ช ์์ ์ธ ์ ์ ์์ด๋ ์ํํ ์ ์์ต๋๋ค.๊ณต๊ณต ๊ธฐ๋ก BankTransaction(LocalDate ๋ ์ง,
๋ ๋ฐฐ์ ๊ธ์ก
๋ฌธ์์ด ์ค๋ช ) {}์ด ์ ์ธ์ ์์ฑ์ ๋ฐ getter ๋ฉ์๋ ์ธ์๋ equals(), hashCode() ๋ฐ toString() ๋ฉ์๋์ ๊ตฌํ์ ์๋์ผ๋ก ์ถ๊ฐํฉ๋๋ค.
-
์ ์๋จ Foreign-Memory Access API์ ๋ ๋ฒ์งธ ๋ฏธ๋ฆฌ ๋ณด๊ธฐ๋ก, Java ์ ํ๋ฆฌ์ผ์ด์ ์ด ์๋ก์ด MemorySegment, MemoryAddress ๋ฐ MemoryLayout ์ถ์ํ๋ฅผ ์กฐ์ํ์ฌ Java ํ ์ธ๋ถ์ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ์์ ํ๊ณ ํจ์จ์ ์ผ๋ก ์ก์ธ์คํ ์ ์๊ฒ ํด์ค๋๋ค. -
์ฅ์ ๊ฐ ์๋ ์ ๊ธ ์ค๋ฒํค๋๋ฅผ ์ค์ด๊ธฐ ์ํด HotSpot JVM์์ ์ฌ์ฉ๋๋ Biased Locking ์ต์ ํ ๊ธฐ์ ์ ๋ ์ด์ ์ฌ์ฉํ์ง ์์ต๋๋ค. ์ด ๊ธฐ์ ์ ์ต์ CPU์์ ์ ๊ณตํ๋ ์์ ๋ช ๋ น์ ์ฌ์ฉํ๋ ์์คํ ๊ณผ์ ๊ด๋ จ์ฑ์ ์์์ผ๋ฉฐ ๋ณต์ก์ฑ์ผ๋ก ์ธํด ์ ์ง ๊ด๋ฆฌํ๊ธฐ์๋ ๋๋ฌด ๋ ธ๋ ์ง์ฝ์ ์ ๋๋ค. -
๋ฐํ๋จ ์ค๋๋ ๋ฉ์ปค๋์ฆRMI ํ์ฑํ ๋ ํฅํ ๋ฆด๋ฆฌ์ค์์ ์ ๊ฑฐ๋ ์์ ์ ๋๋ค. RMI ํ์ฑํ๋ ๊ตฌ์์ด๋ฉฐ Java 8์ ์ต์ ๋ฒ์ฃผ๋ก ๊ฐ๋ฑ๋์์ผ๋ฉฐ ํ๋ ์ค๋ฌด์์๋ ๊ฑฐ์ ์ฌ์ฉ๋์ง ์์ต๋๋ค. -
์ ๊ฑฐ๋จ ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ฝ๋ฟ์ , ์ด๋ Java SE 11์์ ๋ ์ด์ ์ฌ์ฉ๋์ง ์์ต๋๋ค. -
์ญ์ ๋จ Solaris OS ๋ฐ SPARC ํ๋ก์ธ์(Solaris/SPARC, Solaris/x64 ๋ฐ Linux/SPARC)์ฉ ํฌํธ. ์ด๋ฌํ ํฌํธ๋ฅผ ์ ๊ฑฐํ๋ฉด ์ปค๋ฎค๋ํฐ๋ Solaris ๋ฐ SPARC ํน์ ๊ธฐ๋ฅ์ ์ ์ง ๊ด๋ฆฌํ๋ ๋ฐ ์๊ฐ์ ๋ญ๋นํ์ง ์๊ณ ์๋ก์ด OpenJDK ๊ธฐ๋ฅ ๊ฐ๋ฐ์ ๊ฐ์ํํ ์ ์์ต๋๋ค.
์ถ์ฒ : opennet.ru