์์ฆ ๋์ธ์ธ ์ฝํ๋ฆฐ์ ๊ณต๋ถํ๊ณ ์ถ๋ค๋ฉด?
โญ Java ๊ธฐ๋ฐ์ผ๋ก ๋ฐฐ์ฐ๋ Kotlin โญ
์ด ๊ฐ์๋ Java๊ฐ Kotlin์ผ๋ก ๋ฐ๋ ๋ฐฐ๊ฒฝ๊ณผ ์๋ฆฌ๋ฅผ ์ฃผ์ ๋ณ๋ก ์๊ฐํฉ๋๋ค.
์๋ก์ด ๊ฐ๋
์ ์ฒ์๋ถํฐ ๋ฐฐ์ฐ๋ ๊ฒ๋ณด๋ค, ๋ฏธ๋ฆฌ ์๊ณ ์๋ ๊ฐ๋
์ ๋ฐํ์ผ๋ก ๋ฌ๋ผ์ง ์ ์ ํ์ตํ๋ ๊ฒ์ด ํจ์ฌ ํจ๊ณผ์ ์
๋๋ค. Java๋ฅผ ๊ธฐ๋ฐ์ผ๋ก Kotlin์ ๋ฌธ๋ฒ, ๋์ ์๋ฆฌ, ์ฌ์ฉ ์ฉ๋ก ๋ฑ์ ์ฝ๊ณ ๋น ๋ฅด๊ฒ ์ค๋ช
๋๋ฆฌ๋ ๊ฒ์ ๋ชฉํ๋ก ํ๊ณ ์์ต๋๋ค.
๋จ์ํ ์ฝํ๋ฆฐ ๋ฌธ๋ฒ์ ํ๋์ฉ ์ค๋ช
ํ๋ ๊ฐ์๊ฐ ์๋๋๋ค.
์ฝํ๋ฆฐ ๋ฌธ๋ฒ๊ณผ ๋ฌธ๋ฒ์ด ํ์ํ๊ฒ ๋ ๋ฐฐ๊ฒฝ ๋ฐ ์ด์ , ์ธ์ด์ ๋ํ ์ดํด๋๋ฅผ ๋์ด๊ธฐ ์ํ ๋์ ์๋ฆฌ์ ์ฌ์ฉ ์ฉ๋ก๋ฅผ ๋ค๋ฃน๋๋ค. ์ฝํ๋ฆฐ ์ฝ๋๊ฐ ์ด๋ป๊ฒ ์๊ฒผ๋์ง์ ๋ํ ๊ฐ์ ๋น ๋ฅด๊ฒ ์ก๊ณ , ์ฝํ๋ฆฐ์ ์ฌ์ฉํด ํ๋ก๋ํธ๋ฅผ ๋ง๋ค์ด๋๊ฐ์ค ์ ์๊ฒ ๋์ค ๊ฒ๋๋ค.
์ด๋ฐ ๋ถ๋ค์๊ฒ ์ถ์ฒ๋๋ ค์!
๐โโ๏ธ Java๋ฅผ ๋ฐฐ์ด ์ ์ด ์์ด์!
์ด ๊ฐ์๋ Java๋ฅผ 6๊ฐ์~1๋
์ ๋ ๋ฐฐ์๋ณด์ ๋ถ๋ค์ ๋์์ผ๋ก Kotlin์ ์ค๋ช
ํ๋ ๊ฐ์์
๋๋ค.
Java๋ฅผ ๊ธฐ๋ฐ์ผ๋ก, Kotlin์์ ๋ฌ๋ผ์ง๋ ๊ธฐ๋ฅ์ ๋ฌด์์ธ์ง, Kotlin์์ ์๋ก ์๊ธด ๊ธฐ๋ฅ๊ณผ ๋ฌธ๋ฒ์ ์ด๋ค ๋ถํธํ ์ ์ ํด๊ฒฐํ๊ธฐ ์ํจ์ธ์ง ๋ฑ์ ๋ํด ๋ค๋ฃน๋๋ค.
๐โโ๏ธ Kotlin์ ๋ฐฐ์๋ณด๊ณ ์ถ์ด์!
์๋๋ก์ด๋ ๊ณต์ ์ธ์ด Kotlin, ์๋ฒ์์๋ ์ ์ ์ฌ์ฉ์ฌ๋ก๊ฐ ๋์ด๋๋ ์ธ์ด Kotlin, ์ฝ๊ณ ๋น ๋ฅด๊ฒ ๋ฐฐ์ธ ์ ์์ด์. Kotlin์ ์ฒ์ ๋ฐฐ์ฐ๋ ์ฌ๋๋ค์ ๋์์ผ๋ก ํ ๊ฐ์๋ณด๋ค ํจ์ฌ ํจ๊ณผ์ ์ผ๋ก Kotlin ์ธ์ด์ ๋ฌธ๋ฒ, ์๋ฆฌ์ ๋ํด ์ต๋ํ์ค ์ ์์ต๋๋ค.
์ด๋ฐ ๊ฑธ ๋ฐฐ์๋ณผ ๊ฑฐ์์.
- ์ฝํ๋ฆฐ ๊ธฐ์ด ๋ฌธ๋ฒ
- ์ฝํ๋ฆฐ ์ฝ๋์ ๋์ ์๋ฆฌ
- ์ฝํ๋ฆฐ ์ธ์ด๋ฅผ ํ์ฉํ๋ ๋ค์ํ ํ
- ์๋ฐ์ ์ฝํ๋ฆฐ์ ํจ๊ป ์ฌ์ฉํ ๋ ์ฃผ์ํ ์
Kotlin ํต์ฌ ์ปค๋ฆฌํ๋ผ,
Lecture ๋ฏธ๋ฆฌ๋ณด๊ธฐ
Lecture 0 (๋ฌด๋ฃ๊ฐ์)
- ์ฝํ๋ฆฐ์ ๋ํ ๊ฐ๋ฒผ์ด TMI 34๊ฐ์ง๋ฅผ ๋ค๋ฃน๋๋ค.
Lecture 1 (๋ฌด๋ฃ๊ฐ์)
- ๋ณ์๋ฅผ ์ ์ธํ๋ ๋ฐฉ๋ฒ๊ณผ var, val ํค์๋๋ฅผ ๋ค๋ฃน๋๋ค.
- primitive type์ ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ, nullable ๋ณ์๋ฅผ ์ ์ธํ๋ ๋ฐฉ๋ฒ์ ๋ค๋ฃน๋๋ค.
Lecture 2
- nullable ๋ณ์๋ฅผ ํ์ฉํ๋ ๋ค์ํ ๊ธฐ๋ฅ
- Safe Call, Elvis ์ฐ์ฐ์, ๋ ์๋ ๋จ์ธ
- Java์ ์ฝํ๋ฆฐ์ ํจ๊ป ์ฌ์ฉํ ๋ null ํ์
๊ณผ ๊ด๋ จํด ์ฃผ์ํ ์ ๊ณผ ๋์ํ ์ ์๋ ๋ฐฉ๋ฒ
Lecture 3
- ๋ณ์๋ฅผ ์ ์ธํ๋ ๋ฐฉ๋ฒ๊ณผ var, val ํค์๋๋ฅผ ๋ค๋ฃน๋๋ค.
- primitive type์ ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ, nullable ๋ณ์๋ฅผ ์ ์ธํ๋ ๋ฐฉ๋ฒ์ ๋ค๋ฃน๋๋ค.
Lecture 4
- ์ฝํ๋ฆฐ์ ์กด์ฌํ๋ ๋๋ถ๋ถ์ ์ฐ์ฐ์์ ๋ํด ๋ค๋ฃน๋๋ค.
- ๊ฐ์ฒด๊ฐ์ ๋น๊ต, ๋๋ฑ์ฑ๊ณผ ๋์ผ์ฑ, ์ฐ์ฐ์ ์ค๋ฒ๋ก๋ฉ์ ๋์์ ๋ํด ๋ค๋ฃน๋๋ค.
Lecture 5
- if๋ฌธ๊ณผ when๋ฌธ, expression๊ณผ statement์ ๋ํด์ ๋ค๋ฃน๋๋ค.
Lecture 6
- for๋ฌธ๊ณผ while๋ฌธ, ์ฝํ๋ฆฐ์์ ์ ํต์ ์ธ for๋ฌธ์ ๋์์ํค๋ ์๋ฆฌ์ธ Progrssion์ ๋ํด ๋ค๋ฃน๋๋ค.
Lecture 7
- try catch finally ๊ตฌ๋ฌธ, checked exception๊ณผ unchecked exception์ ๋ํด ๋ค๋ฃน๋๋ค.
- JDK 7์์ ์ถ๊ฐ๋ try with resources์ ๋ํด ๋ค๋ฃน๋๋ค.
Lecture 8
- ์ฝํ๋ฆฐ์ ํจ์ ์ ์ธ ๋ฌธ๋ฒ, default parameter, named argument ์ ๋ํด ๋ค๋ฃน๋๋ค.
- ๊ฐ๋ณ์ธ์ ์ ์ธ ๋ฌธ๋ฒ์ ๋ํด ๋ค๋ฃน๋๋ค.
Lecture 9 (๋ฌด๋ฃ๊ฐ์)
- ํด๋์ค์ ํ๋กํผํฐ, ์์ฑ์์ init block์ ๋ํด ๋ค๋ฃน๋๋ค.
- custom getter / setter์ backing field์ ๋ํด ๋ค๋ฃน๋๋ค.
Lecture 10
- ์ถ์ ํด๋์ค์ ์ธํฐํ์ด์ค์ ๋ํด ๋ค๋ฃน๋๋ค.
- ์ฝํ๋ฆฐ์์ ์์์ ํ ๋ ์ฃผ์ํ ์ ๊ณผ ๊ด๋ จ ํค์๋๋ค์ ์ ๋ฆฌํฉ๋๋ค.
Lecture 11
- ์ ๊ทผ ์ ์ด๋ฅผ ํ๋ ๋ฐฉ๋ฒ (public, protected, internal, private)์ ๋ํด์ ๋ค๋ฃน๋๋ค.
- ์ ๊ทผ ์ ์ด์ ์ฐจ์ด๋ก ์ธํด Java์ Kotlin์ ํจ๊ป ์ฌ์ฉํ ๋ ์ฃผ์ํ ์ ์ ๋ํด ๋ค๋ฃน๋๋ค.
Lecture 12
- static ํจ์์ ๋ณ์, ์ฑ๊ธํค, ์ต๋ช
ํด๋์ค์ ๋ํด์ ๋ค๋ฃน๋๋ค.
Lecture 13
- ์ค์ฒฉ ํด๋์ค์ ์ข
๋ฅ์, ๋ ๋์ ์ค์ฒฉ ํด๋์ค ์์ฑ ๋ฐฉ๋ฒ์ ๋ค๋ฃน๋๋ค.
- ์ฝํ๋ฆฐ์์์ ์ค์ฒฉ ํด๋์ค์ ๋ด๋ถ ํด๋์ค๋ฅผ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ๋ค๋ฃน๋๋ค.
Lecture 14
- Data Class, Enum Class, Sealed Class์ Sealed Interface์ ๋ํด์ ๋ค๋ฃน๋๋ค.
Lecture 15
- ์ฝํ๋ฆฐ์์ ๋ฐฐ์ด๊ณผ ์ปฌ๋ ์
์ ์ฌ์ฉ๋ฒ์ ์ค๋ช
๋๋ฆฝ๋๋ค.
- ์ฝํ๋ฆฐ๊ณผ Java๋ฅผ ํจ๊ป ์ฌ์ฉํ ๋ ์ปฌ๋ ์
๊ณผ ๊ด๋ จํด ์ฃผ์ํ ์ ์ ๋ํด ๋ค๋ฃน๋๋ค.
Lecture 16
- ํ์ฅํจ์, infix ํจ์, inline ํจ์, ์ง์ญํจ์์ ๋ํด ๋ค๋ฃน๋๋ค.
Lecture 17 (๋ฌด๋ฃ๊ฐ์)
- Java์์ ๋๋ค๊ฐ ๋ฑ์ฅํ ์ด์ ๋ฅผ ๋ค๋ฃน๋๋ค.
- ์ฝํ๋ฆฐ์์๋ ๋๋ค๋ฅผ ์ด๋ป๊ฒ ์ฌ์ฉํ๋์ง, Java์ ๋ค๋ฅธ ์ ์ ๋ฌด์์ธ์ง ๋ค๋ฃน๋๋ค.
- Closure๋ผ๋ ๊ฐ๋
๊ณผ ํจ์์ ๋ฌธ๋ฒ์ ์ดํด๋ด
๋๋ค.
Lecture 18
- ์ฝํ๋ฆฐ์์ ์ปฌ๋ ์
์ ํจ์ํ์ผ๋ก ๋ค๋ฃจ๊ธฐ ์ํด ์ ์ฉํ API ๋ค์ ์ ๋ฆฌํด ๋๋ฆฝ๋๋ค.
Lecture 19
- Type Alias์ import, ๊ตฌ์กฐ๋ถํด์ componentN ํจ์์ ๋ํด ๋ค๋ฃน๋๋ค.
- ์ฝํ๋ฆฐ์ ์กด์ฌํ๋ Jump ๊ธฐ๋ฅ๊ณผ Label ๊ธฐ๋ฅ, method chaining์ ์ฌ์ฉ๋๋ takeIf์ takeUnless ํจ์์ ๋ํด ๋ค๋ฃน๋๋ค.
Lecture 20
- ์ฝํ๋ฆฐ์ ์กด์ฌํ๋ 5๊ฐ์ง scope function์ ๋ํด ์ฐจ์ด์ ๊ณผ ์ฉ๋ก๋ฅผ ๋ค๋ฃน๋๋ค.
- scope function๊ณผ ๊ฐ๋
์ฑ์ ๋ํด ํจ๊ป ์๊ฐํด๋ณด๋ ์๊ฐ์ ๊ฐ์ต๋๋ค.
์์ ์ง๋ฌธ Q&A ๐ฌ
Q. Java๋ฅผ ๊ผญ ์์์ผ ๊ฐ์๋ฅผ ๋ค์ ์ ์๋์?
A. ๋ค, ๊ทธ๋ ์ต๋๋ค! ๋ณธ ๊ฐ์๋ Java๋ฅผ 6๊ฐ์ ~ 1๋
์ ๋ ์ฌ์ฉํด ๋ณด์
จ๊ณ '์ฝํ๋ฆฐ์ ๋ฐฐ์ฐ๊ณ ๋ ์ถ์ง๋ง, ์ธ์ด ๊ธฐ์ด ๊ฐ์๋ ๋นํจ์จ์ ์ด๋ผ๊ณ ์๊ฐํ์๋ ๋ถ๋ค์ ์ํด' ๊ธฐํ๋์์ต๋๋ค. ๊ฐ์์์๋ Java ์ฝ๋๋ฅผ ๋จผ์ ๋ณด์ฌ๋๋ฆฌ๊ณ ๊ทธ์ ๋์ํ๋ Kotlin ์ฝ๋๋ฅผ ์๊ฐํด ๋๋ฆฝ๋๋ค.
Q. ์ Java๋ฅผ ์๊ณ ์๋ ๋ถ๋ค์ ๋์์ผ๋ก ๊ธฐํ๋์๋์?
A. ์๋ก์ด ๊ฐ๋
์ ๋ฐฐ์ฐ๋ ๋ฐ ์์ด, ๊ธฐ์กด์ ์๊ณ ์๋ ๊ฐ๋
๊ณผ ๋น๊ต/๋์ํด๊ฐ๋ฉด ํจ๊ณผ์ ์ธ ํ์ต์ ํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋ํ, ์ ๊ฐ Java๋ง ์๋ ์ํฉ์์ Kotlin์ ์ฌ์ฉํ๋ ํ์ฌ๋ก ์ด์งํ๋ฉฐ ๋๊ผ๋ ์ด๋ ค์์ ํด์ํด ์ค ์ปจํ
์ธ ๊ฐ ์์ผ๋ฉด ์ข๊ฒ ๋ค๋ ์๊ฐ์ ํ์ฌ ๊ธฐํํ๊ฒ ๋์์ต๋๋ค.
Q. ์์
๋ด์ฉ์ ์ด๋ ์์ค๊น์ง ๋ค๋ฃจ๋์?
A. ์์
์ ๋ค ๋ฃ๊ณ ๋์๋ฉด, Kotlin์ ์ด์ฉํด 95% ์ด์์ ํ๋ก๊ทธ๋๋ฐ์ ํ์ค ์ ์๊ฒ ๋์ญ๋๋ค. ์ฌํ ๋ด์ฉ์ ํด๋น๋๋ ๋ฆฌํ๋ ์
, DSL, ์ง์ฐ ์ฐ์ฐ๊ณผ ์์, ์ ๋ค๋ฆญ ๋ฑ์ ์ถํ ๊ธฐํ๊ฐ ๋๋ค๋ฉด ๋ค๋ฃจ์ด๋ณผ ์์ ์
๋๋ค.