์ฝํ๋ฆฐ์ด๋?
์ฝํ๋ฆฐ์ ํน์ง
- IDE(Android Studio์ ๋ชจ์ฒด)๋ก ์ ๋ช ํ JetBrains์์ ๊ฐ๋ฐํ๊ณ ๋ณด๊ธ.
- ์ฝ๋๊ฐ ๊ฐ๊ฒฐํ๊ณ ๋ค์ฌ๋ค๋ฅํ๋ฉฐ ํธํ์ฑ์ด ๋๋ค.
- ๋ฌธ์ฅ ๋์ ์ธ๋ฏธ์ฝ๋ก ์ ์ต์ ์ด๋ค. (์ ๋ถ์ฌ๋ ๋๋ค.)
- Android Studio์์ ์๋๋ก์ด๋ ๊ณต์ ์ธ์ด๋ก ์ถ๊ฐ.
- ๋ณ์๋ Nullable(๋ ๊ฐ ์ฌ์ฉ ๊ฐ๋ฅ)๊ณผ NotNull๋ก ๋๋๋๋ฐ, ๋ณ์ ์ ์ธ ์ '?'๋ฅผ ๋ถ์ฌ Nullable๋ก ๋ง๋ค ์ ์๋ค.
- Null ๊ฐ์ด ๊ฐ๋ฅ ํ์ง, ์ ํ ์ง ์ค์ ํ ์ ์๋ ๊ฒ.
- ์์ธ ์ฒ๋ฆฌํ ํ์ ์๋ค.
์ฝํ๋ฆฐ์ ์ฉ๋(์ฌ์ฉ ๊ฐ๋ฅํ ํ๋ซํผ)
- Kotlin/JVM
- ์๋ฐ ๊ฐ์ ๋จธ์ ์์์ ๋์ํ๋ ์ฑ์ ๋ง๋ค ์ ์๋ค. → ์๋๋ก์ด๋๋ ๊ฐ๋ฅ!
- Kotlin/JS
- ์๋ฐ์คํฌ๋ฆฝํธ์ ์ํด ๋ธ๋ผ์ฐ์ ์์ ๋์ํ๋ ์ฑ์ ๋ง๋ค ์ ์๋ค.
- Kotlin/Native
- LLVM ๊ธฐ๋ฐ์ ๋ค์ดํฐ๋ธ ์ปดํ์ผ์ ์ง์ํด ์ฌ๋ฌ ํ๊น์ ์ฑ์ ๋ง๋ค ์ ์๋ค.
- ARM, x86๋ฑ ํ๋์จ์ด ์ํคํ ์ฒ์ ์๊ด์์ด ์ฌ์ฉํ ์ ์๋ค๋ ๋ป!
์ฐ๋ฆฌ๋ ์ฃผ๋ก JVM์์ ๋ง๋ค ์์ ์ด๋ค.
์ฝํ๋ฆฐ์ ์ฅ์
- ์๋ฃํ์ ๋ํ ์ค๋ฅ๋ฅผ ๋ฏธ๋ฆฌ ์ก์ ์ ์๋ ์ ์ ์ธ์ด(Statically typed)
- ์ ์ ์ธ์ด == ์ปดํ์ผ๋ฌ๊ฐ ๋ฏธ๋ฆฌ ์ค๋ฅ๋ฅผ ์ก์์ฃผ๋ ์ธ์ด
- ๋ ํฌ์ธํฐ๋ก ์ธํ ํ๋ก๊ทธ๋จ์ ์ค๋จ์ ์๋ฐฉํ ์ ์๋ค.
- NPE(Null Pointer Exception)์์ ์์ ๋กญ๋ค.
- ๋ฐ์ดํฐํ ์ ์ธ ์ ๋ ๊ฐ๋ฅํ ํ์๊ณผ ๋ถ๊ฐ๋ฅํ ํ์ ์ง์.
- ์๋ฐ์ ์๋ฒฝํ๊ฒ ์ํธ์ด์์ด ๊ฐ๋ฅํ๋ค!!๐
- ์์ฃผ ๊ฐ๊ฒฐํ๊ณ ํจ์จ์ .
- ํจ์ํ ํ๋ก๊ทธ๋๋ฐ๊ณผ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ด ๋ชจ๋ ๊ฐ๋ฅ.
- ์ธ๋ฏธ์ฝ๋ก ์ ์๋ตํ ์ ์๋ค. (๋๋ ํธํ ๊ฒ..๐ฅฐ)
๊ฐ๋ฐ ํ๊ฒฝ ์ค์น
์๋ฐ JDK
์ฝํ๋ฆฐ์ JVM์์ ์คํํ๊ธฐ ์ํด ํ์.
๊ธฐ์กด ์๋ฐ์ ์ํธ์์ฉํ ์ ์๊ณ , ์๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ด์ฉํ ์ ์๋ค.
Java๋ผ๋ ์ธ์ด๋ ๋ฌด๋ฃ์ง๋ง, ๊ทธ ์์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ฌด๋ฃ๊ฐ ์๋ ์ ์๋ค.
๐ ์ ํ ์์ด ์ฌ์ฉ ๊ฐ๋ฅํ Open JDK ๊ธฐ๋ฐ์ธ Zulu ๋ฐฐํฌํ์ ์ฌ์ฉ!
www.azul.com/downloads/azure-only/zulu/?version=java-8-lts&architecture=x86-64-bit&package=jdk
www.jetbrains.com/ko-kr/idea/download/
์์ ๋ ๋งํฌ๋ฅผ ํตํด ๊ฐ๋ฐํ๊ฒฝ์ ์ค์นํด์ค์๋ค.
(+) ํ๊ฒฝ๋ณ์ ์ค์ ์์ง ๋ง๊ธฐ!!!
ํ๋ก์ ํธ ์์ฑ
์ด ๋ถ๋ถ์ ๊ฐ์์ ๋ค๋ฆ ๋๋ค!!!!!!
Intell J๊ฐ 2020๋ ๋ฒ์ ์ผ๋ก ์ ๋ฐ์ดํธ๋์ด์ ๊ทธ๋ ์ต๋๋ค,,,๐ฆ
New Project - Java - Kotlin/JVM
Project SDK์ JAVA_HOME์ ํ๊ฒฝ๋ณ์๋ก ์ค์ ํด์คฌ๋ Zulu์ ๊ฒฝ๋ก๋ฅผ ์ถ๊ฐํด์ค๋๋ค.
JDK๊ฐ 1.8๋ก ์ ๋ณ๊ฒฝ๋๋์ง ํ์ธํ๊ณ , Project์ ์ด๋ฆ์ ์ค์ ํด์ฃผ๋ฉด ๋!
Alt + Insert: src ํด๋ ํ๋ถ์ ๊ฐ์ข ํ์ผ์ ๋ง๋ค ์ ์๋ ๋จ์ถํค.
HelloKotlin.kt ํ์ผ์ ์์ฑํด ์ค์๋ค.
์ฝํ๋ฆฐ์ ํ์ฅ์๋ kt (์..?)
๐ฏ ๊ฟํ
- main + Enter → mainํจ์ ์๋ ์์ฑ
- pln + Enter → println ์๋ ์์ฑ
fun main() { // ์คํ ์ง์
์
println("Hello Kotlin!") // ์ถ๋ ฅ๋ฌธ
}
์ฒซ ์ฝํ๋ฆฐ ํ๋ก๊ทธ๋จ ์์ฑ ์๋ฃ! ์ง์ง์ง๐๐
Settings
File-Settings-Editor-General๋ก ๋ค์ด๊ฐ์
Ctrl + ๋ง์ฐ์ค ํ ์ ์์ง์ด๋ฉด ํฐํธ ์ฌ์ด์ฆ ํฌ๊ธฐ๊ฐ ๋ฐ๋๋ ๊ฑธ ์ฒดํฌํ์. (ํธ๋ฆฌํ๋ค!)
๋จ์ถํค
- Messages: Alt + 0 (Cmd + 0)
- Project: Alt + 1 (Cmd + 1)
- Favorites: Alt + 2 (Cmd + 2)
- Run: Alt + 4 (Cmd + 4)
- Debug: Alt + 5 (Cmd + 5)
- TODO: Alt + 6 (Cmd + 6)
- Structure: Alt + 7 (Cmd + 7)
- Terminal: Alt + F12 (Option + F12)
์ฝํ๋ฆฐ main ํจ์
main ํจ์
์ฝํ๋ฆฐ์ main() ํจ์ = ์ต์์ ํจ์, ์คํ ์ง์ ์ .
Java์์๋ ํ๋ก๊ทธ๋จ์ ์คํํ๋ ค๋ฉด ์ต์ 1๊ฐ์ ํด๋์ค์ ๊ทธ ์์ main() ํจ์๊ฐ ์์ด์ผ ํ๋ค.
BUT Kotlin์ main() ๋ฉ์๋๊ฐ JVM์์์ ์คํ๋ ๋ ์๋์ผ๋ก ํด๋์ค๊ฐ ์์ฑ๋๋ค.
Tools - Kotlin - Show Kotlin ByteCode - Decomplie์ ์คํ.
๋๋ฌด๋ ๋ฐ๊ฐ๊ณ ์ต์ํ!!!!! Java์ฝ๋๊ฐ ๋ณด์ธ๋ค.๐
์ด๋ ๊ฒ ๋ณํ๋ผ์ ๋์๋๋๊ตฌ๋! ๋ฅผ ์ ์ ์๋ค.
๊ทธ๋ฆฌ๊ณ ์์ผ ์ฝํ๋ฆฐ์ด ์์ฒญ ๊ฐ๊ฒฐํ ์ฝ๋์ธ ๊ฒ์ ๊นจ๋ซ๋๋ค.
maina ํจ์
ํ๋ก๊ทธ๋จ ์ธ๋ถ์์ ์ธ์๋ฅผ ๋ฐ์๋ค์ด๋ main ํจ์.
fun main(args: Array<String>) {
println(args[0])
println(args[1])
println(args[2])
println(args[3])
}
์ด ์ฝ๋๋ฅผ ์คํ์์ผ๋ณด์.
๐ฏ ๊ฟํ
Crtl + D: ์ค ๋ณต์ฌ
Edit Configurations๋ก ใฑใฑ
Program arguments์ ์ธ์ 4๊ฐ๋ฅผ ๋ฃ์ด์ค.
fun main(args: Array<String>) {
println("args[0] = ${args[0]}")
}
๋ฌธ์์ด ๋ด ๋ณ์๋ฅผ ํํํ๊ธฐ ์ํด์๋ ${์} ๊ณผ ๊ฐ์ด ํํ.
์ถ์ฒ
๋ณธ ํฌ์คํ ์ ๋ถ์คํธ์ฝ์ค ์ํฌํฐ์ฆ 3๊ธฐ ํ๋์ผ๋ก์
'์ฝํ๋ฆฐ ํ๋ก๊ทธ๋๋ฐ ๊ธฐ๋ณธ 1' ๊ฐ์๋ฅผ ๋ฃ๊ณ ์์ฑํ์์ต๋๋ค.
'๋์ธ ํ๋ > ๋ถ์คํธ์ฝ์ค ์ํฌํฐ์ฆ 3๊ธฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ถ์คํธ์ฝ์ค] 03. ์ฝํ๋ฆฐ null ์ฒ๋ฆฌ, ์๋ฃํ ๋ณํ (0) | 2021.02.20 |
---|---|
[๋ถ์คํธ์ฝ์ค] 02. ์ฝํ๋ฆฐ ๋ณ์์ ์๋ฃํ (0) | 2021.02.15 |
[๋ถ์คํธ์ฝ์ค] 00. ๋ถ์คํธ์ฝ์ค ์๊ฐ, ์ฝํ๋ฆฐ ํ๋ก๊ทธ๋๋ฐ (2) | 2021.01.13 |