코틀린 & Java/코틀린인액션

[Kotlin] 코틀린이란 무엇이며, 왜 필요한가?

코딩하는후운 2024. 3. 19. 15:15
반응형

코틀린이란?

  • 자바 플랫폼에서 돌아가는 프로그래밍 언어
  • 자바와의 상호운용성에 초점을 맞춘 실용적이고 간결하며 안전한 언어

대상 플랫폼

  • 서버 (backend)
  • 안드로이드 모바일 애플리케이션
  • 등등 (iOS, 자바스크립트…)

코틀린은 정적 타입(statically typed) 지정 언어

  • 정적 타입 지정 언어? : 프로그램 구성 요소의 타입을 컴파일 시점에 알 수 있고, 필드나 메소드 사용 시 컴파일러가 타입을 검증해준다.
  • 동적 타입 지정 언어? : 타입 관계없이 모든 값을 변수에 넣을 수 있고, 실행 시점에 필드나 메소드에 대한 검증한다. (Groovy, JRuby 등)

정적 타입 지정 언어 장점

  • 성능 : 컴파일 시점에 메소드 호출 여부를 알고 있어서 빠르다.
  • 신뢰성 : 컴파일러가 컴파일 시점에 프로그램의 정확성을 검증하여 오류로 중단될 가능성 감소
  • 유지 보수성 : 객체에 대한 타입을 알고 있어서 쉽다.
  • 도구 지원 : IDE의 지원 기능 (IJ)

코틀린은 함수형 프로그래밍을 지원하는 객체지향 프로그래밍

  • 일급 시민인(first-class) 함수 : 함수를 변수에 저장할 수 있고, 다른 함수에 함수 인자를 전달할 수 있다.

y = f(x)

y= f(g(x))

  • 불변성(immutability) : 객체 생성 후 내부 상태가 바뀌지 않는 객체 사용
  • 순수 함수(Pure function) : 입력이 같으면 출력도 항상 같고, 바깥 환경과 상호작용하지 않는 순수 함수를 사용

함수형 프로그래밍의 장점

  • 간결성 : 순수 함수를 값처럼 활용하여 강력한 추상화를 할 수 있고, 코드 중복 최소화 (ex. scope function)
  • 다중 스레드에 안전(safe multithreading) : 불변데이터 구조를 사용하고 순수 함수를 데이터 구조에 적용하면 다중 스레드 환경에서 같은 데이터를 여러 스레드가 변경할 수 없다.
  • 쉬운 테스트 : 순수 함수는 독립적인 테스트 가능

❗자바도 자바8에서 함수형 프로그래밍 지원

코틀린의 철학

1. 실용성

다른 프로그래밍 언어가 채택한 이미 성공적으로 검증된 해법과 기능에 의존하여 복잡도를 줄이고, 기존 개념을 통해 쉽게 배울 수 있다.

IDE를 통해 편리한 개발 환경 제공 및 생산성 향상에 기여한다. (간결한 코드로 변경 제안 등등)

2. 간결성

다양한 표준 라이브러리를 제공하여 반복되거나 길어질 수 있는 코드를 줄인다.

컴파일러가 문맥을 고려해 변 수타입을 결정하는 타입 추론 (type inference)

var x: Int = 1
var x = 1

3. 안전성

큰 안전성을 얻기 위해서는 프로그램에 더 많은 정보를 덧붙여야 하므로 생산성이 하락하는 것을 감수해야하는 트레이드 오프 관계

코틀린은 높은 안전성을 달성하되 적은 비용을 지불하고자 하였다.

JVM에서 실행 ( 메모리 안정성 보장, 버퍼 오버플로 방지 등)

null이 될 수 없는 값을 추적하여 NullPointerException 방지

val s: String? = null //nullable
val s2: String = ""   //non null

타입 검사와 캐스트가 한 연산자로 가능

if (value is String)            // 타입 검사
	println(value.toUpperCase())  // 해당 타입의 메소드 사용

4. 상호운용성(interoperability)

자바와 코틀린 코드를 프로젝트에서 원하는 대로 섞어 쓸 수 있는 유연성

따라서 리팩토링에도 용이

코틀린 코드 컴파일

  • 코틀린 확장자는 .kt
  • 코틀린, 자바 각각의 컴파일러가 바이트 코드(.class) 파일로 만든다.
  • 코틀린 런타임 라이브러리 (표준 라이브러리, 자바 API의 확장 기능이 포함된 라이브러리)를 포함하여 Application을 만든다.
  • 실제 프로젝트 컴파일을 위해 Maven, Gradle 등의 빌드 시스템 사용

 

 

참조 :
코틀린인액션 책
스터디 그룹

반응형