본문 바로가기

기초 지식/Kotlin

[Kotlin] 코틀린과 자바의 차이

저는 Java를 주로 사용합니다. 그런데 취미로 Flutter를 이용해서 앱을 만들어보려고 하던 중 Java와 완전호환성을 가지고 있고 새로운 언어인 Kotlin에 관심이 가더라구요. 하지만 Java보다 어떤것이 더 나은지 아니면 차이점은 무엇인지 정도는 알고 써야 제가 익숙한 Java를 사용하지 않는 이점이 있을 것 같아서 찾아보고 정리하게 되었습니다.

 

kotlin이란

Java Platform을 대상으로 하는 새로운 프로그래밍 언어로서 즉, JVM에서 돌아가는 언어이다. Jetbrains에서 만들었다.

 

Kotiln의 철학

  • 실용성
    • Kotlin은 다른 프로그래밍 언어가 채택한 검증된 해법과 기능을 사용하여 복잡도를 줄인 실용적인 언어를 지향하고 있습니다.
  • 간결성
    • 코드를 더 간단하고 간결하게 만들어 내용을 쉽게 파악할 수 있게 했다. Kotlin에서는 구조를 만족시키기 위해 반복적이고 부수적인 코드를 줄이기 위한 기능을 제공한다.
  • 안전성
    • 타입 추론을 제공하여 타입 안정성을 보장하고 컴파일 시점에 오류를 더 많이 방지해준다.
  • 상호운용성
    • Java 라이브러리들을 Kotlin에서도 그대로 사용할 수 있다.

Java의 특징

우선은 Java의 특징부터 알아야지 비교가 가능할 것 같습니다. 간단하게만 나열하자면 아래와 같습니다.

 

  • 플랫폼에 구애를 받지 않는다
    • JVM(Java Virtual Machine)만 있다면 어느 플랫폼에서든지 자바 어플리케이션을 작동시킬 수 있다.
  • 포인터 개념 대신 자동으로 메모리 관리
    • JVM에서 지원하는 기능으로 Garbage Collection을 이용하여 자원을 자동으로 관리해줍니다.
  • OOP(Object Oriented Programming)
    • 객체라는 단위를 메인으로 객체간의 상호작용을 통해 프로그래밍을 하게됩니다.
  • 동적 로딩
    • 필요한 시점에 클래스 정보를 메모리에 로드할 수 있습니다.

 

Kotlin의 특징

  • 플랫폼에 구애를 받지 않는다
    • Java와 동일하게 JVM만 있다면 플랫폼에 구애받지 않고 동작할 수 있다.
  • 정적 타입 지원
    • Java와 동일하게 정적 언어의 특징을 가지고 있다. 그래서 컴파일시에 자료형이 결정된다.
  • 함수형 프로그래밍 지원
  • 무료 오픈소스
    • Java는 점점 유료화가 진행되고 있는 반면에 Java와 호환되지만 무료 오픈소스이다.

 

Kotlin과 Java의 사용법에서의 차이

Java와 사용할 때 차이가 발생하는 부분에 대해서 살펴보겠습니다.

 

변수/상수

//Java
String a = "";
final String b = "";

//Kotlin
var a = ""
val b = ""

 

Optional

//Java
String nullStr = Optional.ofNullable(null).toString();
String nonNullableStr = Optional.of("").toString();

//Kotlin
var nullStr? = null
var nonNullStr = ""

 

Kotlin에서는 Optional(?)을 통해서 간결하게 nullable한 변수와 nonNullable한 변수를 나눠서 표시할 수 있습니다.

 

Data Class

//Kotlin
data class KotlinData(var param: String?, var index: Int)

 

Kotlin에서는 DTO를 생성할 때 간결하게 만들 수 있도록 data class를 제공합니다. Java에서는 생성자, getter, setter를 만들어야 하는 부분을 생략할 수 있게 해주는 역할입니다.

 

정리

Kotlin의 가장 큰 특징은 아무래도 Java와 완벽한 호환이 된다는 점입니다. 이러한 바탕을 두고 간결성과 실용성이 조금 더 추가된 언어라고 할 수 있습니다.

 

하지만 'Java를 버리고 Kotlin만 선택할 수 있는가' 라는 질문에 대해서는 개인적으로는 그럴 수도 있지만 권장하지 않는다라고 할 수 있겠습니다. 물론 Kotlin 코드로 모든 Java 코드를 대신할 수 있습니다. 하지만 다른 코드를 이해하고 사용하는 것에는 Java를 잘 아는 것이 필요합니다.

 

예를 들어 현 시점에서 라이브러리 같은 코드는 Java로 이루어진 것들이 월등히 많습니다. 이를 Kotlin으로 완전히 변경 후 사용한다는 것은 시간이 걸릴 것 같습니다. 그러므로 지금 바로 사용할 때는 Java 코드를 이해하고 적용해야 할 필요가 있을 것 같습니다.

반응형