2011년 IntelliJ IDE를 개발한 JetBrains에서 개발
JVM(Java Virtual Machine)을 기반으로 동작하며, JVM 설치를 필요로 한다.
Modern Language를 지향한다.
Kotlin 코드의 확장자는 [KotlinClassName].kt
or [KotlinFileName].kt
이다.
Statically Typed Language
는 직역하면 정적 타입 언어
를 의미한다.
그래서 무슨 뜻인가 ? Kotlin이 왜 정적 타입 언어
인가 ?
Kotlin은
Compile 시점
에서 variable, field, method, function return type 등을 식별해준다.
val value1 = 5 // [Compile 시점]에 Int 타입을 추론하여 value1에 대입.
val value2 = 9.9 // [Compile 시점]에 Double 타입을 추론하여 value2에 대입.
위와 같이 Kotlin 언어의 특징은 Type Inference
를 Compile 시점
에 지원한다는 것이다. 이런 점이 Modern Language의 특징이 된다.
Compile 시점에 Type Inference(타입 추론)를 지원하는 다른 Modern Language
Dynamically Typed Language
는 동적 타입 언어
를 의미한다.
그렇다면, 동적 타입 언어
는 무엇일까 ? 어떤 특징을 가지고 있을까 ?
동적 타입 언어
의 주된 특징은 위와 같이 정적 타입 언어
처럼 Compile 시점에서 Type 추론을 지원하지 않는다.
Compile
시점이 아닌 Runtime
시에 Type 추론을 지원하며, 타입이 확정된다.
Runtime
이란, 프로그램이 실행되는 시점
을 말한다.
Runtime 시점에 Type Inference를 지원하는 다른 Language
Performance, Correctness, Refactoring
Performance - Compile 시점
에 Type 들이 결정되므로 Runtime 시에 따로 체크할 필요가 없어 동적 타입 언어보다 성능이 좋다.
Correctness - Compile 시점
에 프로그램의 정확성을 검증하므로 실행 시 오류, 중단의 가능성을 줄일 수 있다.
Refactoring - 정적 타입 언어는 IDE 에서 리팩토링을 지원
하므로, 안전한 코드완성 기능을 제공하여 생산성을 향상시킬 수 있다.
val value : String? = null
다음 코드처럼, Type 뒤에 ?
를 통해 value
는 Nullable Type 변수이며, null 값이 들어갈 수 있다.
Java 코드로 프로젝트를 진행하였을 때, NullPointerException
을 주로 마주치게 되는데, 이러한 Runtime
시에 발생하는 NullPointerException
에러를 Kotlin에서는 처리할 수 있으며, 개발이 안정화된다.
val intMaxValue = Int.MAX_VALUE // Int 타입의 최대 값
//Byte타입의 최대값을 초과하여 error 발생
val byteMax : Byte = Byte.MAX_VALUE + 1 - - -> // Byte Type 생략 시 Int로 자동변경
//Short타입의 최소값
val shortRange:Short = -32768
val shortMinValue = Short.MIN_VALUE
println("intMaxValue= $intMaxValue")
println("shortRange= $shortRange,shortMinValue= $shortMinValue")
연산에 참여가능한 기본 타입들은 Number클래스를 부모로 갖음
Int + Long 연산은 큰 타입으로 자동 변환 → Long = Int + Long
overflow가 발생하지 않도록 조심 ( 값이 Type의 Range를 벗어나지 않도록 하자. )
문자열로 변경 시 : XXX.toString() --> 33.toString()
다른 기본타입으로 변경 시 : XXX.toXXX --> 33.toFloat()
Kotlin for ServerSide : Kotlin에서 서버 개발에 사용되는 여러 Framework 지원. 대표적으로 Spring
Kotlin for Android : Android 개발 시, Kotlin 언어를 사용하여 개발이 가능하다.
Kotlin for JavaScript : JavaScript 코드를 Kotlin으로 개발 가능.
Kotlin Native : iOS, macOS, watchOS, tvOS, Android, Windows, Linux, WebAssembly 등 여러 Platform에서 사용할 수 있는 코드 작성이 가능.
Kotlin for DataScience : 데이터 엔지니어링, 분석, 머신 러닝, 시각화 등을 Kotlin 언어에서 제공, 데이터 분석 도구인 Jupyter & Apache Zepplin 등을 지원, DataScience를 위한 다양한 Library, Tool을 제공.
본격적으로, Kotlin 언어에 대해서 공부를 시작해보자. 어떤 IDE를 사용하면 좋을 지, 어떤 IDE에서 Kotlin을 지원하는 지 알아보자.
Kotlin Play Ground - https://play.kotlinlang.org/ 주소로 이동하여 Web 상에서 Kotlin 코드를 작성하여 실행할 수 있다.
Kotlin REPL(Read-Eval-Print Loop)
Eclipse ( Kotlin Plug-In 설치가 필요하다. )
IntelliJ IDEA - JetBrains사에서 개발한 IDE 이다. Kotlin 또한 JetBrains사에서 개발하였으므로 이 IDE를 적극 추천한다.
설치 주소 : IntelliJ IDEA
필자는 앞으로 Kotlin 언어 및 Coroutine 등 여러 실습에 IntelliJ 를 사용할 예정이다.
학생 계정이 있다면 매 1년마다 Ultimate
버전을 무료로 사용할 수 있다.