본문 바로가기
생각정리, 주절주절/개발에 도움되는 것들

Kotlin이란? (+코틀린은 왜 관심을 받는걸까?)

by lumayi 2021. 11. 4.

 

요즘 기술블로그에 자주 보이는 Kotlin에 대해서 알아보려한다. Kotlin은 안드로이드를 개발할 때만 자주 쓰이는 언어로만 알고 있었는데 요즘은 웹/앱 할 것 없이 많이 쓰는 것 같다. 특히 카카오는 Spring을 탈출하고 Ktor로 이전해가고 있는데 이 ktor, k8s와 궁합이 잘 맞는 언어가 Kotlin이라고 하니 더욱 많이 쓰이게 되는 것 같다.

 

코틀린은 JVM에서 동작하는 정적 타입의 프로그래밍 언어이다.

내가 코틀린을 처음보고 느낀 점은 Java를 Python화 시킨다면 이렇게 되지않을까?이다. Python을 쓸 때 편리했던 기능들이 Kotlin에서 모두 이루어진 것 같았다. 자바의 기본 코드들을 엄청나게 축약시킬 수 있었을 뿐더러 가장 좋았던 점은 NullPointerException의 지옥에서 벗어날 수 있었다는 것인데 몇 개의 예시를 알아보자.

 

<Kotlin>

class User(
   var firstName: String,
   var lastName: String?
)

위의 Kotlin 클래스를 디컴파일하면  이렇게 된다.

public final class User {
 	@NotNull
 	private final String firstName;
 	@Nullable
 	private String lastName;

 	public User(@NotNull String firstName, @Nullable String lastName) {
 		Intrinsics.checkParameterIsNotNull(firstName, "firstName");
 		super();
 		this.firstName = firstName;
 		this.lastName = lastName;
 	}

 	@NotNull
 	public final String getFirstName() {
 		return this.firstName;
 	}

 	@Nullable
 	public final String getLastName() {
 		return this.lastName;
 	}

 	public final void setLastName(@Nullable String var1) {
 		this.lastName = var1;
 	}
}

 

코틀린은 자바와 다르게 String이라고 꼭 문자열로 지정해주지 않아도 firstName="firstName"; 만으로도 변수 선언이 가능하다. 위의 코드에 있는 var은 자바의 final과 같은 선언 기능을 한다. 또한 세미콜론도 굳이 써주지 않아도 되고, Java와도 함께 사용이 가능하다. 상당부분이 파이썬과 유사함을 알 수 있다!

 

그리고 디컴파일된 nullable과 notnull 어노테이션을 보면 알 수 있듯이, 문자열 뒤에 ?(물음표)를 붙인다면 Null이 가능한 것이고, 없다면 null은 불가능하다. 그리고 이 null을 확인 하지않으면 컴파일되지않기 때문에 nullPointerException 오류에서 자유로워질 수 있다.

 

fun firstNSquares(n: Int): Array<Int>
  = Array(n, { i -> i * i })

이것은 n개의 제곱값이 든 리스트를 생성하는 함수인데, 기존 Java의 코드에 비해 매우 간략해짐을 알 수 있다. 자바라면 이 함수의 구현을 위해 변수를 따로 선언하고, if문과 반복문을 돌리고 return값을 지정해주어야하겠지만 Kotlin은 단 2줄로 모든 것이 완성된다.

 

이외에도 컬렉션 함수, 컨트롤 제어 구조, 상속 등 다양한 이점이 있는 코틀린이다. 자바보다 훨씬 효율적으로 쉽고 간결하게 쓸 수 있기에 앞으로 Kotlin 점유율이 계속 커질 수 밖에 없겠구나 생각하게 됐다. 나도 곧 안드로이드 개발을 시작할 것이기에 어서 Kotlin을 배워보아야겠다. 아 그리고 안드로이드 스튜디오에서 Java코드를 Kotlin코드로 한 번에 변환하는 방법은 menu의 code로 들어가서 Contvert to Java를 Kotlin으로 바꾸기를 선택하면 된다!

 

https://academy.realm.io/kr/posts/kotlin-does-java-droidcon-boston-2017-gonda/

 

Kotlin과 Java 전격 비교

Kotlin을 사용하면 기반 코드를 줄이는 데 큰 도움이 됩니다. 하지만 그 이상으로 어떤 일을 할 수 있을까요? 디컴파일된 Kotlin을 탐구해서 어떤 작업을 하는지 알아보겠습니다. 소개 저는 미시간

academy.realm.io

Kotlin에 대해서 굉장히 잘 설명해주셨다! 참고했던 사이트이다.

반응형