(Kotlin) Kotlin in Action 1장. 코트린이란 무엇이며 왜 필요합니까?

  • by


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

– 코트린의 주요 목적은 현재 Java가 사용되는 모든 용도에 적절하고 간결하며 생산적이고 안전한 대체 언어 제공하는 것이다.

2. 코트린 활용 영역

– 서버의 코드 (백엔드) -> Spring에서 Kotlin의 공식 사용 지원 우선 했다

– Android 기기에서 실행되는 모바일 애플리케이션

– IOS 장치에서도 사용 가능 (Intel의 멀티 OS 엔진, KMM 등)

3. 코트린은 정적 유형 언어입니다.

(객체 지향 및 함수형 프로그래밍 지원)

– 정적 형식 언어: 컴파일 시 형식 확인이 수행됩니다.

프로그램 내에서 객체의 필드와 메서드를 사용할 때마다 컴파일러가 형식을 확인합니다.

– 타입 추론(Type inference): 컴파일러가 컨텍스트를 고려하여 변수 타입을 결정하는 기능입니다.

– 정적 유형 언어의 장점 : 성능, 안정성, 서비스 가능성, 도구 지원

  • 성능: 런타임에 어떤 메소드를 호출하는지 확인하는 프로세스는 필요하지 않습니다.

  • 신뢰성: 컴파일러가 프로그램의 정확성을 검증하므로 런타임에 프로그램이 오류로 인터럽트될 가능성이 줄어듭니다.

  • 유지 보수성 : 코드로 처리하는 객체가 어떤 유형에 속하는지 알 수 있으므로 처음 보는 코드를 다룰 때 간단합니다.

  • 도구 지원: 정적 유형 지정을 사용하면 보다 안전하게 리팩토링할 수 있으며 도구는 보다 정확한 코드 완성 기능을 제공할 수 있습니다.

– 가장 중요한 특성은 코트린 널이 되는 타입 지원한다.

-> 모든 오브젝트 변수가 NOT Null입니다.

(null이 되는 타입을 지원한다 => 컴파일시에 널 포인터 예외가 발생하는지 확인)

(Java는 모든 객체 변수를 nullable로 정의하고 null 안정성 검사는 개발자의 임무입니다.

try-catch로 잡지 않으면 NPE 발생)

4. 코트린은 간결하다.

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

– “람다” 지원 -> 반복하거나 길게 할 수 있는 코드를 라이브러리 함수 호출로 바꿀 수 있으며, 람다를 통해 라이브러리 함수에 쉽게 전달할 수 있습니다.

– 간결성은 생산성을 향상시키고 개발을 보다 빠르게 할 수 있도록 한다.

5.안전성

– 프로그래밍 언어가 안전하다는 것은 프로그램에서 발생할 수 있는 에러 중에서 어떤 종류의 에러를 프로그램 설계가 원칙적으로 방지해 준다는 의미이다.

(물론 절대적인 것은 아니다)

– 언어가 안전하다 -> 에러를 프로그램으로 방지 -> Java보다 안전한 언어이다 -> 코틀린을 JVM에서 실행하면 메모리의 안전성을 보증한다, Java보다 적은 비용으로 타입의 안전성을 유효하다.

– 코틀린 컴파일러가 타입을 자동적으로 추론해 주므로, Java보다 적은 비용으로 타입 안전성을 사용할 수 있다.

– ‘?’를 사용하여 어떤 유형이 널이 될 수 있는지 표시할 수 있습니다(? 있다면 널이 될 수 있습니다.

)

– 한 객체를 다른 타입으로 캐스트하기 전에 타입 체크를 해야 하지만 ‘is’를 통해 체크할 수 있다.

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

6. 상호 운용성

– Java 코드에서 코트린 코드를 호출할 때 아무런 노력이 필요하지 않습니다.

따라서 두 언어를 혼합할 수 있습니다.

– 기존의 Java 라이브러리를 최대한 활용 가능. -> Cotlin은 Java 표준 라이브러리 클래스에 의존합니다.

하지만 코틀린에서 컬렉션을 보다 쉽게 ​​활용할 수 있는 몇 가지 기능을 추가할 뿐이다.

– 코트린은 Java와 소스 파일이 혼합되어도 올바르게 컴파일 할 수 있습니다.

7. 컴파일


  1. Cotlin 소스 코드를 .kt 확장자를 파일에 붙여 넣습니다.

  2. 코틀린 컴파일러가 소스 코드를 분석합니다.

  3. 소스 코드를 분석하여 .class 파일을 만듭니다.

  4. 만든 .class 파일을 Java 바이트 코드로 변환
  5. Cotlin 컴파일러로 컴파일 된 코드는 Cotlin 런타임 라이브러리에 따라 다릅니다.

  6. 코트린으로 컴파일된 애플리케이션을 배포합니다(배포할 때 런타임 라이브러리도 함께 배포해야 합니다.