
Kotlin
Kotlin은 JetBrains에서 제작한 오픈 소스 프로그래밍 언어로, 현재는 구글이 안드로이드 공식 개발 언어로 지정하면서 급속히 성장한 언어다.
Java Virtual Machine (JVM), Android, JavaScript, WebAssembly(Wasm), 그리고 Native 등 다양한 플랫폼을 대상으로 한다.
특징
- 간결성 (Conciseness)
- Kotlin syntax는 Java 보다 정교히 설계되어 개발자가 더 적은 줄로 더 많은 코드를 표현할 수 있다.
fun main() {
// 정밀성 (Conciseness) : 정수 제곱을 반환하는 함수
println("Square of 5 is ${square(5)}")
}
- 안전성 (Safety)
- Null safety : Null 참조와 관련된 흔한 프로그래밍 에러 예방을 돕는다.
Java도 최근 JSpecify를 표준화하여 이를 지원한다. - Type inference : Static type을 유지하면서 코드를 간단화시킨다.
Java도 'var'을 통해 이를 지원한다. - 런타임 오류를 줄이고 안정적인 애플리케이션 개발이 가능하다.
- Null safety : Null 참조와 관련된 흔한 프로그래밍 에러 예방을 돕는다.
fun main() {
// Type inference : Kotlin은 자동으로 type을 유추한다.
val name = "Kotlin"
// Null safety : ?, ?: 연산자가 있어야만 null 사용 가능
val language: String? = null
// Elvis 연산자(?:) : 값이 null 이면 기본 값을 반환
val displayName = language ?: name
println("Hello, $displayName!")
}
- 상호 호환성 (Interoperability)
- 기존 Java 코드와 완전히 호환된다.
- 개발자가 기존 Java 라이브러리와 프레임워크를 Kotlin 프로젝트 내에서 사용할 수 있다.
- Kotlin에서 Java로의 전환도 가능하지만 성공을 보장하지 않는다.
- Multiplatform 개발
- Kotlin Multiplatform을 사용하여 안드로이드, iOS, 웹, 데스크톱 간 코드 공유가 가능하다.
사용처
- 모바일 app 개발
특히, Android는 compose를 통해 Kotlin을 완전 지원한다. - 웹 개발
- Server-side app
- 데이터 과학
- 기타 등등.

JVM (Java Virtual Machine)
JVM은 자바 프로그램을 실행하기 위한 가상 머신으로, 코드를 플랫폼에 맞춰 번역해주는 중간 다리 역할을 수행한다.
역할
- 바이트코드 실행
- Java, Kotlin 등은 먼저 바이트코드(.class)로 컴파일된다.
- JVM은 이 바이트코드를 읽어 OS와 CPU에 맞는 기계어로 실행한다.
- 메모리 관리
- JVM은 Heap 영역과 Stack 영역을 관리한다.
- 객체 생성, 참조 관리, garbage collection(GC)까지 자동으로 처리한다.
- 플랫폼 독립성 제공
- "Write Once, Run Anywhere"
- 같은 바이트코드를 Windows, macOS, Linux 어디서나 실행할 수 있다.
- 보안 및 최적화
- 바이트코드 검증, 접근 제한, 런타임 최적화 등을 수행한다.
구조

- Class Loader : 클래스 파일을 JVM 내부로 로딩
- JVM Memory Areas : 메모리 영역 관리
- Heap : 객체 저장
- Stack : 메서드 호출 스택, 지역 변수
- Execution Engine : 바이트 코드를 기계어로 변환하고 실행
참고 자료
- Kotlin overview -- Android Developers
'Backend' 카테고리의 다른 글
| [Backend] Singleton 패턴 (1) | 2025.09.03 |
|---|---|
| [Backend] Bulider 패턴 (1) | 2025.09.03 |
| [Backend] Factory 패턴 (1) | 2025.09.03 |
| [Backend] 객체지향 디자인 패턴 (1) | 2025.09.03 |
| [Backend] Git & GitHub 소개 (0) | 2025.09.02 |