[Kotlin] Kotlin Native
Kotlin Native๋ Kotlin์ ๋ฐ๋ก ์คํ ๊ฐ๋ฅํ ๋ฐ์ด๋๋ฆฌ๋ก ์ปดํ์ผํ ์ ์๊ฒ ํด์ฃผ๋ ํด์ฒด์ธ์ด๋ค.
Kotlin ๊ณต์ ๊ทธ๋ฃน์์ ํจ๊ป ์ ๊ณตํ๋ ์คํผ์
๋๊ตฌ๋ค.
์ด๊ฑธ ์ฌ์ฉํ๋ฉด ์ฝํ๋ฆฐ ์ฝ๋๋ฅผ JVM์ ์ฌ์ฉํ์ง ์๋ ๋ ๋ฆฝ์ ์ธ ์คํ ํ์ผ๋ก ์ปดํ์ผํ ์ ์๋ค.
์ค์น
Arch๋ฅผ ์ด๋ค๋ฉด yay๋ฅผ ํตํด์ ๊ฐํธํ๊ฒ ์ค์นํ ์ ์๋ค.
yay -S kotlin-native-bin
๊ทธ๊ฒ ์๋๋ผ๋ฉด ์ฝํ๋ฆฐ ๋ฆด๋ฆฌ์ฆ ํ์ด์ง์์ ์ง์ ๋ฐ์๋ค๊ฐ ํ์ด์ฐ๋ฉด ๋๋ค.
https://github.com/JetBrains/kotlin/releases/tag/v2.2.21
์ ์์ ์ผ๋ก ์ค์น๊ฐ ๋์๋ค๋ฉด, ๋ค์๊ณผ ๊ฐ์ด ์ ์ฉ ๋ช ๋ น ๋๊ตฌ๋ฅผ ์ธ ์ ์์ด์ผ ํ๋ค.
์ด๊ฒ ๋ค์ดํฐ๋ธ ์ปดํ์ผ๋ฌ๋ค.
์ปดํ์ผํด๋ณด๊ธฐ
์ฝํ๋ฆฐ ์ฝ๋๋ฅผ ๋ค์ดํฐ๋ธ ์คํํ์ผ๋ก ์ปดํ์ผํด๋ณด์.
๋ค์๊ณผ ๊ฐ์ ๊ฐ๋จํ ์ฝ๋๊ฐ ์๋ค๊ณ ๊ฐ์ ํด๋ณด๊ฒ ๋ค.

๊ทธ๋ฌ๋ฉด, ์๋๋ ์ฝํ๋ฆฐ ์ปดํ์ผ๋ฌ๋ฅผ ํตํด ์๋ฐ ๋ฐ์ดํธ์ฝ๋๋ก ์ปดํ์ผํ๊ณ , java๋ก ์คํํ๋ ๊ฒ์ด ๊ธฐ๋ณธ์ ์ธ ์ฌ์ฉ ๋ฐฉ๋ฒ์ด๋ค.
kotlinc Main.kt -include-runtime -d Main.jar
java -jar Main
๋น์ฐํ๋ค. ์ฝํ๋ฆฐ์ ์ถ๋ ฅ์ JVM์ ์์กด์ ์ด๊ธฐ ๋๋ฌธ์ด๋ค.
ํ์ง๋ง kotlinc-native๋ฅผ ์ฌ์ฉํ๋ฉด JVM๊ณผ ๋ณ๊ฐ์ ์คํํ์ผ์ ๋ง๋ค ์ ์๋ค.
์ฌ์ฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ๋ค.
kotlinc-native ./Main.kt -o main

๊ทธ๋ผ ์ฒ์์๋ ๊ฑฐ์ฐฝํ๊ฒ ๋ญ ๋ฐ์ผ๋ฉด์ ์ปดํ์ผ์ ํ๋ค.
๊ทธ๋์ ์ต์ด ์ปดํ์ผ์ ์๋นํ ์ค๋ ๊ฑธ๋ฆฌ๋ ํธ์ด๋ค.
๊ทธ๋ฌ๊ณ ๋๋ฉด
.kexe๋ผ๋ ํ์์ผ๋ก ์คํํ์ผ์ด ์๊ธด๋ค. ๊ทธ๋ฅ ์คํํ๋ฉด ๋๋ค.
๋์ด๋ค.
ํ๊ณ
Kotlin Native์ ๊ฐ์ฅ ํฐ ๋ฌธ์ ๋ java ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ตฌ์ฑ์์๋ค์ ์์ ํ ์ฌ์ฉํ ์ ์๋ค๋ ๊ฒ์ด๋ค.
์ฝ๋์ Java ์ข
์์ ์ธ ๋ถ๋ถ์ด ํ๋๋ผ๋ ์๋ค๋ฉด ๋ฌด์กฐ๊ฑด ์ปดํ์ผ์ ์คํจํ๋ค.


๋ด๊ฐ ๋ณผ๋ Kotlin Native๋ฅผ ์๋ฌด๋ ์ฐ์ง ์๋ ์ด์ ๋ ์ด๊ฒ ๋๋ฌธ์ด๋ค.
์ ์ด์ ์ฝํ๋ฆฐ์ ์ฐ๋ ๊ฐ์ฅ ํฐ ์ด์ ๊ฐ Java ํ๊ฒฝ์ ๊ทธ๋๋ก ์ธ ์ ์๋ค๋ ๊ฑด๋ฐ, ๊ทธ๊ฑธ ์๋ผ๋ด๋ฉด ๋๊ฐ ์ฐ๋...
๊ทธ๋์ ๋๋ถ๋ถ์ ์ํฉ์์ ํ์ค์ ์ธ ๋์์ GraalVM์ผ ๊ฒ์ด๋ค. ์ด์ฐจํผ ์ฝํ๋ฆฐ๋ jar ํ์ผ์ ๋ฝ์ผ๋๊น, graalvm์ ๊ทธ๊ฑธ ์ง์ด๋ฃ์ผ๋ฉด AOT ์ปดํ์ผ์ด ๋๋ค. ์ฌ์ค ์์ํธํ์ธ ์ ์ด๋ค...
native-image -jar ./Main.jar -o ./main
https://blog.naver.com/sssang97/224104258144
์ฑ๋ฅ ์์ค
๊ทธ๋ฆฌ๊ณ ๋ด๊ฐ ๋ฒค์น๋งํฌ ์ข ๋๋ ค๋ณด๋๊น, JVM์ผ๋ก ๋๋ฆฌ๋ ๊ฒ๋ณด๋ค ํ์ ํ๊ฒ ๋๋ฆฌ๋ค.
Java๋ฅผ GraalVM์ผ๋ก ์ปดํ์ผํด๋ ์ฑ๋ฅ ์ ํ๊ฐ ์ข ๋ณด์ด๋๋ฐ, ์ด๊ฑด ๊ทธ๊ฑฐ๋ณด๋ค ๋ ์ฌํ๋ค.
JIT์ ๋ ๋์ ๊ทธ๋ฅ ์ต์ ํ๋ฅผ ๋ชปํ๋ ๊ฒ ๊ฐ๋ค.