๐ฑ dreaming DiNO
[Android] JDK, SDK, NDK ๋ณธ๋ฌธ
JDK(Java Development Kit, ์๋ฐ ๊ฐ๋ฐ ๋๊ตฌ)
- ์ ์
์๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ๊ธฐ ์ํ ํต์ฌ ํ๋ซํผ์ ๊ตฌ์ฑ์์(?? ๋ฌด์จ ๋ง์ธ๊ฐ)
2. ์๋ฐ ํ๋ก๊ทธ๋๋ฐ์ 3๋ ํต์ฌ ๊ธฐ์ ํจํค์ง
2–1. JVM(Java Virtual Machine, ์๋ฐ ๊ฐ์๋จธ์ )
2–2. JRE(Java Runtime Environment, ์๋ฐ ๋ฐํ์ ํ๊ฒฝ)
JVM์ ์์ฑํ๋ ๋์คํฌ ์์ ๋ถ๋ถ
์๋ฐ ํ๋ก๊ทธ๋จ์ ๊ตฌ๋ํ๊ธฐ ์ํ ๋ ๋ฆฝ ๊ตฌ์ฑ์์์๊ณผ ๋์์ JDK์ ์ผ๋ถ
2–3. JDK
์์ ์ ์๊ฐ ์ด๋ ต๊ธฐ ๋๋ฌธ์ ์ฝ๊ฒ ๋งํ๋ฉด, ์๋ฐ ๊ธฐ๋ฐ ์ํํธ์จ์ด๋ฅผ ๊ฐ๋ฐํ๊ธฐ ์ํ ๋๊ตฌ๋ค๋ก ์ด๋ค์ง ํจํค์ง๋ผ๊ณ ํ ์ ์๋ค.
- ํจํค์ง ์ข ๋ฅ
Java SE (Standard Edition)
Java EE(Enterprise Edition) : Java SE + Java Beans, ORM(Object Relational Mapping) ๋ฑ์ ์ง์
Java ME(Miro Edition) : Java SE + ํด๋์ ํ, PDA, ์ ํ๋ฐ์ค ๋ฑ์ ์ง์ํ๋ ๊ธฐ๋ฅ
์ ์ธ ํจํค์ง ๊ฐ์ ๊ด๊ณ๋ฅผ ๋ณด์ฌ์ฃผ๋ ์ด๋ฏธ์ง๋ ๋ค์ ์๋์ ๊ฐ๋ค.
SDK(Software Developer’s Kit, ์ํํธ์จ์ด ๊ฐ๋ฐ ๋๊ตฌ)
- ์ ์
UI ๊ธฐ๋ฐ์ผ๋ก ํนํ๋ API๋ฅผ ์ ๊ณตํ์ฌ Application Level์์ ๊ฐ๋ฐ์ด ๊ฐ๋ฅํ๊ฒ ๋์์ฃผ๋ ํจํค์ง
2. ํ์ฉ
Java ๊ธฐ๋ฐ์ผ๋ก Application Emulator๋ฅผ ๋ด์ฅํ๊ณ ์์ด Build ๋์์ Test๊ฐ ๊ฐ๋ฅํ๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ UI ๊ธฐ๋ฐ์ ์๋๋ก์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ ๋ ํ์ฉ๋จ
NDK(Native Development Kit, ๋ค์ดํฐ๋ธ ๊ฐ๋ฐ ๋๊ตฌ)
- ์ ์
C/C++์ ์ด์ฉํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ , ๋ฏธ๋ค์จ์ด ๊ฐ๋ฐ์ ์ฌ์ฉ๋๋ Framework
2. ์ ๋์๋๊ฐ?
- SDK๋ฅผ ํ ๋๋ก ๋ง๋ ์๋๋ก์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์๋ฐ๋ฅผ ํ์ฉํ๊ธฐ ๋๋ฌธ์ ์๋ฐ์ ํ๊ณ์ ์ ๊ทธ๋๋ก ๊ฐ์ง๊ณ ์๋ค.
- ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๊ทธ๋ํฝ ์ฒ๋ฆฌ๋ ์๊ทธ๋ ํ๋ก์ธ์ฑ(์ผ์ ๊ฐ ์ฒ๋ฆฌ) ๋ฑ CPU์ ์ฒ๋ฆฌ ์๋๊ฐ ์ค์ํ ๋ถ๋ถ์์ SDK์ ํ๊ณ์ ์ด ๋๋ฌ๋จ
- ์ด๋ฐ ์ฒ๋ฆฌ๋ฅผ ์ํด ๊ตฌ๊ธ์์ ์๋๋ก์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ์์๋ C/C++์ ํ์ฉํ ์ ์๋๋ก ์ ๊ณตํ๋ ๋๊ตฌ๊ฐ ๋ฐ๋ก NDK์ด๋ค.
3. JNI(Java Native Interface)
JVM ์์์ ์คํ๋๊ณ ์๋ ์๋ฐ์ฝ๋๊ฐ ๋ค์ดํฐ๋ธ ์์ฉ ํ๋ก๊ทธ๋จ(ํ๋์จ์ด์ ์ด์์ฒด์ ํ๋ซํผ์ ์ข ์๋ ํ๋ก๊ทธ๋จ๋ค) ๊ทธ๋ฆฌ๊ณ C, C++ ๋ฑ ๋ค๋ฅธ ์ธ์ด๋ค๋ก ์์ฑ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ ํธ์ถํ๊ฑฐ๋ ๋ฐ๋๋ก ํธ์ถ๋๋ ๊ฒ์ ๊ฐ๋ฅํ๊ฒ ํ๋ Framework
3–1. JNI์ ์๋ฆฌ
- Java ํ์ผ : ํธ์ถํ๋ ค๊ณ ํ๋ C ํจ์์ ๋ํ ์ ์ธ๋ฌธ๊ณผ ํธ์ถ๋ฌธ, ๊ทธ๋ฆฌ๊ณ dll ๋ก๋๋ฌธ์ ์์ฑ
- C/C++ : ํ์ผNative Call ํ๋ ค๋ C ํจ์์ ๋ํ ์ ์๋ฌธ ๋ฐ ํค๋ ํ์ผ์ ์์ฑ
- ๋ง๋ค์ด์ง C ํ์ผ์ dll๋ก ๋น๋
- ๋น๋ํ dll์ ์๋ฐ์ฝ๋์์ ํธ์ถํด์ ๋ง๋ Cํจ์๋ฅผ ์๋ฐ์์ ์ฌ์ฉํ ์ ์๊ฒ ํจ
3–2. ํ์ฉ
C/C++๋ก ์ ์ด๊ฐ ๊ฐ๋ฅํ๋ ํ๋์จ์ด ๋จ์์ ๊ธฐ๋ฅ(์ผ์ ๊ฐ ์ฒ๋ฆฌ, ํฐ์น) ๋ฑ์ JNI๋ฅผ ํ์ฉํ์ฌ ๊ฐ๋ฐํ ์ ์๊ฒ ํจ์ผ๋ก์จ ๋ค์๊ณผ ๊ฐ์ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํด์ง๋ค.
- ์์์ฒ๋ฆฌ
- ๊ฒ์
- ์ผ์์ฒ๋ฆฌ
- ๋ฌผ๋ฆฌ ์๋ฎฌ๋ ์ด์
์ถ์ฒ: https://medium.com/@logishudson0218/jdk-sdk-ndk-3b095101c040
'Android' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Kotlin] Retrofit - Logging Interceptor ์ ํ์์ฑ (0) | 2021.12.07 |
---|---|
[Kotlin] Retrofit (๋ ํธ๋กํ) ์ด๋? (0) | 2021.11.24 |
[Kotlin] ๊ธฐ๋ณธ๋ฌธ๋ฒ-2 (0) | 2021.11.24 |
[Kotlin] ๊ธฐ๋ณธ๋ฌธ๋ฒ-1 (0) | 2021.11.24 |
[Android] MVVM (0) | 2021.11.11 |