JVM Language(자바 가상 머신 언어)는 Java Virtual Machine(JVM) 위에서 실행되는 프로그래밍 언어를 의미합니다.
즉, JVM이 이해할 수 있는 바이트코드(Bytecode)로 변환되어 실행되는 언어들을 포함합니다.
📌 JVM을 기반으로 실행되는 대표적인 언어:
✅ Java
✅ Kotlin
✅ Scala
✅ Groovy
✅ Clojure
✅ JRuby (Ruby 기반)
✅ Jython (Python 기반)
이들 언어는 모두 JVM의 이점을 공유하며, Java 코드와 상호운용성(Interoperability)이 가능합니다.
즉, Java로 만든 라이브러리를 그대로 사용할 수 있으며, Java 프로젝트에서 혼합해서 사용할 수도 있습니다.
✅ JVM에서 실행 가능 → JVM이 바이트코드로 변환하여 실행
✅ 플랫폼 독립성 → OS에 관계없이 실행 가능 (JVM만 있으면 됨)
✅ GC(가비지 컬렉션) 지원 → 메모리 자동 관리
✅ Java 라이브러리 사용 가능 → 기존 Java 생태계를 활용 가능
✅ 강력한 멀티스레딩 지원 → 병렬 처리 및 비동기 프로그래밍에 유리
✅ 여러 언어 간 상호운용성 → Kotlin, Scala, Groovy 등이 Java와 쉽게 호환됨
JVM에서 실행 가능한 대표적인 언어들을 살펴보겠습니다.
✅ 가장 널리 사용되는 JVM 언어
✅ OOP(객체지향) 기반, 강력한 타입 안정성
✅ Spring Boot, Android 개발 등 다양한 분야에서 사용
✅ 오래된 언어지만 꾸준히 발전 중 (Java 21까지 출시됨)
📌 예제 코드
public class HelloJava {
public static void main(String[] args) {
System.out.println("Hello, Java!");
}
}
✅ Google이 Android 공식 언어로 지정 (Java보다 간결함)
✅ 함수형 프로그래밍(FP) + 객체지향(OOP) 혼합
✅ Null 안전성 제공 → NullPointerException(NPE) 방지
✅ Java와 100% 호환 가능
📌 예제 코드
fun main() {
println("Hello, Kotlin!")
}
✅ 객체지향(OOP) + 함수형 프로그래밍(FP) 지원
✅ Java보다 간결한 문법, 높은 생산성
✅ Spark, Kafka 등 빅데이터 처리에서 많이 사용됨
📌 예제 코드
object HelloScala {
def main(args: Array[String]): Unit = {
println("Hello, Scala!")
}
}
✅ Java 문법과 유사하지만 동적(Dynamic) 특성 추가
✅ Gradle 빌드 시스템, Jenkins 스크립팅 등에 많이 사용
✅ Java보다 간결하고, JSON/XML 처리에 강함
📌 예제 코드
println "Hello, Groovy!"
✅ JVM에서 실행되는 Lisp 계열 언어
✅ 완전한 함수형 프로그래밍 지원
✅ 병렬 프로그래밍과 멀티스레딩에 강함
📌 예제 코드
(println "Hello, Clojure!")
✅ JRuby → Ruby 문법을 JVM에서 실행 가능
✅ Jython → Python 문법을 JVM에서 실행 가능
✅ Java 라이브러리를 Ruby/Python에서 활용 가능
📌 JRuby 예제 코드
puts "Hello, JRuby!"
📌 Jython 예제 코드
print("Hello, Jython!")
JVM은 Java뿐만 아니라 모든 JVM 언어를 실행할 수 있도록 설계되었습니다.
📌 JVM 실행 과정
1️⃣ 소스 코드 작성 (Java, Kotlin, Scala 등)
2️⃣ 컴파일(Java → Bytecode, .class
파일 생성)
3️⃣ JVM이 Bytecode를 실행 (JIT 컴파일, GC 관리 포함)
4️⃣ 최종적으로 OS에서 실행됨
✔ 플랫폼 독립성 → Windows, Linux, macOS 등 어디서든 실행 가능
✔ Java 생태계 활용 가능 → 기존 Java 라이브러리 & 프레임워크 사용 가능
✔ 강력한 성능 → JIT(Just-In-Time) 컴파일러, GC(가비지 컬렉션) 최적화
✔ 다양한 선택지 제공 → Java, Kotlin, Scala, Groovy 등 다양한 언어 지원
✔ 높은 생산성 → Kotlin, Scala 등은 Java보다 간결한 코드 작성 가능
❌ JVM 실행 오버헤드 → 네이티브 언어(C, Rust)보다 느릴 수 있음
❌ 초기 학습 비용 → Scala, Clojure 등 일부 언어는 학습 난이도 높음
❌ 메모리 사용량이 많음 → JVM 자체가 메모리를 많이 차지
사용 목적 | 추천 JVM 언어 |
---|---|
일반적인 백엔드 개발 | Java, Kotlin |
Android 개발 | Kotlin (공식 언어) |
빅데이터 처리 (Spark, Kafka) | Scala |
빌드 스크립트 (Gradle, Jenkins) | Groovy |
스크립트 기반 개발 | Groovy, JRuby, Jython |
함수형 프로그래밍 | Scala, Clojure |
✅ JVM Language는 Java뿐만 아니라 Kotlin, Scala, Groovy, Clojure 등 다양한 언어를 포함
✅ JVM 위에서 실행되므로 플랫폼 독립성을 가지며, Java 라이브러리를 자유롭게 활용 가능
✅ 각 언어마다 특징이 다르며, 개발 목적에 맞는 언어를 선택하면 생산성이 높아짐
✅ Android 개발은 Kotlin, 백엔드는 Java/Kotlin, 빅데이터는 Scala가 주로 사용됨
추가 학습 자료