코프링 첫 경험 🙄

김범진·2022년 4월 17일
19

Spring Boot

목록 보기
1/2
post-thumbnail

코프링?

코틀린 + 스프링 의 약자로 말 그대로 코틀린이라는 언어를 통해 스프링 프레임워크를 구현하는 것을 말한다. 최근 많은 메이저 회사들이 자바에서 코틀린으로 변경하고 있는 추세이다.

이걸 왜 사용해?

나는 백엔드 개발에 뛰어든지 아직 1년밖에 되지 않은 주니어 개발자다. 하지만 지금까지 자바를 사용해 스프링 부트 개발을 잘 해왔었다. 내가 느끼기에는 자바로 개발을 해도 큰 문제가 없고 충분히 좋다고 느껴진다.

그럼에도 많은 개발자들이 자바에서 코틀린으로 넘어가고 있는 추세이다. 왜 그럴까?

코틀린을 도입해야 하는 많은 이유를 아래에서 함께 알아보자.

1) 다양한 프로그래밍 패러다임

코틀린은 다양한 선택지를 주고 해결하려는 문제에 대한 가장 적절한 방법을 선택할 수 있도록 한다. 클래스에서 모든 것을 작성할 필요도 없고 모든 코드를 컴파일할 필요도 없다. 다양한 프로그래밍 패러다임을 제공하기 때문에 그것 중에 하나를 선택하거나 섞어서 사용하면 된다. 코틀린의 장점은 아이디어를 빠르게 구현할 수 있다는 점과 어떤 디자인 패턴을 적용하면 좋을지 금방 확인해 볼 수 있고 다른 언어들이 강요하는 양식이 필요 없다는 점이다.

코틀린에서도 Java처럼 클래스를 만들 수도 있고 객체지향으로 코드를 만들 수도 있다. 하지만 코틀린에서는 보일러플레이트 코드(Boilerplate Code)가 필요 없다. 코틀린은 더 적은 코드로 Java와 같은 결과물을 만들어낼 수 있다. 코틀린은 클래스의 계층을 어쩌다 보니 만드는 게 아니고 계획적으로 만들도록 가이드 해준다. 클래스는 기본적으로 final이 붙어있다. 만약에 클래스를 상속하고 싶다면 해당 클래스에 open 키워드를 명시적으로 표시해야만 한다.

2) 타입 추론으로 사용하는 정적 타입

정적 타입 언어는 컴파일 시간에 타입 안정성을 제공한다. 그러나 코틀린은 다른 정적 타입 언어들보다 더 나아가서 오류를 방지한다. 예를 들면, 코틀린은 non-nullable 타입과 nullable 타입을 구분한다. 그리고 Scala, F#, Haskell처럼 아주 강력한 타입추론을 할 수 있다. 그렇기 때문에 모든 타입을 명시하지 않아도 된다.

또한, 타입이 100% 명확하지 않은 경우 코틀린은 개발자에게 타입을 명시할 것을 요청한다. 타입 추론을 잘 해주기 때문에 우리는 개발에만 집중할 수 있고, 코드는 타입 안정성을 갖추게 된다.

3) 풀스택 개발을 위한 하나의 언어

javac 컴파일러가 Java 소스 코드를 JVM에서 실행시키기 위해 바이트코드로 컴파일하는 것처럼, kotlinc-jvm은 코틀린 코드를 JVM에서 실행시키기 위해서 바이트코드로 컴파일한다.

코틀린은 서버사이드 코드, 안드로이드 애플리케이션 개발에도 사용이 가능하며 특정 버전의 가상머신을 위한 배포도 가능하다. 백엔드에서 스프링 프레임워크를 사용하고, 클라이언트로 안드로이드나 iOS 네이티브 코드가 필요할 때 코틀린 하나로 코딩이 가능하다. 코틀린 코드와 자바 코드를 섞어서 사용할 수도 있어서 레거시 코드가 많이 줄어들 수 있다고 생각한다.

4) 자연스럽고 우아함

코틀린은 필드(field), 접근자 메소드(getter, setter), Java Bean 컨벤션에서 제시하는 필수적인 요소들을 제공한다. 적은 노력으로 더 좋은 결과를 낼 수 있다.

코틀린은 몇 가지를 선택사항으로 만들었다. 예를 들면, 세미콜론(;)이 선택사항이다. 세미콜론을 강제하지 않는 것이 보기 좋은 구문을 만들고 내부 DSL을 더 읽기 좋게 만들어준다. 그리고 코틀린은 infix 어노테이션을 제공한다. infix 어노테이션은 온점(.)과 중괄호({})를 선택사항으로 만들어둔다.

이 곳에서 코틀린의 장점에 대해 더 자세하게 설명해주니 참고해도 좋을 것 같다.

아직도 모르겠다고?

코틀린의 편함을 직접 체감해보기 위해 코틀린을 이용해 간단한 게시판을 만들어 보았다.

일단 코틀린 문법을 찾아보고 구현을 해보는 데에 있어 거의 3시간 정도 걸린 것 같다. 코틀린에 대해서 하나도 모르는 상태였기 때문에 생각보다 시간이 좀 걸렸다 😥

내가 만들어 보면서 "아 이거 조금만 공부하면 자바보다 훨씬 편하겠다 " 라는 생각이 들었다. 자바를 이용해 개발을 할 때에 귀찮고 반복적인 일들을 코틀린에서는 순식간에 할 수 있었다. 특히, null 처리하는 부분과 dto 만들 때 사용한 데이터 보관용 클래스(data class)에 있어서 새로운 세상을 맛보았다.

더 찾아보니까 자바도 record를 이용해 데이터 클래스처럼 사용할 수 있긴 하네요..

결론

새로운 프로젝트는 해야겠고 자바로 구현하는게 조금 지루해진 사람들은 코틀린을 이용한 스프링 부트 개발을 도전해보면 좋겠다고 생각한다. 아직 코틀린에 대해서 아는 것은 없지만 이번 기회에 코틀린이라는 언어에 대해 충분히 매력을 느꼈고, 공부해보고 싶은 마음이 생겼다.

코프링 공부할 사람 여기여기 모여라!

profile
새로운 도전은 즐겁고 책임은 무겁다

7개의 댓글

comment-user-thumbnail
2022년 4월 17일

항상 좋은 글 감사합니다 :)

1개의 답글
comment-user-thumbnail
2022년 4월 23일

잘 읽고 갑니다 :)

1개의 답글
comment-user-thumbnail
2022년 4월 24일

코틀린 🙌 🙌 🙌

2개의 답글