ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 1장 - 코틀린소개
    Kotlin/코틀린인액션요약 2022. 9. 8. 00:01
    728x90

    코틀린이란?

    코틀린은 자바 플랫폼에서 돌아가는 새로운 프로그래밍 언어입니다.

    기존 자바 라이브러리와 프레임워크와 함께 잘 동작하며 성능도 자바와 같은 수준입니다.

     

     

    코틀린의 철학은 간결하고 실용적이며, 자바 코드와의 상호운영성을 중시합니다.

     

     

    코틀린 맛보기

    // 데이터 클래스
    data class Person(
        val name: String,
        val age: Int? = null // 널이 될 수 있는 타입과 파라미터 디폴트 값
    )
    
    // 최상위 함수
    fun main(args: Array<String>) {
        val persons = listOf(
            Person("Alice"),
            Person("Bob", age = 29) 
        )
    
        val oldest = persons.maxBy { it.age ?: 0 } // 람다 식과 엘비스 연산자
        println("The oldest is: $oldest") // 문자열 템플릿
    }

    maxBy 함수에 전달한 람다식은 파라미터를 하나 받습니다.

    it은 람다 식의 유일한 인자를 사용함을 의미합니다.

     

    Alice의 나이를 지정하지 않았지만 엘비스 연산자가 null을 0으로 변환해주기 때문에 Bob이 가장 나이가 많은 사람으로 선정될 수 있습니다.

     

    코틀린의 특징

    멀티 플랫폼 언어(자바뿐만 아니라 자바스크립트로도 코틀린을 컴파일할 수 있음)

     

     

    정적 타입 지정 언어(동적 언어는 컴파일 시 에러를 걸러내지 못하는 단점이 존재한다)

    하지만 조금 특이한 점은 컴파일러가 문맥으로부터 변수 타입을 자동으로 유추하기 때문에 타입 생략이 가능합니다.

    var x = 1

    성능, 신뢰성, 유지보수성, 도구 지원에서 장점을 가집니다.

    또한 컴파일 시점에 NPE가 발생할 수 있는지 검사하여 프로그램의 신뢰성을 더 높일 수 있습니다.

     

     

    함수형 프로그래밍과 객체지향 프로그래밍 둘다 가능

    함수형 프로그램으로 코드는 간결해지며 thread safe 합니다.

    개발자는 상황에 따라 FP와 OO를 사용할 수 있습니다.

     

    Intellij를 만든 젯브레인이 만들었고 무료 오픈소스

     

    코틀린이 활용되는 부분

    서버 프로그래밍 (Kotlin + Spring)

    HTML을 빌더 패턴으로 손쉽게 생성할 수 있습니다.

    영속성 프레임워크에서 완전한 타입 검사를 지원하며 DB Query를 실행할 수 있습니다.

     

    안드로이드

     

     

    코틀린의 철학

    자바와의 상호운용성에 초점을 맞추며 실용성, 간결성, 안정성을 가집니다.

     

    실용성

    코틀린은 다른 프로그래밍 언어가 채택한 성공적인 검증된 해법과 기능을 사용합니다.

    이로 인해 언어의 복잡도가 줄어듭니다.

    코틀린을 처음 배우는 사람을 자바에서 사용한 익숙한 프로그래밍 스타일을 사용하다가 나중에 코틀린의 더 강력한 특성을 발견하고 적용하며 코드가 간결해집니다.

     

    간결성

    개발자는 코드를 새로 작성하는 시간보다 기존의 코드를 읽는 시간이 더 깁니다.

    수정해야 하는 부분을 찾기 위해서는 수많은 양의 코드를 읽어야 합니다.

    따라서 코드의 간결함은 매우 매우 중요합니다.

    @Data와 같은 보일러 플레이트 코드들을 코틀린은 묵시적으로 제공합니다.

     

    안정성

    코틀린은 정적 타입 언어로써 타입 안전성을 보장합니다.

    또한 컴파일 시점에 null이 될 수 있는 값을 추적하여 실행 시점에 NPE가 발생할 수 있는 연산을 금지시킵니다.

    val s: String? = null // 널이 될 수 있음
    var s2: String = "" // 널이 될 수 없음

    또한 ClassCastException를 방지해줍니다.

    어떤 객체의 타입을 검사하고 그 객체가 그 타입에 속한다면 해당 타입의 메서드나 필드 등의 멤버를 별도의 케스트 없이 사용할 수 있습니다.

    if(value is String) //만약 value라는 객체가 String이라면
    	println(value.toUpperCase()) //String으로 따로 cast 하지않아도 String 메서드를 호출 할 수 있음.

     

     

    상호운용성

    자바의 기존 라이브러리를 그대로 사용할 수 있습니다.

    자바 클래스를 상속하거나 인터페이스를 구현하거나 자바 애노테이션을 코틀린 코드에 적용하는 등의 일이 가능합니다.

    자바 코드에서도 코틀린 코드를 호출할 때도 아무런 노력이 필요 없습니다.

    이로 인해 자바, 코틀린 코드를 프로젝트에서 원하는 대로 섞어 쓸 수 있는 궁극적인 유연성을 발휘할 수 있습니다.

     

    코틀린 코드 컴파일

    자바와 같은 컴파일 언어로 .kt라는 확장자를 가집니다.

    자바와 마찬가지로 컴파일러를 거쳐 .class파일으로 변환됩니다.

     

    컴파일된 코틀린 코드는 코틀린 런타임 라이브러리에 의존적입니다.

    따라서 코틀린으로 컴파일한 애플리케이션을 배포할 때는 런타임 라이브러리도 함께 배포해야 합니다.

    실제로 개발을 진행할 때는 maven, gradle, ant 등의 빌드 시스템을 사용하는데 그런 빌드 시스템과 호환됩니다.

     

     

    온라인 놀이터

    try.kotl.in에서 코틀린 코드를 작성하고 컴파일한 다음 실행할 수 있습니다.

    프로그램을 설치하거나 설정할 필요 없이 손쉽게 사용할 수 있습니다.

    코틀린을 대화식으로 배울 수 있는 Kotlin Koans도 있습니다.

     

    자바-코틀린 변환기

    inllij에서 자바 코드를 코틀린 코드로 변환하여 볼 수 있습니다.

     

    변환기가 가장 코틀린스러운 코드를 제안해주지는 못하지만 잘 작동하는 코틀린 코드를 알려주기 때문에 원하는 바를 코틀린으로 달성할 수 있습니다.

     

    코틀린 문법이 잘 기억나지 않는 경우 변환기를 유용하게 써먹을 수 있습니다.

     

     

     

     

     

    출처

    코틀린 인 액션 

    https://incheol-jung.gitbook.io/docs/study/kotlin-in-action/1

     

    1장 코틀린이란 무엇이며, 왜 필요한가? - Incheol's TECH BLOG

    코틀린을 JVM에서 실행한다는 사실은이미 상당한 안전성을 보장할 수 있다는 뜻이다. 예를 들어 JVM을 사용하면 메모리 안전성을 보장하고, 버퍼 오버플로우를 방지하며, 동적으로 할당한 메모리

    incheol-jung.gitbook.io

    https://chohongjae.github.io/kotlin/%EC%BD%94%ED%8B%80%EB%A6%B0-%EC%9D%B8%EC%95%A1%EC%85%98-1%EC%9E%A5/

     

    코틀린 인액션 1장

    코틀린 기본 기능 데모 코틀린은 자바 플랫폼에서 돌아가는 새로운 프로그래밍 언어다. 간결하고 실용적이며, 자바 코드와의 상호운용성을 중시하고, 현재 자바가 사용중인 곳이라면 대부분 코

    chohongjae.github.io

     

    'Kotlin > 코틀린인액션요약' 카테고리의 다른 글

    6장 - 코틀린 타입 시스템  (0) 2022.09.16
    5장 - 람다로 프로그래밍  (0) 2022.09.13
    4장 - 클래스, 객체, 인터페이스  (1) 2022.09.12
    3장 - 함수 정의와 호출  (1) 2022.09.11
    2장 - 코틀린 기초  (1) 2022.09.10

    댓글

Designed by Tistory.