[java] 자바 8 날짜와 시간 API의 Immutable 특성

자바 8에서 도입된 날짜와 시간 API는 새롭고 향상된 기능을 제공합니다. 이 API는 기존의 java.util.Datejava.util.Calendar보다 훨씬 사용하기 쉽고 유지보수하기 간편하며, 더 나은 성능을 제공합니다.

이 날짜와 시간 API의 중요한 특성 중 하나는 Immutable(불변)입니다. Immutable 객체란, 한 번 생성되면 그 상태를 변경할 수 없는 객체를 말합니다. 이는 여러 가지 이점을 제공하며, 오류를 방지하고 코드를 더 안정적으로 만들어 줍니다.

자바 8 날짜와 시간 API의 클래스들은 모두 Immutable으로 설계되어 있습니다. 예를 들어, LocalDate, LocalTime, LocalDateTime 등은 변경할 수 없는 객체입니다. 한 번 생성한 날짜와 시간 객체의 상태를 변경하려면 새로운 객체를 생성해야 합니다.

LocalDate date = LocalDate.of(2022, Month.JANUARY, 1);
LocalDate newDate = date.plusDays(1);

위의 예제에서 plusDays() 메서드는 현재 날짜에 1일을 추가한 새로운 날짜를 반환합니다. 이렇게 생성된 newDate 객체는 기존의 date 객체를 변경하지 않고 새로운 객체를 생성한 것입니다.

Immutable 객체를 사용함으로써 다음과 같은 이점을 얻을 수 있습니다.

  1. 변경 불가능한 객체는 스레드 안전성을 보장합니다. 여러 스레드에서 동시에 접근해도 객체의 상태가 변경되지 않기 때문에 동기화에 대한 고려가 필요하지 않습니다.
  2. 오류를 방지할 수 있습니다. 변경 가능한 객체는 값이 언제든 변할 수 있기 때문에 예측 불가능한 상황이 발생할 수 있습니다. Immutable 객체를 사용함으로써 이러한 오류를 방지할 수 있습니다.
  3. 메모리 사용량을 줄일 수 있습니다. Immutable 객체는 처음에 한 번 생성되면 변하지 않기 때문에 동일한 객체를 여러 곳에서 참조해도 안전합니다.

자바 8 날짜와 시간 API는 Immutable 객체를 사용하여 날짜와 시간을 다루기 때문에 안정성과 예측가능성을 높이고, 코드의 가독성과 유지보수성을 개선합니다. 이러한 이유로 이 API는 많은 개발자들에게 권장되고 있습니다.

참고 자료