PSD( Private-Self-Development )

JAVA 8 변경점 본문

Backend/JAVA

JAVA 8 변경점

chjysm 2026. 1. 27. 14:25

JAVA 8 은 드디어 기반이 다져진 느낌이다.

 

1. 람다식 지원

기존에는 객체지향 프로그래밍만 가능했다면 이제는 함수지향 프로그래밍도 지원한다.

// 기존
new Thread(new Runnable() {
    @Override
    public void run() {...
}).start();
// 람다
new Thread(() -> System.out.println("Start!")).start();

 

2. Stream API 지원

이제 다건 데이터 타입(LIst, Map 등) 을 사용할 때,  어떻게(시작은 뭐부터 끝나는건 어디까지 와 같이)를 명령하지 않고 

무엇을 할건지만 선언

List<String> names = users.stream()
    .filter(user -> user.getAge() >= 20)
    .map(user -> user.getName().toUpperCase())
    .collect(Collectors.toList());
// fluent API 방식

 

3. Optional 추가 

기존의 운영 환경은 NullPointExeption 이 비일비재 하게 터졌으나( 혹은 null 체크하는 방어 코드 필요 )

이에 대한 대처를 미리 가능하게 하는 방패가 생겼다.

Optional<User> userOpt = Optional.ofNullable(getUser());

// 값이 있으면 꺼내고, 없으면 "Unknown"을 써라
String name = userOpt.map(User::getName).orElse("Unknown");

 

 

4. LocalDate 추가 

기존에 불편하던 Date, Calendar 를 이제는 사용하지 않아도 되도록 개선된 

LocalDate 추가 (불변 객체, 메서드 직관적)

 

 

5. Interface 에 default 메서드 추가 

이제는 인터페이스에 구현되어 있는 함수를 추가할 수 있다. 

implements 한 클래스들은 이 함수를 따로 구현 안 해도 되고 필요하면 오버라이딩 하여 사용하면 된다.

public interface Human{
    void run();
    default void fly() {
        System.out.println("날아갑니다.");
    }
}

'Backend > JAVA' 카테고리의 다른 글

JAVA 21 변경점  (0) 2026.01.27
JAVA 17 변경점  (0) 2026.01.27
JAVA 11 변경점  (0) 2026.01.27
가비지 컬렉션(Garbage Collection)  (0) 2023.07.12
생성자 주입을 사용하는 이유  (0) 2023.01.30