코틀린이란?
2011년 JetBrains사가 공개한 프로그래밍 언어로 JVM에서 동작한다
간결하고 실용적이며 자바 코드와의 상호운영성을 중시한 언어라고 한다.
구글에서 코틀린을 자바에 이어 안드로이드 공식언어로 선언했다고 한다.
- 호환성과 성능
- 코틀린은 JDK 6과 완벽하게 호환가능하다
- 구형 안드로이드 기기 지원이 된다는 점은 코틀린을 사용하는 하나의 장점이라고 할 수 있다.
- 안드로이드 스튜디오에서 지원이 되는 언어이기 때문에 안드로이드의 빌드 시스템과도 완벽히 호환된다.
- 자바 만큼 빠르다는 이야기가 많다.
주요 특성
- 대상 플랫폼
코틀린의 주 목적은 현재 자바가 사용되고 있는 모든 용도에 적합하면서도 더 간결하고 생산적이며 안전한 대체 언어를 제공하는 것이다.- 서버상의 코드 - 웹 애플리케이션의 백엔드
- 안드로이드 디바이스에서 실행되는 모바일 애플리케이션
- 타입
- 정적 타입 지정 언어
정적 타입 지정 언어 란? 모든 프로그래밍 구성 요소의 타입을 컴파일 시점에 알 수 있고 프로그램 안에서 객체의 필드나 메소드를 사용할 때마다 컴파일러가 타입을 검증해 준다.
- 성능
실행 시점에 어떤 메소드를 호출할지 알아내는 과정이 필요 없으므로 메소드 호출이 더 빠르다(나중에 사용해봐야 성능을 좋은지 알 수 있을거 같다) - 신뢰성
컴파일러가 프로그램의 정확성을 검증한다.
따라서 프로그램이 오류로 중단될 가능성이 더 적어진다 - 유지 보수성
코드에서 다루는 객체가 어떤 타입에 속하는지 알 수 있다.
그래서 처음보는 코드를 다룰 때도 더 쉽게 다룰 수 있다. - 도구 지원
도구는 더 정확한 코드 완성 기능을 제공할 수 있으며 IDE의 다른 지원 기능도 동적 타입 지정언어에 비해 더 잘 만들 수 있다.
- 성능
- 타입 추론
자바와는 다르게 코틀린에서는 모든 변수의 타입을 직접 명시할 필요가 없다.
대부분의 경우 코틀린 컴파일러가 문맥으로부터 변수 타입을 자동으로 유추할 수 있기 때문에 타입 선언을 생략해도 된다. - 널이 될 수 있는 타입
코틀린은 null이 될 수 있는 타입을 지우너함에 따라 텀파일 시점에 null pointer exception이 발생 할 수 있는지 여부를 검사할 수 있어서 좀 더 프로그램의 신뢰성을 높일 수 있다.
- 정적 타입 지정 언어
- 함수형 프로그래밍
- 핵심 개념
- 일급객체인 함수
함수를 일반 값처럼 다룰 수 있다.
함수를 변수에 저장할 수 있고 함수를 인자로 다른 함수에 전달할 수 있으며 함수에서 새로운 함수를 만들어서 반환할 수 있다. - 불변성
함수형 프로그래밍에서는 일단 만들어지고 나면 내부 상태가 절대로 바뀌지 않는 불변 객체를 사용해 프로그램을 작성한다. - 부수 효과 없음
함수형 프로그래밍에서는 입력이 같으면 항상 같은 출력을 내놓고 다른 객체의 상태를 변경하지 않으며, 함수 외부나 다른 바깥 환경과 상호작용하지 않는 순수함수를 사용한다.
- 일급객체인 함수
- 이점
- 간결성
명령형 코드에 비해 더 간결하다.
순수 함수를 값처럼 활용할 수 있으면 더 강력한 추상화 할수 있고 강력한 추상화를 사용해 코드 중복을 막을 수 있다. - Thread Safe
불변 데이터 구조를 사용하고 순수 함수를 데이터 구조에 적용한다면 다중 스레드 환경에서 같은 데이터를 여러 스레드가 변경 할 수 없다. - 테스트 용이
side effect 가 있는 함수는 그 함수를 실행 하기 위해 필요한 환경을 구성하는 준비 코드가 필요하지만 순수함수는 준비 코드 없이 독립적인 테스트가 가능하다.
- 간결성
- 핵심 개념
코틀린이 빌드되는 과정
JVM에서 동작하는 부분때문에 JAVA 컴파일 과정과 비슷하다.
다른 부분은 코틀린은 kotlin compiler를 통해 바이트 코드로 변환 되는데 이 코드는 kotlin runtime library에 의존되어 실행된다.
kotlin runtime library에는 코틀린 자체 표준 라이브러리, JAVA API를 확장한 내용 등이 있다.
이는 Gradle, Maven과 같은 빌드 도구가 Application 으로 패키징할 때 알아서 kotlin runtime library를 포함 시키게 된다.
위의 사진은 JAVA와 Kotlin이 함께 있을 때 컴파일 되는 과정을 나타낸 것이다.
1. Kotlin 컴파일러가 Kotlin 코드를 컴파일해서 바이트 코드(.class)를 생성한다. → 이때 Kotlin 코드가 참조하는 JAVA 코드도 함께 로딩되어 사용된다.
2. JAVA 컴파일러가 JAVA코드를 컴파일해서 바이트 코드(.class)를 생성한다. → 이때 컴파일된 Kotlin의 바이트 코드(.class)의 경로를 class path에 추가해 컴파일한다.
※ 아직 코틀린을 사용해 보지 않아 코틀린이 무엇인지 알아보고자 글을 작성했으며, 사용해 보고 난 뒤 추가 글을 작성할 예정.
참고한 사이트
코틀린언어 기본개념 총정리 (스압주의)
깊은 내용은 다루지 않습니다. 빠르게 하나의 페이지에서 필요한 개념만 찾아보기 위해 굉장히 길게 요약했습니다. 깊은 내용들은 책을 찾아보고 파악해야 합니다. (관리 및 유지보수가 되지 않
velog.io
Kotlin이란 무엇이며 왜 필요한가?
코틀린(Kotlin)이란? 코틀린( Kotlin )은 2011년 7월 JetBrains사가 공개한 JVM에서 동작하는 프로그래밍 언어로서, 간결하고 실용적이며 자바코드와의 상호운용성( interoperability )를 중시한 언어이다. 주
velog.io
[Kotlin] Kotlin의 컴파일 과정 & Kotlin VS JAVA (Annotation Processor)
이 글은 코틀린을 이미 어느정도 아시는 분들을 위한 포스팅입니다. 코틀린을 모르시는 분들에게는 다소 불친절할 수 있으니 양해부탁드립니다. 다들 이미 아시겠지만 코틀린은 JVM위에서 동작
mhwan.tistory.com
'스터디일지' 카테고리의 다른 글
[HTML] 기본 익히기 PART 1 (0) | 2024.03.11 |
---|---|
[Error] LinkageError가 발생했습니다. (0) | 2024.03.01 |
CS 면접 질문 대비 31번 ~ 40번 (0) | 2023.11.17 |
CS 면접 질문 대비 21번 ~ 30번 (1) | 2023.10.25 |
CS 면접 질문 대비 11번 ~ 20번 (0) | 2023.10.24 |