요즘 기술블로그에 자주 보이는 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으로 바꾸기를 선택하면 된다!