Java 8 개요: 새로운 함수형, 스트리밍, 날짜-시간 API
Java 8은 Java 프로그래밍 언어 개발의 주요 기능 릴리스입니다. 초기 버전은 2014년 3월 18일에 출시되었습니다. Java 8 릴리스로 Java는 함수형 프로그래밍 지원, 새로운 JavaScript 엔진, 날짜 시간 조작을 위한 새로운 API, 새로운 스트리밍 API 등을 제공했습니다.
새로운 기능
- 람다 표현식(Lambda expression) - Java에 함수형 처리 기능 추가
- 메서드 참조(Method references) - 함수를 직접 호출하는 대신 이름으로 참조. 함수를 매개변수로 사용
- 기본 메서드(Default method) - 인터페이스에 기본 메서드 구현 가능
- 새 도구(New tools) - 'jdeps' 같은 새로운 컴파일러 도구와 유틸리티 추가로 의존성 파악
- 스트림 API(Stream API) - 파이프라인 처리를 용이하게 하는 새로운 스트림 API
- 날짜 시간 API(Date Time API) - 개선된 날짜 시간 API
- Optional - null 값을 적절히 처리하기 위한 모범 사례 강조
- Nashorn, JavaScript 엔진 - JavaScript 코드 실행을 위한 Java 기반 엔진
다음 코드 조각을 고려해 보세요.
import java.util.Collections;
import java.util.List;
import java.util.ArrayList;
import java.util.Comparator;
public class Java8Tester {
public static void main(String args[]) {
List<String> names1 = new ArrayList<String>();
names1.add("Mahesh ");
names1.add("Suresh ");
names1.add("Ramesh ");
names1.add("Naresh ");
names1.add("Kalpesh ");
List<String> names2 = new ArrayList<String>();
names2.add("Mahesh ");
names2.add("Suresh ");
names2.add("Ramesh ");
names2.add("Naresh ");
names2.add("Kalpesh ");
Java8Tester tester = new Java8Tester();
System.out.println("Java 7 문법으로 정렬: ");
tester.sortUsingJava7(names1);
System.out.println(names1);
System.out.println("Java 8 문법으로 정렬: ");
tester.sortUsingJava8(names2);
System.out.println(names2);
}
// Java 7 방식으로 정렬
private void sortUsingJava7(List<String> names) {
Collections.sort(names, new Comparator<String>() {
@Override public int compare(String s1, String s2) {
return s1.compareTo(s2);
}
});
}
// Java 8 방식으로 정렬
private void sortUsingJava8(List<String> names) {
Collections.sort(names, (s1, s2) -> s1.compareTo(s2));
}
}
프로그램 실행 결과:
Sort using Java 7 syntax: [ Kalpesh Mahesh Naresh Ramesh Suresh ]
Sort using Java 8 syntax: [ Kalpesh Mahesh Naresh Ramesh Suresh ]
sortUsingJava8() 메서드는 람다 표현식을 매개변수로 사용하는 정렬 함수를 이용해 정렬 기준을 얻습니다.