๋ฉด์ ์ดํ์,,,,,,,, ๋๋ตํ์ง๋ชปํ๋ ์ง๋ฌธ๋ค ์ ๋ฆฌ !!!! ํ์ดํ ๐
JAVA 8๊ณผ JAVA 11์ ์ฐจ์ด์
JAVA ์ธ์ด์ ํน์ง
- ๊ฐ์ฒด์งํฅ ์ธ์ด์ด๋ค.
- ์ ์ง ๋ณด์๊ฐ ์ฝ๊ณ ํ์ฅ์ฑ์ด ๋๋ค.
- ์ด์์ฑ์ด ๋๋ค.
- JVM์์ ์๋ํ๊ธฐ ๋๋ฌธ์ ์ด์ ์ฒด์ ์ ์ข ๋ฅ์ ์๊ด์์ด ์๋ํ๋ค.
- ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์๋์ผ๋ก ๊ด๋ฆฌํ๋ค.
- ํ๋ก๊ทธ๋๋ฐ C/C++์ ๋นํด ์์ ์ ์ด๋ค.
- ๋ฉํฐ ์ค๋ ๋ ๊ตฌํ์ด ์ฝ๋ค.
- ์ค๋ ๋ ์์ฑ ๋ฐ ์ ์ด์ ๊ด๋ จ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ API๋ฅผ ์ ๊ณตํ๋ค.
- ๋์ ๋ก๋ฉ์ ์ง์ํ๋ค.
- ์คํ ์์ ๋ชจ๋ ํด๋์ค๊ฐ ๋ก๋ฉ๋๋ ๊ฒ์ด ์๋๋ผ ํ์ํ ์์ ์ ํด๋์ค๋ฅผ ๋ก๋ฉํ๋ค.
- ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ณ๊ฒฝ ์ฌํญ๋ ๋น๊ต์ ์ ์ ์์ ์ผ๋ก ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํ๋ค.
- ๋ถ์ฐ ํ๊ฒฝ์ ์ง์ํ๋ค.
- ๊ธฐ๋ณธ์ ์ผ๋ก TCP/IP ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ํฌํจ๋์ด ์๊ณ , HTTP ํ๋กํ ์ฝ์ ์ง์ํ๋ค.
- ์คํ ์์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ํ๋ถํ๋ค.
JAVA ์ธ์ด์ ๋จ์
- JV์ ์ํด ๊ธฐ๊ณ์ด๋ก ๋ฒ์ญ๋๊ณ ์คํ๋๋ ๊ณผ์ ์ ๊ฑฐ์ณ์, ์ปดํ์ผ๋์๋ง์ ๊ธฐ๊ณ์ด๋ก ๋ณํ๋๋ C/C++์ ๋นํ๋ฉด ์๋๊ฐ ํ์ ํ ๋จ์ด์ง๋ค.
- ๋ค๋ง, ์ต๊ทผ์๋ JIT ์ปดํ์ผ ๋ฐฉ์์ผ๋ก ์๋ฐ ์ปดํ์ผ๋ฌ๋ฅผ ๊ฐ์ ํ์ฌ ์๋๊ฐ ๋ง์ด ๋นจ๋ผ์ง๊ธด ํ๋ค.
- ๋ค๋ฅธ ์ธ์ด์ ๋นํด ์์ฑํด์ผ ํ๋ ์ฝ๋์ ๊ธธ์ด๊ฐ ๊ธด ํธ์ด๋ค.
- ํ๋ก๊ทธ๋จ ์คํ ์ ๋ฐ์ํ ์ ์๋ ์์ธ๋ฅผ ๊ฐ๋ฐ์๊ฐ ์ง์ ์ฒ๋ฆฌํด์ผ ํ๋ค.
JAVA 8 vs JAVA 11
JAVA 8 | JAVA 11 |
---|---|
์ ํ๋ฆฟ ๋ทฐ์ด ๋๊ตฌ ์ฌ์ฉ ๊ฐ๋ฅ | ์ ํ๋ฆฟ ๋ทฐ์ด ๋๊ตฌ ์ฌ์ฉ ๋ถ๊ฐ |
AWTUtilities ํด๋์ค ์ฌ์ฉํ์ง ์๋ ๊ฒ์ด ์ข์ | AWTUtilities ํด๋์ค ์ฌ์ฉ ๋ถ๊ฐ |
String ๋ฌธ์์ด ๊ด๋ จ ๋ฉ์๋๊ฐ ์ ์ | isBlank(), line(), repeat(n), stripLeading(), stripTrailing(), strip() ๊ฐ์ ์๋ก์ด String ๋ฌธ์์ด ๋ฐฉ๋ฒ์ด ๋์ |
๋๋ค ํ๋ผ๋ฏธํฐ์๋ ํน์ ๋ณ์๊ฐ ์ฌ์ฉ๋์ง ์์ | ๋๋ค์์ var ๋ณ์๋ฅผ ์ฌ์ฉํ ์ ์์ |
Java Deployment Technologies ์ฌ์ฉ๊ฐ๋ฅ | Java Deployment Technologies ์ฌ์ฉ ๋ถ๊ฐ |
JMC์ JavaFX๋ Orcle JDK์์ ์ฌ์ฉ ๊ฐ๋ฅ | JMC์ JavaFX๋ ์๋ฐ 11์ Oracle JDK์์ ์ ๊ฑฐ |
ํ์ผ์ ์ ํฉํ ๋ฐฉ๋ฒ์ด ์์ | writeString(), readString(), isSameFile()๊ณผ ๊ฐ์ ๋ค์ํ ๋ฉ์๋๊ฐ ์์ด ํ์ผ์ ๋ํด ์ฌ๋ฌ ์์ ์ํ ๊ฐ๋ฅ |
ํจํด์ ์ธ์ ํ ์ ์์ | ํจํด ์ธ์์ asMatchPredicate() ๋ฉ์๋์ ๋์์ผ๋ก ๊ฐ๋ฅ |
์ ํ๋ฆฟ(Applet) ์ด๋?
ํจ๋(Panel)์ ์์ํ๋ ํด๋์ค๋ก ์น ๋ธ๋ผ์ฐ์ ์ ๋ด๊ฒจ์ ์คํ๋๋ ์์ ์์ฉํ๋ก๊ทธ๋จ
- AppletViewer : ์๋ฐ ์ ํ๋ฆฟ์ ์คํํ๊ธฐ ์ํจ์ด์ง๋ง, 15-16๋ ์ฌ์ด์ ์ง์์ ์ข ๋ฃํ์๊ณ , ์ด์ ์์ ๊ตณ์ด ์ฌ์ฉํ ์ผ์ด ์๊ธฐ ๋๋ฌธ์ ์๋ฐ11๋ถํฐ ์ง์ํ์ง ์์
- AWTUtilities : GUI๋ฅผ ์ง์ํ๊ธฐ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ. ์ค๋ฅ๊ฐ ๋ง์์ ์๋ฐ8๋ถํฐ ์ฌ์ฉ ์ํ๋ ๊ฒ์ ๊ถ์ฅ
- String ๊ด๋ จ ๋ฉ์๋
- isBlank() : ๋ฌธ์์ด์ด ๋น๊ฑฐ๋ ๊ณต๋ฐฑ์ผ ๊ฒฝ์ฐ true ๋ฐํ
- lines() : ๋ฌธ์์ด์ ์ค ๋จ์๋ก ์ชผ๊ฐ์ด ์คํธ๋ฆผ ๋ฐํ
- repeat(n) : ๋ฌธ์์ด์ ๋ํด n๋ฒ ๋ฐ๋ณตํ์ฌ ๋ถ์ฌ ๋ฐํ
- ๋๋ค์์ var ๋ณ์ ์ฌ์ฉ ๊ฐ๋ฅ : ๋๋ค๋ ํ์
์ ์คํตํ ์ ์๋๋ฐ ์ด๊ฒ์ ์ฌ์ฉํ๋ ์ด์ ๋
@Nullable
๋ฑ์ ์ด๋ ธํ ์ด์ ์ ์ฌ์ฉํ๊ธฐ ์ํด ํ์ ์ ๋ช ์ํด์ผ ํ๊ธฐ ๋๋ฌธ, var๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ๊ดํธ๋ฅผ ์จ์ผํ๋ฉฐ, ๋ชจ๋ ํ๋ผ๋ฏธํฐ์์ ์ฌ์ฉํด์ผ ํ๊ณ , ๋ค๋ฅธ ํ์ ๊ณผ ํผ์ฉํ๊ฑฐ๋ ์ผ๋ถ ์คํต์ ๋ถ๊ฐ๋ฅ- EX ) (var n1, var n2) -> n1 + n2
- EX ) (var s1, s2) -> s1 + s2 // ๋ถ๊ฐ
- EX ) (var s1, String s2) -> s1 + x // ๋ถ๊ฐ
- EX ) var s1 -> s1 // ๋ถ๊ฐ (๊ดํธ ํ์)
- EX )
Function<String, String> toLowerCase = (var input) -> input.toLowerCase();
- file ์ฒ๋ฆฌ
- writeString() : ํ์ผ์ ๋ฌธ์์ด์ ์ฐ๊ณ ๊ฒฝ๋ก ๋ฐํ
- readString() : ํ์ผ ๋ด์ฉ์ String์ผ๋ก ๋ฐํ
- isSameFile() : ์๋ก ๊ฐ์ ํ์ผ์ ๋ฐ๋ผ๋ณด๋์ง ํ์ธ ๊ฐ์ ํ์ผ์ผ ๊ฒฝ์ฐ true, ์๋๋ฉด false
- ํจํด ์ธ์
- Java 8์์๋ asPredicate()๋ฅผ ํตํด ์ฃผ์ด์ง ๋ฌธ์์ด์์ ํจํด์ ์ฐพ์ ์ ์๋์ง ํ
์คํธํ๊ธฐ ์ํด
์กฐ๊ฑด์
๋ฅผ ๋ฐํ - Java 11์์๋ asMatchPredicate()๋ฅผ ํตํด ํจํด์ด ์ฃผ์ด์ง ๋ฌธ์์ด๊ณผ ์ผ์นํ๋์ง ํ
์คํธํ๊ธฐ ์ํด
์ ์ด
๋ฅผ ๋ฐํ
- Java 8์์๋ asPredicate()๋ฅผ ํตํด ์ฃผ์ด์ง ๋ฌธ์์ด์์ ํจํด์ ์ฐพ์ ์ ์๋์ง ํ
์คํธํ๊ธฐ ์ํด
DI (์์กด์ฑ ์ฃผ์ )
์ ์ด์ ์ญ์ ๋ฐฉ๋ฒ ์ค ํ๋! ์ฌ์ฉํ ๊ฐ์ฒด๋ฅผ ์ง์ ์์ฑํ์ง ์๊ณ ์ธ๋ถ ์ปจํ ์ด๋๊ฐ ์์ฑํ ๊ฐ์ฒด๋ฅผ ์ฃผ์ ๋ฐ์ ์ฌ์ฉํ๋ ๋ฐฉ์์ ์๋ฏธ
์คํ๋ง์์ ์์กด์ฑ์ ์ฃผ์ ๋ฐ๋ ๋ฐฉ๋ฒ
- ์์ฑ์๋ฅผ ํตํ โ
- ํ๋ ๊ฐ์ฒด ์ ์ธ์ ํตํ
- setter ๋ฉ์๋๋ฅผ ํตํ
์ฅ์
์์กด์ฑ ์ฃผ์ ์ ๋ฐ๋๋ค๋ฉด, ํด๋์ค๊ฐ์ ๊ฒฐํฉ๋๊ฐ ์ฝํด์ง โ ํ ํด๋์ค๊ฐ ๋ณ๊ฒฝ๋ ๊ฒฝ์ฐ ๋ค๋ฅธ ํด๋์ค๊ฐ ๋ณ๊ฒฝ๋ ํ์์ฑ์ด ์ ์ด์ง๋ค๋ ์๋ฏธ
- ๋ฆฌํฉํ ๋ง์ด ์ฌ์์ง
- ํน์ ํด๋์ค๋ฅผ ํ ์คํธํ๊ธฐ๊ฐ ํธํจ
- ์ธํฐํ์ด์ค ๊ธฐ๋ฐ ์ค๊ณ๋ ์ฝ๋๋ฅผ ์ ์ฐํ๊ฒ ํจ. ํ์ฅ์ ์ฝ๊ฒ ํจ
- UI๊ฐ ์๋ ํ๋ก๊ทธ๋จ์์๋ ์๋ช ์ฃผ๊ธฐ๊ฐ ์ค์ํ๋ฐ, ์๋ช ์ฃผ๊ธฐ๋ณ๋ก Container๋ฅผ ๊ด๋ฆฌํ ์ ์๊ฒ ๋๋ค๋ฉด ๋ฆฌ์์ค ๋ญ๋น๋ฅผ ๋ง์ ์ ์์
DI๋ ๊ฐ์ฒด๊ฐ ์์กดํ๋ ๋ ๋ค๋ฅธ ๊ฐ์ฒด๋ฅผ ์ธ๋ถ์์ ์ ์ธํ๊ณ ์ด๋ฅผ ์ฃผ์
๋ฐ์์ ์ฌ์ฉํ๋ ๊ฒ
AOP
๊ด์ ์ ๊ธฐ์ค์ผ๋ก ๋ฌถ์ด ๊ฐ๋ฐํ๋ ๋ฐฉ์์ ์๋ฏธ
๊ด์
: ์ด๋ค ๊ธฐ๋ฅ์ ๊ตฌํํ ๋, ๊ทธ ๊ธฐ๋ฅ์ ํต์ฌ ๊ธฐ๋ฅ๊ณผ ๋ถ๊ฐ ๊ธด์ผ์ผ๋ก ๊ตฌ๋ถํด ๊ฐ๊ฐ์ ํ๋์ ๊ด์ ์ผ๋ก ๋ณด๋ ๊ฒ์ ์๋ฏธ
Cross Cutting
์ ํ๋ฆฌ์ผ์ด์ ์ ๋ค์ํ ๊ณตํต ๊ธฐ๋ฅ์ ํ์๋ก ํ๋ค. ๋ก๊น ๊ณผ ๊ฐ์ ๊ธฐ๋ณธ์ ์ธ ๊ธฐ๋ฅ์์๋ถํฐ ํธ๋์ญ์ ์ด๋ ๋ณด์๊ณผ ๊ฐ์ ๊ธฐ๋ฅ์ ์ด๋ฅด๊ธฐ๊น์ง ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐ์ ๊ฑธ์ณ ์ ์ฉ๋๋ ๊ณตํต ๊ธฐ๋ฅ์ด ์กด์ฌํ๋ค.
์ด๋ค ๊ณตํต ๊ธฐ๋ฅ๋ค์ ์ด๋ค ํน์ ๋ชจ๋์์๋ง ํ์๋ก ํ๋ ๊ฒ์ด ์๋๋ผ, ์ ํ๋ฆฌ์ผ์ด์
์ ๋ฐ์ ๊ฑธ์ณ ํ์ํ ๊ธฐ๋ฅ์ด๋ค. ๋ํ, ์ด๋ฐ ๊ณตํต ๊ธฐ๋ฅ๋ค์ ์ ํ๋ฆฌ์ผ์ด์
์ ํต์ฌ ๋น์ฆ๋์ค ๋ก์ง๊ณผ๋ ๊ตฌ๋ถ๋๋ ๊ธฐ๋ฅ์ด๋ค. ํต์ฌ ๋น์ฆ๋์ค ๊ธฐ๋ฅ๊ณผ ๊ตฌ๋ถํ๊ธฐ ์ํด ๊ณตํต ๊ธฐ๋ฅ์ ๊ณตํต ๊ด์ฌ ์ฌํญ(cross-cutting concern)
์ด๋ผ๊ณ ํํํ๋ฉฐ, ํต์ฌ ๋ก์ง์ ํต์ฌ ๊ด์ฌ ์ฌํญ(core concern)
์ด๋ผ๊ณ ํํํ๋ค.
Advise
cross-cutting concern์ผ๋ก ๋ถ๋ฆฌ๋ ๋ก์ง์ ๋ํ ์ฝ๋
์ข ๋ฅ
Before Advice
: target์ ๋ฉ์๋ ํธ์ถ ์ ์ ์ ์ฉAfter returning
: target์ ๋ฉ์๋ ํธ์ถ ์ดํ์ ์ ์ฉAfter throwing
: target์ ์์ธ ๋ฐ์ ํ ์ ์ฉAfter
: target์ ๋ฉ์๋ ํธ์ถ ํ ์์ธ ๋ฐ์์ ๊ด๊ณ์์ด ์ ์ฉAround
: target์ ๋งค์๋ ํธ์ถ ์ด์ ๊ณผ ์ดํ ๋ชจ๋ ์ ์ฉ
Aspect๋ก ๋ถ๋ฆฌ๋์ด ์คํ ์, ์๋น๋์ด ๊ตฌ์ฒด์ ์ธ ์ฒ๋ฆฌ๋ฅผ ํ๋ ๋ก์ง์ ์ผ์ปซ๋ ๋จ์ด
์ค์ง์ ์ผ๋ก ์ด๋ค ์ผ์ ํด์ผํ ์ง์ ๋ํ ๊ฒ, ์ค์ง์ ์ธ ๋ถ๊ฐ๊ธฐ๋ฅ์ ๋ด์ ๊ตฌํ์ฒด
Join Point
Advice๋ฅผ ์ ์ฉ ๊ฐ๋ฅํ ์ง์ ์ ์๋ฏธํ๋ค.
๋ฉ์๋ ํธ์ถ, ํ๋ ๊ฐ ๋ณ๊ฒฝ๋ฑ์ด Join Point์ ํด๋นํ๋ค.
ํด๋์ค์ ์ธ์คํด์ค ์์ฑ ์์ , ๋ฉ์๋ ํธ์ถ ์์ , ์์ธ ๋ฐ์ ์์ ๊ณผ ๊ฐ์ด ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํ ๋ ํน์ ์์ ์ด ์์๋๋ ์์ ์ด๋ค.
Point Cut
์ค์ Advice ์ฝ๋๊ฐ ์ ์ฉ๋ ์ง์ ์ ์๋ฏธํ๋ ๋จ์ด
Weaving
Advice ์ฝ๋๋ฅผ ํต์ฌ ๋ก์ง์ Point Cut์ ์ ์ฉํ๋ ๊ฒ์ ์๋ฏธํ๋ ๋จ์ด์ด๋ค.
์ฆ, Advice๋ก ๋ถ๋ฆฌํ ์ฝ๋๋ฅผ ํต์ฌ ๋ก์ง์ ๋ค์ ํฉ์น๋ ์ผ์ด๋ค.
๋ฐฉ๋ฒ์ ๋ฐ๋ผ
- ๋ฐํ์ ์, proxy๋ก ์์ฑํ๋ฉฐ ์ฝ๋๋ฅผ ํฉ์น๋ ๋ฐฉ๋ฒ
- ์ปดํ์ผ ์, ํด๋์ค ๋ก๋ ์, ๋ฐ์ดํธ ์ฝ๋ค๋ฅด ์กฐ์ํ์ฌ ์ค์ ์ฝ๋๋ฅผ ๋ผ์๋ฃ๋ ๋ฐฉ๋ฒ
Target
ํต์ฌ ๋ก์ง์ ๊ตฌํํ๋ ํด๋์ค ๋๋ ๊ฐ์ฒด
AOP๋ฅผ ์ ์ฉํ์ฌ Advice๋ฅผ ๋ฐ์ ๋์์ ์๋ฏธํ๋ ๋จ์ด์ด๋ค.
Advisor
Advice ์ฝ๋์ Point Cut์ ํฉ์ณ๋์ ๊ฒ์ Advisor์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค.
๊ณตํต ๊ด์ฌ์ฌ ์ฝ๋๋ฅผ ๋ฝ์์ ํ๋์ ํด๋์ค์ ๋ด์ ๊ฒ์ด๋ค.
'์ทจ๋ฝ๊ธฐ์' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ฐ์ํ ํ ํฌ์ฝ์ค ๋ฐฑ์๋ 5๊ธฐ] ํ๋ฆฌ์ฝ์ค 1์ฃผ์ฐจ ํ๊ณ (1) | 2022.11.03 |
---|---|
๋ฉด์ ๋ณต๊ธฐ - 2 ๐ (0) | 2022.11.03 |
๋ฉด์ ์ค๋น - 2 (0) | 2022.09.27 |
๋ฉด์ ์ค๋น - 1 (0) | 2022.09.19 |
REST .... ? (0) | 2022.09.19 |