본문 바로가기

언어/Java

[ 자바 / Java ] 자바 버전별 기능 정리

반응형

자바는 시간이 지남에 따라 다양한 버전에서 많은 기능을 추가하고 개선해 왔습니다. 아래는 각 주요 자바 버전과 그에 따른 중요한 기능들을 간략하게 소개합니다:

1. 초기 버전들

  1. Java 1.0 (1996년)
    • 핵심 기능: 자바 언어의 기본 요소가 도입되었습니다. 객체 지향 프로그래밍 지원, 기본적인 표준 라이브러리 (java.lang, java.io, java.util 등), AWT (Abstract Window Toolkit)로 GUI 프로그래밍 가능.
    • 주요 특징: 플랫폼 독립적인 애플릿(Applet)을 웹 브라우저에서 실행 가능.
  2. Java 1.1 (1997년)
    • 핵심 기능: 이벤트 모델 개선, 내장 클래스(Inner Class), JavaBeans, JDBC(Java Database Connectivity) 도입.
    • 주요 특징: RMI (Remote Method Invocation)로 분산 컴퓨팅 지원.

2. Java 2 시리즈

  1. Java 2 (J2SE 1.2) (1998년)
    • 핵심 기능: 컬렉션 프레임워크 도입, Swing GUI 툴킷, 정교한 그래픽 기능, JIT(Just-In-Time) 컴파일러.
    • 주요 특징: 플랫폼별 버전 분리 (J2SE - Standard Edition, J2EE - Enterprise Edition, J2ME - Micro Edition).
  2. J2SE 1.3 (2000년)
    • 핵심 기능: 성능 개선, JNDI(Java Naming and Directory Interface), JavaSound API.
    • 주요 특징: HotSpot JVM 도입.
  3. J2SE 1.4 (2002년)
    • 핵심 기능: XML 파싱, Logging API, Preferences API, assert 키워드, 정규 표현식 지원.
    • 주요 특징: NIO (New Input/Output) 패키지로 비동기 I/O 지원.

3. 주요 개선기

  1. Java 5 (J2SE 5.0) (2004년)
    • 핵심 기능: 제네릭스(Generics), 애너테이션(Annotations), 열거형(Enums), 자동 박싱/언박싱, 향상된 for 루프(enhanced for loop), 가변 인수(varargs).
    • 주요 특징: 표준화된 동시성 유틸리티 (java.util.concurrent 패키지).
  2. Java 6 (Java SE 6) (2006년)
    • 핵심 기능: Scripting API, Web 서비스 개선, JAXB(Java Architecture for XML Binding), 성능 개선.
    • 주요 특징: Desktop API, Pluggable Annotation Processing API.

4. 오라클 시대

  1. Java 7 (Java SE 7) (2011년)
    • 핵심 기능: 다이아몬드 연산자(Diamond Operator), try-with-resources 문법, catch문에서 여러 예외를 한 번에 처리, NIO.2 파일 시스템 API, Fork/Join 프레임워크.
    • 주요 특징: 동적 언어 지원 (InvokeDynamic), 성능 및 안정성 개선.
  2. Java 8 (Java SE 8) (2014년)
    • 핵심 기능: 람다 표현식(Lambda Expressions), 스트림 API (Stream API), 새로운 날짜 및 시간 API (java.time), 기본 메서드(Default Methods) 및 정적 메서드를 인터페이스에서 정의 가능.
    • 주요 특징: JavaFX가 기본 포함, Nashorn JavaScript 엔진 도입.
  3. Java 9 (Java SE 9) (2017년)
    • 핵심 기능: 모듈 시스템(Project Jigsaw), JShell (인터랙티브 REPL), HTTP/2 클라이언트 API, 스트림 API 개선.
    • 주요 특징: Java EE와 Java SE의 API 분리.
  4. Java 10 (Java SE 10) (2018년)
    • 핵심 기능: 지역 변수 유형 추론(var 키워드), 성능 최적화, 가비지 컬렉션 개선.
    • 주요 특징: 정기 업데이트 주기(6개월) 시작.
  5. Java 11 (Java SE 11) (2018년)
    • 핵심 기능: 새로운 문자열 메서드, 새로운 HTTP 클라이언트 API, JEP 330: 런치 단일 파일 소스 코드 프로그램.
    • 주요 특징: Java EE 및 CORBA 모듈 제거, LTS (Long-Term Support) 버전.

5. 최근 버전들

  1. Java 12 (Java SE 12) (2019년)
    • 핵심 기능: Switch 표현식 (미리보기), JVM 상수 API, Microbenchmark Suite.
    • 주요 특징: 가비지 컬렉터 개선 (Shenandoah 및 G1 GC).
  2. Java 13 (Java SE 13) (2019년)
    • 핵심 기능: 텍스트 블록(Text Blocks - 미리보기), 스위치 표현식(Switch Expressions) 개선.
    • 주요 특징: Dynamic CDS 아카이브, ZGC (Z Garbage Collector) 개선.
  3. Java 14 (Java SE 14) (2020년)
    • 핵심 기능: 레코드 클래스(Records - 미리보기), 패턴 매칭을 위한 instanceof(미리보기), 스위치 표현식의 표준화.
    • 주요 특징: JEP 343: Packaging Tool (jpackage).
  4. Java 15 (Java SE 15) (2020년)
    • 핵심 기능: Sealed Classes (미리보기), 패턴 매칭을 위한 instanceof의 표준화, 텍스트 블록의 표준화.
    • 주요 특징: ZGC (Z Garbage Collector)의 안정화, 알파벳 순 정렬된 API 개선.
  5. Java 16 (Java SE 16) (2021년)
    • 핵심 기능: 레코드의 표준화, 패턴 매칭을 위한 instanceof 개선, Vector API (인큐베이터), 외부 함수 및 메모리 API (인큐베이터).
    • 주요 특징: 정기적인 기능 개선, 성능 및 보안 업데이트.
  6. Java 17 (Java SE 17) (2021년)
    • 핵심 기능: Sealed Classes의 표준화, 외부 메모리 접근 API (인큐베이터), 패턴 매칭의 전면적 개선.
    • 주요 특징: LTS 버전, Applet API의 사용 중단.
  7. Java 18 (Java SE 18) (2022년)
    • 핵심 기능: UTF-8이 기본 인코딩, Simple Web Server, Vector API 개선 (인큐베이터).
    • 주요 특징: 외부 메모리 접근 API의 개선, 정기적인 기능 업데이트.
  8. Java 19 (Java SE 19) (2022년)
    • 핵심 기능: Structured Concurrency (인큐베이터), 패턴 매칭의 더 나은 지원, Vector API (인큐베이터).
    • 주요 특징: 라이브러리와 성능의 지속적인 개선.
  9. Java 20 (Java SE 20) (2023년)
    • 핵심 기능: Project Loom의 초석인 Virtual Threads (미리보기), 패턴 매칭 및 레코드 패턴의 강화.
    • 주요 특징: 외부 함수 및 메모리 API의 개선 (인큐베이터), 지속적인 성능 최적화.
  10. Java 21 (Java SE 21) (2023년)
    • 핵심 기능: Virtual Threads의 표준화, Record Patterns의 강화, Sequenced Collections.
    • 주요 특징: JEP 431: Sequenced Collections, 더 나은 성능 및 메모리 관리 개선.

6. 자바의 발전 방향

자바는 현재 6개월마다 정기적으로 새로운 버전을 출시하고 있으며, 이를 통해 최신 기술과 요구 사항을 반영하는 기능을 지속적으로 추가하고 있습니다. 향후에도 자바는 성능 최적화, 언어 기능 개선, 개발자 경험 향상 등을 목표로 진화할 것으로 기대됩니다.

자바는 다양한 애플리케이션의 요구를 충족시키기 위해 계속해서 발전해왔으며, 이러한 변화는 자바를 현대적인 개발 언어로 유지하는 데 중요한 역할을 하고 있습니다.

반응형