본문 바로가기
프로그래밍/코틀린

코틀린 스터디 - 1장

by 직장인 투자자 2021. 12. 5.

코틀린 스터디 책

http://www.yes24.com/Product/Goods/55148593

 

Kotlin in Action - YES24

코틀린이 안드로이드 공식 언어가 되면서 관심이 커졌다. 이 책은 코틀린 언어를 개발한 젯브레인의 코틀린 컴파일러 개발자들이 직접 쓴 일종의 공식 서적이라 할 수 있다. 코틀린 언어의 가장

www.yes24.com

 

참고자료

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 메뉴 > 코드 > 자바 파일을 코틀린 파일로 변환
  • 이클립스나 웹에서도 변환기를 사용 가능
반응형

댓글