Backend

자바 개발자가 코틀린 30분만에 정복하기

관리자

6일 전

18900
#초보자#Java#백엔드#Kotlin

자바 개발자가 코틀린 30분만에 정복하기

📚 이 글은 "코틀린 마스터하기" 시리즈의 1편입니다.

🎯 한 줄 요약

자바 개발자라면 정말 30분이면 코틀린의 핵심을 이해하고 바로 써먹을 수 있습니다!

코틀린과 자바의 만남

🤔 이런 고민 있으신가요?

  • "안드로이드 개발하려니 코틀린이 필수래..."
  • "스프링 부트도 코틀린 지원한다는데 배워야 하나?"
  • "자바 10년 했는데 새 언어 배우기 부담스러워..."

걱정 마세요! 자바를 아신다면 코틀린은 이미 반은 아는 거예요. 😊

💡 코틀린? 그냥 더 편한 자바입니다!

구글이 안드로이드 공식 언어로 선택한 이유가 있죠.
자바의 장점은 그대로, 단점은 싹 개선한 언어가 바로 코틀린입니다.

자바 vs 코틀린 비교

🚀 10분만에 보는 핵심 차이점

1️⃣ 변수 선언 - 타입을 안 써도 돼요!

자바 방식:

String name = "홍길동";
int age = 25;
final String country = "Korea";

코틀린 방식:

var name = "홍길동"     // 변경 가능한 변수
val age = 25           // 변경 불가능한 변수 (final)
val country = "Korea"  // 타입 추론 완벽!

💡 var = variable (변경 가능), val = value (변경 불가)
타입은 알아서 추론해줍니다!

2️⃣ NULL 안전성 - NullPointerException 안녕!

자바의 고통:

String name = null;
int length = name.length(); // 💥 NullPointerException!

코틀린의 해결책:

var name: String? = null  // ?를 붙이면 null 가능
val length = name?.length  // null이면 그냥 null 반환
val length2 = name?.length ?: 0  // null이면 0 반환

이제 NPE 걱정 없어요! 컴파일 단계에서 다 잡아줍니다. 🎉

3️⃣ 함수 선언 - 더 간결하게!

자바 방식:

public int add(int a, int b) {
    return a + b;
}

코틀린 방식:

fun add(a: Int, b: Int) = a + b  // 한 줄 끝!

4️⃣ 클래스 - Lombok 필요 없어요!

자바 (Lombok 없이 쓰면 지옥):

public class Person {
    private String name;
    private int age;
    
    // 생성자, getter, setter, equals, hashCode, toString...
    // 100줄 넘어감 😱
}

코틀린 (한 줄!):

data class Person(val name: String, val age: Int)

끝! getter, setter, equals, hashCode, toString 다 자동 생성! 👏

데이터 클래스의 마법

🎯 실전! 자바 코드를 코틀린으로 바꿔보기

Before (자바) - 26줄

public class UserService {
    private UserRepository repository;
    
    public UserService(UserRepository repository) {
        this.repository = repository;
    }
    
    public User findUser(Long id) {
        User user = repository.findById(id);
        if (user != null) {
            return user;
        } else {
            throw new UserNotFoundException("User not found");
        }
    }
    
    public List<User> getActiveUsers() {
        List<User> users = repository.findAll();
        List<User> activeUsers = new ArrayList<>();
        for (User user : users) {
            if (user.isActive()) {
                activeUsers.add(user);
            }
        }
        return activeUsers;
    }
}

After (코틀린) - 10줄!

class UserService(private val repository: UserRepository) {
    
    fun findUser(id: Long): User = 
        repository.findById(id) 
            ?: throw UserNotFoundException("User not found")
    
    fun getActiveUsers(): List<User> = 
        repository.findAll().filter { it.isActive }
}

60% 코드 감소! 더 읽기 쉽고, 버그 가능성도 줄어들죠. 😎

💡 코틀린만의 특별한 기능

1. 확장 함수 - 기존 클래스에 메서드 추가!

// String 클래스에 새 메서드 추가
fun String.isEmail(): Boolean = 
    this.contains("@") && this.contains(".")

// 사용
val email = "test@gmail.com"
if (email.isEmail()) {
    println("유효한 이메일!")
}

자바에선 StringUtils 같은 유틸 클래스 만들어야 했죠? 이제 필요 없어요!

2. when 표현식 - switch문의 진화!

val result = when(score) {
    in 90..100 -> "A"
    in 80..89 -> "B"
    in 70..79 -> "C"
    else -> "F"
}

break 필요 없고, 범위도 쓸 수 있고, 훨씬 강력해요!

⚡ 5분만에 시작하기

Step 1: IntelliJ IDEA 설치 (이미 있으시죠?)

Step 2: New Project → Kotlin 선택

Step 3: 바로 코딩 시작!

첫 코틀린 코드:

fun main() {
    println("Hello Kotlin! 👋")
    
    val numbers = listOf(1, 2, 3, 4, 5)
    val doubled = numbers.map { it * 2 }
    
    println("원본: $numbers")
    println("2배: $doubled")
}

🤝 자바와 100% 호환!

가장 좋은 점? 기존 자바 코드와 완벽 호환됩니다!

  • 자바 라이브러리 그대로 사용 가능
  • 자바 클래스와 코틀린 클래스 섞어 쓰기 가능
  • Spring Boot, JPA 모두 사용 가능
  • 점진적 마이그레이션 가능

📊 실제 효과

제가 자바에서 코틀린으로 전환한 후:

  • 코드량 40% 감소
  • 버그 50% 감소 (null 안전성 덕분)
  • 개발 속도 30% 향상
  • 코드 리뷰 시간 단축 (읽기 쉬워서)

생산성 향상 그래프

🎯 오늘 당장 써먹을 수 있는 코틀린

자바 개발자라면:

  1. 새 프로젝트는 코틀린으로 시작
  2. 테스트 코드부터 코틀린으로 작성
  3. 유틸 클래스를 코틀린으로 교체
  4. 점진적으로 마이그레이션

💭 마무리

"새 언어 배우기 부담스럽다"고요?

코틀린은 새 언어가 아니라 '더 나은 자바'입니다.

자바의 모든 지식이 그대로 적용되면서, 더 적은 코드로 더 안전한 프로그램을 만들 수 있어요.

오늘 30분 투자로 내일부터 생산성 2배!

도전해보실 준비 되셨나요? 🚀


다음 편에서는 "코틀린으로 Spring Boot REST API 10분만에 만들기"를 다뤄볼게요!

궁금한 점이 있다면 댓글로 남겨주세요! 💬

댓글 0

아직 댓글이 없습니다

첫 번째 댓글을 작성해보세요!