Java開發人員的反應程式設計介紹 - Fernando Almeida
不可否認的是,在Dev(和Ops最近)領域出現的數千項創新中,討論最多的主題之一是反應式程式設計。新的FW框架不斷推出,例如ReactiveX(RxJava)的Java語言的實現,最近推出的帶有反應式程式設計的Spring 5,甚至是Java 8中的lambdas和流的推出(自2014年起),很明顯,越來越多的反應性思維正在我們使用的程式碼和FW中出現。
由於我是Java Dev,我將嘗試在此處評論Java開發人員今天所依賴的主要選項以便建立他們的應用程式。在日常程式設計的各種情況下,這可能是一個很好的選擇,將複雜或昂貴的資源用來解決真正的問題是很重要的(著名的殺戮大炮)。但是,在對各種工具進行評論之前,我想簡要介紹一下這種正規化的著名支柱(根據Reactive Manifesto):
- 可伸縮性Elastic - 對需求/負載做出反應 - 應用程式可以使用多個核心和多個伺服器;
- 彈性Resilient - 對故障做出反應 - 應用程式對軟體,硬體和連線故障做出反應並從中恢復;
- 訊息驅動 - 事件驅動 - 系統由非同步和非阻塞事件處理程式組成,而不是跨多個同步執行緒組合應用程式;
- 響應性 -對使用者做出反應- 為使用者提供豐富的“實時”互動的應用程式。
關於反應式程式設計模型,它們已經出現並得到改進,以解決稱為阻塞API,高延遲和同步處理等問題。根據本文的目的,目前,使用Java的專案中的主要搜尋和使用包括以下工具:
RxJava
儘管作為Java社群的著名FW,在我看來,RxJava仍然缺乏Java Web開發人員的深入使用和研究。今天,僅在Android應用程式開發中仍然存在使用。
雖然RxJava不使用訊息方向例如Akka actor模型(我將在下面評論)作為FW的主要功能,,但它提供了許多功能,其中訊息方向變得更加明顯。最好的例子是Rx的主題。簡而言之,主題實現了釋出/訂閱標準。
在RxJava中,主題Subject同時表示Observer和Observable,允許將事件從單個源多播到多個訂閱者。由於負責釋出的元件不知道誰將成為訊息的消費者,因此該模型保證了應用程式元件之間的低耦合。
一些Web FW也使用Rx作為其實現的一部分,如Vert.x,它實現了RxJava的Observable,並且還實現了接近Reactive-Streams的結構(No Vert.x 2.x)。最後,這個實現的一個亮點是RxJava還可以很好地處理流的背壓,允許開發人員(透過API中的預定義方法)決定如何處理“阻塞”的流。
Akka
Akka是一個工具包和執行時,用於在JVM中構建併發,分散式,容錯,事件感知應用程式。FW Akka可以與Java和Scala一起使用。演員Actor是阿卡的執行單位。actor是一種抽象,有助於建立同步,並行和分散式系統。演員背後的關鍵原則是應用程式僅透過訊息與他互動,而不會直接與他交談。這種抽象允許基於actor的應用程式透明地擴充套件並保持低耦合級別。雖然這個FW不僅具有反應性,但它具有反應性解決方案的幾個特徵(如彈性和彈性),即使最初用Scala編寫,它也很容易與Java整合。除了RxJava和Vert.x(帶有反應流),
Akka已經與Java整合了一段時間,但是使用Java 8(帶有lambda和流),整合已經採用了更高效和更一致的形式。
Reactor Project
該專案包含一系列功能,允許使用FW Spring 5在JVM中處理活動流。該專案基於另一個名為Reactor Cor的預先存在的專案,該專案允許Pivotal改進並插入在Spring 5中啟動的那些功能。利用原始設計,允許您以簡化的方式編寫高效能,可擴充套件和容錯的程式碼。這一切都與Java開發人員已經從Spring使用的許多功能相結合。
Reactor專案由兩種主要型別構建,Mono <T>和Flux <T>。兩者都被視為資料流,最多1個(單Mono )或更多(Flux)元素,並透過支援釋出者→流的訂閱者模式來工作。Spring 5已經發布,這裡列出並討論了新的反應功能。
在今天的市場中,我認為這些是最實用和眾所周知的選項(具有活躍的社群和全面的文件),可以使用Java語言中的反應式程式設計概念。
相關文章
- Java開發人員在程式設計中常見的雷!Java程式設計
- 一些Java開發人員在程式設計中常見的雷!Java程式設計
- Java併發程式設計-volatile可見性的介紹Java程式設計
- 分享一些Java開發人員在程式設計中最容易踩雷的地方!Java程式設計
- Java併發程式設計-Future系列之Future的介紹和基本用法Java程式設計
- PHP 程式設計師開發比特幣入門介紹PHP程式設計師比特幣
- java設計模式一一設計模式的簡介和介紹Java設計模式
- NIO程式設計介紹程式設計
- Java 程式設計開發Java程式設計
- 隨著低程式碼的發展,程式設計不再僅適用於開發人員。程式設計
- 好程式設計師Java教程分享MyBatis Plus介紹程式設計師JavaMyBatis
- Shell程式設計 --- Shell介紹程式設計
- 開發人員應該害怕低程式碼嗎?
- 程式設計師有話說:開發人員提升自己的四種方式程式設計師
- 一個SAP開發人員的年終總結:程式設計與游泳程式設計
- Java中函數語言程式設計Monad概念介紹Java函數程式設計
- 入門全棧Java程式設計師——課程介紹全棧Java程式設計師
- 每個Java開發人員應該知道的五種RESTful客戶端程式碼JavaREST客戶端
- AOP程式設計之AspectJ介紹及在Android中的應用程式設計Android
- go 併發程式設計案例一 課程介紹Go程式設計
- Linux中Libevent程式設計介紹Linux程式設計
- Python多工程式設計介紹Python程式設計
- Erlang/Elixir 中的 OTP 程式設計介紹程式設計
- Linux系統程式設計之程式介紹Linux程式設計
- Java程式設計師必讀:最新流行的Java開發程式設計技術Java程式設計師
- 好程式設計師Java學習資源分享RabbitMQ介紹程式設計師JavaMQ
- IT程式設計各學科語言的介紹程式設計
- shell程式設計–bash變數介紹程式設計變數
- 什麼是反應式程式設計?程式設計
- 聊聊Spring Reactor反應式程式設計SpringReact程式設計
- go 併發程式設計案例二 常見併發模型介紹Go程式設計模型
- Java程式設計師面試時,如何進行自我介紹呢?Java程式設計師面試
- Java開發人員必備Linux命令JavaLinux
- Harmony 應用開發常用元件介紹元件
- 解構反應式程式設計——Java8,RxJava,Reactor之比較程式設計RxJavaReact
- 軟體開發人員如何提升自己的架構設計能力?架構
- Whitehat Security:75%的開發人員擔心應用程式安全性
- DDD不是開發人員的工具,而是系統設計的工具 - ntcoding