스터디일지

코틀린이란?

똥쟁이핑크 2024. 2. 18. 20:47

https://blog.kakaocdn.net/dn/NBAvm/btrWwL0pzxu/nS4k23vedpMHeNCOavLffk/img.png

 

코틀린이란?

2011년 JetBrains사가 공개한 프로그래밍 언어로 JVM에서 동작한다

간결하고 실용적이며 자바 코드와의 상호운영성을 중시한 언어라고 한다.

구글에서 코틀린을 자바에 이어 안드로이드 공식언어로 선언했다고 한다.

 

  • 호환성과 성능
    • 코틀린은  JDK 6과 완벽하게 호환가능하다
    • 구형 안드로이드 기기 지원이 된다는 점은 코틀린을 사용하는 하나의 장점이라고 할 수 있다.
    • 안드로이드 스튜디오에서 지원이 되는 언어이기 때문에 안드로이드의 빌드 시스템과도 완벽히 호환된다.
    • 자바 만큼 빠르다는 이야기가 많다.

주요 특성

  1. 대상 플랫폼
    코틀린의 주 목적은 현재 자바가 사용되고 있는 모든 용도에 적합하면서도 더 간결하고 생산적이며 안전한 대체 언어를 제공하는 것이다.
    • 서버상의 코드 - 웹 애플리케이션의 백엔드
    • 안드로이드 디바이스에서 실행되는 모바일 애플리케이션
  2. 타입
    • 정적 타입 지정 언어
      정적 타입 지정 언어 란? 모든 프로그래밍 구성 요소의 타입을 컴파일 시점에 알 수 있고 프로그램 안에서 객체의 필드나 메소드를 사용할 때마다 컴파일러가 타입을 검증해 준다.
      • 성능
        실행 시점에 어떤 메소드를 호출할지 알아내는 과정이 필요 없으므로 메소드 호출이 더 빠르다(나중에 사용해봐야 성능을 좋은지 알 수 있을거 같다)

      • 신뢰성
        컴파일러가 프로그램의 정확성을 검증한다.
        따라서 프로그램이 오류로 중단될 가능성이 더 적어진다

      • 유지 보수성
        코드에서 다루는 객체가 어떤 타입에 속하는지 알 수 있다.
        그래서 처음보는 코드를 다룰 때도 더 쉽게 다룰 수 있다.

      • 도구 지원
        도구는 더 정확한 코드 완성 기능을 제공할 수 있으며 IDE의 다른 지원 기능도 동적 타입 지정언어에 비해 더 잘 만들 수 있다.
    • 타입 추론
      자바와는 다르게 코틀린에서는 모든 변수의 타입을 직접 명시할 필요가 없다.
      대부분의 경우 코틀린 컴파일러가 문맥으로부터 변수 타입을 자동으로 유추할 수 있기 때문에 타입 선언을 생략해도 된다.

    • 널이 될 수 있는 타입
      코틀린은 null이 될 수 있는 타입을 지우너함에 따라 텀파일 시점에 null pointer exception이 발생 할 수 있는지 여부를 검사할 수 있어서 좀 더 프로그램의 신뢰성을 높일 수 있다.
  3. 함수형 프로그래밍
    • 핵심 개념
      • 일급객체인 함수
        함수를 일반 값처럼 다룰 수 있다. 
        함수를 변수에 저장할 수 있고 함수를 인자로 다른 함수에 전달할 수 있으며 함수에서 새로운 함수를 만들어서 반환할 수 있다.

      • 불변성
        함수형 프로그래밍에서는 일단 만들어지고 나면 내부 상태가 절대로 바뀌지 않는 불변 객체를 사용해 프로그램을 작성한다.

      • 부수 효과 없음
        함수형 프로그래밍에서는 입력이 같으면 항상 같은 출력을 내놓고 다른 객체의 상태를 변경하지 않으며, 함수 외부나 다른 바깥 환경과 상호작용하지 않는 순수함수를 사용한다.
    • 이점
      • 간결성
        명령형 코드에 비해 더 간결하다.
        순수 함수를 값처럼 활용할 수 있으면 더 강력한 추상화 할수 있고 강력한 추상화를 사용해 코드 중복을 막을 수 있다.

      • Thread Safe
        불변 데이터 구조를 사용하고 순수 함수를 데이터 구조에 적용한다면 다중 스레드 환경에서 같은 데이터를 여러 스레드가 변경 할 수 없다.

      • 테스트 용이
        side effect 가 있는 함수는 그 함수를 실행 하기 위해 필요한 환경을 구성하는 준비 코드가 필요하지만 순수함수는 준비 코드 없이 독립적인 테스트가 가능하다.

 

코틀린이 빌드되는 과정

https://img1.daumcdn.net/thumb/R800x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbkzrUi%2FbtrbwgE4TDu%2FuR4kizBlafieULJ8VVXh31%2Fimg.png

 

JVM에서 동작하는 부분때문에 JAVA 컴파일 과정과 비슷하다.

다른 부분은 코틀린은 kotlin compiler를 통해 바이트 코드로 변환 되는데 이 코드는 kotlin runtime library에 의존되어 실행된다.

 

kotlin runtime library에는 코틀린 자체 표준 라이브러리, JAVA API를 확장한 내용 등이 있다.

이는 Gradle, Maven과 같은 빌드 도구가 Application 으로 패키징할 때 알아서 kotlin runtime library를 포함 시키게 된다.

 

https://velog.velcdn.com/images/chc0331/post/f378920b-5c6b-46c5-ac4f-d51caabe9e2e/image.png

 

위의 사진은 JAVA와 Kotlin이 함께 있을 때 컴파일 되는 과정을 나타낸 것이다.

1. Kotlin 컴파일러가 Kotlin 코드를 컴파일해서 바이트 코드(.class)를 생성한다. → 이때 Kotlin 코드가 참조하는 JAVA 코드도 함께 로딩되어 사용된다.

2. JAVA 컴파일러가 JAVA코드를 컴파일해서 바이트 코드(.class)를 생성한다.  → 이때 컴파일된 Kotlin의 바이트 코드(.class)의 경로를 class path에 추가해 컴파일한다.

 

 

※ 아직 코틀린을 사용해 보지 않아 코틀린이 무엇인지 알아보고자 글을 작성했으며, 사용해 보고 난 뒤 추가 글을 작성할 예정.

 

 

 

 

참고한 사이트

https://velog.io/@gosgjung/%EC%BD%94%ED%8B%80%EB%A6%B0%EC%96%B8%EC%96%B4-%EA%B8%B0%EB%B3%B8%EA%B0%9C%EB%85%90-%EC%B4%9D%EC%A0%95%EB%A6%AC-%EC%8A%A4%EC%95%95%EC%A3%BC%EC%9D%98

 

코틀린언어 기본개념 총정리 (스압주의)

깊은 내용은 다루지 않습니다. 빠르게 하나의 페이지에서 필요한 개념만 찾아보기 위해 굉장히 길게 요약했습니다. 깊은 내용들은 책을 찾아보고 파악해야 합니다. (관리 및 유지보수가 되지 않

velog.io

https://velog.io/@dbsdlswp/Kotlin%EC%9D%B4%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B4%EB%A9%B0-%EC%99%9C-%ED%95%84%EC%9A%94%ED%95%9C%EA%B0%80

 

Kotlin이란 무엇이며 왜 필요한가?

코틀린(Kotlin)이란? 코틀린( Kotlin )은 2011년 7월 JetBrains사가 공개한 JVM에서 동작하는 프로그래밍 언어로서, 간결하고 실용적이며 자바코드와의 상호운용성( interoperability )를 중시한 언어이다. 주

velog.io

https://mhwan.tistory.com/71

 

[Kotlin] Kotlin의 컴파일 과정 & Kotlin VS JAVA (Annotation Processor)

이 글은 코틀린을 이미 어느정도 아시는 분들을 위한 포스팅입니다. 코틀린을 모르시는 분들에게는 다소 불친절할 수 있으니 양해부탁드립니다. 다들 이미 아시겠지만 코틀린은 JVM위에서 동작

mhwan.tistory.com