코틀린 스터디 책
http://www.yes24.com/Product/Goods/55148593
참고자료
- livebook: https://livebook.manning.com/book/kotlin-in-action/
- kotlin: https://kotlinlang.org/
- kotlin play: https://play.kotlinlang.org/
(Settings > Run configuration > Kotlin Version을 1.2.71)
1장
Kotlin?
자바 플랫폼에서 돌아가는 새로운 프로그래밍 언어
주목적은 현재 자바가 사용되고 있는 모든 용도에 적합하면서도 더 간결하고 생산적이며 안전한 대체 언어를 제공하는 것
1장에서는 코틀린의 일반적인 특성에 대해 알아보자.
1.1 코틀린 맛보기(예제)
- Person이라는 클래스 정의 후 컬렉션 생성
- 컬렉션 중 가장 나이가 많은 사람 찾기
data class Person(val name: String, // 데이터 클래스
val age: Int? = null) // 널이 될 수 있는 타입(Int?)과 파라미터 디폴트 값
fun main(args: Array<String>) { // 최상위 함수
val persons = listOf(Person("Alice"),
Person("Bob", age = 29)) // 이름 붙은 파라미터
val oldest = persons.maxBy { it.age ?: 0 } // 람다 식과 엘비스 연산자 ('?:')
println("The oldest is: $oldest") // 문자열 템플릿
}
// The oldest is: Person(name=Bob, age=29) // toString 자동 생성
- it : 별도로 파라미터 이름 정의하지 않아도 람다식의 유일한 인자 사용 가능
- ? : (엘비스 연산자): age가 null인 경우 0을 반환, null이 아니면 age값 반환
1.2 코틀린의 주요 특성
코틀린을 활용할 수 있는 가장 일반적인 영역
- 서버상의 코드 (특히 웹 애플리케이션의 백엔드)
- 안드로이드 디바이스에서 실행되는 모바일 애플리케이션
코틀린의 핵심 특성
- 정적 타입 지정 언어
- 모든 프로그래밍 구성 요소의 타입을 컴파일 시점에 알 수 있음
- 타입 추론 가능: 컴파일러가 문맥으로 변수 타입 자동 유추
- nullable type 지원: 컴파일 시점에 null pointer exception 발생 여부 검사 가능
- function type 지원
- 장점?
- 성능: 실행 시점에 어떤 메서드를 호출할지 알아내는 과정이 필요 없으므로 메서드 호출이 더 빠름
- 신뢰성: 컴퍼일러가 프로그램의 정확성을 검증하기 때문에 실행 시 프로그램이 오류로 중단될 가능성이 더 적어짐
- 유지 보수성: 코드에서 다루는 객체가 어떤 타입에 속하는지 알 수 있기 때문에 처음 보는 코드를 다룰 때도 더 쉬움
- 도구 지원: 정적 타입 지정을 활용하면 더 안전하게 리펙토링 할 수 있고, 도구는 더 정확한 코드 완성 기능을 제공할 수 있으며, IDE의 다른 지원 기능도 더 잘 만들 수 있음
- 함수형 프로그래밍과 객체지향 프로그래밍 모두 지원
- 함수형 프로그래밍
- 일급 함수(First-class functions): 함수를 일반 값처럼 다룰 수 있음. 함수를 변수에 저장, 인자로 다른 함수에 전달, 함수에서 새로운 함수를 만들어 반환 가능
- 불변성(Immutability): 만들어지고 나면 내부 상태가 절대로 바뀌지 않는 불변 객체를 사용
- 부수 효과 없음(No side effect): 입력이 같으면 항상 같은 출력을 내놓고 다른 객체의 상태를 변경하지 않으며, 함수 외부나 다른 바깥 환경과 상호작용하지 않는 순수 함수(pure function)를 사용
- 일급 함수를 사용해 수준 높은 추상화 가능
- 불변 값 지원을 통해 다중 스레드 애플리케이션 개발과 테스트를 더 쉽게 할 수 있음
- 함수형 프로그래밍 스타일 강제는 X
- 함수형 프로그래밍
- 무료오픈소스
1.3 코틀린 응용
서버 애플리케이션 개발에 잘 활용 가능함
- 기존 자바 프레임워크를 완벽하게 지원
- HTML 생성기나 영속성 프레임워크 등의 일반적인 작업을 위한 새로운 도구를 제공
안드로이드 개발에도 잘 활용 가능
- 런타임 라이브러리는 크기가 작고, 컴파일러는 안드로이드 API를 특별히 지원
- 다양한 라이브러리는 안드로이드에서 일반적인 작업에 사용 가능하며 잘 통합될 수 있는 함수를 제공
1.4 코틀린의 철학
코틀린은 실용적이며 간결하고, 안정성이 높으며 상호운용성이 좋음
이는 코틀린을 설계하면서
- 일반적인 작업에 대해 이미 잘 알려진 해법을 채택
- NullPointerException과 같이 흔히 발생하는 오류를 방지
- 읽기 쉽고 간결한 코드를 지원
- 자바와 아무런 제약 없이 통합될 수 있는 언어를 만드는데 초점을 맞췄기 때문
1.5 코틀린 도구 사용
참조: https://kotlinlang.org/docs/jvm-get-started.html
코틀린 코드 컴파일 후 java 명령으로 실행
kotlinc <source file or directory> -include-runtime -d <jar name>
java -jar <jar name>
코틀린 빌드 과정
코틀린 플러그인: IntelliJ IDEA, 안드로이드 스튜디오, 이클립스
- IntelliJ IDEA의 코틀린 플러그인: 코틀린 개발에 필요한 모든 도구 제공
- IntelliJ IDEA v15 이후, 코틀린 플러그인이 기본 포함
- 안드로이드 스튜디오는 플러그인 관리자로 코틀린 플러그인 설치
- 이클립스는 마켓플레이스에서 코틀린 플러그인 설치
대화형 셸 (REPL: read-eval-print loop, 입력을 받아 값을 계산한 다음 결괏값을 출력하는 루프)
- REPL 시작하려면
- kotlinc 명령을 아무 인자 없이 실행
- IntelliJ 메뉴(툴 > 코틀린 > 코틀린 REPL) 사용
자바-코틀린 변환기
- 기존 자바 프로젝트에 코틀린 도입하고 싶을 때 유용
- IntelliJ 메뉴 > 코드 > 자바 파일을 코틀린 파일로 변환
- 이클립스나 웹에서도 변환기를 사용 가능
반응형
'프로그래밍 > 코틀린' 카테고리의 다른 글
6장. 코틀린 타입 시스템 (0) | 2021.12.13 |
---|---|
코틀린 스터디 - 5장. 람다로 프로그래밍 (0) | 2021.12.10 |
코틀린 스터디 - 4장.클래스, 객체, 인터페이스 (2) | 2021.12.08 |
코틀린 스터디 - 3장.함수의 정의와 호출 (4) | 2021.12.06 |
코틀린 스터디 -2장. 코틀린 기초 (0) | 2021.12.05 |
댓글