본문 바로가기

Kotlin

[Kotlin] Kotlin in Action 1장. 코틀린이란 무엇이며, 왜 필요한가?

728x90
반응형

 

 

 

 

1. 코틀린을 사용하는 이유 

- 코틀린의 주목적은 현재 자바가 사용되고 있는 모든 용도에 적합하면서도 더 간결하고 생산적이며 안전한 대체 언어를 제공하는 것이다.

 

 

 

 

 

 

 

 

 

2. 코틀린 활용 영역

 - 서버상의 코드 (백엔드) -> Spring에서 Kotlin 공식 사용 지원이 먼저

 - 안드로이드 디바이스에서 실행되는 모바일 애플리케이션

 - IOS 디바이스에서도 사용 가능 (인텔의 멀티 OS 엔진, KMM 등)

 

 

 

 

 

 

 

 

 

3. 코틀린은 정적 타입 언어이다. (객체지향과 함수형 프로그래밍을 지원)

 - 정적 타입 언어 : 컴파일 타임에 타입 검증이 일어난다. 프로그램 안에서 객체의 필드나 메서드를 사용할 때마다 컴파일러가 타입을 검증한다.

 - 타입 추론(Type inference) : 컴파일러가 문맥을 고려해 변수 타입을 결정하는 기능이다.

 - 정적 타입 언어 장점 : 성능, 신뢰성, 유지 보수성, 도구 지원

  • 성능 : 실행 시점에 어떤 메서드를 호출할지 알아내는 과정이 필요 없어 빠르다.
  • 신뢰성 : 컴파일러가 프로그램의 정확성을 검증하기 때문에, 실행 시 프로그램이 오류로 중단될 가능성이 적어진다.
  • 유지 보수성 : 코드에서 다루는 객체가 어떤 타입에 속하는지 알 수 있기 때문에 처음 보는 코드를 다룰 때 더 쉽다.
  • 도구 지원 : 정적 타입 지정을 활용하면 더 안전하게 리팩토링 할 수 있고, 도구는 더 정확한 코드 완성 기능을 제공할 수 있다.

- 가장 중요한 특성은 코틀린이 널이 될 수 있는 타입을 지원한다. -> 모든 객체 변수가 NOT Null이다.

(널이 될 수 있는 타입을 지원한다 => 컴파일 시점에 널 포인터 예외 (Null Pointer Exception)가 발생할 수 있는지 여부를 검사)

(Java는 모든 객체 변수를 nullable로 정의, null 안정성 검사는 개발자의 임무가 된다. try-catch로 잡아주지 않으면 NPE 발생)

 

 

 

 

 

 

 

 

 

4. 코틀린은 간결하다.

- 어떤 언어가 간결하다는 말은 그 언어로 작성된 코드를 읽을 때, 의도를 쉽게 파악할 수 있는 구문 구조를 제공한다.

- '람다'를 지원한다 -> 반복되거나 길어질 수 있는 코드를 라이브러리 함수 호출로 대체할 수 있고, 람다를 통해 라이브러리 함수에 쉽게 전달할 수 있다.

- 간결성은 생산성을 향상해 주고, 개발을 더 빠르게 할 수 있게 해 준다.

 

 

 

 

 

 

 

 

 

5. 안전성

- 프로그래밍 언어가 안전하다는 말은 프로그램에서 발생할 수 있는 오류 중에서 일부 유형의 오류를 프로그램 설계가 원칙적으로 방지해 준다는 뜻이다. (물론 절대적인건 아님)

- 언어가 안전하다 -> 오류를 프로그램에서 방지해준다 -> 자바보다 안전한 언어이다 -> 코틀린을 JVM에서 실행하면 메모리 안전성을 보장한다, 자바보다 적은 비용으로 타입 안전성을 사용할 수 있다.

- 코틀린 컴파일러가 타입을 자동적으로 추론해 주기 때문에, 자바보다 더 적은 비용으로 타입 안전성을 사용할 수 있다.

- '?'를 이용하여 어떤 타입이 널이 될 수 있는지 여부를 표시할 수 있다 (?가 있으면 널이 될 수 있음)

- 어떤 객체를 다른 타입으로 캐스트 하기 전에 타입 검사를 해야 하는데 'is'를 통해 검사할 수 있다.

 

if(a is String)
  println(a.toUpperCase())

 

 

 

 

 

 

 

 

 

6. 상호운용성

- 자바 코드에서 코틀린 코드를 호출할 때 아무런 노력이 필요 없다. 그러므로 두 언어를 섞어 쓸 수 있다.

- 기존 자바 라이브러리를 최대한 활용 가능하다. -> 코틀린은 자바 표준 라이브러리 클래스에 의존한다. 다만, 코틀린에서 컬렉션을 더 쉽게 활용할 수 있는 몇 가지 기능을 더할 뿐이다.

- 코틀린은 자바와 소스 파일이 섞여도 제대로 컴파일할 수 있다.

 

 

 

 

 

 

 

 

 

 

 

7. 컴파일

  1. 코틀린 소스코드를 .kt라는 확장자를 파일에 붙임
  2. 코틀린 컴파일러가 소스코드를 분석
  3. 소스코드를 분석해서 .class 파일을 만들어낸다.
  4. 만들어진 .class 파일이 자바 바이트 코드로 변환
  5. 코틀린 컴파일러로 컴파일한 코드는 코틀린 런타임 라이브러리에 의해 의존
  6. 코틀린으로 컴파일한 애플리케이션을 배포(배포할 때는 런타임 라이브러리도 함께 배포해야 함, maven, gradle이 애플리케이션을 패키지 할 때 알아서 런타임을 포함시킴)
728x90
반응형

'Kotlin' 카테고리의 다른 글

[Kotlin] 코틀린 리스트 생성 방법  (0) 2022.03.30
[Kotlin] 1. 코틀린 기초  (0) 2022.03.04
[Kotlin] invoke 란?  (0) 2022.03.03