신규 블로그를 만들었습니다!

2020년 이후부터는 아래 블로그에서 활동합니다.

댓글로 질문 주셔도 확인하기 어려울 수 있습니다.

>> https://bluemiv.tistory.com/

코틀린은 자바 플랫폼에서 돌아가는 새로운 프로그래밍 언어입니다.

 

간결하고, 실용적이며 자바와의 상호운용성(interoperability)을 중시하는 언어입니다. 현재 자바가 사용되는 곳이라면 거의 대부분 코틀린을 사용할 수 있습니다. 대표적으로 서버 개발, 안드로이드 앱 개발이 있습니다.

 

코틀린 맛보기용 코드

// 추후에 설명하겠지만, Kotlin은 '?'를 통해서 null을 사용할 수 있는 파라미터라고 정의한다.
data class Person(val name: String, val age: Int? = null)

// Main 함수
fun main(args: Array<String>){
    val persons = listOf(Person("John"), Person("Hongku", age=27))
    val oldest = persons.maxBy { it.age ?:0 }
    
    println("Oldest : $oldest") // $를 이용해서 문자열 안에서 변수값을 가져올 수 있다.
}
​

참고로 코틀린은 세미콜론(;)을 사용하지 않습니다.

2번째 줄 : 코틀린은 이름과 나이가 들어간 클래스를 data class를 간편하게 정의를 할 수 있습니다.

6번째 줄 : 사람에 대한 정보를 입력하여 persons라는 리스트로 저장하고 있습니다.

7번째 줄 : 가장 나이가 많은 사람을 알기 위해, maxBy라는 함수를 사용합니다. 그리고 엘비스 연산자(Elvis operator) ?:0를 이용하여, age가 null인 경우에는 0을 반환하고, null이 아닌 경우에는 age의 값을 반환합니다.

9번째 줄 : JAVA(System.out.println())와는 다르게, println()를 이용하여 콘솔출력이 가능합니다.

 

자세한 설명은 없지만, 위 맛보기 용 예제를 살펴보면 코틀린의 스타일을 살펴볼 수 있습니다. 간결하고, 실용적으로 사용할 수 있도록 만들어져있다는 것을 볼 수 있습니다.

 

 

코틀린의 특성

기존 JAVA를 사용하던 곳에서 코틀린을 사용하면, 더 적은 코드로 더 편하게 프로그래밍을 할 수 있습니다.

그리고, 자바뿐 아니라 자바 스크립트로도 코틀린을 컴파일 할 수 있습니다. 그래서 코틀린 코드를 웹 브라우저나 노드에서 실행 할 수 있습니다.

 

정적 타입 지정 언어

코틀린은 정적 타입(Statically typed) 지정 언어입니다. 정적 타입 지정이라는 말은 프로그램의 모든 구성 요소의 타입이 컴파일 되는 시점에 알 수 있고, 컴파일러가 타입을 검증해준다는 뜻입니다. (동적 타입 지정 언어에는 JVM에서는 Groovy, JRuby가 있습니다. 유연하게 개발을 할 수 있지만, 실수로 인한 오류가 잦습니다.)

 

자바와 달리 코틀린에서는 변수 타입을 프로그래머가 직접 명시를 해줄 필요가 없습니다. 코틀린 컴파일러는 문맥으로부터 변수 타입을 자동으로 유추 할 수 있습니다. 예를들어, "var x = 1"과 같은 코드가 있을때 Int라는 타입을 지정해주지 않았지만, 코틀린 컴파일러는 정수 값으로 변수를 초기화합니다. 이런 기능을 타입 추론(type inference)라고 합니다. 그렇기 때문에 타입을 직접 선언해줘야 하는 불편함이 사라집니다.

 

정적 타입 지정의 장점을 정리하자면,

  • 실행 시점에 어떤 메소드를 호출할지 알아내는 과정이 없어서 메소드 호출이 빠릅니다.

  • 컴파일러가 정확성(Correctness)을 검증하기 때문에 오류가 생길 확률이 줄어듭니다.

  • 코드에서 다루는 객체가 어떤 타입인지 알 수 있어서 코드를 볼때 편합니다.

 

코틀린을 보면 타입이 클래스, 인터페이스, 제너릭스 등 자바와 비슷한 부분이 많습니다. 차이점이 있다면 코틀린에는 nullable type이라는 타입이 존재합니다. 널이 될 수 있는 타입이라고 생각하면 됩니다. 이 타입을 이용해서 컴파일 시점에 널 포인트 예외(null pointer exception)가 발생할 수 있는지 여부를 검증 할 수 있습니다. (이 말은 if문을 이용하여 특정한 변수가 null을 가지는 경우에 대한 처리를 따로 하지 않아도 된다는 것입니다.)

 

본 글은 Dmitry Jemerov, Svetlana Isakova의 "Kotlin in action" 책을 참고하여 작성한 글입니다.

 

 

다른 글

2019/02/04 - [Language/Kotlin] - 코틀린의 메소드 사용방법(Kotlin)

 

코틀린의 메소드 사용방법(Kotlin)

코틀린에서 메소드를 만드는 방법을 알아보고, 반환값이 있는 메소드 생성하는 법과 반환값이 없는 메소드 생성하는 법을 살펴본다. 그리고, 자바와 달리 코틀린에서만 사용가능한 메소드 정의 법(식이 문장인 메..

hongku.tistory.com

 

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기