Android와 Web Application Server 개발에서 Java를 대체할 목적으로 IDE 전문 개발사인 JetBrains에서 만든 언어입니다. Java를 대체하기 위한 목적으로 개발된 언어로 언어적으로는 최신의 패러다임을 적용하여 Java의 약점을 보완하여 Java에서 사용하는 JVM에서는 호환될 수 있게 만들어졌습니다.
특징
자바와 마찬가지로 정적 타입 지정 언어입니다. 컴파일 시점에 알 수 있고 프로그램 안에서 객체의 필드나 메소드를 사용할 때마다 컴파일러가 타입을 검증해준다는 뜻입니다.
코틀린에서는 모든 변수의 타입을 프로그래머가 직접 명시할 필요가 없습니다. 대부분의 경우 코틀린 컴파일러가 문맥으로부터 변수 타입을 자동으로 유추할 수 있기 때문에 프로그래머는 타입 선언을 생략해도 됩니다.다. 컴파일러가 문맥을 고려해 변수 타입을 결정하는 이런 기능을 타입 추론이라고 부릅니다.
또 중요한 특성은 코틀린이 널이 될 수 있는 타입을 지원한다는 부분입니다. 널이 될 수 있는 타입을 지원함에 따라 컴파일시점에 NPE가 발생할 수 있는지 여부를 검사할 수 있어서 좀 더 프로그램의 신뢰성을 높일 수 있습니다.
1급 시민 함수, 고차함수, 순수함수 등을 이용하여 함수형 프로그래밍의 특징을 지원합니다. 함수형 프로그래밍은 그에 상응하는 명령형 코드에 비해 더 간결하고 가독성 있게 작성할 수 있습니다. 또 다중 스레드를 사용해도 안전하다는 사실입니다. 다중 스레드 프로그램에서는 적절한 동기화 없이 같은 데이터를 여러 스레드가 변경하는 경우 가장 많은 문제가 생깁니다. 불변 데이터 구조를 사용하고 순수 함수를 그 데이터 구조에 적용한다면 다중 스레드 환경에서 같은 데이터를 여러 스레드가 변경할 수 없습다. 따라서 복잡한 동기화를 적용하지 않아도 됩니다. 마지막으로 함수형 프로그램은 테스트하기 쉽습니다. 사이드 이펙트가 있는 함수는 그 함수를 실행할 때 필요한 전체 환경을 구성하는 준비 코드가 따로 필요하지만,순수 함수는 그런 준비 코드 없이 독립적으로 테스트할 수 있습니다.
코틀린의 빌드 과정
코틀린 컴파일러는 자바 컴파일러가 자바 소스코드를 컴파일할 때와 마찬가지로 코틀린 소스코드를 분석해서 .class 파일을 만들어 냅니다. 코틀린 컴파일러는 코틀린 런타임 라이브러리에 의존합니다. 런타임 라이브러리에는 코틀린 자체 표준 라이브러리 클래스와 코틀린에서 자바의 API 기능을 확장한 내용이 들어있습니다.
참고자료
- Kotlin In Action
'Language > Kotlin In Action' 카테고리의 다른 글
[Kotlin In Action] open, final, abstract 변경자 (0) | 2021.04.22 |
---|---|
[Kotlin In Action] 인터페이스 (0) | 2021.04.22 |
[Kotlin In Action] 가변 인자 (0) | 2021.04.22 |
[Kotlin In Action] 확장함수 (0) | 2021.04.21 |
[Kotlin In Action] 문자열 템플릿 (0) | 2021.04.13 |
댓글