| 구분 |
장점 |
단점 |
현실적인 예시 |
| 도입 유연성 |
기존 Java에 Kotlin을 점진적 도입 가능 |
코드 스타일 혼재로 혼란 가능 |
신규 기능은 Kotlin, 기존 로직은 Java 유지 |
| 코드 간결성 |
Kotlin의 data class, null-safety 덕분에 생산성↑ |
Kotlin 문법 미숙 시 유지보수 어려움 |
Java는 Lombok 필수, Kotlin은 data class 한 줄로 |
| 생산성 향상 |
확장 함수, DSL로 빠른 개발 |
기능 중복 구현 가능성 |
예: Result.success() vs ResponseEntity.ok() |
| 상호 운용성 |
Java ↔ Kotlin 완전 호환 |
Java에서 Kotlin 호출 시 null 안정성 보장 안 됨 |
Kotlin 메서드 호출 시 null 체크 누락 주의 |
| 빌드 구조 |
Gradle에서 함께 컴파일 가능 |
kapt, 빌드 순서 등 설정 복잡 |
Spring JPA에서 Kotlin entity 사용 시 annotation 처리 이슈 |
| 테스트 코드 작성 |
Kotlin DSL 덕분에 테스트 코드 간결 |
기존 Java 테스트와 스타일 불일치 |
Kotlin으로 shouldBeEqualTo() DSL 사용 시 혼재 |