코틀린 주요 특성
- 정적 타입 지정 언어
- 자바와 마찬가지로 코틀린도 정적 타입 (statically typed) 지정 언어
- 모든 프로그램 구성요소의 타입을 컴파일 시점에 알 수 있음
- 객체의 필드나 메서드를 사용할때 마다 컴파일러가 타입을 검증해줌
- +) 대표적인 동적타입 지정언어로는 그루비나 JRuby가 있음
- 자바와 달리 코틀린에서는 모든 변수의 타입을 프로그래머가 명시할 필요가 없음.
- 대부분의 경우 코틀린 커파일러가 문맥으로부터 변수 타입을 자동으로 유추할 수 있기 떄문
- 이런 기능을 타입 추론 (type inference)라고 부름
- 정적 타입의 장점
- 성능 : 실행시점에 어떤 메서드를 호출할지 알아내는 과정이 필요 없으므로 메소드 호출이 더 빠름
- 신뢰성 : 컴파일러가 프로그램의 정확성을 검증하기 떄문에 프로그램 오류로 중단될 가성 작음
- 유지보수성 : 객체의 타입을 알수 있어서 처음보는 코드를 다룰때도 쉬움
- 도구지원 : 정적 타입 지정을 활용하면 더 안전히 리팩토링 할 수 있음
- type system에서 자바와 다른 새로운 점
- 코틀린은 널이 될 수 있는 타입(nullable type)을 지원함
- 컴파일 시점에 null pointer exception 여부를 검사할 수 있어 신뢰성이 상승함 (6장에 추가 설명)
- 함수 타입 (function type)에 대한 지원
- 함수형 프로그래밍 과 객체지향 프로그래밍
- 함수형 프로그래밍 특징
- first-class. 함수를 일반값처럼 다룰수도, 변수에 저장할수도, 함수를 인자로 다른 함수에 전달할수도 있음
- immutability. 한번만들어지면 내부상태가 절때 바뀌지 않는 불변객체를 사용함
- side-effect 없음. 입력이 같으면 출력이 항상같음 → 함수 외부나 바깥과 상호작용하지 않음
- 장점
- 간결성
- safe multithreading
- 테스트가 쉬움
- 자바도 8부터는 지원하지만, 코틀린은 초기부터 함수형 프로그래밍을 풍부하게 지원해왔음
- 무료 오픈소스
코틀린 응용
- 코틀린 서버 프로그래밍
- 서버 프로그래밍에는 광범위한 분야들이 포함됨
- 브라우저에 html 페이지를 돌려주는 웹
- JSON API를 제공하는 BE
- RPC 프로토콜로 서로 통신하는 마이크로 서비스
- 코틀린은 자바코드와 매끄럽게 상호운용한다는 장점 존재
- 동시에, 몇가지 새로운 기술을 활용해 서버 시스템 개발가능
- 예를들어 코틀린의 빌더 패턴(Builder pattern)활용하면 간결한 구문 사용해 그래프를 쉽게 구축하면서도 코드 재활용을 지속적으로 누릴 수 있음
- 다른예로 영속성 프레임워크를 들수 있음. SQL DB 구조를 기술할 수 있는 읽기쉬운 DSL 제공
코틀린의 철학
- 코틀린은 자바와의 상호운용성에 초점을 맞춘 실용적이고 간결하며 안전한 언어
- 실용성
- 실제 문제를 해결하기위해 만들어진 실용적 언어이며 연구를 위한 언어가 아님
- 코틀린은 어느 특정 프로그래밍 스타일이나 패러다임을 사용할 것을 요구하지 않음
- 항상 도구의 활용을 염두에 두고 설계되어왔음
- 간결성
- 개발자는 기존의 코드를 읽는 시간이 더 길다. 따라서 간결한 코드는 내용파악에 도움 됨
- 코틀린은 별 뜻은 없지만 꼭 넣어야하는 부수적인 요소를 줄이기 위해 노력함
- 그렇다고 소스코드가 짧다 ≠ 간결하다
- 안전성
- 안전하다 = 일부 유형의 오류를 프로그램 설계가 원천적으로 방지해준다는 의미
- 대게 생산성과 안전성 사이에는 trade off 관계가 설립한다.
- JVM에서 실행되는 정적타입언어로서 코틀린은 애플리케이션 타입 안전성을 보장함
- but, 자바보다 더 적은 비용으로 타입 안전성 사용가능 → 직접 타입 정보를 지정할 필요가 없기 때문임
- 더 나아가 컴파일 시점 검사를 통해 오류를 더 많이 방지해줌
- 특히 NullPointerException을 없애기 위해 노력함
- 발생할 수 있는 연산을 사용하는 코드를 금지하기 때문
- classCastException도 방지해줌
- 어떤 객체를 다른 타입으로 cast 하기 전에 미리 검사하지 않으면 발생할 수 있음
- 코틀린에서는 타입 검사와 캐스트가 한 연산자에 의해 이뤄짐
- 상호운용성
- 라이브러리가 어떤 API를 제공하던 코틀린에서 그 API를 활용할 수 있음
- 코틀린은 기존 자바 라이브러리를 최대한 활용하는 데에 집중
- 자체 컬렉션 라이브러리를 제공하지 않으며 자바 표준 라이브러리 클래스에 의존함
코틀린 도구 사용
- 코틀린 역시 자바와 마찬가지로 컴파일 언어, 앞으로 컴파일 과정과 어떤 도구가 사용되는지 이야기 할것
- 코틀린 코드 컴파일
- 코틀린 소스코드 저장에는 보통 .kt라는 확장자를 파일에 붙임
- 컴파일한 코드는 코틀린 런타임 라이브러리에 의존함
-
- 현재글[Kotlin in Action] 1.코틀린이란 무엇이며 왜 필요한가
-