'Kotlin in Action' 1장 - Kotlin (코틀린) 은 뭘까
‘Kotlin in Action’
공부 겸 프로젝트 준비 겸 Kotlin 책을 하나 샀다.
‘Kotlin in Action’ 은 Kotlin 언어를 개발한 JetBrains 개발자들이 직접 쓴 책으로, Kotlin 다운 Kotlin 개발을 하기 위해 첫 단추로 택했다.
내가 책 읽는 속도는 빠른데 머리에서 휘발되는 속도도 빠른 편이라(…) 시간 날 때 마다 읽은 부분은 차근차근 정리 해두려고 한다.
Kotlin은 최신 멀티플랫폼 애플리케이션을 위한 정적 타입 언어 로,
2017 Google I/O에서 안드로이드 공식언어로 선정되었고 현재 1.3 버전까지 릴리즈 되어있다.Kotlin 공식 페이지 https://kotlinlang.org/
_ _ _
Overview
Java 를 대신할 언어에 대한 Requirement 3가지
- 정적 타입 지정 (static typing)
- 기존 자바 코드와의 완전한 호환성
- 해당 언어를 위한 도구 개발 복잡성 x
⇒ 배우고 이해하기 쉬우며 대규모 개발/유지보수성/기존 자바와의 호환성에 적합한 강력한 언어, ‘Kotlin’
1장. 코틀린이란, 무엇이며 왜 필요한가?
Kotlin은 자바 플랫폼에서 돌아가는 새로운 프로그래밍 언어다.
간결하고 실용적이며 Java 코드와의 상호운용성 (interoperability)을 중시한다.
특성
1. 대상 플랫폼 : 자바가 실행되는 Everywhere
일부가 아닌 개발 과정에서 수행해야하는 모든 과업에 있어 폭넓게 생산성을 향상 시킨다.
구체적인 영역 or 특정 프로그램 패러다임을 지원하는 여러 라이브러리와의 융합성 ↑
2. 정적 타입 지정 언어
Kotlin은 정적 타입 지정 언어 이면서, type inference (타입추론) 과 nullable type을 지원한다.
⇒ 프로그래머의 불편함 해소 & 컴파일 시점에 NPE 여부 검사 가능
정적 타입 (statically typed) 지정 언어 : Java, Kotlin ..
모든 프로그램 구성 요소 타입을 컴파일 시점에 알 수 있고, 객체의 필드나 메소드를 사용할 때마다 컴파일러가 타입을 검증한다.
장점 : 성능 / 신뢰성 / 유지 보수성 / 도구 지원 _
p.36
동적 타입 (dynamically typed) 지정 언어 : Groovy, JRuby …
타입과 관계없이 모든 값을 변수에 넣을 수 있고, 필드나 메소드 접근에 대한 검증이 실행 시점에 일어난다.
동적이 더 유연하고 코드도 짧아지지만, 오류를 사전에 거르지 못하고 Runtime Error 발생 가능성 존재
3. 함수형 / 객체지향 프로그래밍
Kotlin으로 코드를 작성 할 땐, Java와 같은 객체지향 프로그래밍 (OOP) 과 함수형 프로그래밍 접근 방법을 조합해서 문제에 가장 적합한 도구를 사용하면 된다.
함수형 프로그래밍 의 핵심 개념
- first-class function (일급 함수)
- immutability
- no side effect _ pure function
4. 무료 오픈소스
Kotlin 언어와 이와 관련된 모든 도구는 오픈소스이다.
(https://github.com/jetbrains/kotlin - Apache2 License.)
응용
코틀린 서버 프로그래밍
서버 프로그래밍 의 범위
- 브라우저에 HTML 페이지를 반환하는 웹 애플리케이션
- 모바일 애플리케이션에게 HTTP를 통해 JSON API를
- RPC (Remote Procedure Call) 프로토콜을 통해 서로 통신하는 마이크로 서비스
Kotlin은 이러한 애플리케이션 개발에 도움을 주는 기존의 자바 프레임워크나 기술과 매끄럽게 상호운용 가능하다.
+ 새로운 기술도 적용 가능 (ex. Kotlin의 Builder Pattern, Persistence Framework …)
⇒ 7.5절
& 11장
에서 좀 더 자세히
코틀린 안드로이드 프로그래밍
모바일 애플리케이션은 전형적인 엔터프라이즈 애플리케이션보다 더 작고 기존과 신규 코드 통합 필요성도 더 적고, 다양한 디바이스에 대한 서비스 신뢰성 보장과 빠른 개발&배포가 필요하다.
Kotlin 언어의 특성과 특별한 컴파일러 플러그인 지원을 조합하면 개발 생산성을 더 높일 수 있다.
뿐만 아니라 애플리케이션 신뢰성 향상, 자바6와 완전한 호환, 성능 손실 x 과 같은 장점도 취할 수 있다.
+ 참조 _ 안드로이드 API에 대한 Kotlin Adaptor를 제공하고 있는 Anko Library https://github.com/kotlin/anko
철학
대개 Kotlin은 Java와의 상호운용성 에 초점을 맞춘 실용적 이고 간결 하며 안전한 언어로 표현된다.
실용성
- 연구를 위한 언어가 아닌, 실제 문제를 해결하기 위해 만들어진 실용적인 언어이다.
- 특정 프로그래밍 스타일이나 패러다임 사용을 강제하지 않는다.
- 도구를 강조한다. (IDE 지원)
간결성
- 기존 코드 이해가 더 쉬워진다. (→ 생산성과 개발 속도 향상)
- 부수적인 요소등을 묵시적으로 제공하여 코드가 깔끔하다.
- 람다를 지원한다.
- 그러나 소스코드를 가능한 짧게 만드는 것이 코틀린의 설계 목표는 아니다.
안전성
프로그램의 안전성과 생산성 사이에는 trade-off 존재
- JVM에서 실행한다. (메모리 안전성과 버퍼 플로우 방지등 기본적으로 높은 안전성 확보)
- 정적 타입 지정 언어으로, 애플리케이션의 타입 안전성을 보장한다.
- 실행 시점이 아닌 컴파일 시점에 검사를 통해 더 많은 오류를 방지해준다. (ex.
NullPointerException
,ClassCastException
)
상호운용성
- Java의 기존 라이브러리를 그대로 사용 가능하고, 최대한 활용하고 있다.
- Java ←→ Kotlin 호출에 따로 노력이 필요하지 않다.
- 다중 언어 프로젝트를 완전히 지원한다.
코틀린 도구 사용
Kotlin도 Java와 마찬가지로 컴파일 언어이다.
자바-코틀린 변환
Intellij IDEA에서는 자바 코드 조각을 코틀린 파일(.kt)에 붙여넣기
자바 파일 자체를 변환하려면 Code > Convert Java File to Kotlin File
도구에 대해서는 필요에 따라 쓰면 되는거라 나머지 내용 생략.