Java -> Kotlin 전환시 발생하는 문제들 + 안좋은점

1 minute read

JPA모델설계시

Java에서는 @OneToOne Many등 표시안하고 그냥써도 됐는데.. Kotlin에서는 오류가 난다.

Caused by: org.hibernate.MappingException: Could not determine type for: solcon.board.domain.model.ArticleCategoryEntity, at table: t_article, for columns: [org.hibernate.mapping.Column(category)]

kotlin data class constructor

생성자 만드는게 몹시 짜증이난다다 써보니 이름이 왜 꼬출린인지 알겠다

자동완성이 구리다

자바개발에서 귀찮은 getter, setter, slf4j은 lombok으로 처리해서 귀찮은 자바의 단점이었던 난잡한 코드 문제가 많이 해결됐는데

변수 선언에서 자동완성이 좀 안된다.

//java AccountEntity accountEntity; //kotlin var accountEntity: AccountEntity;

 

java는 클래스명을 쓰면 변수명이 자동으로 나올 수 있는데 Kotlin은 … 그게안된다.

커뮤니티에 엉터리가 많다

아직 초보자들이 많은지 잘못된 정보가 간혹 있다. JPA Entity설계할 때 dataclass를 사용하라고 한다던가 하는… 해보니까 그냥 class로 선언하는게 편하다. 아닌가?? 더 익숙해지면 data class가 더 나을까?

QueryDSL 미지원

QueryDSL에서는 Gradle을 공식적으로 지원하지 않는건가? github에 가보니 maven만 있고 Gradle은 안 보인다. third party를 이용해서 하긴했는데… Kotlin은 변환이 안된다. (이것은 아직 지원안되는 것 같다) 결국 Entity는 Java로 다시 변환했다.

Java와 혼용시 문제

Java와 Kotlin을 같은 프로젝트에 섞어서 쓰면 kotlin에서 lombok의 getter, setter이 인식되지 않는다. (컴파일 타임의 문제니까 노력하지말자 - lombokforkotlin을 만들게 아니라면) 멀티모듈로 하면 상위 코드의 core를 조회 가능 groovy가 더 잘 섞이는 것 같다. 테스트코드 짤 때 써볼라고하니까

결론

꽤 안정화됐지만 그래도 아직 갈길이 멀었다. 아직 한창 개발중인 언어로, 언어 자체의 문제로 인한 버그가 간혹 존재한다. 그리고 현재의 문법체계가 언제까지 유지될거라고 보기도 힘들다. IDE, 프레임워크, 라이브러리 지원도 아직은 Java를 대체할 수준은 아니다.

가장 오류없이 무난한 개발을 하려면 Maven-Java

좀 고생을 하더라도 다른거 써보고 싶으면 다른거 쓰면 될 것 같다.