개요

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 스크립트
ClojureLisp 계열, 불변 데이터

주요 프레임워크

프레임워크용도
Spring Boot엔터프라이즈 표준 웹 프레임워크 (DI, AOP, 자동설정)
Spring Cloud마이크로서비스 (서비스 디스커버리, 서킷 브레이커)
Quarkus클라우드 네이티브, GraalVM 네이티브 이미지
Micronaut경량 마이크로서비스, AOT 컴파일
HibernateORM (JPA 구현체)
Gradle / Maven빌드 도구
JUnit테스트 프레임워크

Java 최신 기능 (17~21+)

버전기능설명
Java 17 (LTS)Sealed Classes상속 가능한 클래스 제한
Java 17Pattern Matchinginstanceof 패턴 매칭
Java 21 (LTS)Virtual Threads경량 스레드 (goroutine과 유사)
Java 21Record Patterns레코드 분해 패턴
Java 21String Templates문자열 템플릿 (Preview)
  • Virtual Threads: 수백만 개 경량 스레드 생성 가능 → 동시성 혁신
  • Records: 불변 데이터 클래스를 간결하게 정의
  • Switch 패턴 매칭: 타입 기반 분기

주요 사용처

분야예시
엔터프라이즈은행, 보험, 정부 시스템, ERP
빅데이터Hadoop, Spark, Kafka, Elasticsearch
AndroidAndroid SDK (현재는 Kotlin 공식 권장)
클라우드Spring Cloud, AWS SDK
게임 서버Minecraft (Java Edition)

장단점

장점:

  • 안정적이고 성숙한 생태계 (30년+ 역사)
  • 뛰어난 하위 호환성
  • JVM 성능 지속 개선 (GraalVM, Virtual Threads)
  • 풍부한 라이브러리와 프레임워크

단점:

  • 보일러플레이트 코드가 많음 (Kotlin 대비)
  • 초기 메모리 사용량이 높음
  • Oracle 라이선스 정책 복잡
  • 모던 언어 대비 문법이 장황함

관련 항목