
Java 8는 Oracle이 배포한 Java SE(Standard Edition)의 주요 릴리스(정확히는 Java SE 8)로, 2014년 3월에 출시되었습니다. 언어와 라이브러리, JVM 쪽에서 여러 중요한 기능과 개선이 도입되어 Java 개발 방식에 큰 변화를 가져왔습니다. 주요 내용은 다음과 같습니다. 주요 특징 - 람다 표현식 (Lambda expressions) - 익명 내부 클래스 대신 함수형 스타일로 코드를 작성할 수 있게 함. - 예: Runnable r = () -> System.out.println("Hello"); - 스트림 API (Streams) - 컬렉션 데이터의 선언적(파이프라인) 처리(필터링, 매핑, 집계, 병렬 처리 등)를 지원. - 예: names.stream().filter(s -> s.length() > 3).collect(Collectors.toList()); - 새로운 날짜·시간 API (java.time 패키지) - Joda-Time에서 영감을 받은 불변(immutable)하고 쓰레드 안전한 API 제공. (LocalDate, LocalDateTime, ZonedDateTime 등) - 예: LocalDate date = LocalDate.parse("2014-03-18"); - 인터페이스의 디폴트 및 정적 메서드 - 기존 인터페이스에 구현을 추가할 수 있어 라이브러리 확장 시 하위 호환성 유지가 쉬워짐. - 예: interface I { default void m() { ... } } - 함수형 인터페이스와 java.util.function 패키지 - Predicate, Function, Consumer, Supplier 등 재사용 가능한 함수형 타입 제공. - 메서드 참조 (Method references) - 클래스::메서드 형태로 람다보다 간결하게 표현 가능 (예: System.out::println). - Optional - null에 대한 안전한 처리를 돕는 컨테이너 타입. - 예: Optional
o = Optional.ofNullable(v); o.ifPresent(System.out::println); - CompletableFuture 및 비동기 API - 비동기 프로그래밍과 콤포지션(thenApply, thenCombine 등)을 지원. - 병렬 스트림 - 스트림 연산을 쉽게 병렬화하여 멀티코어 활용 가능. - Nashorn 자바스크립트 엔진 - JVM에서 고성능으로 자바스크립트를 실행할 수 있는 엔진(나중에 제거됨). - JVM/런타임 변화 - PermGen 영역 제거 및 Metaspace 도입으로 메모리 관리 방식 변경. - 기타 문법·어노테이션 개선 - 반복 가능한(Repeatable) 어노테이션, 타입 어노테이션 등. 영향과 호환성 - Java 8는 실무에서 널리 채택된 버전으로 많은 라이브러리와 프레임워크가 Java 8을 기준으로 발전했습니다. - 이전 버전과의 높은 하위 호환성을 유지하면서도 함수형 프로그래밍 스타일과 더 간결한 코드 작성을 가능하게 해, 개발 생산성과 표현력을 크게 향상시켰습니다. - Java 8은 장기 지원(LTS) 버전으로 간주되어 기업 환경에서 오랫동안 표준으로 사용되었습니다. 요약하면, "Java 8"은 Java 언어와 표준 라이브러리, JVM에 걸쳐 함수형 프로그래밍 지원, 스트림 기반 데이터 처리, 개선된 날짜·시간 API 등 핵심 기능을 도입해 Java 개발 패러다임을 크게 바꾼 주요 버전입니다.