본문 바로가기

Java8

Java Optional Optional 개발 배경 자바로 프로그램을 개발하면서 NullPointerException을 겪지 않은 사람은 없다. public class Person { private Car car; public Car getCar() { return this.car; } } public class Car { private Insurance insurance; public Insurance getInsurance() { return this.insurance; } } public class Insurance { private String name; public String getName() { return this.name; } } Null을 체크하는 방법 public String getInsuranceName(P.. 2023. 6. 14.
클래스 로더, 클래스 로딩 클래스 로더(ClassLoader) Java 프로그램이 실행될 때 클래스 파일을 로드하는 데 사용되는 핵심 구성요소. Java ClassLoader는 Java 클래스 파일을 JVM에 로드하여 해당 클래스를 사용할 수 있도록 합니다. Bootstrap ClassLoader JVM에는 먼저 Bootstrap ClassLoader가 로드된다. 이 ClassLoader는 Java 표준 라이브러리에 포함된 클래스 파일을 로드한다. Extension ClassLoader Java 확장 라이브러리를 로드하는데 사용된다. System ClassLoader 사용자가 작성한 클래스 파일을 로드하는 데 사용된다. 클래스 로딩(Class Loading) JVM이 클래스 파일을 읽어들이는 과정. 1. 로딩 클래스 로더가 클래스.. 2023. 3. 1.
[모던 자바 인 액션] 리액티브 프로그래밍 리액티브 프로그래밍 리액티브 프로그래밍에서는 다양한 시스템과 소스에서 들어오는 데이터 항목 스트림을 비동기적으로 처리하고 합쳐서 문제를 해결한다. 이런 애플리케이션은 발생한 데이터 항목을 바로 처리함으로 사용자에게 높은 응답성을 제공한다. 1. 리액티브 매니패스토 리액티브 매니패스토reactive manifesto(https://www.reactivemanifesto.org)에 리액티브 애플리케이션과 시스템 개발의 핵심 원칙을 정의한다. 반응성(responsive) 일정하고 예상할 수 있는 반응시간을 제공한다. 회복성(resilient) 장애가 발생해도 시스템은 반응해야 한다. 탄력성(elastic) 작업 부하가 발생하면 자동으로 관련 컴포넌트에 할당된 자원 수를 늘린다. 메시지 주도(Message-dr.. 2023. 2. 4.
[모던 자바 인 액션] CompletableFuture : 안정적인 비동기 프로그래밍 CompletableFuture: 안정적 비동기 프로그래밍 1. Future의 단순 활용 비동기 계산을 모델링하는 데 Future를 이용할 수 있으며, Future는 계산이 끝났을 때 결과에 접근할 수 있는 참조를 제공한다. 시간이 걸릴 수 있는 작업을 Future 내부로 설정하면 호출자 스레드가 결과를 기다리는 동안 다른 유용한 작업을 수행할 수 있다. Future는 저수준에 스레드에 비해 직관적으로 이해하기 쉽다는 장점이 있다. Future를 이용하려면 시간이 오래 걸리는 작업을 Callable 객체 내부로 감싼 다음에 ExecutorService에 제출해야 한다. ExecutorService executor = Executors.newCachedThreadPool(); Future future = .. 2023. 1. 20.