์ญ์ ์ฌ๋์ ์ฝ๊ฒ ๋ณํ์ง ์๋๋ค. ๋ธ๋ก๊ทธ์ ๋ถ์ง๋ฐํ ๊ธ์ ์ฐ๊ฒ ๋
ธ๋ผ ๋ค์งํ ์ง ํ๋ฌ์ด ๋๊ฒ ์ง๋์์ผ ๊ธ์ ์ด๋ค. (1๋
์์ ํ๋ฌ๋ก ๋ง์ด ์ค์ด๊ธด ํ๋ค. ์ ์ ์น๋ฆฌ๐)
์ด๋ฒ ๊ธ์ kotlin in action
์ ์ฐธ๊ณ ํ์ฌ ๊ณต๋ถํ ์ฝํ๋ฆฐ์ ๋ํด์ ์ฐ๋ ค๊ณ ํ๋ค. ์์ผ๋ก ์ฝํ๋ฆฐ์ ๊ณต๊ณต๋ถํ๋ ๊ณผ์ ์ ๋ํ ๊ธ์ ์ธ ๊ฒ์ด๋ค.
๋ด๊ฐ ์๋๋ก์ด๋๋ฅผ ๊ฐ๋ฐ์ ํฅ๋ฏธ๊ฐ ๋จ์ด์ง ์ด์ ์ค ํ๋๊ฐ ์ฝํ๋ฆฐ์ ๋ํ ๋๋ ค์์ด ์๋๊น ์ถ๋ค. ์ด๋ฌํ ์ด์ ์ ๋๋ถ์ด ๋ค๋ฅธ ์ด์ ๊น์ง ๋ํด์ ธ ์๋๋ก์ด๋ ๊ฐ๋ฐ์ ์ฌ๊ณ ์๋ค๊ฐ ์ทจ์
์ ์ํด ๋ค์ ๊ณต๋ถํ๋ฉด์ ์๋๋ก์ด๋์ ๊ธฐ์ ๋ํฅ์ ๋ํด ํฅ๋ฏธ๊ฐ ์๊ธฐ๊ณ ์๋ก์ด ๋ง์์ผ๋ก ๊ณต๋ถํ๊ฒ ๋์๋ค. ๊ณต๋ถํ๋ฉด์ ์ด์ ๋ณด๋ค ์ฝํ๋ฆฐ ์ฝ๋์ ๋ง์ฃผํ๋ ์ผ์ด ๋ง์์ก๋ค. ์ํคํ
์ฒ๋ฅผ ๊ณต๋ถํ๋ฉด์ mvvm์ ๋ํด ๊ตฌ๊ธ์ ์ฌ๋ฌ ์์ ๋ฅผ ๋ณด์์ ๋ ํ์คํ ์๋ฐ๋ณด๋ค ์ฝํ๋ฆฐ์ผ๋ก ์ง์ฌ์ง ์ฝ๋๋ฅผ ๋ง์ด ๋ณผ ์ ์์๋ค. ๋๋ ๊ณต๋ถ๋ฅผ ๋ฏธ๋ฃฐ ์ ์๋ค.!!
์ฝํ๋ฆฐ์ Google I/O 2017์์ ์๋๋ก์ด๋์ ๊ณต์ ๊ฐ๋ฐ ์ธ์ด๋ก ์ฑํ๋์๋ค. ๊ณต์ ๊ฐ๋ฐ ์ธ์ด๋ก ์ฑํ๋ ์ด์ ๋๋ ๊ณต๋ถ๋ฅผ ๋ฏธ๋ฃฐ ์ ์๊ฒ ๋์๋ค. ๋ํ ์ต๊ทผ Google I/O 2019์์ ์ฝํ๋ฆฐ์ ์ต์ฐ์ ์ผ๋ก ์ฌ์ฉํ๊ฒ ๋ค๋ โญ๏ธkotlin firstโญ๏ธ ๋ฅผ ์ธ๊ธํจ์ผ๋ก ๋ฉ์ธ ์ธ์ด๋ก์ ๋ชป ๋ฐ์๋ค.
๐ค Google I/O 2017 ์ฝํ๋ฆฐ ์๊ฐ
๐ Google I/O 2019 kotlin first
์ฝํ๋ฆฐ์ ์๋๋ก์ด๋ ์คํ๋์ค ๊ฐ๋ฐ์ฌ์ธ Jet Brains์์ 2011๋ ์ ๊ณต๊ฐํ ์ธ์ด์ด๋ค. ์ฝํ๋ฆฐ์ JVM์์ ๊ตฌ๋๋๋ ์ธ์ด๋ก ์๋ฐ์ ์ํธ์ด์ฉํ ์ ์๋๋ก ๋ง๋ค์ด์ก๋ค. ์๋ฐ๋ฅผ ์์ ํ ๋์ฒดํ ์ ์๋ ์ธ์ด๊ฐ ๋๋ ๊ฒ์ด ์ฝํ๋ฆฐ์ ์ฃผ๋ชฉ์ ์ด๋ค. ์ฝํ๋ฆฐ์ด ๊ฐ์ง๊ณ ์๋ ํน์ฑ์ ๋ค์๊ณผ ๊ฐ๋ค.
์ฝํ๋ฆฐ์ ์๋ฐ์ ๊ฐ์ด ์ ์ ํ์ ์ง์ ์ธ์ด์ด๋ค. ํ์ง๋ง ์๋ฐ์์ ์ฐจ์ด์ ์ ์ฝํ๋ฆฐ์์ ๋ณ์ ์ ์ธ ์ ๋ชจ๋ ๋ณ์์ ํ์ ์ ๋ช ์ํ ํ์๊ฐ ์๋ค๋ ๊ฒ์ด๋ค. ์ด๋ ์ฝํ๋ฆฐ ์ปดํ์ผ๋ฌ๊ฐ ๋ฌธ๋งฅ์ผ๋ก ํ์ ์ ์๋ ์ ์ถํ๊ธฐ ๋๋ฌธ์ด๋ค.
val number = 10 // -> == val number:Int = 10
์ฝํ๋ฆฐ์ ์๋ฐ์ ๊ฐ์ด ๊ฐ์ฒด ์งํฅ ์ธ์ด์ธ ๋์์ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ ์ฅ์ ์ ์ฑํํ์ฌ ์ง์ํ๋ ์ธ์ด์ด๋ค. ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ ์ฅ์ ์ ๋ค์๊ณผ ๊ฐ๋ค.
์ฝํ๋ฆฐ์ ํจ์ ํ์ ์ง์, ๋๋ค์ ์ง์, ๋ฐ์ดํฐ ํด๋์ค, ์ฝํ๋ฆฐ ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ ํ ์ ์๋๋ก ์ง์ํ๋ค. ์ถํ์ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ ๊ดํ ๊ณต๋ถ ๋ด์ฉ์ ์ ๋ฆฌํด์ ํฌ์คํ ํ ์์ ์ด๋ค.
ใ
ใ
์ฝํ๋ฆฐ์ ์๋๋ก์ด๋๋ฟ๋ง ์๋๋ผ ์๋ฒ์์๋ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค.!!
๐๐ป ์นด์นด์คํก์ ์๋ฒ์ฌ์ด๋ ์ฝํ๋ฆฐ
์ฝํ๋ฆฐ ํํ์ด์ง์ ๋ฉ์ธ์์๋ <why kotlin?> ์น์ ์์ ์๋ 4๊ฐ์ง๋ฅผ ์๊ฐํ๊ณ ์๋ค.
๊ฐ๊ฒฐํ๊ฒ ์์ฑ๋ ์ฝ๋๋ ํ์
์ด ์ฌ์ ์ ์ง๋ณด์ ํ๋ ๋ฐ์ ๋์์ ์ค๋ค. ์ฝ๋๊ฐ ๊ฐ๊ฒฐํด์ง๊ธฐ ์ํ ์กฐ๊ฑด์ผ๋ก ๊ฐ๊ฒฐํ๊ฒ ์ฝ๋๋ฅผ ์ง๋ ๊ฐ๋ฐ์์ ์ญ๋ ์ด์ธ์ ์ด๋ค ์ธ์ด๋ก ๊ทธ ์ฝ๋๋ฅผ ์์ฑํ์๋๊ฐ?
๋ ์ค์ํ ๋ถ๋ถ์ด๋ค. ํด๋น ์ธ์ด๊ฐ ๊ฐ๊ฒฐํ์ง, ์ฝ๊ฒ ํ์
๋ ์ ์๋ ๊ตฌ๋ฌธ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ก๋์ง์ง, ๋ถ๊ฐ์ ์ธ ์ค๋น์ฝ๋์ ์์ด ์ ์์ง...
์ฝํ๋ฆฐ์ ์ฝ๊ฒ ํ์ ํ ์ ์๋ ๊ตฌ๋ฌธ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ณ ์๋ฐ์์ ๊ฐ๋ฐ์๊ฐ ์ค๋นํด์ผ ํ๋ ์ฝ๋(๊ฒํฐ, ์ธํฐ, ์์ฑ์ ํ๋ผ๋ฏธํฐ๋ฅผ ์ํ ๋ก์ง ๋ฑ)๋ฅผ ๋ฌต์์ ์ผ๋ก ์ ๊ณตํจ์ผ๋ก ์ด์ ์ ์๋ฐ์ ๋น๊ตํ์ฌ ๊ฐ๊ฒฐํ๊ฒ ์ฝ๋๋ฅผ ์์ฑํ๋๋ก ํ๋ค.
์ฝํ๋ฆฐ์ ์ ๋์ ์ด์ง๋ ์์ง๋ง ์ผ๋ถ ์ ํ์ ์ค๋ฅ๋ฅผ ํ๋ก๊ทธ๋จ ์ค๊ณ ๋จ์์ ์์น์ ์ผ๋ก ๋ฐฉ์งํด ์ฃผ๋๋ก ํ๋ค. ๋๋ฌธ์ ์ ์ ๋น์ฉ์ผ๋ก ๋์ ์์ ์ฑ์ ์ถ๊ตฌํ ์ ์๋ค. ์ฝํ๋ฆฐ์ ์ผ๋จ JVM ์์์ ๋์ํ๋ ๊ฒ, ์ ์ ํ์
์ง์ ์ธ์ด๋ผ๋ ๊ฒ๋ง์ผ๋ก๋ ์์ ์ ์ธ ์ธ์ด๋ผ๊ณ ํ ์ ์๋ค. ์๋ฐ์์ ์ฐจ์ด์ ์ ์ฝํ๋ฆฐ์ ํ์
์๋ ์ถ๋ก
์ ์ง์ํ๋ค. ์ฝํ๋ฆฐ์ ํ์
์๋ ์ถ๋ก
์ ํตํด ์์ ์ฑ์ ์ฆ๊ฐ์ํค๋ ๋ฐ์ ์ ์ ๋น์ฉ์ ์๋นํ๊ฒ ๋๋ค. ๋ ์ฝํ๋ฆฐ์ ์ปดํ์ผ ์์ ์ ๋ช ๊ฐ์ง ์๋ฌ ์ ํ์ ๋ํด ๊ฒ์ฌ๋ฅผ ํ๋ค. ๊ฒ์ฌํ๋ ์๋ฌ์ ์ ํ์ ๋ค์๊ณผ ๊ฐ๋ค.
NullPointerException : ์ด๋ค ๋ณ์๊ฐ null๊ฐ์ด ๋ ์ ์๋์ง์ ๋ํ ์ฌ๋ถ๋ฅผ ํ์ํ๋ค.
val number:Int? = 10 //null๊ฐ ํ์ฉ
val number:Int = 10 //null๊ฐ ๋นํ์ฉ
ClassCaseException : ํ์ ๊ฒ์ฌ์ ์บ์คํธ๋ฅผ ํ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํด ๊ตฌํํ ์ ์๋ค.
if(value is String) print(value.toUpperCase())
is
๋ฅผ ์ฌ์ฉํ์ฌ ๋ณ์์ ํ์
๊ฒ์ฌ ํ ๋ณ์์ ํ์
์ด ํด๋น ํ์
์ด๋ฉด ๋ณ๋์ ์บ์คํธ ์์ด ํ์
ํด๋์ค์ ๋ฉค๋ฒ ๋ณ์, ๋ฉ์๋์ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค.
์์ ์ธ๊ธํ์๋ฏ์ด ์ฝํ๋ฆฐ์ ์๋ฐ๋ฅผ ๋์ฒดํ๋ ๊ฒ์ ๋ชฉ์ ์ผ๋ก ํ๋ ์ธ์ด์ด๋ค. ์ฝํ๋ฆฐ์ ํ์ฌ ์๋ฐ ์ฝ๋์ 100% ์ํธ์ด์์ด ๊ฐ๋ฅํ๋ค. ๋๋ฌธ์ ๊ธฐ์กด์ ์๋ ์๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ทธ๋๋ก ์ฌ์ฉํ ์ ์๊ฒ ๋๋ค. ์ฝํ๋ฆฐ์์๋ ๊ธฐ์กด์ ์๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ต๋ํ ํ์ฉํ๊ธฐ ๋๋ฌธ์ ์ฝํ๋ฆฐ์์ ์๋ฐAPI ํธ์ถ์ ๋ณ๋์ ๋ณํ ์์ ์ด ํ์์๋ค.
"A language needs tooling and at JetBrains, it's what we do best!"
kotlinํ๋ฉ์ด์ง์ tool-friendly์ ์๋ ๋ง์ด๋ค.
์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ์ฌ์ดํธ์์ ๋ฌธ์ ๋ฅผ ํ๋ฉด์ ์ฝํ๋ฆฐ์ ์ค์ ๋ก ์ ์ฉํ๋ฉด์ ์ฝํ๋ฆฐ์ ๋ํ ํฅ๋ฏธ๊ฐ ์ฆ๊ฐํ๊ณ ์๋ค. ์๋๋ ๊ธฐ๋ณธ์ ์ธ ์ฝํ๋ฆฐ ๋ฌธ๋ฒ์ ๋ํด์ ๊ฐ๋จํ๊ฒ ๊ธ์ ์ฐ๊ณ ํฌ์คํ
์ ๋ง๋ฌด๋ฆฌ ํ๋ ค๊ณ ํ์์ผ๋ ๋ถ๋์ด ๋๋ฌด ๊ธธ์ด ์ง๋ ๊ฒ ๊ฐ์ ๋ค์ ๊ธ๋ก ๋๋์ด ํฌ์คํ
ํ๋ ค๊ณ ํ๋ค.๐๐ป๋ถ์ง๋ฐํ ๊ธ์ฐ์.๐๐ป๊ธ ์ข ์ ์ฐ๊ณ ์ถ๋ค.
์ฌ๋ฐ๊ณ ์ฝ๊ฒ ์ค๋ช ์ ์ ์จ์ฃผ์ จ๋ค์! ์ ๋ดค์ต๋๋ค์๐