Introuduction
코틀린은 JVM 위에서 동작하며, 정적 타입 프로그래밍 언어입니다.
정적 타입 언어 : 객체 타입을 컴파일 타임에 결정하는 프로그래밍 언어로 컴파일 타임에 타입에 대한 정보가 결정되어 런타임에 메서드를 빨리 호출할 수 있으며 안정성 또한 올라갑니다.
(C ,C++, JAVA, Kotlin)
동적 타입 언어 : 타입을 런타임에 결정하는 프로그래밍 언어로 런타입까지 타입에 대한 결정을 미룰 수 있어 다양한 선택지를 가질 수 있는 이점을 가집니다.
(JavaScript, Python)
Build 과정
Kotlin의 컴파일 과정은 JVM 위에서 동작하기 때문에 Java 컴파일 과정과 유사합니다. kt 파일은 Kotlin Compiler를 통해 바이트 코드로 변환되고 Kotlin Runtime Library에 의존되어 실행합니다.
(Kotlin Runtime Library에는 Kotlin 표준 라이브러리, Java API를 확장한 내용 등이 있습니다.)
Kotlin과 Java가 함께 있을 때의 Compile 과정
-> 이로 인해서 Kotlin 코드에서 Java Annotation 프로세서로 생성되는 코드를 사용하면 문제가 발생합니다.
이유는 위 과정에서 보다시피 Kotlin은 이미 컴파일된 단게에서 Java 컴파일이 이루어지기 때문입니다.
(애노테이션 프로세서 과정에 대해 추가 글 작성 필요)