본문 바로가기
반응형
SMALL

그룹 스터디 공부(IT 서적)/모던 자바 인 액션23

chapter 15 CompletableFuture와 리액티브 프로그래밍 컨셉의 기초 이 장의 내용 Thread, Future, 자바가 풍부한 동시성 API를 제공하도록 강요하는 진화의 힘 비동기 API 동시 컴퓨팅의 박스와 채널 뷰 CompletableFuture 콤비네이터로 박스를 동적으로 연결 리액티브 프로그래밍용 자바 9 플로 API의 기초를 이루는 발행 구독 프로토콜 리액티브 프로그래밍과 리액티브 시스템 15.1 동시성을 구현하는 자바 지원의 진화 Runnable, Thread → ExecutorService, Callable, Future, 제네릭 → RecursiveTask → 람다 → 분산 비동기 프로그래밍 15.1.1 스레드와 높은 수준의 추상화 프로세스는 다시 운영체제에 한 개 이상의 스레드 즉, 본인이 가진 프로세스와 같은 주소 공간을 공유하는 프로세스를 요청함으로 태.. 2023. 9. 6.
chapter 14. 자바 모듈 시스템 모던 자바 인 액션 14장에서는 자바 모듈 시스템에 대해 소개하고 있다. 자바 모듈 시스템이 무엇이며, 어디에 사용되는지, 이를 통해 어떤 이점이 있는지 알아본다. 자바 9에서 가장 많이 거론되는 새로운 기능은 모듈 시스템이다. 모듈 시스템은 완성까지 십년이 걸렸으며 그만큼 중요하고 구현하기 어려운 기능이다. 14.1 입력 : 소프트웨어 유추 소프트웨어를 만드는 데 도움을 주는 관심사분리와 정보 은닉을 살펴본다. 14.1.1 관심사분리 관심사분리는 프로그램을 고유의 기능으로 나누는 동작을 권장하는 원칙이다. 서로 겹치지 않는 코드 그룹으로 분리할 수 있고 그룹화한 모듈을 이용해 클래스 간의 관계를 시각적으로 확인할 수 있다. SoC 원칙은 다음과 같은 장점들이 있다. 아키텍처 관점, 복구 기법을 비즈니스.. 2023. 8. 31.
chapter 13 디폴트 자바 8이전에 자바에서는 인터페이스를 구현하는 클래스는 인터페이스에서 정의하는 모든 메서드를 구현하여 제공하거나 슈퍼클래스의 구현을 상속받아야 한다. 그런데 인터페이스에 새로운 메서드를 추가하는 경우가 있으면 해당 인터페이스를 구현했던 모든 클래스의 구현을 고쳐야 한다. 자바8 API에서 List 인터페이스에 sort같은 메서드를 추가했기 때문에 문제가 발생할 수 있다. 자바 8에서 기본 구현을 포함하는 인터페이스를 정의하는 두 가지 방법을 제공하는데 첫 번째, 인터페이스 내부에 정적 메서드를 사용하는 것 두 번째, 인터페이스의 기본 구현을 제공할 수 있도록 디폴트 메서드 기능을 사용하는 것 기존 인터페이스를 구현하는 클래스는 자동으로 인터페이스에 추가된 새로운 메서드의 디폴트 메서드를 상속받게 된다. .. 2023. 8. 25.
chapter 12 새로운 날짜와 시간 API 자바 8 이전의 날짜와 시간 API의 문제들 Date 클래스는 직관적이지 못하며 자체적으로 시간대 정보를 알고 있지 않다 Date를 deprecated 시키고 등장한 Calendar 클래스 또한 쉽게 에러를 일으키는 설계 문제를 갖고 있다 Date와 Calendar 두 가지 클래스가 등장하면서 개발자들에게 혼란만 가중되었다. 날짜와 시간을 파싱하는데 등장한 DateFormat은 Date에만 지원되었으며, 스레드에 안전하지 못했다. Date와 Calendar는 모두 가변 클래스이므로 유지보수가 아주 어렵다. 12.1 LocalDate, LocalTime, Instant, Duration, Period 클래스 java.time 패키지는 LocalDate, LocalTime, LocalDateTime, Ins.. 2023. 8. 24.
chapter 11 null 대신 Optional 클래스 이 장의 내용 null 참조의 문제점과 null을 멀리해야 하는 이유 null 대신 Optional : null로부터 안전한 도메인 모델 재구현하기 Optional 활용 : null 확인 코드 제거하기 Optional에 저장된 값을 확인하는 방법 값이 없을 수도 있는 상황을 고려하는 프로그래밍 11.1 값이 없는 상황을 어떻게 처리할까? public String getCarInsuranceName(Person person) { return person.getCar().getInsurance().getName(); } 위 코드에서 person이 null이거나 getCar(), getInsurance()가 null을 반환한다면 어떻게 될까? 11.1.1 보수적인 자세로 NullPointerException .. 2023. 8. 16.
chapter 10 람다를 이용한 도메인 전용 언어 이 장의 내용 도메인 전용 언어(domain-specific languages, DSL)란 무엇이며 어떤 형식으로 구성되는가? DSL을 API에 추가할 때의 장단점 JVM에서 활용할 수 있는 자바 기반 DSL을 깔끔하게 만드는 대안 최신 자바 인터페이스와 클래스에 적용된 DSL에서 배움 효과적인 자바 기반 DSL을 구현하는 패턴과 기법 이들 패턴을 자바 라이브러리와 도구에서 얼마나 흔히 사용하는가? 10.1 도메인 전용 언어 DSL은 특정 비즈니스 도메인의 문제를 해결하기 위해 만든 언어로, 자바에서는 클래스와 메서드를 이용하여 도메인을 표현합니다. DSL은 해당 도메인을 인터페이스로 만든 API와 같은 역할을 합니다. DSL은 특정 도메인에 국한된 용어와 동작을 갖는 범용 프로그래밍 언어가 아닙니다. .. 2023. 8. 10.
반응형
LIST