낭만적인 언어

김건우·2024년 9월 30일

개발 이야기

목록 보기
7/14
post-thumbnail

시작하기 전에...
아래 내용은 필자의 지극히 주관적인 의견입니다. 그저 이런 사람도 있구나 생각하고 읽어주세요, 감사합니다.
(피드백과 의견은 항상 환영입니다!)

자프링!

나는 원래 올해 초까지만 해도 자바와 스프링 부트를 가지고 서버 개발을 이어나갔다. 이미 자바에 적응했고 크게 불편한 점을 못느껴서 옆에서 다른 동기들이 코틀린으로 갈아탈 때 나는 자바를 고집하며 사용했다.

그러다 처음 코프링으로 짠 코드를 보고 든 생각은

이게 뭐야, Java보다 알아먹기 어렵게 생겼는데? 역시 Java가 근본이야.

엄... 물론 매우 거만한 생각이지만 당시 Java 만능 주의에 빠져있던 나는 꾸준히 Java를 고집하였다.

동기들은 제발 좀 코틀린 맛만 보라고 했지만 나의 신념은 확고했다.

프로젝트

팀 프로젝트에서도 원래 자프링을 이용해서 개발을 했는데 같은 서버팀원이 나에게 V3 개발 할 때 코틀린으로 마이그레이션 해보지 않겠냐고 제안해서 과감히 수용하게 되었다.

개발을 진행하면서 느낀 점은 새로운 언어로 개발을 하니 개발 속도가 반 정도 줄어들었다는 것이다. 하루면 짰을 코드를 며칠 씩이나 붙잡고 있었으며, 금방 해결할 에러도 코드 검색하고 또 고친다고 더 많은 시간을 소요했다.

그래서 진즉에 코틀린으로 하고 있던 서버팀원과 주변 친구들에게 많은 도움을 얻었다.

낭만있잖아 한잔해

???: 자바는 틀딱 언어다

???: 아니 자바를 쓸 바에는 코틀린 쓰지 뭔 근바야

자바를 향한 수많은 억까들이 있었으나 나는 자바가 정말 좋은 언어라고 생각한다. 일단 나에게 있어서 백엔드를 시작할 수 있게 해준 언어이기에 애착이 가기도 하지만, 자바를 공부하다 보면 자연스럽게 객체 지향적인 코딩이 가능하도록 만들어 준다는 점이 좋다.

또한 아직까지 국내에서는 "Java 공화국" 라고 동기들끼리 농담할 정도로 자바를 애용하며 많이 사용한다. 물론 오래된 언어도 맞고 코드가 길며, 어너테이션을 다는 것이 귀찮고, null하나 처리 못해서 빵빵터지는게 일상인 언어지만.

낭만

낭만이 있지 않는가.

코틀린과 베프하기

점점 코틀린과 함께하는 시간이 길어지면서 어느새 3달 정도를 코틀린으로 개발했다. 그러다 보니 조금은 코틀린 코드를 봐도 어지럽지 않으며, 어느샌가 코틀린이 주는 편안함에 중독되기 시작했다.

코틀린이 코드 상에서 자바에 비해 주는 편안함이 뭔지 간단하게 설명하자면.

Getter, Setter

코틀린에는 데이터 클래스라는 것이 존재한다, 데이터 클래스는 일반적인 클래스와 다르게 여러가지의 메서드들을 자동으로 생성해 주는데 그 중 내가 가장 편하다고 생각한 것은 Getter와 Setter이다.

기존 자바 코드는 아래와 같이 Request에 @Getter @Setter를 달아줘야 메서드가 생성되었다면.

@Getter
@Setter
public class SignUpRequest {

    @Email
    private String email;
    private String name;
    @Pattern(regexp = "^\\d{2,3}-\\d{3,4}-\\d{4}$", message = "정해진 핸드폰 양식을 따라주세요 (010-0000-0000)")
    private String phoneNumber;
    private String password;

}

데이터 클래스는 아무것도 달지 않아도 자동으로 Getter와 Setter의 기능을 수행할 수 있었다.

data class SignUpRequest(
    @JsonProperty("email")
    @field:Email
    val email: String,
    @JsonProperty("name")
    val name: String,
    @JsonProperty("password")
    val password: String,
    @JsonProperty("stdId")
    val stdId: String,
    @JsonProperty("room")
    val room: String,
    @JsonProperty("phoneNum")
    @field:Pattern(regexp = "^\\d{2,3}-\\d{3,4}-\\d{4}$", message = "정해진 핸드폰 양식을 따라주세요 (010-0000-0000)")
    val phoneNum:String,
    @JsonProperty("gender")
    val gender: Gender,
)

위와 같이 설정한 request 클래스 안에 있는 내용을


fun save(request: SignUpRequest){
        userJpaRepository.save(User.toEntity(User(
            email = request.email,
            name = request.name,
            password = encoder.encode(request.password),
            stdId = request.stdId,
            room = request.room,
            phoneNum = request.phoneNum,
            gender = request.gender,
            userRole = UserRole.USER,
            isChecked = false,
            checkedDate = LocalDateTime.now(),
        )))
    }

이렇게 불러와서 사용할 수 있다.

이 외에도 여러 메서드들을 자동으로 생성해 주기에 kotlin에서는 lombook 라이브러리를 사용할 일이 없었다는 점이 가장 크게 다가왔다.

코드가 짧아요

일단 함수 선언 부터가

public void main(){
	// main
}

이렇게나 길던 자바에서

fun main(){
	//main
}

이렇게 간단해지는 것 부터가 장점이라고 생각한다. 물론 처음에 반환값 설정 위치나 변수 선언 등이 자바와 매우 다르기에 적응하는데 어려움을 격었지만 지금은 오히려 이러한 점이 장점으로 작용한다.

그 외에도 여러 장점이 있지만 내가 직접 느낀 장점은 이정도였다. 그 외에 장점들에 대한건 검색하면 코틀린 전문가 분들이 설명해줄 것이다.

하지만..

여전히 코틀린에 대한 이해도는 낮으며, 특히 null값에 대한 처리를 할 때마다 자바와 혼동하여 사용한다.

특히나 아직 자바로 하는 프로젝트가 남아있는 나는 완전히 코틀린으로 넘어갔다고 보기 어렵다. 또한 내 작업 속도도 자바가 아직까지는 월등히 빠르다.

실제로 자바에서 메서드 선언할 때 fun을 써놓고 왜 안되지 라고 멍청한 행동을 한 적도 있다. 이처럼 두 언어를 동시에 쓰고 있으니 혼동이 매우 많이 온다.

이렇게 자바에 익숙하고 좋아함에도 불구하고 코틀린으로 넘어가고자 하는 이유는

자바가 설 자리가 점점 없어지고 있기에.

당장에 서버 개발자 공고도 nest.js, node.js, django 등 아직 배우지 못한 스택들로 가득하며 점점 자바 개발자 공고는 없어지는 추세이다.

물론 아직 자바는 객체 지향 언어에 근간이 되며 그 역사만큼 굳건히 자리를 잡고 있지만, 매일 변화하는 개발 업계에서 언제까지나 하나의 언어만 고집할 수 없었기 때문이다.

항상 스킬업이나 취업 관련 고민거리는 머리를 아프게 하고 정답도 없어서 더 힘든 것 같다. 부디 다른 분들은 현명하게 스킬업을 할 수 있기를 바란다.

profile
백엔드 개발자, 김건우입니다.

11개의 댓글

comment-user-thumbnail
2024년 9월 30일

php 최고 🙌

1개의 답글
comment-user-thumbnail
2024년 10월 2일

TS화이팅

1개의 답글
comment-user-thumbnail
2024년 10월 7일

그니까 자바를 좋아한다는 사실이 그 자바한테는 상처가 될 수도 있자나요...
코틀린 씁시다

1개의 답글
comment-user-thumbnail
2024년 10월 7일

러스트하실?

1개의 답글
comment-user-thumbnail
2024년 10월 8일

낭만 원툴? ㅋㅋㅋ

1개의 답글
comment-user-thumbnail
2024년 10월 11일

자바건 자바스크립트건 사슴이건 사슴벌레건 뜻만 통하면 되는거 아니야? 무야호~~

답글 달기