CompletableFuture 사용방법

Future 인터페이스는 java5부터 java.util.concurrency 패키지에서 비동기의 결과값을 받는 용도로 사용했다. 하지만 비동기의 결과값을 조합하거나, error를 핸들링할 수가 없었다.

자바8부터 CompletableFuture 인터페이스가 소개되었고, Future 인터페이스를 구현함과 동시에 CompletionStage 인터페이스를 구현한다. CompletionStage는 비동기 연산 Step을 제공해서 계속 체이닝 형태로 조합이 가능하다.

자세히 보기

Java8 디폴트 메서드

디폴트 메서드를 사용하는 이유는 뭘까?

주로 라이브러리 설계자들이 사용한다. 디폴트 메서드를 이용하면 자바 API의 호환성을 유지하면서 라이브러리를 바꿀 수 있다. 디폴트 메서드가 없던 시절에는 인터페이스에 메서드를 추가하면서 여러 문제가 발생했다. 인터페이스에 새로 추가된 메서드를 구현하도록 인터페이스를 구현하는 기존 클래스를 고쳐야 했기 때문이었다. 본인이 직접 인터페이스와 이를 구현하는 클래스를 관리할 수 있는 상황이라면 이 문제를 어렵지 않게 해결 할 수 있지만 인터페이스를 대중에 공개했을 때는 상황이 다르다. 그래서 default 메서드가 탄생한 것이다. 디폴트 메서드를 이용하면 인터페이스의 기본 구현을 그대로 상속하므로 인터페이스에 자유롭게 새로운 메서드를 추가할 수 있게 된다.

자세히 보기

Java8 새로운 날짜와 시간 API 정리

  • 자바의 날짜, 시간 관련된 히스토리, 8버전에서 추가된 새로운 날짜,시간 API 기본 사용법을 알아본다.
  • 기간을 표현하는 Duration, Period알아본다.
  • 날짜를 변경하고, 파싱, 포매팅을 알아본다.
  • ZoneId (다양한 시간대)를 알아본다.
자세히 보기

Java Comparable vs Compartor 사용방법

학습 목표

  • Java에서 제공하는 기본정렬은 어떤게 있나?
  • Java에서 정렬할때 사용하는 Comparable , Comparator에 대해서 알아보자.
  • 각각의 차이는 무엇인지 알아보자.
  • Java8에서 도입된 Lambda를 통해서 어떻게 간편하게 구현할 수 있는지 알아보자.
자세히 보기

[디자인패턴] 컴포지트 패턴(Composite Pattern)

개요

  • 디자인 패턴중에 Composite 패턴에 대해서 알아보자.
  • 컴포지트 패턴은 부분과 전체의 관계인 경우 적용할 수 있다.
  • Computer, Keyboard, Monitor 클래스를 통한 제품 가격 정보를 출력하는 간단한 프로그램을 통해서 부분과 전체의 설계 관점에서 어떻게 변하는지 알아보자.
자세히 보기