요즘 코틀린으로 전환하거나 이미 사용하고 있는 기업이 많다. 코틀린의 어떤점이 좋길래??
코틀린의 주요 특성
- 대상 플랫폼 : 서버, 안드로이드 등 자바가 실행되는 모든 곳
- 코틀린 -> 자바스크립트로 컴파일이 됨 ( 브라우저, 노드에서 실행 가능 ) : kotlin-natvie-backend 개발 진행 중
- 정적 타입 지정 언어 ( statically typed )
- 자바와 다르게 타입 명시 안해도 됨. 코틀린 컴파일러가 문맥으로부터 유추하기 때문 ( type inference)
- 장점
- 성능 : 런타임에 어떤 메소드를 호출알지 알아내느 과정 필요 없음
- 신뢰성 : 컴파일러가 검증해줌
- 유지 보수성 : 처음 볼 때 타입이 있으니 보기 좋음
- 도구 지원 : 리팩토링 등 IDE에서 기능
- 코트린에 정적 타입 중 nullable type이 있음 -> null point exception 방지
- function type -> 함수형 프로그래밍이 가능
- 함수형 프로그래밍
- 핵심 개념
- first-class function : 함수를 일반 값처럼 다룰 수 있다. 함수를 변수에 저장할 수 있고, 함수를 인자로 다른 함수에 전달할 수 있으며, 함수에서 새로운 함수를 만들어서 반환할 수 있다
- immutability : 함수형 프로그래밍에서는 일단 만들어지고 나면 내부 상태가 절대로 바뀌지 않는 불변 객체를 사용해 프로그래밍 작성
- side effect 없음 : 입력이 같으면 같은 출력을 내놓고 다른 객체의 상태를 변경하지 않으며, 함수 외부나 다른 외부 환경과 상호작용하지 않는 순수 함수를 사용함
- 코틀린에서 함수형 프로그래밍을 위해 어떤걸 지원
- 함수 타입을 지원
- 람다 식 지원
- 데이터 클래스는 불변적인 값 객체를 간편하게 만들 수 있는 구문 제공
- 객체와 컬렉션을 함수형 스타일로 다룰 수 있는 API 제공
- 어떤 점이 좋을까?
- 간결성 : 더 강력한 추상화 ( abstraction )
- 다중 스레드에 안전 : 불변 데이터 구조를 사용하고 순수함수를 그 데이터 구조에 적용하기 때문
- 테스트하기 쉬움 : 다른 준비물이 필요없음
- 핵심 개념
fun findAlice() = findPerson { it.name == "Alice" }
fun findBob() = findPerson { it.name == "Bob" }
코틀린을 사용하더라도 성능 측면에서 아무 손해가 없음
- 코틀린 컴파일러가 생성한 바이트코드는 자바 코드와 똑같이 실행됨
- 코틀린의 런타임 시스템도 상당히 작기 때문에 애플리케이션 크기도 거의 그대로임
- 코틀린 표준 라이브러리 함수는 인자로 받은 람다 함수를 inlining 하기 때문에 새로운 객체가 생성되지 않으므로 GC가 늘어나서 프로그램이 자주 멈추는 일도 없음
- 코틀린 철학
- 실용성 : IDE 지원 / 프로그래밍 스타일, 패러다임 강요를 하지 않음 ( 자바, 코틀린 스타일 둘다 사용 가능 ) / 쉽게 배울 수 있음
- 간결성 : 코드가 간결해짐
- 안전성
- 상호운영성
'Kotlin' 카테고리의 다른 글
Kotlin In Effective - 8장. 컬렉션 효율적으로 사용하기 (0) | 2020.04.26 |
---|---|
Kotlin Effectvie 번역 - 2. Readability (0) | 2020.04.20 |
Kotlin in Action 11장 : DSL 만들기 (0) | 2020.04.03 |
Kotlin In Action 7장. 연산자 오버로딩과 기타 관례 (0) | 2020.04.02 |
Kotlin In Action - 5장. 람다로 프로그래밍 (0) | 2020.03.29 |