개요
Java는 “Write Once, Run Anywhere” 철학으로 설계된 정적 타입 프로그래밍 언어입니다. JVM (Java Virtual Machine) 위에서 실행되어 플랫폼 독립적이며, 엔터프라이즈 환경에서 가장 오래되고 안정적인 생태계를 보유하고 있습니다.
- 출시: 1995년 (James Gosling, Sun Microsystems)
- 현재 관리: Oracle Corporation (2010년 Sun 인수)
- 최신 버전: Java 24 (2025), LTS: Java 21 (2023)
- 라이선스: GPL v2 (OpenJDK), Oracle 상용 라이선스 별도
- 웹사이트: https://dev.java
- 패키지: Maven Central (60만+ 아티팩트)
핵심 특징
| 특징 | 설명 |
|---|
| JVM | 바이트코드를 OS 독립적으로 실행, JIT 컴파일 최적화 |
| 정적 타입 | 컴파일 타임에 타입 검사 → 안정성 |
| GC (가비지 컬렉션) | 자동 메모리 관리 (ZGC, G1GC 등 고성능 GC) |
| OOP | 순수 객체지향 (모든 것이 클래스) |
| 멀티스레딩 | 네이티브 스레드 지원, Virtual Thread (Java 21+) |
| 하위 호환성 | 수십 년간 하위 호환 유지 (엔터프라이즈 안정성) |
JVM 생태계
JVM 위에서 실행되는 언어들:
| 언어 | 특징 |
|---|
| Java | 원본, 엔터프라이즈 표준 |
| Kotlin | 모던 문법, Android 공식, null 안전 |
| Scala | 함수형 + OOP, Apache Spark |
| Groovy | 동적 타입, Gradle/Jenkins 스크립트 |
| Clojure | Lisp 계열, 불변 데이터 |
주요 프레임워크
| 프레임워크 | 용도 |
|---|
| Spring Boot | 엔터프라이즈 표준 웹 프레임워크 (DI, AOP, 자동설정) |
| Spring Cloud | 마이크로서비스 (서비스 디스커버리, 서킷 브레이커) |
| Quarkus | 클라우드 네이티브, GraalVM 네이티브 이미지 |
| Micronaut | 경량 마이크로서비스, AOT 컴파일 |
| Hibernate | ORM (JPA 구현체) |
| Gradle / Maven | 빌드 도구 |
| JUnit | 테스트 프레임워크 |
Java 최신 기능 (17~21+)
| 버전 | 기능 | 설명 |
|---|
| Java 17 (LTS) | Sealed Classes | 상속 가능한 클래스 제한 |
| Java 17 | Pattern Matching | instanceof 패턴 매칭 |
| Java 21 (LTS) | Virtual Threads | 경량 스레드 (goroutine과 유사) |
| Java 21 | Record Patterns | 레코드 분해 패턴 |
| Java 21 | String Templates | 문자열 템플릿 (Preview) |
- Virtual Threads: 수백만 개 경량 스레드 생성 가능 → 동시성 혁신
- Records: 불변 데이터 클래스를 간결하게 정의
- Switch 패턴 매칭: 타입 기반 분기
주요 사용처
| 분야 | 예시 |
|---|
| 엔터프라이즈 | 은행, 보험, 정부 시스템, ERP |
| 빅데이터 | Hadoop, Spark, Kafka, Elasticsearch |
| Android | Android SDK (현재는 Kotlin 공식 권장) |
| 클라우드 | Spring Cloud, AWS SDK |
| 게임 서버 | Minecraft (Java Edition) |
장단점
장점:
- 안정적이고 성숙한 생태계 (30년+ 역사)
- 뛰어난 하위 호환성
- JVM 성능 지속 개선 (GraalVM, Virtual Threads)
- 풍부한 라이브러리와 프레임워크
단점:
- 보일러플레이트 코드가 많음 (Kotlin 대비)
- 초기 메모리 사용량이 높음
- Oracle 라이선스 정책 복잡
- 모던 언어 대비 문법이 장황함
관련 항목