[Java] Java 8 변경사항

링딩·2023년 4월 16일
0

Computer Science

목록 보기
37/49




JAVA8에서의 변경사항

Java8에서는 Lambda식 , Stream API , Optional , 날짜 시간 API, StringJoiner 등이 추가되었다.

주목할만한 특징은 크게 이렇게 있다.

  1. 람다 표현식(lambda expression) : 함수형 프로그래밍
  2. 스트림 API(stream API) : 데이터의 추상화
  3. java.time 패키지 : Joda-Time을 이용한 새로운 날짜와 시간 API

🔎 람다 표현식 ("익명함수")

◽ 정의

간단히 말해 메소드를 하나의 식으로 표현한 것으로 함수를 간략하면서도 명확한 식으로 표현할 수 있게 한다.

  • 메서드를 람다식으로 표현하면 메서드의 이름과 반환값이 없어진다.
public int method(){
	return (int)(Math.random() * 5) + 1)
};


//람다식으로 바꾸면

int[] arr = new int[5];
Arrays.setAll(arr, (i) -> (int)(Math.random() * 5) + 1);
  • 람다 표현식은 메소드의 매개변수로 전달될 수 도 있고, 메소드의 결과값으로 반환될 수도 있습니다.

🔎 2. 스트림 API

◽ 기존 자바에서 왜 나오게 되었을까?

  • 코드는 길이가 너무 길고 가독성이 떨어짐
  • 코드 재사용이 불가능
  • 쿼리와 같이 정형화된 처리 패턴을 가지지 못했기에 데이터마다 다른 방법으로 접근

자바에서는 많은 양의 데이터를 저장하기 위해서 배열이나 컬렉션을 사용한다.
또한, 이렇게 저장된 데이터에 접근하기 위해서는 반복문이나 반복자(iterator)를 사용하여 매번 코드를 작성해야 한다.

◾ 스트림 API는....

  • 데이터를 추상화하여 다루므로, 다양한 방식으로 저장된 데이터를 읽고 쓰기 위한 공통된 방법을 제공한다.

-> 배열이나 컬렉션뿐만 아니라 파일에 저장된 데이터도 모두 같은 방법으로 다룰 수 있다.




3. java.time 패키지

Java 8 이전에는 문제점을 이렇게 가지고 있었다.

  1. Calendar 인스턴스는 불변 객체(immutable object)가 아니라서 값이 수정될 수 있습니다.
  2. 윤초(leap second)와 같은 특별한 상황을 고려하지 않습니다.
  3. Calendar 클래스에서는 월(month)을 나타낼 때 1월부터 12월을 0부터 11까지로 표현해야 하는 불편함이 있습니다.

많은 자바 개발자들은 Calendar 클래스뿐만 아니라 더 나은 성능의 Joda-Time이라는 라이브러리를 함께 사용해 왔습니다. Java 8 버전에서는 이러한 Joda-Time 라이브러리를 발전시킨 새로운 날짜와 시간 API인 java.time 패키지를 제공합니다.



출처

moon960427님의 글을 참조하여 작성했습니다.

profile
초짜 백엔드 개린이

0개의 댓글