반응형
자바가 사용 중인 곳이라면 거의 대부분 코틀린을 활용할 수 있다.
코틀린 맛보기
data class Person(val name:String, val age: Int? = null)
// name과 age라는 프로퍼티(property)가 들어간 간단한 데이터 클래스(data class) 정의
fun main(args: Array<String>) {
val persons = listOf(Person("성현1"), Person("성현2", age=31))
val oldest = persons.maxBy{ it.age ?: 0}
// it 이라는 이름을 사용하면 람다 식의 유일한 인자 사용 가능
// 엘비스 연산자라고 불리는 ?: 는 age가 null인 경우 0을 반환하고, 그렇지 않은 경우 age를 반환
println("나이가 가장 많은 사람: $oldest")
}
코틀린 주요 특성
코틀린을 통해 어떤 종류의 애플리케이션을 만들 수 있을까?
대상 플랫폼: 서버, 안드로이드 등 자바가 실행되는 모든 곳
코틀린을 활용할 수 있는 가장 일반적인 영역
- 서버상의 코드(특히 웹 애플리케이션의 백엔드)
- 안드로이드 디바이스에서 실행되는 모바일 애플리케이션
인텔의 멀티OS 엔진(Multi-OS Enginge)을 사용하면 코틀린을 iOS 디바이스에서 실행 가능
자바스크립트로도 코틀린을 컴파일 할 수 있기 때문에 브라우저나 노드에서 실행 가능
정적 타입 지정 언어
자바와 마찬가지로 코틀린도 정적 타입(statically typed) 지정 언어이다.
정적 타입 지정 언어
- 모든 프로그램 구성 요소의 타입을 컴파일 시점에 알 수 있고 프로그램 안에서 객체의 필드나 메소드를 사용할 때마다 컴파일러가 타입을 검증
동적 타입 지정 언어(JVM에서 Grooby나 JRuby)
- 타입과 관계없이 모든 값을 변수에 넣을 수 있고, 메소드나 필드 접근에 대한 검증이 실행 시점에 일어나며, 그에 따라 코드가 더 짧아지고 데이터 구조를 유연하게 생성하고 사용할 수 있음
- 오타 등의 실수도 컴파일 시 걸러내지 못하고 실행 시점에 오류가 발생
그러나..! 코틀린은 자바와 달리 모든 변수의 타입을 개발자가 직접 명시할 필요가 없음
코틀린 컴파일러가 문맥으로 변수 타입을 자동으로 유추할 수 있기 때문에 타입 선언을 생략해도 된다.
var x = 1
코틀린은 Int임을 자동으로 알아낸다. ⇒ 타입 추론(type inference)
자바와 비교해서 새로운점
- 널이 될 수 있는 타입(nullable type) 지원 : 컴파일 시점에 NPE가 발생할 수 있는지 여부를 검사할 수 있어 신뢰성을 높일 수 있음
- 함수 타입(function type)에 대한 지원
코틀린 코드 컴파일
ktlinc <소스파일 또는 디렉터리> -include-runtime -d <jar 이름>
java -jar <jar 이름>
코틀린 컴파일러로 컴파일한 코드는 코틀린 런타임 라이브러리에 의존한다. 런타임 라이브러리에는 코틀린 자체 표준 라이브러리 클래스와 코틀린에서 자바 API의 기능을 확장한 내용도 있다. 코틀린으로 컴파일한 애플리케이션을 배포할때는 런타임 라이브러리도 함께 배포해야 한다.
- Kotlin IN ACTION
반응형
'프로그래밍 노트 > Kotlin' 카테고리의 다른 글
[Kotlin] 코틀린(Kotlin)에서 컬렉션 만들기 (0) | 2020.11.14 |
---|---|
[Kotlin] 코틀린(Kotlin) while과 for 루프 (0) | 2020.11.09 |
[Kotlin] 코틀린(Kotlin) enum과 when (0) | 2020.11.09 |
[Kotlin] 코틀린(Kotlin) 클래스와 프로퍼티 (0) | 2020.11.09 |
[Kotlin] 코틀린(Kotlin) 기본요소 (함수와 변수) (0) | 2020.11.07 |