ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • CHAP1. 자바 8, 9, 10, 11 : 무슨 일이 일어나고 있는가?
    book/모던 자바 인 액션 2020. 7. 13. 00:40

    자바 역사상 가장 큰 변화는 자바 8에서 일어났으며 획기적이고 생산성이 바뀌었다.

    자바 9와 10 역시도 변화가 있었지만 자바 8만큼은 아니었다.

    이러한 변화들을 통해 프로그램을 더 쉽게 구현할 수 있게 되었다.

    익명 클래스를 사용하는 고전적 코드

     

    자바 8 코드

     

    자바8이 등장하기 이전에는

    - 코어 중 하나만을 사용( 나머지 코어들은 유휴 상태로 두거나 다른 용도로 사용 )

    - 멀티 코어를 사용하기 위하여 스레드를 사용 ( 스레드를 사용하면 관리가 어렵고 많은 문제가 발생할 수 있음 )

    위 두 가지의 특징을 가졌는데 자바 8이 등장한 후로는

    스트림을 이용하여 병렬 실행을 접근하는 방법을 제공하게 되었다.

     

     

    JAVA 8 에서 제공하는 새로운 기술

     

    1. 스트림 API

    - 기존에는 한 번에 한 항목을 처리했지만 하려는 작업을 SQL 쿼리문처럼 고수준으로 추상화하여 일련의 스트림으로 만들어 처리 ( 병렬 연산을 지원 )

    여기서 스트림이란?

     : 한 번에 한 개씩 만들어지는 연속적인 데이터 항목들의 모임

    - 스트림 파이프라인을 이용하여 입력 부분을 여러 CPU 코어에 쉽게 할당함으로써 스레드를 사용하지 않고 병렬성을 제공

    - 컬렉션 API와는 상당히 다른 방식으로 데이터를 처리

       컬렉션은 반복문과 반복자(iterator)를 통해서 처리했다면 스트림은 루프를 신경 쓸 필요가 없음

     

    2. 메소드에 코드를 전달하는 기법

     : 메소드를 다른 메소드의 인수로 넘겨주는 것을 동작 파라미터화라고 부른다. ( 함수형 프로그래밍의 핵심적인 사항 )

    - 변화하는 요구사항에 대응이 가능

    - 동작 파라미터의 복잡한 과정이 간소화 ( 메소드 참조는 :: 로, 람다는 -> 로 )

    - 하나의 파라미터로 다양한 동작이 가능

     

    3. 인터페이스의 디폴트 메소드

    - 자바8에서 호환성을 유지하면서 API를 바꿀 수 있도록 추가한 새로운 기능

    - 원래는 외부에서 만들어진 컴포넌트를 가져와서 시스템을 구축할 때 인터페이스를 바꾸게 되면 인터페이스를 구현하는 모든 클래스의 구현을 바꿔야했다.

    - 기존의 코드를 건드리지 않고도 원래의 인터페이스 설계를 자유롭게 확장

     

    프레디케이트(predicate)

     : 수학에서는 인수로 값을 받아 True 나 False로 반환하는 함수를 predicate라고 한다.

       test라는 메소드만을 가진 함수형 인터페이스

    'book > 모던 자바 인 액션' 카테고리의 다른 글

    CHAP5. 스트림 활용  (0) 2020.08.23
    CHAP4. 스트림 소개  (0) 2020.08.11
    CHAP3. 람다 표현식  (0) 2020.07.28
    CHAP2. 동작 파라미터화 코드 전달하기  (0) 2020.07.24
    JAVA8 공부 시작  (0) 2020.07.11
Designed by Tistory.