null 을 처리하는 방법이 다릅니다.kotlin은 nullable 하지 않습니다. null pointer exception을 피하기 위해 기본적으로는 nul 을 지원하지 않도록 설계되었습니다. 따라서 코틀린에서는 엘비스연산자, 세이프콜, 낫널어설션과 같은 널값을 관리하는 여러 도구들을 제공합니다. 컴파일 시점에서 널체크를 진행합니다.
특정 타입, 클래스에 대해서 내부가 아니라 외부에서 해당 클래스에 대한 확장함수를 선언할 수 있습니다.
세미콜론을 작성하지 않아도 되며 자바필드의 게터와 세터등을 자동으로 구현합니다.
스마트 캐스트를 지원합니다.
람다식과 인라인함수를 통해 퍼포먼스가 뛰어납니다.
기존의 Java8에도 람다식을 제공하였지만 코틀린에서는 인라인 한정자를 이용해 람다를 함수 인자로 건낼 때 퍼포먼스를 더 효율적으로 제공할 수 있습니다.
data dto를 생성할 필요 없이 코틀린의 데이터클래스는 equals, hashcode, tostring과 같은 함수를 자동으로 생성해줍니다.