RxJava - Tổng quan
RxJava là một phần mở rộng dựa trên Java của ReactiveX. Nó cung cấp triển khai hoặc dự án ReactiveX trong Java. Sau đây là các đặc điểm chính của RxJava.
Mở rộng mẫu người quan sát.
Hỗ trợ chuỗi dữ liệu / sự kiện.
Cung cấp cho các toán tử soạn các chuỗi với nhau một cách khai báo.
Xử lý cấu trúc dữ liệu phân luồng, đồng bộ, an toàn và đồng thời trong nội bộ.
ReactiveX là gì?
ReactiveX là một dự án nhằm cung cấp khái niệm lập trình phản ứng cho các ngôn ngữ lập trình khác nhau. Lập trình phản ứng đề cập đến kịch bản trong đó chương trình phản ứng khi và khi dữ liệu xuất hiện. Nó là một khái niệm lập trình dựa trên sự kiện và các sự kiện có thể truyền đến các quan sát viên đăng ký.
Theo Reactive, họ đã kết hợp những gì tốt nhất của mẫu Observer, mẫu Iterator và mẫu chức năng.
Mẫu Observer được thực hiện đúng. ReactiveX là sự kết hợp của những ý tưởng tốt nhất từ mẫu Observer, mẫu Iterator và lập trình chức năng.
Lập trình chức năng
Lập trình chức năng xoay quanh việc xây dựng phần mềm sử dụng các chức năng thuần túy. Một hàm thuần túy không phụ thuộc vào trạng thái trước đó và luôn trả về cùng một kết quả cho cùng các tham số được truyền vào. Các chức năng thuần túy giúp tránh các vấn đề liên quan đến các đối tượng được chia sẻ, dữ liệu có thể thay đổi và các tác dụng phụ thường phổ biến trong môi trường đa luồng.
Lập trình phản ứng
Lập trình phản ứng đề cập đến lập trình theo hướng sự kiện trong đó các luồng dữ liệu đến theo kiểu không đồng bộ và được xử lý khi chúng đến.
Lập trình phản ứng chức năng
RxJava thực hiện cả hai khái niệm với nhau, trong đó dữ liệu của các luồng thay đổi theo thời gian và chức năng của người tiêu dùng phản ứng tương ứng.
Tuyên ngôn phản ứng
Tuyên ngôn phản ứng là một tài liệu trực tuyến nêu rõ tiêu chuẩn cao của hệ thống phần mềm ứng dụng. Theo tuyên ngôn, sau đây là các thuộc tính chính của một phần mềm phản ứng:
Responsive - Nên luôn đáp ứng kịp thời.
Message Driven - Nên sử dụng cách truyền thông điệp không đồng bộ giữa các thành phần để chúng duy trì mối ghép lỏng lẻo.
Elastic - Luôn đáp ứng ngay cả khi chịu tải cao.
Resilient - Luôn đáp ứng ngay cả khi bất kỳ (các) thành phần nào bị lỗi.
Các thành phần chính của RxJava
RxJava có hai thành phần chính: Observables và Observer.
Observable - Nó đại diện cho một đối tượng tương tự như Stream có thể phát ra không hoặc nhiều dữ liệu, có thể gửi thông báo lỗi, có thể điều khiển tốc độ của đối tượng này trong khi phát ra một tập dữ liệu, có thể gửi dữ liệu hữu hạn cũng như vô hạn.
Observer- Nó đăng ký vào dữ liệu trình tự của Observable và phản ứng trên mỗi mục của các có thể quan sát. Người quan sát được thông báo bất cứ khi nào Observable phát ra dữ liệu. Một Observer xử lý dữ liệu từng cái một.
Người quan sát không bao giờ được thông báo nếu các mục không có mặt hoặc một cuộc gọi lại không được trả lại cho một mục trước đó.