App_Dev/Android : Kotlin

[ 앱 개발자 도전기 : 안드로이드_코틀린 ] Kotlin 특징 - 코틀린이란?? 왜 쓰는걸까??

안다미로 : APP & Web3 & D.S 2024. 11. 10. 21:56

 

 

 

 

 

[ 앱 개발자 도전기 : 안드로이드_코틀린 ] 

Kotlin 특징 - 코틀린이란??  왜 쓰는걸까??

 


∇ Kotlin : 코틀린의 특징 & 코틀린 사용 이유.

목   차

1. 코틀린이란
2. 코틀린의 특징.
3. 코틀린을 사용하는 이유는??

 

 


 

Ⅰ. 코틀린 [Kotlin] 이란.


 

      ※ 코틀린의 시작.

            - 젯브레인즈(jetbrains)에서 개발한 언어.

            - 2011년 발표, 2017년 구글에서 안드로이드-공식언어로 선택.

 

 

      ※ 코틀린으로 무엇을 할 수 있는가???

            : 'Java'를 대체할 수 있는 언어로,  다양한 채널에서 활용 가능한 멀티 플랫폼.

                        * Kotlin / JVM  : 자바 가상 머신 상에서 동작하는 앱(자바앱/안드로이드앱) 개발

                        * Kotlin / JS : 자바스크립트로 컴파일하면서, DB부터 서버- 클라이언트까지 다루는 풀스택 웹개발.

                        * KMP(Kotlin Multiplatform) / Kotlin - Native

                            : 안드로이드 네이티브 환경과, 코틀린 멀티플랫폼을 활용하여 

                                  안드로이드와 IOS뿐만 아니라 임베디드, IOT 등 에도 활용 가능.

 

 

               ☆ 즉 !  서버 안드로이드 등 Java가 실행되는 모든 곳에서 사용 가능합니다.

 

 


Ⅱ. 코틀린 [Kotlin] 특징.


 

         ◎ 정적 타입 지정 언어.

 

                   - "코틀린"은 "정적-타입 지정언어" 입니다.

 

                           - > 모든 프로그램의 구성요소를  '컴파일 시점'에 알 수 있고,

                                    컴파일러가 타입을 검증해줍니다. !

                        

                               == Java와 다르게, "개발자가 타입을 선언하지 않아도 된다는 뜻" 입니다.(타입추론지원)

                 

                               === '코틀린 컴파일러'문맥으로부터, 변수타입을 자동으로 유추 가능하기 때문에

                                          타입 선언을 생략해도 됩니다.

                                          -> 개발자가 아닌 컴파일러가 프로그램 정확성을 검증한다는 것이기 때문에

                                                  ' 프로그램이 오류로 중단될 가능성'이 줄어들게 됩니다!

 


         ◎ Null 안전성.

 

                   - "코틀린"은 "Null"이 될 수 있는 타입도 지원합니다.

 

                        - > Null 값 허용여부를 컴파일-단계에서 검사하기 때문에

                                  "널 포인터로 인한 프로그램 중단도 예방 가능" 합니다.

 

                         == Java에선 런타임 단계에서 널이 입력 가능하기에, 

                                  널 포인터 예외( null pointer exception ) 으로 죽는 경우가 많은데.

                                ->> '코틀린'은 이걸 잡아줍니다,  이를 널포인터(NPE)에서 자유롭다고 표현합니다.

 


         ◎ 함수 타입에 대한 지원.

 

                   - "코틀린"은 함수형 프로그래밍(Functional Programming)을 지원합니다.

 

                          - > 거의 모든 프로그램의 작동을 위한 코드 조각을 순수함수로 나누어서 문제를 해결.

 

                                   a. 함수를 작성해서 변수에 저장 가능하고,

                                   b. 함수를 작성해서 다른함수에 전달도 가능하며,

                                   c. 함수를 반환할 수도 있습니다.

 

                          ->  ' 가독성을 높이고 유지보수를 용이' 하게 할 뿐만 아니라

                          ->> 함수를 통해 불변데이터 구조를 사용하기 때문에, ' 다중 스레드 '를 사용해도 안정적입니다.

 

 


 

ⅲ. 코틀린 [Kotlin] 을 사용하는 이유는?


  ★ 결론적으로 이야기하면,   

       "코틀린" 은 'Java와 호환도 잘되면서 실용적으로 간결하면서 안전한 언어' 이기 때문입니다.

 

 

         ◎ 자바와의 호환성.

                - 자바 메소드 호출,  자바클래스 상속,   인터페이스 구현,  자바 어노테이션 등등

                     ' 자바에서 적용하던걸 모두 코틀린에서'  할 수 있습니다.

                         + 심지어, 기존 자바 라이브러리를 가능하면 최대한 활용.

 

         ◎ 실용적.

                - 다른 언어들에서 이미 성공적으로 검증된 해법과 기능들만을 담았습니다.

 

 

         ◎ 간결성.

                - 코틀린 코드는 간단하고 간결합니다.

                      ex) getter, setter, 생성자 파라미터 대입로직 등등

                     ' 자바에서 번거로웠던 코드를 코틀린에서 묵시적을 제공합니다.

                         + 람다 표현식도 지원하기 때문에,  작은 코트 블록도 라이브러리 함수에 쉽게 전달 가능합니다.

 

 

         ◎ 안전성.

                - 'JVM' 에서 실행하기 때문에 상당한 안전성을 보장 가능합니다.

 

                   == JVM을 사용하면,

                메모리안전성을 보장하고 버퍼오버플로우도 방지하고, 동적 메모리 할당으로 인한 문제도 예방 가능합니다.

 

                  == 정적타입 지정언어로,

                        타입자동추론을 사용해서 타입 안전성을 보장합니다.

                         ++ 널타입 지원도 되기 때문에, 'NullPointerException'으로 인한 프로그램 오류도 방지해줍니다. !

                               [ Nullable   &   Non-Null 타입 활용. ]