본문 바로가기
spring_boot/kotlin

Java와 Kotlin의 관계와 운용

by 잡다한 개발자 정모씨 2024. 4. 7.

 

저같은 경우는 처음 java로 접해 spring boot jpa를 사용함과 동시에 java를 계속 공부해왔습니다.

하지만 어느 계기가 생기면서 kotlin을 접하게 되었고 kotlin을 공부하게 되면서 java와 kotlin에 대해 어떤 연관성이 있고 어떤점이 다른지 어떤 방식으로 운용이 가능한지 궁금했었는데 마침 2023.5.15일자로 우아한테크에 부나의 java에서 kotlin이라는 강의를 접하게 되어 그 내용을 정리한 것 입니다.

혜성처럼 등장한 Kotlin

  1. 2011년: intellij를 개발한 JET BRAINS에서 처음 개발이 시작.
  2. 2016년: 안정이 된 1.0버전 출시
  3. 2017년: 구글IO에서 안드로이드 공식언어 지정.

개발 이유

하디 하리리 : “JET BRAINS에서 코틀린을 개발하게 된 이유가 C#, Java의 사용성이 70%나 되는 JAVA의 가독성과 유지보수성 좋지 않아 JAVA와 상호운용을 하기 위해 kotlin을 개발하게 되었다.”

Kotlin의 장점

정적 타입 지정 언어

  • 컴파일 시점에 타입이 지정된다. → 런타임 오류를 줄일 수 있다.
  • 미리 오류를 표기할 수 있다.

타입 추론

  • 변수 선언시 타입을 작성하지 않아도 val(value), var(variable)키워드 만으로 선언할 수 있다.
  • 알아서 지정.
  • val = 다른 값으로 다시 초기화 될 수 없다. java의 final과 같다고 보면 됨.
  • field라는 개념이 아니라 property라고 부른다. → getter, setter 를 자동으로 만들어줌.
  • val(value)는 getter만 자동으로 생성, var(variable)은 모두 자동으로 만들어줍니다.

Null Safety

  • kotlin은 Null을 다루는 방식이 명확하게 정해져있기 때문에 Null Safety를 보장한다.
  • 아래와 같이 null처리를 NullPointExeption을 처리를 할 수 있다.

  • Elvis연산자 ⇒ (name ?: “비회원”) 이런 식으로 사용하는데. 비교 대상(name)이 null이 아닌 경우 name을 그대로 반환하고 null일 경우 “비회원”을 반환하는 방식

간결하고 명확하다

Kotlin은 java에 비해 코드를 간결하고 명확하게 할 수 있다는 점이 있다. → 비교적 이해가 쉬움

 

SAM(Single Abstract Method)

  • 메소드에게 인자를 넘기기 위해 무명 클래스의 인스턴스를 만들어야한다. 하지만

  • 아래와 같이 람다식으로 넘길 수 있다!

Coroutine

  • 코틀린 Kotlin은 비동기적 코드를 쉽게 작성할 수 있도록 Coroutine를 제공
  • kotlin 고유 개념은 아니다.
  • Thread에서 실행되는 단위, 경량 Thread라고 불릴 만큼 훨씬 가볍습니다. → 전환비용이 저렴

Kotlin과 Java의 상호 운용

  • Kotlin과 Java는 100%상호 운용이 가능합니다.
  • 코틀린을 컴파일하게 되면 java와 동일한 바이트 코드가 생성됩니다.
  • kotlin과 java코드가 있을때 이를 각각 kotlin컴파일러와 java컴파일러로 컴파일 하게 되면 최종적으로 class파일이라는 바이너리(이진)코드가 생성이 되는데 그걸 JVM에 classloder가 가져와서 실행을 시키면 결국 똑같은 언어로 인식하게 된다.

 

 

요약한 정보 출처: https://www.youtube.com/watch?v=eA8e18ddSms

'spring_boot > kotlin' 카테고리의 다른 글

[Kotlin] listOf와 mutableListOf의 차이  (0) 2024.04.22
Kotlin 기초 문법  (0) 2024.04.07