6장. 가상 스레드에 비추어 본 리액티브 Java의 관련성
이 작품은 AI를 사용하여 번역되었습니다. 여러분의 피드백과 의견을 환영합니다: translation-feedback@oreilly.com
Loom이 리액티브 프로그래밍을 죽일 것 같아요.... 리액티브 프로그래밍은 과도기적인 기술이었습니다.
Brian Goetz
앞의 인용문에 대해서는 언급하지 않겠지만(적어도 아직은), 이 장에서는 많은 개발자들 사이에서 오랫동안 인기를 끌고 있는 기존 대안을 소개하겠습니다: 바로 리액티브 Java입니다.
지난 몇 장에 걸쳐 가상 스레드의 작동 방식과 장점, 그리고 Java에서 동시성을 보다 쉽게 이용할 수 있도록 하는 역할을 이해하면서 가상 스레드를 자세히 살펴봤습니다. 가상 스레드가 동시성 환경에서 큰 혁신이라는 것을 알 수 있었습니다. 가상 스레드를 사용하면 개발자는 익숙한 명령형 프로그래밍 모델을 사용해 동시성이 높은 애플리케이션을 작성하는 동시에 블로킹 작업을 효율적으로 처리할 수 있습니다.
그러나 가상 스레드가 동시성을 효율적으로 처리하고 I/O를 차단하는 유일한 솔루션은 아닙니다. 가상 스레드가 각광받기 전에는 많은 개발자가 확장 가능하고 블로킹이 없는 애플리케이션을 구축하기 위해 리액티브 프로그래밍을 사용했습니다. 이 접근 방식은 종종 Project Reactor, RxJava, Eclipse Vert.x 등과 연관되어 있으며, 이벤트 중심적이고 기능적이며 본질적으로 비동기적인 완전히 다른 패러다임을 수용합니다.
이 장에서는 실행 모델, 프로그래밍 스타일, 사용 편의성 및 학습 곡선, 과제, 이점 등을 살펴보면서 Reactive Java를 살펴봅니다.
시작하겠습니다.
Java에서 리액티브 프로그래밍 이해하기
리액티브 프로그래밍 은 비동기 데이터 스트림과 변경 사항의 자동 전파를 중심으로 하는 선언적 패러다임입니다.
개발자는 명령어의 단계별 실행에 초점을 맞추는 대신 이러한 스트림 간의 관계와 데이터를 변환하는 방법을 정의합니다. 이러한 스트림은 사용자 입력, 센서 판독값, 외부 시스템의 데이터 등 시간이 지남에 따라 변화하는 모든 것을 나타낼 수 있습니다. 스트림의 값이 변경되면 반응형 프레임워크는 해당 변경 사항을 자동으로 다운스트림으로 전파하여 모든 종속 컴포넌트를 업데이트합니다. 이를 통해 비동기 이벤트를 효율적으로 처리하고 복잡한 이벤트 중심 애플리케이션 개발을 간소화할 수 있습니다. 개발자는 데이터 변환과 반응을 실행하는 방법 대신 어떤 데이터 변환과 반응이 일어나야 하는지 표현함으로써 보다 유지 보수성 있고 확장 가능한 시스템을 만들 수 있습니다. 널리 사용되는 반응형 프로그래밍 라이브러리 및 프레임워크에는 이러한 데이터 스트림을 생성하고 조작하는 도구를 제공하는 RxJava, Reactor, Akka Streams 등이 있습니다.
Java 생태계에서 반응형 프로그래밍은 일반적으로 비차단, 비동기 작업 및 이벤트 중심 아키텍처와 연관되어 있습니다.
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access