[Kotlin] 1. Kotlin ?

Delight Yoon·2022년 9월 22일
0

Kotlin

목록 보기
1/6
post-thumbnail

📌 Kotlin 개요

  • 2011년 IntelliJ IDE를 개발한 JetBrains에서 개발

  • JVM(Java Virtual Machine)을 기반으로 동작하며, JVM 설치를 필요로 한다.

  • Modern Language를 지향한다.

  • Kotlin 코드의 확장자는 [KotlinClassName].kt or [KotlinFileName].kt 이다.


📌 Kotlin 특징

1. Kotlin은 Statically Typed Language 이다.


Statically Typed Language ? 🤔

Statically Typed Language는 직역하면 정적 타입 언어를 의미한다.
그래서 무슨 뜻인가 ? Kotlin이 왜 정적 타입 언어인가 ?

Kotlin은 Compile 시점에서 variable, field, method, function return type 등을 식별해준다.

  • Kotlin의 Type Inference(타입 추론)
val value1 = 5 // [Compile 시점]에 Int 타입을 추론하여 value1에 대입.
val value2 = 9.9 // [Compile 시점]에 Double 타입을 추론하여 value2에 대입.

위와 같이 Kotlin 언어의 특징은 Type InferenceCompile 시점에 지원한다는 것이다. 이런 점이 Modern Language의 특징이 된다.

Compile 시점에 Type Inference(타입 추론)를 지원하는 다른 Modern Language

  • C, C++, C#, Java 10이상, Haskell, Scala

Dynamically Typed Language ? 🤔

Dynamically Typed Language동적 타입 언어를 의미한다.
그렇다면, 동적 타입 언어는 무엇일까 ? 어떤 특징을 가지고 있을까 ?

동적 타입 언어의 주된 특징은 위와 같이 정적 타입 언어처럼 Compile 시점에서 Type 추론을 지원하지 않는다.

Compile 시점이 아닌 Runtime 시에 Type 추론을 지원하며, 타입이 확정된다.
Runtime이란, 프로그램이 실행되는 시점을 말한다.

Runtime 시점에 Type Inference를 지원하는 다른 Language

  • Perl, Ruby, Python, PHP, JavaScript

Statically Typed Language의 장점

  • Performance, Correctness, Refactoring

    • Performance - Compile 시점에 Type 들이 결정되므로 Runtime 시에 따로 체크할 필요가 없어 동적 타입 언어보다 성능이 좋다.

    • Correctness - Compile 시점에 프로그램의 정확성을 검증하므로 실행 시 오류, 중단의 가능성을 줄일 수 있다.

    • Refactoring - 정적 타입 언어는 IDE 에서 리팩토링을 지원하므로, 안전한 코드완성 기능을 제공하여 생산성을 향상시킬 수 있다.


2. Kotlin은 Java Platform에서 동작하는 Hybrid Language이다.

  • Hybrid Language = OOP(객체지향 프로그래밍) + FP(함수형 프로그래밍)
  • Java 코드와 상호운용(호환)이 가능하다. (Java 코드와 혼합하여 개발이 가능하다.)
  • Java 기반의 API와 Library를 그대로 사용 가능하다. (ex. import java.util.*)

3. 간결하다

  • 타 언어(특히 자바)에 존재하는 번거로운 코드를 Kotlin 은 묵시적으로 제공하여 코드가 적은 편이다.

4. Null Type 분리를 통해 Runtime 개발이 안정화 (Nullable 타입 변수)

val value : String? = null

다음 코드처럼, Type 뒤에 ? 를 통해 value는 Nullable Type 변수이며, null 값이 들어갈 수 있다.
Java 코드로 프로젝트를 진행하였을 때, NullPointerException을 주로 마주치게 되는데, 이러한 Runtime 시에 발생하는 NullPointerException 에러를 Kotlin에서는 처리할 수 있으며, 개발이 안정화된다.


5. Kotlin 에서는 기본 타입(Primitive Type)을 객체로 취급한다.

val intMaxValue = Int.MAX_VALUE	// Int 타입의 최대 값

//Byte타입의 최대값을 초과하여 error 발생
val byteMax : Byte = Byte.MAX_VALUE + 1 - - -> // Byte Type 생략 시 Int로 자동변경

//Short타입의 최소값
val shortRange:Short = -32768
val shortMinValue = Short.MIN_VALUE

println("intMaxValue= $intMaxValue")
println("shortRange= $shortRange,shortMinValue= $shortMinValue")
  • 연산에 참여가능한 기본 타입들은 Number클래스를 부모로 갖음

  • Int + Long 연산은 큰 타입으로 자동 변환 → Long = Int + Long

  • overflow가 발생하지 않도록 조심 ( 값이 Type의 Range를 벗어나지 않도록 하자. )

  • 문자열로 변경 시 : XXX.toString() --> 33.toString()

  • 다른 기본타입으로 변경 시 : XXX.toXXX --> 33.toFloat()


📌 Kotlin 개발 분야

  • Kotlin for ServerSide : Kotlin에서 서버 개발에 사용되는 여러 Framework 지원. 대표적으로 Spring

  • Kotlin for Android : Android 개발 시, Kotlin 언어를 사용하여 개발이 가능하다.

  • Kotlin for JavaScript : JavaScript 코드를 Kotlin으로 개발 가능.

  • Kotlin Native : iOS, macOS, watchOS, tvOS, Android, Windows, Linux, WebAssembly 등 여러 Platform에서 사용할 수 있는 코드 작성이 가능.

  • Kotlin for DataScience : 데이터 엔지니어링, 분석, 머신 러닝, 시각화 등을 Kotlin 언어에서 제공, 데이터 분석 도구인 Jupyter & Apache Zepplin 등을 지원, DataScience를 위한 다양한 Library, Tool을 제공.


📌 Kotlin 개발 도구(IDE)

본격적으로, Kotlin 언어에 대해서 공부를 시작해보자. 어떤 IDE를 사용하면 좋을 지, 어떤 IDE에서 Kotlin을 지원하는 지 알아보자.

  • Kotlin Play Ground - https://play.kotlinlang.org/ 주소로 이동하여 Web 상에서 Kotlin 코드를 작성하여 실행할 수 있다.

  • Kotlin REPL(Read-Eval-Print Loop)

  • Eclipse ( Kotlin Plug-In 설치가 필요하다. )

  • IntelliJ IDEA - JetBrains사에서 개발한 IDE 이다. Kotlin 또한 JetBrains사에서 개발하였으므로 이 IDE를 적극 추천한다.

    설치 주소 : IntelliJ IDEA
    필자는 앞으로 Kotlin 언어 및 Coroutine 등 여러 실습에 IntelliJ 를 사용할 예정이다.
    학생 계정이 있다면 매 1년마다 Ultimate버전을 무료로 사용할 수 있다.


📌 참조

profile
Yoon's Dev Blog

0개의 댓글