코틀린(Kotlin)과 자바(Java)

Bien·2022년 2월 13일
2
post-thumbnail

나는 crud 게시판도 눈물 흘리며 만드는 쪼렙이지만, 이미 현업에서 일하는 멋진 친구에게 요즘은 무슨 언어가 좋아? 라고 물어본적이 있다.
프론트냐 백이냐 웹이냐 앱이냐 다 다르겠지만 일단 백엔드를 배운다고 하니 친구가 천천히 배워보라며 말해준 언어들 중 하나가 코틀린Kotlin이다. 궁금하니까 자바도 잘 못하는 초보자 입장에서 깊이 없는 글을 써보려고 한다.

🤔코틀린이 뭔데?

인텔리제이의 개발사 JetBrains에서 공개한 JVM기반의 언어. Java와 유사하지만 더 간결하고, 호환도 100% 된다. 그래서 Java를 활용하는 거의 모든곳에 코틀린을 활용할 수 있다고 한다.

익숙한 젯브레인 만나서 반갑고...! 아무튼 코틀린을 얄려준 친구가 코틀린 한번 쓰면 자바로 못돌아간다굉장히 유혹적인말...소리를 해서 뭐가 더 좋다는건지 검색을 해봤다.

1. 자바는 너무 딱딱해. 근데 난 아님.

예를 들어 자바의 경우 정적 타입 언어이다. 즉, 코드를 작성할때 직접 타입을 지정해줘야 한다.
그럼 코틀린은 동적이라서 좋은거냐? 하면 그건 아니고🙄... 코틀린도 정적 타입 언어이다. 다만 코틀린은 문맥을 파악해 타입을 추론할 수 있기 때문에 타입 선언을 생략할 수 있다는 장점이 있다.

var x: Int = 10 
// Int를 생략할 수 있다. 
var x = 10

2. NullPointerException(NPE) 그게 뭔데?

자바로 개발을 하는 사람들에게 NullPointerException은 숙명 운명 데스티니... 아무튼 그런 오류이다. 놀랍게도 코틀린은 이러한 NullPointerException오류에서 어느정도 자유로운듯 하다. Null-safety를 언어차원에서 지원하기 때문이라는데... 대충 알아보자.

Null-safety는 null 안전성을 도와주는 개념이다. 코틀린은 널이 될 수 있는 타입과 널이 될 수 없는 타입(Nullable types and Non-Null Types)을 구분해서 NPE 발생 가능성이 있는 연산 및 코드를 사전에 방지한다.

...쓰면서도 뭔말인지 모르겠다😥. 처음 보는 말이 있어서 조금 더 구체적으로 정리해보기로...

Nullable types과 Non-Null Types

Nullable typesnull이 담길 수 있는 타입을 의미한다. 자료형에 ? 를 붙여 명시한다. 반면 Non-Null Typesnull을 허용하지 않는다.

var nullable: String? = "abc"
nullable = null // 컴파일 성공
var nonNullable: String = "abc"
nonNullable  = null // 컴파일 에러

이처럼 코틀린은 Non-Null에 null값이 들어가려고 하면 컴파일 에러가 발생한다. 이를 통해 코틀린은 NullPointerException에서 어느정도 자유로울 수 있다.
그러나 아주 아쉽게도 자바 라이브러리를 사용하는 경우, 자바는 Non-Null 타입이 없기 때문에 Nullable 타입으로 리턴되서 NPE가 발생 하는 경우가 있다고 한다.



이렇게 정말 초 심플하게 코틀린에 대해 훑어봤다. 다 정리하진 못했지만 짧게 구글링해서 알아본 코틀린은 실용적이고, 간결하며, 그렇다고 안전성을 포기하지도 않고, 요즘 대세인 함수형 프로그래밍을 사용함에 있어서도 유리한 멋진 언어로 보인다😎. 특히 구글에서도 안드로이드 공식 개발 언어로 코틀린을 지목한 만큼 미래가 창창한 언어라는 것엔 아무도 부정하지 못할거 같다는 생각이 들었다.

나도 언젠간 제대로 공부를 할 예정이지만 솔직히 한국에서는 자바가 10년은 더 해먹을거 같고...🙄 아직은 학원에서 배우는 자바, 스프링부트에 충실할 예정이다.

profile
🙀

1개의 댓글

comment-user-thumbnail
2022년 2월 18일

잘 보았습니다! 감사합니다 :)

답글 달기