SIMPOLOR
단순하고 색있게
Java 8 주요 특징 및 개선 사항: Lambda Expressions, Stream API, 날짜와 시간 API 등
단순색
·
2024년 06월 03일
Java
자바 8(Java SE 8)은 2014년 3월에 릴리스되었으며, 자바 플랫폼의 역사상 가장 중요한 릴리스 중 하나로 간주됩니다. 자바 8은 언어의 생산성과 기능성을 크게 향상시키는 여러 혁신적인 기능과 개선 사항을 도입했습니다. ## Lambda Expressions 함수형 프로그래밍 스타일을 자바에 도입하여, 코드의 간결성과 가독성을 높였습니다. ``` List<String> list = Arrays.asList("a", "b", "c"); list.forEach(item -> System.out.println(item)); ``` ## Stream API 컬렉션에 대한 일관된 데이터 처리 기능을 제공하여, 병렬 처리와 필터링, 매핑, 리듀싱 작업을 쉽게 수행할 수 있습니다. ``` List<String> list = Arrays.asList("a", "b", "c"); list.stream() .filter(s -> s.startsWith("a")) .forEach(System.out::println); ``` ## java.time 패키지 (새로운 날짜와 시간 API) Joda-Time 라이브러리를 기반으로 한 새로운 날짜와 시간 API를 도입하여, 기존의 `java.util.Date` 및 `java.util.Calendar` 클래스의 문제를 해결했습니다. ``` LocalDate date = LocalDate.now(); LocalDateTime dateTime = LocalDateTime.now(); ``` ## Default Methods 인터페이스에 구현을 포함할 수 있게 하여, 기존 인터페이스를 변경하지 않고도 새로운 기능을 추가할 수 있습니다. ``` interface MyInterface { default void defaultMethod() { System.out.println("Default method"); } } ``` ## Optional 클래스 `null`을 피하기 위한 유틸리티 클래스. `Optional`을 사용하여 값의 존재 여부를 명시적으로 처리할 수 있습니다. ``` Optional<String> optional = Optional.of("value"); optional.ifPresent(System.out::println); ``` ## Nashorn JavaScript 엔진 자바 애플리케이션에서 JavaScript를 실행할 수 있는 새로운 엔진. 성능이 향상되고, JVM에서의 통합이 강화되었습니다. ``` import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn"); engine.eval("print('Hello, World')"); ``` ## 애노테이션 관련 기능 강화 애노테이션을 타입의 사용 위치에 적용할 수 있게 되었으며, 리피터블 애노테이션(repeatable annotations)을 지원합니다. ``` @Repeatable(Schedules.class) public @interface Schedule { String dayOfWeek(); String hour(); } @Schedules({ @Schedule(dayOfWeek = "Monday", hour = "10"), @Schedule(dayOfWeek = "Tuesday", hour = "12") }) public class MyClass {} ``` ## Metaspace - PermGen 영역이 제거되고, 메타스페이스가 도입되었습니다. 이는 더 나은 메모리 관리를 제공합니다. ## Concurrent Accumulators 새로운 `LongAdder`와 `DoubleAdder` 클래스는 병렬 환경에서 높은 스루풋을 제공합니다. ``` LongAdder adder = new LongAdder(); adder.increment(); adder.sum(); ``` ## Parallel Array Sorting 대규모 배열을 병렬로 정렬할 수 있는 기능을 추가했습니다. ``` Arrays.parallelSort(array); ``` ## Base64 인코딩 및 디코딩 기본적인 Base64 인코딩 및 디코딩 기능을 제공하는 `java.util.Base64` 클래스가 추가되었습니다. ``` String encoded = Base64.getEncoder().encodeToString("Hello, World".getBytes()); byte[] decoded = Base64.getDecoder().decode(encoded); ```
연관 포스트
Java 6 주요 특징 및 개선 사항: 성능 향상, 웹 서비스, 스크립팅 언어 지원 등
Java 7 주요 특징 및 개선 사항: 언어 개선, 새로운 IO API, 병렬 프로그래밍 등
Java 8 주요 특징 및 개선 사항: Lambda Expressions, Stream API, 날짜와 시간 API 등
Java 9 주요 특징 및 개선 사항: 모듈 시스템, JShell, Stream API 등
Java 10 주요 특징 및 개선 사항: Local Variable Type Inference, G1 GC 개선 등
Java 11 주요 특징 및 개선 사항: String 메서드, HTTP 클라이언트, ZGC 등
Java 12 주요 특징 및 개선 사항: Switch Expressions, Shenandoah GC 등
Java 13 주요 특징 및 개선 사항: 텍스트 블록, Switch Expressions, ZGC 등
Java 14 주요 특징 및 개선 사항: Pattern Matching, Records, Switch Expressions 등
Java 15 주요 특징 및 개선 사항: 텍스트 블록, Sealed Classes, ZGC 등
Java 16 주요 특징 및 개선 사항: Records, Pattern Matching, Sealed Classes 등
Java 17 주요 특징 및 개선 사항: Sealed Classes, Records, Pattern Matching 등
Java 18 주요 특징 및 개선 사항: Simple Web Server, UTF-8 기본 인코딩 등
Java 19 주요 특징 및 개선 사항: Pattern Matching, Virtual Threads, Foreign Function & Memory API 등
Java 20 주요 특징 및 개선 사항: Pattern Matching, Virtual Threads, Scoped Values 등
Java 21 주요 특징 및 개선 사항: Pattern Matching, Virtual Threads, Structured Concurrency 등