자바 역사를 통틀어 가장 큰 변화가 자바 8에서 일어났다. 자바8은 간결한 코드, 멀티코어 프로세서의 쉬운 활용 이 두가지 요구사항을 기반으로 한다.스트림 API메서드에 코드를 전달하는 방법인터페이스의 디폴트 메서드스트림을 이용하면 에러를 자주 일으키며, 멀티코어 CP
소비자의 요구사항은 항상 바뀐다. 이런 변화하는 요구사항에 대해 효과적으로 대응하기 위해서 동작 파라미터화(behavior parameterization) 를 이용하면 좋다.동작 파라미터화란 아직은 어떻게 실행할 것인지 결정하지 않은 코드 블록을 의미한다.코드 블록은
람다 표현식은 메서드로 전달할 수 있는 익명 함수를 단순화 한 것.람다 표현식은 이름은 가질 수 없지만 파라미터, 바디, 리턴 타입, 예외 리스트는 가질 수 있다.익명 : 이름이 없으므로 익명이라 표현하고 구현해야할 코드가 적고 간결하다.함수 : 메서드처럼 특정 클래스
거의 모든 자바 어플리케이션은 컬렉션을 이용하고 처리하기 위해서는 for문과 Iterator를 이용해서 코드를 작성해왔다.하지만 이러한 방식으로 작성된 코드는 길고 가독성이 좋지 않으며 재사용성 마저 떨어진다.또 데이터 소스마다 다른 방식으로 다뤄야한다. Collect
스트림 API가 지원하는 다양한 연산들을 살펴보자.Predicate로 필터링filter 메서드는 Predicate를 인수로 받아서 Predicate와 일치하는 모든 요소를 포함하는 스트림을 반환한다.다른 조건으로 여러 번 사용 가능하다.고유 요소로 이루어진 스트림을 반
예시로 시작해보자!! 통화별로 트랜잭션을 그룹화한 다음에 모든 트랜잭션 합계를 계산하는 예제 즉 Map 을 반환해야 한다. 명령형 코드 코드가 길어서 무엇을 실행하는지 파악하기 어렵다. 함수형 코드 이번 주제 키워드 reduce 연산(하나로 수렴)을 통해
병렬 스트림으로 데이터 병렬 처리하기병렬 스트림의 성능 분석포크/조인 프레임워크Spliterator로 스트림 데이터 쪼개기스트림을 이용하면 순차 스트림을 병렬 스트림으로 자연스럽게 바꿀 수 있다.컬렉션에 parallelStream을 호출하면 병렬 스트림이 생성된다.병렬
컬렉션 팩토리 메서드 사용하기리스트 및 집합과 사용할 새로운 관용 패턴맵과 사용할 새로운 관용 패턴자바 9 에서는 작은 컬렉션 객체를 쉽게 만들 수 있는 몇 가지 방법을 제공한다.자바에서는 적은 요소를 포함하는 리스트를 어떻게 만들까?고정 크기의 리스트를 만들었으므로
람다 표현식으로 코드 리팩터링 하기람다 표현식이 객체지향 설계 패턴에 미치는 영향람다 표현식 테스팅람다 표현식과 스트림 API 사용 코드 디버깅람다 표현식은 익명 클래스보다 코드를 좀 더 간결하게 만든다.그뿐만 아니라 동작 파라미터화의 형식을 지원하므로 람다 표현식을
null 참조의 문제점과 null을 멀리해야 하는 이유null 대신 OptionalOptional 활용Null 참조를 반환하는 방식으로 소유하고 있지 않음을 표현하는 경우가 있다.이러한 경우는 런타임 NPE가 발생하면서 프로그램 실행이 중단된다.이러한 NPE를 피하려면
Date 클래스는 직관적이지 못하며 자체적으로 시간대 정보를 알고있지 않다Date클래스의 여러 메서드를 deprecated 시키고 등장한 Calendar 클래스 또한 쉽게 에러를 일으키는 설계 문제를 갖고 있다Date와 Calendar 두 가지 클래스가 등장하면서 개발
디폴트 메서드란?진화되는 API가 호환성을 유지하는 방법디폴트 메서드 활용 패턴해결 규칙바이너리 호환성은 유지되지만 소스 호환성은 유지되지 않아 해당 인터페이스를 구현한 모든 클래스를 수정해야한다.따라서 공개된 자바 API를 고치는 일은 굉장히 어려운 일이었다.자바 8
public 생성자: 전통적인 수단정적 팩터리 메서드(static factory method)해당 클래스의 인스턴스를 반환하는 정적 메서드디자인 패턴에서의 팩터리 메서드와 다름생성자에 넘기는 매개변수와 생성자 자체만으로는 반환될 객체의 특성을 제대로 설명하기 어렵다Bi
선택적 매개변수가 많을 때 적절히 대응하기 어려움ex) 영양정보를 표현하는 클래스필수 항목: 1회 내용량, n회 제공량, 1회 제공량당 칼로리선택 항목: 총 지방, 트랜스지방, 콜레스테롤, 나트륨 등 20가지 이상대다수 제품은 선택 항목 중 대다수의 값이 0이런 클래스
인스턴스를 오직 하나만 생성할 수 있는 클래스를 말한다.ex) 함수와 같은 무상태 객체, 설계상 유일해야 하는 시스템 컴포넌트클래스를 싱글턴으로 만들면 이를 사용하는 클라이언트를 테스트하기가 어려워질 수 있다.타입을 인터페이스로 정의한 다음 해당 인터페이스를 구현해서