์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- useDispatch
- redux-toolkit
- Algorithm
- ํญํด99
- maeil-mail
- react
- redux
- C++
- ์๊ณ ๋ฆฌ์ฆ
- ํ๋ก๊ทธ๋๋จธ์ค
- Python
- sw expert academy
- JavaScript
- react-redux
- programmers
- axios
- ์ด์ฝํ
- ๋งค์ผ๋ฉ์ผ
- SW
- redux-saga
- createSlice
- ๋ฆฌ์กํธ
- ์๋ฐ
- ํ ์ฝํ ์ฝ
- ํญํดํ๋ฌ์ค
- json-server
- ์ฝ๋ฉํ ์คํธํฉ๊ฒฉ์๋๊ธฐ
- java
- react-router
- Get
- Today
- Total
Binary Journey
[Java] ์ฝ๋๋ก ์์ํ๋ ์๋ฐ ์ฒซ ๊ฑธ์ (1-3) Q & A ๋ณธ๋ฌธ
[Java] ์ฝ๋๋ก ์์ํ๋ ์๋ฐ ์ฒซ ๊ฑธ์ (1-3) Q & A
binaryJournalist 2024. 12. 19. 23:50๐ก inflearn - ๊น์ํ์ ์ค์ ์๋ฐ ๋ก๋๋งต์ ๋ฐ๋ผ ํ์ตํ๊ณ ์ง๋ฌธ์ ๋ฝ์ ๋ตํ๋ฉฐ ๋ณต์ตํฉ๋๋ค.
๐ก ํ์ต๋ด์ฉ์ ์น์ 1๋ถํฐ ์น์ 3๊น์ง์ด๋ฉฐ ์ ๋ฆฌ ๋ด์ฉ์ ์ฌ๊ธฐ์ ์์ฑํ์์ต๋๋ค.
JVM
"Java์ ํ๋ซํผ ๋
๋ฆฝ์ฑ์ด ๊ฐ๋ฅํ ์ด์ ๋ฅผ ์ค๋ช
ํด์ฃผ์ธ์."
- OS์ ๋ง๋
JRE
๊ฐ ์ค์น๋์ด ์๋ค๋ฉดJRE
๋ดJVM
์ ์ฌ์ฉํ์ฌ ์๋ฐ ํ๋ก๊ทธ๋จ์ ์ ์ฝ ์์ด ๋์ํ๋๋ก ํ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค. - ์์ธํ ์ค๋ช
ํ์๋ฉด Java์ ์ปดํ์ผ ๊ณผ์ ์ค Java ์์ค์ฝ๋(
.java
)๋ ๋ฐ์ดํธ์ฝ๋(.class
)๋ก ์ปดํ์ผ๋ฉ๋๋ค. ์ด ๋ฐ์ดํธ์ฝ๋๋ ์ค๊ฐ ์ธ์ด(Intermediate Language)ํํ๋ก ํน์ ํ๋ซํผ์ ์ข ์๋์ง ์์ ์ค๋ฆฝ์ ์ธ ํํ์ ๋๋ค. ๊ฐ ์ด์์ฒด์ ๋ณ๋ก ์ ๊ณต๋๋JVM
์ด ๋ฐ์ดํธ์ฝ๋๋ฅผ ํด๋น ์ด์์ฒด์ ์ ๋ง๋ ๊ธฐ๊ณ์ด๋ก ๋ณํํด์ค๋๋ค.JVM
์ด ์ด์์ฒด์ ์ Java ํ๋ก๊ทธ๋จ ์ฌ์ด์์ ์ค๊ฐ์ ์ญํ ์ ์ํํ์ฌWrite Once,Run Anymore
์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค. ๊ฐ ์ด์์ฒด์ ์ ๋ง๋JRE
๊ฐ ์ค์น๋์ด ์์ผ๋ฉด ๊ทธ ์์JVM
์ด ๋ฐ์ดํธ์ฝ๋๋ฅผ ํด์ํ๊ณ ์คํํ ๊ฒ์ ๋๋ค.
"JVM, JRE, JDK์ ์ฐจ์ด์ ์ ์ค๋ช
ํ ์ ์๋์?"
JDK
๋Java Development Kit
์ผ๋ก ๊ฐ๋ฐ์๋ค์ด ์๋ฐ๋ก ๊ฐ๋ฐํ๋ ๋ฐ ์ฌ์ฉํ๋ SDK ํคํธ ๊ฐ์ ๊ฒ์ ๋๋ค. JDK ์์๋ ์๋ฐ๋ก ๊ฐ๋ฐ ์ ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค๊ณผjavac
,javadoc
๋ฑ์ ๊ฐ๋ฐ ๋๊ตฌ๋ค์ ํฌํจํ๊ณ ์์ต๋๋ค. ์๋ฐ ํ๋ก๊ทธ๋จ์ ์คํํด์ผ ํ๋JRE
๋ ํจ๊ป ํฌํจํ๊ณ ์์ต๋๋ค.- ์ฐธ๊ณ ๋ก
SDK
๋Software Development Kit
์ผ๋ก ํ๋์จ์ด ํ๋ซํผ, ์ด์์ฒด์ ๋๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ์ ์์ฌ๊ฐ ์ ๊ณตํ๋ ํด์ ๋๋ค. JRE
๋Java Runtime Environment
๋กJVM
๊ณผ ์๋ฐ ํ๋ก๊ทธ๋จ์ ์คํ์ ์ํด ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ API๋ฅผ ํจ๊ป ๋ฌถ์ด์ ๋ฐฐํฌ๋๋ ํจํค์ง์ ๋๋ค. ์ด์ธ์๋ ์๋ฐ ๋ฐํ์ ํ๊ฒฝ์์ ์ฌ์ฉํ๋ ํ๋กํผํฐ ์ธํ ์ด๋ ๋ฆฌ์์คํ์ผ(jar ํ์ผ)์ ๊ฐ์ง๊ณ ์์ต๋๋ค.JDK11
๋ฒ์ ๋ถํฐ๋JDK
์ ํจ๊ป ์ ๊ณต๋๊ณ ์์ดJDK
์ค์น ์JRE
๋ ํจ๊ป ์ค์น๋ฉ๋๋ค.JVM
์Java Virtual Machine
์ผ๋ก ์๋ฐ๋ฅผ ์คํํ๋ ํ๋ก๊ทธ๋จ์ ์ผ์ปซ์ต๋๋ค. ์๋ฐ์์ ์์ฑ๋๋ ํ๋ก๊ทธ๋จ์JVM
์์๋ง ์คํ ๊ฐ๋ฅํฉ๋๋ค.JVM
์JRE
์ ํฌํจ๋์ด ์์ต๋๋ค. ์ปดํจํฐ OS์ ๋ง๋JRE
๊ฐ ์ค์น๋์ด์๋ค๋ฉดJVM
์ ์ํด ์๋ฐ๋ฅผ ์คํํ ์ ์์ต๋๋ค.- ์ฐธ๊ณ : https://inpa.tistory.com/entry/JAVA-%E2%98%95-JDK-JRE-JVM-%EA%B0%9C%EB%85%90-%EA%B5%AC%EC%84%B1-%EC%9B%90%EB%A6%AC-%F0%9F%92%AF-%EC%99%84%EB%B2%BD-%EC%B4%9D%EC%A0%95%EB%A6%AC
"์๋ฐ ์ปดํ์ผ ๊ณผ์ ์ ์ค๋ช
ํด์ฃผ์ธ์. (.java ํ์ผ์ด ์คํ๋๋ ๊ณผ์ )"
- ์๋ฐ ์ปดํ์ผ๋ฌ๋ฅผ ์ฌ์ฉํด์ ์์ค ์ฝ๋๋ฅผ ์ปดํ์ผ ํฉ๋๋ค. ์๋ฐ๊ฐ ์ ๊ณตํ๋
javac
๋ผ๋ ํ๋ก๊ทธ๋จ์ ์ฌ์ฉํ์ฌ.java
ํ์ผ์ ๋ฐ์ดํธ์ฝ๋ ๋ณํํ.class
ํ์ผ์ ์์ฑํฉ๋๋ค. ์ด ๊ณผ์ ์์ ์ต์ ํ์ ๋ฌธ๋ฒ์ค๋ฅ ๊ฒ์ถ๋ ๊ฐ์ด ์ด๋ค์ง๋๋ค.- ๋ฐ์ดํธ์ฝ๋๋
JVM
์ด ์ดํดํ ์ ์๋ ์ค๊ฐ ์ฝ๋๋ก, ํ๋ซํผ ๋ ๋ฆฝ์ฑ์ ์ ๊ณตํ๋ฉด์๋ ๊ธฐ๊ณ์ด์ ๊ฐ๊น์ ์คํ ์๋๊ฐ ๋น ๋ฅด๋ค๋ ์ฅ์ ์ด ์์ต๋๋ค. JIT(Just-In-Time)
์ปดํ์ผ๋ฌ๋ ๋ฐ์ดํธ์ฝ๋๋ฅผ ์คํ ์์ ์ ๊ธฐ๊ณ์ด๋ก ์ปดํ์ผํ์ฌ ์ฑ๋ฅ์ ํฅ์์ํต๋๋ค. ์์ฃผ ์คํ๋๋ ์ฝ๋๋ JIT ์ปดํ์ผ๋ฌ๊ฐ ์ต์ ํ๋ ๊ธฐ๊ณ์ด๋ก ๋ณํํ์ฌ ์บ์์ ์ ์ฅํ๊ณ ์ฌ์ฌ์ฉํฉ๋๋ค.
- ๋ฐ์ดํธ์ฝ๋๋
๋ณ์์ ๋ฐ์ดํฐ ํ์
"๊ธฐ๋ณธํ(Primitive Type)๊ณผ ์ฐธ์กฐํ(Reference Type)์ ์ฐจ์ด์ ์ ์ค๋ช
ํด์ฃผ์ธ์."
๋ฉ๋ชจ๋ฆฌ ์ ์ฅ ๋ฐฉ์
์ธก๋ฉด์์ ๋ณ์์ ๊ฐ์ ์ฝ์ ๋ ๋ณ์๊ฐ๊ธฐ๋ณธํ
์ด๋ผ๋ฉด ๋ฆฌํฐ๋ด ๊ฐ์ ๋ฐํํ๊ณ์ฐธ์กฐํ
์ด๋ผ๋ฉด ๋ณ์์ ๊ฐ์ด ์๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ๋ฐํํ๋ค๋ ์ฐจ์ด์ ์ด ์์ต๋๋ค.๊ธฐ๋ณธํ ํ์
์ผ๋ก๋byte
,short
,int
,long
,float
,double
,boolean
,char๊ฐ
์์ผ๋ฉฐ,null
๊ฐ์ ๊ฐ์ง ์ ์์ต๋๋ค.์ฐธ์กฐํ ํ์
์ผ๋ก๋String
,Array
,Class
,Interface
๋ฑ์ด ์์ผ๋ฉฐ,null
๊ฐ์ ๊ฐ์ง ์ ์์ต๋๋ค.Wrapper ํด๋์ค
์ ๊ฒฝ์ฐ ๊ธฐ๋ณธํ ํ์ ์ ๊ฐ์ฒด๋ก ๋ค๋ค์ผ ํ ๋ ์ฌ์ฉํ๋ ํด๋์ค๋ค(Integer
,Double
๋ฑ)์ด ์์ผ๋ฉฐ, ์ด๋ค์ ์๋ ๋ฐ์ฑ/์ธ๋ฐ์ฑ์ ์ง์ํฉ๋๋ค.
"์ ์ค์ํ์์ float๋ณด๋ค double์ ๋ ๋ง์ด ์ฌ์ฉํ๋์?"
- ์์์ ์ ๊ฒฝ์ฐ ์๋ฆฟ์๊ฐ ๊ธด ๊ฒฝ์ฐ๊ฐ ๋ง๊ณ ์๋ฐํ ๋์ด์ง ๊ฐ์ด ์๋๊ธฐ ๋๋ฌธ์ ์ ๋ฐํ ๊ณ์ฐ์ ํ๊ธฐ ์ํด์ ์์ธํ ๊ฐ์ ๊ฐ์ง๊ณ ์์ด์ผ ํฉ๋๋ค. ๊ทธ์ ๋นํด
float
๋ ์ ๋ฐํ ๊ณ์ฐ์ ๋ถ์์ ํฉ๋๋ค.
"Java์์ long ํ์
๋ฆฌํฐ๋ด์ ์ ์ธํ ๋ ์ 'L'์ ๋ถ์ฌ์ผ ํ๋์?"
- ์๋ฐ์์ ์ ์ ๋ฆฌํฐ๋ด์ ๊ธฐ๋ณธ์ ์ผ๋ก int ํ์
์ผ๋ก ์ทจ๊ธ๋ฉ๋๋ค.
int
๋ฒ์(์ฝ 21์ต)๋ฅผ ์ด๊ณผํ๋ ์ซ์๋ฅผ ํํํ ๋๋ ๋ช ์์ ์ผ๋กlong
ํ์ ์์ ์๋ ค์ค์ผ ํ๋ฏ๋กL
๋๋l
์ ๋ถ์ฌ ์ด๊ฒ์ดlong
ํ์ ๋ฆฌํฐ๋ด์์ ์ปดํ์ผ๋ฌ์๊ฒ ์๋ฆฝ๋๋ค. ๊ทธ๋ฌ๋ ์๋ฌธ์l
์ ์ซ์1
๊ณผ ํผ๋๋ ์ ์์ด ๋๋ฌธ์L
์ฌ์ฉ์ ๊ถ์ฅํ๋ฉฐ ์ด๋ ์๋ฐ ์ฝ๋ฉ ์ปจ๋ฒค์ ์ ํ์ค์ ํด๋นํ๊ธฐ๋ ํฉ๋๋ค.
"๋ณ์ ๋ช
๋ช
๊ท์น์์ ์นด๋ฉ์ผ์ด์ค๋ฅผ ์ฌ์ฉํ๋ ์ด์ ๊ฐ ๋ฌด์์ธ๊ฐ์?"
- ๋ณ์๋ช ์ ๊ฒฝ์ฐ ๋์ด์ฐ๊ธฐ๋ฅผ ํ์ฉํ์ง ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋์ด์ฐ๊ธฐ ์์ด ๋จ์ด๋ฅผ ๋ชจ๋ ๋ถ์ฌ์ธ ๊ฒฝ์ฐ ๊ฐ๋ ์ฑ์ด ๋ฎ์์ง๊ธฐ ๋๋ฌธ์ ๊ฐ๋ ์ฑ์ ์ํด ์นด๋ฉ์ผ์ด์ค๋ฅผ ์ ์ฉํ๋ ๊ฒ์ ๋๋ค.
- ์๋ฐ ์ปค๋ฎค๋ํฐ์ ํ์ค์ ๊ถ์ฅํ๋ ๊ณต์ ์คํ์ผ์ด๊ธฐ๋ ํฉ๋๋ค.
์ฝ๋ ๊ตฌ์กฐ
"public static void main(String[] args)์ ๊ฐ ํค์๋๊ฐ ์๋ฏธํ๋ ๊ฒ์ ์ค๋ช
ํด์ฃผ์ธ์."
public
์์ ๊ทผ ์ ์ด์
๋ก์ ์ด๋์๋ ์ ๊ทผ ๊ฐ๋ฅํ ๊ฐ์ฅ ๋์ ๋ฒ์์ ์ ๊ทผ์ ํ์ฉํ๋ ๊ฒ์ ์๋ฏธํ๊ณstatic
์ ํ๋ก๊ทธ๋จ ์์ ์์ ์ ๊ฐ์ฒด ์์ฑ ์์ด๋JVM
์ด ํธ์ถํ ์ ์๋๋ก ํ๋ ํค์๋์ ๋๋ค.static ๋ฉ์๋
๋ ํด๋์ค ๋ ๋ฒจ์์ ๋์ํ๋ฉฐ ์ธ์คํด์ค ์์ด๋ ์คํ๋ ์ ์์ต๋๋ค.static
์ ๋ค์๊ณผ ๊ฐ์ ํน์ง์ ๊ฐ์ง๋๋ค:- ํด๋์ค ๋ ๋ฒจ์ ์ํจ
- ์ธ์คํด์ค ์์ฑ ์์ด ํด๋์ค ์์ฒด์ ์ํ๋ ๋ฉค๋ฒ๋ฅผ ์ ์ํ ๋ ์ฌ์ฉ
- ํด๋์ค๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋๋ ๋ ํจ๊ป ๋ก๋๋จ
- ๋ชจ๋ ์ธ์คํด์ค๊ฐ ๊ณต์ ํ๋ ๋ฉค๋ฒ๊ฐ ๋จ
- ๋ฉ๋ชจ๋ฆฌ ๊ด์
- JVM์ด ํด๋์ค๋ฅผ ๋ก๋ํ ๋ ๋ฉ๋ชจ๋ฆฌ์ static ์์ญ(Method Area)์ ํ ๋น
- ํ๋ก๊ทธ๋จ์ด ์ข ๋ฃ๋ ๋๊น์ง ๋ฉ๋ชจ๋ฆฌ์ ๊ณ์ ๋จ์์์
- ๊ฐ๋น์ง ์ปฌ๋ ์ ์ ๋์์ด ๋์ง ์์
- ํด๋์ค ๋ ๋ฒจ์ ์ํจ
void
๋ ๋ฆฌํด๊ฐ์ด ์๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.main
์ ์๋ฐ ํ๋ก๊ทธ๋จ์ ์์์ ์ ๋ํ๋ ๋๋ค.String[] args
๋main
ํจ์์argument
๋ฅผ ์ง์นญํ๋ฉฐํ๋ก๊ทธ๋จ ์คํ ์ ์ปค๋งจ๋ ๋ผ์ธ์์ ์ ๋ ฅ๋ฐ๋ ์ธ์๊ฐ๋ค์ ์ ์ฅํ๋ ๋ฌธ์์ด ๋ฐฐ์ด
์ ์๋ฏธํฉ๋๋ค.String
๋ฐฐ์ด ์๋ฃํ์ argument๋ก ๋ฐ๊ณ ํด๋น ๊ฐ์ args๋ผ๋ ๋ณ์์ ํ ๋นํฉ๋๋ค.JVM
์ด ํ๋ก๊ทธ๋จ์ ์ง์ ์ (entry point)์ผ๋ก ์ด ํน์ ํ ํํ์ main ๋ฉ์๋๋ฅผ ์ฐพ์ผ๋ฏ๋ก ๋ค๋ฅธ ํํ๋ก ์์ฑํ๋ฉด JVM์ด ์์์ ์ ์ฐพ์ง ๋ชปํด ํ๋ก๊ทธ๋จ์ด ์คํ๋์ง ์์ต๋๋ค.
"Java์ ํจํค์ง๋ ์ด๋ค ์ญํ ์ ํ๋์?"
- ์ผ์ข ์ ๋๋ ํ ๋ฆฌ์ ์ ์ฌํด ๋ณด์ด์ง๋ง ๊ด๋ จ๋ ํด๋์ค๋ค์ ๊ทธ๋ฃนํํ๊ณ , ์ด๋ฆ ์ถฉ๋์ ๋ฐฉ์งํ๋ฉฐ, ์ ๊ทผ ์ ์ด๋ฅผ ์ ๊ณตํ๋ ์ค์ํ ์บก์ํ ๋ฉ์ปค๋์ฆ์ ์ญํ ์ ๋งก๊ณ ์์ต๋๋ค.
ํจํค์ง
๋ ํด๋์ค์ namespace๋ฅผ ์ ๊ณตํ๊ณ , ์ ๊ทผ ์ ์ด์ ์บก์ํ๋ฅผ ์ง์ํ๋ฉฐ, ๊ด๋ จ๋ ํด๋์ค๋ค์ ๋ ผ๋ฆฌ์ ์ผ๋ก ๊ทธ๋ฃนํํ๋ ์ค์ํ ์ญํ ์ ํฉ๋๋ค.- ํจํค์ง ๋ช
๋ช
๊ท์น์ ์ผ๋ฐ์ ์ผ๋ก
๋๋ฉ์ธ ์ด๋ฆ์ ๊ฑฐ๊พธ๋ก
์ฌ์ฉํฉ๋๋ค. ์๋ฅผ ๋ค์ด 'com.company.project.module'๊ณผ ๊ฐ์ ํ์์ ๋๋ค. - ํจํค์ง ์ ์ธ์ ์์ค ํ์ผ์ ์ฒซ ์ค์ ์์นํด์ผ ํ๋ฉฐ, import ๋ฌธ์ ์ฌ์ฉํ์ฌ ๋ค๋ฅธ ํจํค์ง์ ํด๋์ค๋ฅผ ์ฐธ์กฐํ ์ ์์ต๋๋ค.
- ํจํค์ง๋ ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง ์ ์์ด์ ํฐ ํ๋ก์ ํธ๋ฅผ ์ฒด๊ณ์ ์ผ๋ก ๊ตฌ์ฑํ ์ ์๊ฒ ํด์ค๋๋ค. ์๋ฅผ ๋ค์ด 'com.company.project.controller', 'com.company.project.service' ๋ฑ์ผ๋ก ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
- ํจํค์ง ๋ช
๋ช
๊ท์น์ ์ผ๋ฐ์ ์ผ๋ก
"ํ ํ์ผ์ ์ฌ๋ฌ ๊ฐ์ ํด๋์ค๋ฅผ ์์ฑํ ์ ์๋์?"
- inner class ๋ผ๋ฉด ํด๋์ค ์์ ์ฌ๋ฌ ๊ฐ์ ํด๋์ค๋ฅผ ์์ฑํ ์ ์์ง๋ง public class์ ๊ฒฝ์ฐ ํ ํ์ผ์๋ ํ ๊ฐ๋ง ์์ฑํ ์ ์์ต๋๋ค.
"ํด๋์ค ์ด๋ฆ์ ํ์ผ๋ช
๊ณผ ๋์ผํ๊ฒ ํด์ผ ํ๋ ์ด์ ๊ฐ ๋ฌด์์ธ๊ฐ์?"
- Java์ ํด๋์ค ๋ก๋ฉ ๋ฉ์ปค๋์ฆ๊ณผ ๊ด๋ จ์ด ์์ผ๋ฉฐ, ์ด๋ ํด๋์ค๋ฅผ ์ฐพ๊ณ ๋ก๋ํ๋ ๊ณผ์ ์ ๋จ์ํํ๊ณ ๋ช ํํ๊ฒ ํ๊ธฐ ์ํจ์ ๋๋ค.
- ํ์ผ๋ช
๊ณผ ํด๋์ค๋ช
์ด ๊ฐ์์ผ ํ๋ ์ด์ ๋
ํ์ผ ์ฐพ๊ธฐ
์ํจ์จ์ฑ
๊ณผ๋ช ํ์ฑ
์ ์์ต๋๋ค.ClassLoader
๊ฐ ํด๋์ค๋ฅผ ์ฐพ์ ๋ ํด๋์ค ์ด๋ฆ์ ๊ธฐ์ค์ผ๋ก ๊ฒ์ํฉ๋๋ค. ๋ง์ฝ ํ์ผ๋ช ๊ณผ ํด๋์ค๋ช ์ด ๋ค๋ฅด๋ค๋ฉด, ๋ชจ๋.class
ํ์ผ์ ์ด์ด์ ๋ด๋ถ์ ํด๋์ค๋ช ์ ํ์ธํด์ผ ํ ๊ฒ์ ๋๋ค.- ํ ํ์ผ์๋ ํ๋์ public ํด๋์ค๋ง ์กด์ฌํ ์ ์์ต๋๋ค.
- ์ด public ํด๋์ค์ ์ด๋ฆ์ด ํ์ผ๋ช ์ด ๋์ด์ผ ํฉ๋๋ค.
- ์ด๋ ์ฝ๋์ ๊ตฌ์กฐ๋ฅผ ๋ช ํํ๊ฒ ํ๊ณ ์ ์ง๋ณด์๋ฅผ ์ฝ๊ฒ ๋ง๋ญ๋๋ค.
ํด๋์ค ๋ก๋ฉ ๋ฉ์ปค๋์ฆ
์ด๋JVM
์ด ํด๋์ค๋ ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ ๋ ํ์ํ ํด๋์ค ํ์ผ์ ์ฐพ์์ ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋ํ๊ณ ๋งํฌํ๋ ๊ณผ์ ์ ๋๋ค.๋ก๋ฉ(Loading)
ClassLoader
๊ฐ.class
ํ์ผ์ ์ฐพ์์JVM
์ ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋ํฉ๋๋ค.- ์ด๋ ํด๋์ค ์ด๋ฆ์ ๊ธฐ๋ฐ์ผ๋ก ํ์ผ์ ์ฐพ์ต๋๋ค.
- ์:
HelloJava
ํด๋์ค๋ฅผ ์ฌ์ฉํ๋ ค๊ณ ํ๋ฉด,HelloJava.class
ํ์ผ์ ์ฐพ์ต๋๋ค.
๋งํน(Linking)
- ๋ก๋๋ ํด๋์ค ํ์ผ์ ๊ฒ์ฆํ๊ณ ์ฌ์ฉํ ์ ์๊ฒ ์ค๋นํฉ๋๋ค.
์ด๊ธฐํ(Initialization)
- ํด๋์ค์ ์ ์ (static) ๋ณ์๋ค์ ์ด๊ธฐํํฉ๋๋ค.
"์๋ฐ์ ์ฃผ์ ์ข
๋ฅ์ ๊ฐ๊ฐ์ ํน์ง์ ์ค๋ช
ํด์ฃผ์ธ์."
//
์ ๊ฒฝ์ฐ ํ ์ค ์ฃผ์์ฒ๋ฆฌ ์ ์ฌ์ฉํฉ๋๋ค./* */
์ ๊ฒฝ์ฐ ํ ์ค์ด์์ ์ฃผ์์ฒ๋ฆฌ ์ ์ฌ์ฉํฉ๋๋ค./** */
์ ๊ฒฝ์ฐjavadoc
์์ฑ ์ ์ฌ์ฉํฉ๋๋ค.
๋ฉ๋ชจ๋ฆฌ
"๋ณ์๋ฅผ ์ ์ธ๋ง ํ๊ณ ์ด๊ธฐํํ์ง ์์ผ๋ฉด ์ด๋ป๊ฒ ๋๋์?"
- ์ปดํ์ผ ์๋ฌ๊ฐ ๋ฉ๋๋ค.
"์ง์ญ ๋ณ์๋ฅผ ์ด๊ธฐํํ์ง ์์ผ๋ฉด ์ ์ปดํ์ผ ์๋ฌ๊ฐ ๋ฐ์ํ๋์?"
- ์ปดํจํฐ์์ ๋ฉ๋ชจ๋ฆฌ๋ ์ฌ๋ฌ ์์คํ ์ ํจ๊ป ์ฌ์ฉํ๋ ๊ณต๊ฐ์ ๋๋ค. ๋ฉ๋ชจ๋ฆฌ์ ์ด๋ ํ ๊ฐ๋ค์ด ๊ณ์ ์ ์ฅ๋ฉ๋๋ค. ๋ณ์๋ฅผ ์ ์ธํ๋ฉด ๋ฉ๋ชจ๋ฆฌ์์ ์ด๋ค ๊ณต๊ฐ์ ์ฐจ์งํ๊ณ ์ฌ์ฉํ๊ฒ ๋ฉ๋๋ค. ๊ทธ๋ฐ๋ฐ ๊ทธ ๊ณต๊ฐ์ ๊ธฐ์กด์ ์ด๋ค ๊ฐ์ด ์์๋์ง ์๋ฌด๋ ๋ชจ๋ฆ ๋๋ค. ๋ฐ๋ผ์ ์ด๊ธฐํ๋ฅผ ํ์ง ์์ผ๋ฉด ์ด์ํ ๊ฐ์ด ์ถ๋ ฅ๋ ์ ์์ต๋๋ค. ์ด๋ฐ ๋ฌธ์ ๋ฅผ ์๋ฐฉํ๊ธฐ ์ํด ๋ณ์๋ฅผ ์ด๊ธฐํํ๋๋ก ๊ฐ์ ํ๋ ๊ฒ์ ๋๋ค.
"๋ณ์ ์ ์ธ์ ๋ฉ๋ชจ๋ฆฌ์์ ์ด๋ค ์ผ์ด ์ผ์ด๋๋์ง ์ค๋ช
ํด์ฃผ์ธ์."
- ์ง์ญ ๋ณ์์ ๊ฒฝ์ฐ ๋ฉ์๋๊ฐ ํธ์ถ๋๋ฉด
์คํ ์์ญ
์ ํด๋น ๋ฉ์๋์ ์คํ ํ๋ ์์ด ์์ฑ๋ฉ๋๋ค. ๋ณ์ ์ ์ธ ์ ์ด ์คํ ํ๋ ์ ๋ด์ ๋ณ์๋ฅผ ์ํ ๊ณต๊ฐ์ด ํ ๋น๋ฉ๋๋ค.
๋ณ์์ ํ์ ์ ๋ฐ๋ผ๊ธฐ๋ณธํ(primitive)
์ ๊ฒฝ์ฐ ์คํ ์์ญ์ ์ง์ ๊ฐ์ด ์ ์ฅ๋ฉ๋๋ค.์ฐธ์กฐํ(reference
์ ๊ฒฝ์ฐ ์ค์ ๊ฐ์ฒด๋ ํ ์์ญ์ ์์ฑ๋๊ณ ์คํ์๋ ๊ทธ ๊ฐ์ฒด์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๊ฐ ์ ์ฅ๋ฉ๋๋ค.
์ฝ๋ฉ ์ปจ๋ฒค์
"์๋ฐ์์ ๋ณ์๋ช
์ ์ง์ ๋ ์ฃผ์ํด์ผ ํ ์ ์ ๋ฌด์์ธ๊ฐ์?"
- ๋ฌธ์๋ก ์์ํด์ผ ํ๋ฉฐ ์ฒซ ๊ธ์๋ก ์ซ์๊ฐ ์ฌ ์ ์์ต๋๋ค.
- ์์ด ์๋ฌธ์, ๋๋ฌธ์, ์ซ์, ๋ฌ๋ฌ์ฌ์ธ, ์ธ๋์ค์ฝ์ด๋ก ์์ฑํ ์ ์์ต๋๋ค.
- ์นด๋ฉ์ผ์ด์ค๋ก ์์ฑํด์ผ ํฉ๋๋ค.
- ์์ฝ์ด๋ฅผ ๋ณ์๋ช ์ผ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค.
"์นด๋ฉ์ผ์ด์ค์ ํ์ค์นผ์ผ์ด์ค๋ ๊ฐ๊ฐ ์ด๋์ ์ฌ์ฉ๋๋์?"
- Java์์๋ ๋ณดํต ๋ณ์๋ช , ๋ฉ์๋๋ช ์ผ๋ก ์นด๋ฉ์ผ์ด์ค๋ฅผ ์ฌ์ฉํ๊ณ ํด๋์ค๋ช ์ผ๋ก ํ์ค์นผ์ผ์ด์ค๋ฅผ ์ฌ์ฉํฉ๋๋ค.
"์์๋ ์ด๋ค ๋ฐฉ์์ผ๋ก ์ด๋ฆ์ ์ง์ด์ผ ํ๋์?"
- ์์๋ ๋ณดํต SCREAMING_SNAKE_CASE๋ก ์์ฑ๋ฉ๋๋ค.
- ๋จ์ด๊ฐ ์ฌ๋ฌ ๊ฐ์ผ ๊ฒฝ์ฐ ์ธ๋์ค์ฝ์ด๋ก ๋จ์ด๋ฅผ ์ด์ด์ค๋๋ค.
"Java์์ ํด๋์ค๋ช
์ ๋๋ฌธ์๋ก, ๋ณ์๋ช
์ ์๋ฌธ์๋ก ์์ํ๋ ์ด์ ๊ฐ ๋ฌด์์ธ๊ฐ์?"
- ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์์
ํด๋์ค
๋ ์ค๊ณ๋๋ฉด์ ์ญํ ์ ํ๋ฏ๋ก ๋ช ์ฌ์ ์ฑ๊ฒฉ์ ๊ฐ์กฐํ๊ธฐ ์ํด ๋๋ฌธ์๋ก ์์ํ๋ฉฐ,๋ณ์
๋ ์ธ์คํด์ค๋ฅผ ์๋ฏธํ๋ฏ๋ก ์๋ฌธ์๋ก ์์ํฉ๋๋ค.
"์์๋ ์ ๋ชจ๋ ๋๋ฌธ์๋ก ์์ฑํ๋์?"
- ์์๋
๋ชจ๋ ๋๋ฌธ์
์์ธ๋์ค์ฝ์ด(_)
๋ฅผ ์ฌ์ฉํ๋SCREAMING_SNAKE_CASE
๋ฅผ ์ฌ์ฉํ๋๋ฐ ๊ทธ ์ด์ ๋๊ฐ์์ฑ
,์๋ฏธ ์ ๋ฌ
,ํ๋ก๊ทธ๋๋ฏธ ์ธ์ด๋ฅผ ๋์ด์ ํ์ค
์ด๊ธฐ ๋๋ฌธ์ ๋๋ค.- ์ฝ๋๋ฅผ ์ฝ์ ๋ ์ด ๊ฐ์ด ๋ณ๊ฒฝ๋์ง ์๋ ์์๋ผ๋ ๊ฒ์ ์ฆ์ ์ธ์ํ ์ ์๊ฒ ํ๋ฉฐ ์ผ๋ฐ ๋ณ์์ ๋ช ํํ๊ฒ ๊ตฌ๋ถ๋์ด ์ค์๋ก ๊ฐ์ ๋ณ๊ฒฝํ๋ ค๋ ์๋๋ฅผ ๋ฐฉ์งํฉ๋๋ค.
- ์์๋ ํ๋ก๊ทธ๋จ ์ ์ฒด์์ ๊ณ ์ ๋ ๊ฐ์ผ๋ก ์ฌ์ฉ๋๋ ์ค์ํ ๊ฐ์ ๋๋ค. ๋๋ฌธ์๋ก ์์ฑํ์ฌ ๊ทธ ์ค์์ฑ์ ๊ฐ์กฐํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฌ๋ฌ ๋จ์ด๋ก ์ด๋ฃจ์ด์ง ๊ฒฝ์ฐ ์ธ๋์ค์ฝ์ด๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ๋ ์ฑ์ ๋์ ๋๋ค.
- Java๋ฟ๋ง ์๋๋ฆฌ๋ผ C, Python ๋ฑ ๋๋ถ๋ถ์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์๋ ์์๋ฅผ ๋๋ฌธ์๋ก ์์ฑํ๊ณ ์์ต๋๋ค. ๊ฐ๋ฐ์๋ค ๊ฐ์ ๋ช ํํ ์ํต์ ์ํ ๊ณตํต๋ ์ปจ๋ฒค์ ์ ๋๋ค.
'Java | Spring' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Java] ์ฝ๋๋ก ์์ํ๋ ์๋ฐ ์ฒซ ๊ฑธ์ (4-6) Q & A (0) | 2025.01.25 |
---|---|
[Java] ์ฝ๋๋ก ์์ํ๋ ์๋ฐ ์ฒซ ๊ฑธ์ (4-6) (3) | 2024.12.20 |
[Java] ์ฝ๋๋ก ์์ํ๋ ์๋ฐ ์ฒซ ๊ฑธ์ (1-3) (1) | 2024.12.19 |
[Java] SLF4J LoggerFactory ์ฌ์ฉ (0) | 2021.04.05 |
[Java] Why does the string data type have a .toString() method? (0) | 2021.04.05 |