티스토리 뷰

1.1 역사의 흐름은 무엇인가?

  • 자바 8에서는 병렬 실행을 새롭고 단순한 방식으로 접근할 수 있는 방법을 제공함.
  • 자바 8에서 제공하는 새로운 기술
    • 스트림 API
    • 메서드에 코드를 전달하는 기법
    • 인터페이스의 디폴트 메서드
  • 자바 8은 데이터베이스 질의 언어에서 표현식을 처리하는 것처럼 병렬 연산을 지원하는 스트림이라는 새로운 API를 제공함. 스트림을 이용하면 에러를 자주 일으키며 멀티코어 CPU를 이용하는 것보다 비용이 훨씬 비싼 키워드 synchronized를 사용하지 않아도 됨.
  • 메서드에 코드를 전달하는 기법을 이용하면 새롭고 간결한 방식으로 동작 파라미터화를 구현할 수 있음. 메서드에 코드를 전달하는 자바 8 기법은 함수형 프로그래밍에서 위력을 발휘함.

 

1.2 왜 아직도 자바는 변화하는가?

  • 자바 8은 더 다양한 프로그래밍 도구 그리고 다양한 프로그래밍 문제를 더 빠르고 정확하며 쉽게 유지보수할 수 있다는 장점을 제공함. 자바 8에 추가된 기능은 자바에 없던 완전히 새로운 개념이지만 현재 시장에서 요구하는 기능을 효과적으로 제공함.
  • 자바 8 설계의 밑바탕을 이루는 세 가지 프로그래밍 개념.
    • 스트림 처리
    • 코드 일부를 API로 전달하는 기능
    • 병렬성
  • 스트림이란 한 번에 한 개씩 만들어지는 연속적인 데이터 항목들의 모임.
  • 스트림 API의 행심은 기존에는 한 번에 한 항목을 처리했지만 이제 자바 8에서는 우리가 하려는 작업을 고수준으로 추상화해서 일련의 스트림으로 만들어 처리할 수 있다는 것. 
  • 또한 스트림 파이프라인을 이용해서 입력 부분을 여러 CPU 코어에 쉽게 할당할 수 있다는 부가적인 이득도 얻을 수 있음. 스레드라는 복잡한 작업을 사용하지 않으면서도 공짜로 병렬성을 얻을 수 있음.
  • 자바 8에서는 메서드를 다른 메서드의 인수로 넘겨주는 기능을 제공함. 이러한 기능을 이론적으로 동작 파라미터화라고 부름.
  • 자바 8 스트림을 이용하면 기존의 자바 스레드 API보다 쉽게 병렬성을 활용할 수 있음.

 

1.3 자바 함수

  • 자바 8에서는 메서드를 일급값으로 취급함. 
  • 기존에 객체 참조를 이용해서 객체를 이리저리 주고받았던 것처럼 자바 8에서는 메서드 참조를 만들어 전달할 수 있게 되었음.
  • 자바 8에서는 메서드를 일급값으로 취급할 뿐 아니라 람다를 포함하여 함수를 값으로 취급할 수 있음.

 

1.4 스트림

  • 컬렉션에서는 반복 과정을 직접 처리해야 했음. 즉, for-each 루프를 이용해서 각 요소를 반복하면서 작업을 수행했음. 이런 방식의 반복을 외부 반복이라고 함.
  • 스트림 API에서는 라이브러리 내부에서 모든 데이터가 처리됨. 이와 같은 반복을 내부 반복이라고 함.

 

1.5 디폴트 메서드와 자바 모듈

  • 자바 9의 모듈 시스템은 모듈을 정의하는 문법을 제공하므로 이를 이용해 패키지 모음을 포함하는 모듈을 정의할 수 있음. 
  • 또한 자바 8에서는 인터페이스를 쉽게 바꿀 수 있도록 디폴트 메서드를 지원함.

 

1.6 함수형 프로그래밍에서 가져온 다른 유용한 아이디어

  • 자바 8에서는 NullPointer 예외를 피할 수 있도록 도와주는 Optional<T> 클래스를 제공함. Optional<T>는 값을 갖거나 갖지 않을 수 있는 컨테이너 객체.
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함