•
Lambda 표현식
◦
익명 함수로, 이름과 식별자가 없는 함수
◦
코드를 간결하게 작성할 수 있다
•
Default Method
◦
자바 8 이전에는 인터페이스에는 추상 메서드만 사용할 수 있었지만, 인터페이스에서도 default와 static 메소드로 구현체를 만들 수 있게 되었다
•
함수형 인터페이스 (Funtional Interface)
◦
단 1개의 추상 메소드를 가지고 있는 인터페이스
•
Stream
◦
컬렉션 함수들을 람다식으로 처리하여 복잡한 구조나 반복적인 데이터 처리를 간단하게 한다
◦
기존에 for 문을 사용하여 처리하던 것을 Stream으로 변환해서 mapping, sorting, filtering 등 을 메서드로 할 수 있게 해준다.
•
Optional
◦
기존에 null을 체크하기 위해서 if 문을 많이 사용했지만 Opitonal을 사용하면 Null Pointer Exception이 발생하는 것을 방지해 준다
◦
Optional은 null이나 null이 아닌 값을 담을 수 있는 클래스로, DB를 조회해서 null인 경우 orElseThrow 메소드를 사용하여 에러를 던지거나 ifpresent 메소드로 사전에 정의된 액션을 수행한다
•
날짜 관련 클래스 추가
◦
Date 클래스가 아니라 LocalDate, LocalTime, LocalDateTime 클래스를 사용
◦
Time zone 설정, 날짜 계산 등이 편리하게 이용 가능해졌다
•
병렬 배열 정렬
◦
Arrays.parallelSort()
◦
배열을 둘로 계속 나누고 합치면서 정렬한다
◦
알고리즘의 효율이 바뀐 것은 아니지만, 여러 스레드를 분산해서 처리하기 때문에 조금 더 기존의 sort()보다 빠르다
•
String Joiner
◦
여러 문자를 합하고 공백이나 구분자를 반복해서 붙여야하는 경우에 유용하게 사용할 수 있다
⇒ Rahul,Raju,Peter,Raheem