실용성
- 자바의 코드 스타일을 동일하게 이용 할 수 있지만, 코틀린언어의 특성을 잘 활용하여 간결하고, 문제를 해결하기 위해 만들어진 실용적인 언어다.
- 젯브레인사의 IntelliJ IDE를 이용하면 간결한 구조로 바꿀 수 있는 코드 패턴을 자동적으로 감지해서 수정을 제시 한다. 이를 통해 코틀린 언어의 특성을 이해할 수 있다.
간결성
- 코틀린은 자바에 비해 코드가 간결하다.
- getter,setter, 생성자 파라미터를 필드에 대입하기 위한 로직을 묵시적으로 제공한다.(data class)
- 자바에서는 컬렉션에서 원소를 찾는 함수를 명시적으로 작성해야만 하는 코드의 양이 상당하지만 코틀린의 컬렉션 라이브러리 함수로 대처 할 수 있다.(collection function)
- 람다를 지원하기 때문에 작은 코드 블록을 라이브러리 함수에 쉽게 전달 할 수 있다.
안전성
- 코틀린은 jvm에서 실행되는 정적 타입 언어이며, 타입 안전성을 보장한다.
jvm은
메모리 안전성을 보장한다.
버퍼 오버플로우를 방지한다.
동적으로 할당한 메모리를 잘못 사용함으로써 인해 생길 수 있는 문제를 예방 할 수 있다.
- 코틀린의 타입 시스템은 null이 될 수 없는 추적하며, NullPointerExeception 발생 할 수있는 연산을 사용하는 코드를 금지한다.
? 선언으로 nullable이 가능함
val s:String?=null //널이 가능
val s2:String ="" //널이 불가능
- ClassCast으로 ClassCastException을 방지해주며, 타입 검사와 캐스트를 한 연산자에 의해 이뤄진다.
if(value is String)
println(value.toUpperCase)
상호운용성
- 코틀린은 기존 자바의 라이브러리, 메소드 호출, 상속, 인터페이스, 어노테이션 등을 모든걸 이용 할 수 있다.