Java 8의 새로운 기능

 

Java 8은 2014년 3월에 출시되어 많은 새로운 기능을 제공했습니다.

이 새로운 기능들은 Java 프로그래밍 언어를 더욱 강력하고 표현력 있게 만들었습니다.

여기서는 Java 8의 주요 새로운 기능들을 살펴보겠습니다.

 

람다 표현식 (Lambda Expressions)

람다 표현식은 Java 8에서 가장 주목할 만한 기능 중 하나입니다. 익명 함수(무명 함수)를 간단한 식으로 표현할 수 있게 되었습니다. 이를 통해 코드의 가독성과 유지 보수성이 향상되었습니다.

1
2
3
4
5
6
7
8
9
10
// 기존 방식
Runnable runnable = new Runnable() {
    @Override
    public void run() {
        System.out.println(“JAVA 8”);
    }
};
// 람다 표현식 사용
Runnable runnable = () > System.out.println(“JAVA 8”);
cs

 

스트림 API (Stream API)

스트림 API는 컬렉션 데이터를 함수형 스타일로 처리할 수 있게 해줍니다. 필터링, 매핑, 정렬, 그룹화 등의 작업을 간결하게 수행할 수 있습니다.

1
2
3
4
5
6
List<Integer> numbers = Arrays.asList(12345678910);
// 스트림 API 사용
List<Integer> evenNumbers = numbers.stream()
                                   .filter(n > n % 2 == 0)
                                   .collect(Collectors.toList());
cs

 

함수형 인터페이스 (Functional Interfaces)

함수형 인터페이스는 단일 추상 메서드를 가진 인터페이스입니다. 람다 표현식을 사용할 때 대상 타입으로 활용됩니다. 자바에는 Predicate, Consumer, Function, Supplier 등의 표준 함수형 인터페이스가 있습니다.

1
2
3
4
5
// Predicate 예제
List<String> names = Arrays.asList(“John”“Jane”“Jack”“Jill”);
List<String> filteredNames = names.stream()
                                  .filter(name > name.startsWith(“J”))
                                  .collect(Collectors.toList());
cs

 

새로운 날짜/시간 API (Date/Time API)

Java 8에서는 과거의 Date 클래스를 대체하는 새로운 날짜/시간 API가 도입되었습니다. LocalDate, LocalTime, LocalDateTime, ZonedDateTime 등의 새로운 클래스가 추가되었으며, 더욱 직관적이고 유용한 기능을 제공합니다.

1
2
3
4
5
6
7
8
9
10
11
12
LocalDate today = LocalDate.now();
LocalTime time = LocalTime.of(1330);
LocalDateTime dateTime = LocalDateTime.of(today, time);
LocalDate today = LocalDate.now();
LocalDate tomorrow = today.plusDays(1);
Duration duration = Duration.between(LocalTime.now(), LocalTime.NOON);
System.out.println(today); // 현재 날짜
System.out.println(tomorrow); // 내일 날짜
System.out.println(duration); // 현재 시간과 정오 사이의 시간 차이
cs

 

Optional 클래스

Optional 클래스는 null을 더 우아하게 처리할 수 있도록 도와주며, NullPointerException을 방지하는 데 도움을 줍니다.

1
2
3
Optional<String> optionalString = Optional.of(“Hello”);
optionalString.ifPresent(System.out::println); // “Hello” 출력
cs

 

인터페이스의 기본 메소드(Default Methods)와 정적 메소드(Static Methods)

Java 8부터 인터페이스에 기본 메소드와 정적 메소드를 추가할 수 있게 되었습니다. 이를 통해 기존 인터페이스를 변경하면서도 하위 호환성을 유지할 수 있습니다.

1
2
3
4
5
6
7
8
9
10
interface MyInterface {
    default void printGreeting() {
        System.out.println(“Hello, World!”);
    }
    static void printGoodbye() {
        System.out.println(“Goodbye, World!”);
    }
}
cs

 

기타 새로운 기능

  • Optional 클래스: null 참조 예외를 방지하기 위한 유틸리티 클래스
  • IntStreamLongStreamDoubleStream: 원시 데이터 타입용 스트림 API
  • StringJoiner: 문자열 연결을 위한 간편한 유틸리티 클래스
  • Base64 인코딩/디코딩
  • 병렬 배열 연산
  • 애노테이션 개선
  • 보안 강화
  • 자바 컴파일러 툴 개선

Java 8은 Oracle에서 제공하는 마지막 공개 업데이트(Public Update) 버전입니다. Java 9 이후부터는 오픈소스 및 상업적 버전으로 출시되고 있습니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다