ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [코틀린 완벽 가이드] 1장 강력하고 실용적인 코틀린
    코틀린 공부/코틀린 2023. 12. 27. 12:17

    배우는 내용 :

    • 코틀린이란 무엇인가?
    • 코틀린 생태계를 이루는 주요 구성 요소

    1.1 코틀린이란 무엇인가?

    코틀린은 안정성, 간결성, 상호 운용성을 강조하는 패러다임, 다중 플랫폼 프로그래밍 언어다.

    2010년 하반기에 처음 생겨서 2016년 2월 처음으로 공개 릴리스 됐으며, 안드로이드 개발, 데스크톱 애플리케이션, 서버 측 솔루션 등 여러 개발 분야에서 유망한 도구로 꾸준히 인기를 얻고 있다.

     

    2019년 11월 1.3이 나왔고, 2021년5월 1.5.0이 나왔다. 

     

    2017년 구글이 안드로이드 플랫폼의 공식 지원 언어로 코틀린 선택.

    이로 인해 코틀린 언어 사용자가 엄청나게 늘어났고, 현재 구글, 아마존, 넷플릭스, Pinterest, 우버 등 여러 회사가 프로덕션 개발에 코틀린을 사용하고 있으며, 코틀린 개발자 채용하려는 회사가 늘어나고 있다.

     

    1.1.1 안정성

    프로그래밍 언어가 안전하려면 프로그래머의 오류를 방지할 수 있어야 한다.

     

    컴파일러에게 프로그램에 대한 정보를 더 자세히 알려주거나 컴파일러가 더 오랫동안 프로그램이 올바른추론하게 한다.  코틀린의 설계 목표 중 하나는 황금비를 찾아내는 것이다. 자바보다 더 안전성을 보장하는 언어를 설계하되, 개발자의 생산성을 덜 해치는 언어를 만드는 것이다.

     

    주요 특징:

    • 타입 추론
    • 널이 될 수 있는 타입 을 통해 null의 사용을 제한할 수 있고, 악명 높은 NullPointerException 예외를 좀 더 쉽게 방지할 수 있다.
    • 스마트 캐스트를 통해 타입을 안전하게 변한할 수 있고, 실행 시점에 타입캐스트 오류를 방지할 수 있다.

    1.1.2 다중 패러다임

    • 일반적인 객체지향 패러다임 
    • 함수형 프로그래밍 : 함수를 다른 값과 마찬가지로 다루는 프로그래밍 방법
      • 함수를 다른 함수의 인수로 넘길수 있다.
      • 지역적으로 함수 선언
      • 변수에 저장
      • 함수가 함수를 반환 등등
    • API를 도메인 특화언어로 정의할 수 있는 기능 (11장 참고)
    • 동시성 : 코투린 도입

    1.1.3 간결성과 표현력

    • 게터나 세터, 익명 클래스, 명시적인 위임등과 같은 자바의 불피요한 준비 코드 제거
    • 또한 간결성을 너무 과용하지 못하게
      • 예를 들어 스칼라와 다르게 커스텀 연산자 정의 불가능. 기존의 연산자만 재정의 가능

    1.1.4 상호 운용성

    • 기존의 자바 코드를 코틀린에서 사용 가능
    • 코틀린 코드를 자바에서 사용 보장

     

    1.2 코틀린 생태계

    1.2.1 코루틴

    일시 중단 가능한 계산이라는 개념 덕분에 코틀린은 async/await, future, promise, actor 등의 동시성 관련 프로그래밍 패턴을 지원할 수 있다.

     

    주요기능 :

    • 스레드에 대한 더 가벼운(light weight) 대안
    • 유연한 스레드 디스패치 매커니즘
    • 일시 중단 사능한 시퀀스아 iterator
    • channel을 사용한 메모리 공유
    • actor를 통해 메시지 전송 방식으로 상태 공유

    1.2.2 테스트

    JUnit, TestNG, 모키토(Mockito) 같은 익숙한 자바 테스트 프레임워크 중 일부를 거의 노력 없이 코틀린 적용 가능

     

    1.2.3 안드로이드 개발

    구글이 코틀린을 1급 안드로이드 언어로 선언. 안드로이드 도구들은 이제 코틀린의 특징을 염두에 두면서 설계되고 개발된다.

     

    안드로이드 스튜디오 플러그인이 제공하는 훌륭한 프로그래밍 경험과 더불어, 안드로이드 개발자들이 Dagger, ButterKnife, DBFlow 등 여러 유명한 프레임워크와의 원활한 상호 운용성을 얻을 수 있다.

     

    코틀린에 특화된 개발 도구 중에는 Anko와 Kotlin Android Extension 등 있고, 현재는 구글이 제공하는 Jetpack에 주목할 만하다.

     

    Kotlin Android Extension은 데이터 바인딩이 주요 특징인 컴파일러 플러그인이다. 이를 사용하면 XML로 정의한 뷰를 코드 안에서 정의한 것처럼 사용가능하다. findViewById() 호출을 피할 수 있다.

     

    뷰 캐싱을 지원하고, 사용자가 정의한 클래스에 Parcelable구현을 자동으로 생성해준다.

     

    이로 인해 순수 코틀린 프로젝트에서 버터나이프 같은 외부 프레임워크를 사용할 필요가 없어졌다.

     

    1.2.4 웹 개발

    생략

     

    1.2.5 데스크톱 개발 

    생략

     

     

     

     

Designed by Tistory.