๐ก Kotlin์ ์ฃผ ์ธ์ด๋ก ํ์ฉํ๋ฉด์, ํน์ง๊ณผ ์ฌ์ฉํ๋ ์ด์ ์ ๋ํ์ฌ ํ ๋ฒ ํ์ตํ๊ณ ๋์ด๊ฐ๋ ๊ฒ์ด ํ์ํ ๊ฒ ๊ฐ์์ต๋๋ค.
Kotlin
- ์๋ฐ๋ฅผ ๋ง๋ ํ์ฌ์ธ IntelliJ IDEA์ ๊ฐ๋ฐ์ฌ JetBrains์์ ๊ณต๊ฐํ ์ธ์ด๋ก, ์๋ฐ์ 100ํผ์ผํธ ํธํ๋๋ฉฐ ์๋ฐ๋ณด๋ค ๋ ๊ฐ๊ฒฐํ๊ณ ๋ง์ ๊ธฐ๋ฅ์ ์ถ๊ฐํ ์ธ์ด์ ๋๋ค.
- ๋ํ ์ ์ฐจ ์งํฅ์ ์ธ ๋ฌธ๋ฒ ์์ฃผ์ ์ฝ๋์์ ๋ฒ์ด๋, ์ฌ๋๊ณผ ๊ฐ๊น์ด ๊ฐ์ฒด์งํฅ ์ธ์ด ์ค ๋์ฑ ์ฌ๋์ ์ธ์ด์ ๋น์ทํ๊ฒ ์ฝ๋๋ฅผ ๊ตฌ์ฌํ๋๋ก ๊ฐ๋ฐ๋ ์ธ์ด์ ๋๋ค.
Kotlin์ ํฐ ์ฅ์
- ๊ฐ๋ ์ฑ๊ณผ ์ ๊ทผ์ฑ
- ๊ฐ์ฒด์งํฅ ์ธ์ด์ด๋ฉด์ ๋ณ์ ์ ํ ์ ์ถ ๋ฐ ์์ฌ์ด ์บก์ํ
- ์ง๊ด์ ์ธ ๊ธฐ๋ฅ์ ๊ฐ๋ ํจ์๋ฅผ ํ์ฌ
- ์์ฐ์ฑ์ ๋์ผ ์ ์๋ ์ธ์ด
- ๊ฐ๋ฐ ์ธ์ด ํธ๋ ๋
- ์ฝ๋์ ์ฌ์ฌ์ฉ์ ํตํด ๋ฐ๋ณต์ ์ธ ์ฝ๋๋ฅผ ์ต์ํ
- ์ ์ฐํ๊ณ ๋น ๋ฅธ ์์
- ์ ์ง ๋ณด์ ํธ๋ฆฌํ ์ธ์ด ํ์
- ์๋ฐ์ ๋น๊ตํ์ ๋, ์ฝ๋์ ๊ฐ๊ฒฐํจ
Kotlin์ ํน์ง
- ํ์ ํ์
๊ณผ ์ ์ฐํจ
- ๋ณ์ ์ ํ์ด ์ ์ถ ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ ํ ๋ณ์์ ๋ง์ ์ ํ์ ๋ฃ์ ์ ์์ต๋๋ค.
- ์๋ ๋น ๊ฐ ์ฒ๋ฆฌ(null)
- null ์ฒ๋ฆฌ๋ฅผ ํตํด์ ๋น ๊ฐ์ ๋ํ ์ค๋ฅ ๋น๋์๋ฅผ ๋ฎ์ถฐ์ค ์ ์์ต๋๋ค.
- ์ด๋ ๊ฐ๊ฒฐํ๊ณ ์ ์ฐํ ์ฝ๋ฉ์ด ๊ฐ๋ฅํด์ง๋๋ค.
- ์ ์ ํ์
์ง์ ์ธ์ด
- ๋ชจ๋ ํ๋ก๊ทธ๋จ ๊ตฌ์ฑ ์์์ ํ์ ์ด ์ปดํ์ผ ์์ ์ ์ ์ ์๊ณ , ํ๋ก๊ทธ๋จ ์์์ ๊ฐ์ฒด์ ํ๋๋ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ๋๋ง๋ค ์ปดํ์ผ๋ฌ๊ฐ ํ์ ์ ๊ฒ์ฆ ํด์ค๋๋ค.
- ๋์ ํ์
์ง์ ์ธ์ด์ ์ฐจ์ด
- JVM์์์ Groovy๋ JRuby๋ ๋์ ํ์ ์ธ์ด๋ฅผ ์ง์ํฉ๋๋ค.
- ํ์ ์ ๊ด๊ณ์์ด ๋ชจ๋ ๊ฐ์ ๋ณ์์ ๋ฃ์ ์ ์๊ณ , ๋ฉ์๋๋ ํ๋ ์ ๊ทผ์ ๋ํ ๊ฒ์ฆ์ด ์คํ ์์ ์ ์ผ์ด๋ฉ๋๋ค.
- ์ด๋ฅผ ํตํด ์ฝ๋๊ฐ ์งง์์ง๊ณ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ ์ฐํ๊ฒ ์์ฑ ๊ฐ๋ฅํฉ๋๋ค.
- ํ์ง๋ง ์คํ ์์ ์ ์ค๋ฅ๊ฐ ํ์ธ๋๋ ์ํ์ด ์์ต๋๋ค.
Kotlin์ ์ ์ ํ์ ์ธ์ด
- ์คํ ์์ ์ ์ด๋ค ๋ฉ์๋๋ฅผ ํธ์ถํ ์ง ์์๋ด๋ ๊ณผ์ ์ด ํ์์์ผ๋ฏ๋ก ๋ฉ์๋ ํธ์ถ์ด ๋น ๋ฆ ๋๋ค.
- ์ปดํ์ผ๋ฌ๊ฐ ํ๋ก๊ทธ๋จ์ ์ ํ์ฑ์ ๊ฒ์ฆํ๊ธฐ ๋๋ฌธ์ ์คํ ์ ํ๋ก๊ทธ๋จ์ด ์ค๋ฅ๋ก ์ค๋จ๋ ๊ฐ๋ฅ์ฑ์ด ์ ์ต๋๋ค.
- ์ฝ๋์์ ๋ค๋ฃจ๋ ๊ฐ์ฒด๊ฐ ์ด๋ค ํ์ ์ ์ํ๋์ง ์ ์ ์๊ธฐ ๋๋ฌธ์ ์ฒ์ ๋ณด๋ ์ฝ๋๋ฅผ ๋ค๋ฃฐ ๋๋ ์ข์ต๋๋ค.
- ์์ ํ๊ฒ ๋ฆฌํฉํ ๋ง ํ ์ ์๊ณ , ์ ํํ ์ฝ๋ ์์ฑ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
Kotlin์ ์ฒ ํ
- Kotlin์ ์๋ฐ์ ์ํธ์ด์ฉ์ฑ์ ์ด์ ์ ๋ง์ถ ์ค์ฉ์ ์ด๊ณ ์์ ํ๋ฉฐ ๊ฐ๊ฒฐํ ์ธ์ด์
๋๋ค.
- ์ค์ฉ์ฑ
- ์ธ์ด์ ๋ณต์ก๊ฐ ์ ๊ณ , ํน์ ํ๋ก๊ทธ๋๋ฐ ์คํ์ผ์ด๋ ํจ๋ฌ๋ค์์ ๊ฐ์ํ์ง ์์ต๋๋ค.
- ๊ฐ๊ฒฐ์ฑ
- ๊ฐ๋ฐ์๊ฐ ์ฝ๋๋ฅผ ์๋ก ์์ฑํ๋ ์๊ฐ๋ณด๋ค ๊ธฐ์กด ์ฝ๋๋ฅผ ์ฝ๋ ์๊ฐ์ด ๋ ๊ธธ๋ค๋ ์ฌ์ค์ ์ง์คํด์ผ ํฉ๋๋ค.
- getter, setter, ์์ฑ์ ํ๋ผ๋ฏธํฐ ํ๋๋ฅผ ๋์ ํ๊ธฐ ์ํ ๋ก์ง์ด ํ์ ์์ต๋๋ค.
- ๋ถํ์ํ๊ฒ ๊ธด ์ฝ๋๋ฅผ ์ต์ํํ๊ณ , ๋๋ค๋ฅผ ํ์ฉํด์ ์์ ์ฝ๋ ๋ธ๋ก์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํจ์์ ์ฝ๊ฒ ์ ๋ฌํ ์ ์์ต๋๋ค.
- ์์ ์ฑ
- ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๊ฐ ์์ ํ๋ค๋ ๊ฒ์, ํ๋ก๊ทธ๋จ์์ ๋ฐ์ํ ์ ์๋ ์ค๋ฅ ์ค์์ ์ผ๋ถ ์ ํ์ ์ค๋ฅ๋ฅผ ํ๋ก๊ทธ๋จ ์ค๊ณ๊ฐ ์์น์ ์ผ๋ก ๋ฐฉ์งํด์ค๋ค๋ ๋ป์ ๋๋ค.
- ์ด๋ค ์ธ์ด๋ ๋ฐ์ํ ์ ์๋ ๋ชจ๋ ์ค๋ฅ๋ฅผ ๋ง์ ์ ์์ง๋ง, ์ฝํ๋ฆฐ์ JVM ํ๊ฒฝ์์ ์คํํ๋ ๊ฒ์ผ๋ก ์๋นํ ์์ ์ฑ์ ๋ณด์ฅํฉ๋๋ค.
- JVM์ ๋ฉ๋ชจ๋ฆฌ ์์ ์ฑ์ ๋ณด์ฅํ๊ณ , ๋ฒํผ ์ค๋ฒํ๋ก์ฐ๋ฅผ ๋ฐฉ์งํ๋ฉฐ, ๋์ ์ผ๋ก ํ ๋น๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์๋ชป ์ฌ์ฉํ๋ ๋ฌธ์ ๋ฅผ ๋ฐฉ์ง ํด์ค๋๋ค.
- ํ์ ์ถ๋ก ์ ํตํด์ ์ ํ๋ฆฌ์ผ์ด์ ์ ํ์ ์์ ์ฑ์ ๋ณด์ฅํฉ๋๋ค.
- ๊ฐ์ฅ ํฐ ์ฅ์ ์ NullPointerException์ ์์ ๊ธฐ ์ํ null ์ถ์ ์ ๋๋ค.
- ์ํธ์ด์ฉ์ฑ
- ๊ธฐ์กด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ทธ๋๋ก ํ์ฉํ ์ ์๋๋๋ ์๋ฐ ํ๋ก๊ทธ๋๋จธ๋ค์ด ์ฝํ๋ฆฐ ์ฌ์ฉ์์๊ฒ ๋ฌป๋ ์ฒซ๋ฒ์งธ ์ง๋ฌธ์ผ ๊ฒ์ ๋๋ค.
- ์ฝํ๋ฆฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ด๋ค API๋ฅผ ์ ๊ณตํ๋ ๊ฐ์ ์ฝํ๋ฆฐ์์ ํด๋น API๋ฅผ ํ์ฉํ ์ ์์ต๋๋ค.
- ์๋ฐ์ ๋ง์ฐฌ๊ฐ์ง๋ก ์ฝํ๋ฆฐ๋ ์ปดํ์ผ ์ธ์ด์ด๋ฉฐ, .kt๋ผ๋ ํ์ฅ์์ ํ์ผ์ .class ํ์ผ์ ๋ง๋ญ๋๋ค.
- ์ด๋ฅผ ํตํด ์ฝํ๋ฆฐ ์ฝ๋๋ฅผ ์ปดํ์ผํ ๋ค์ java ๋ช ๋ น์ด๋ก ์คํํ ์ ์์ต๋๋ค.
- ์ค์ฉ์ฑ
์ฐธ๊ณ
https://warpgate3.tistory.com/entry/Kotlin-vs-Java
https://incheol-jung.gitbook.io/docs/study/kotlin-in-action/1