三言兩語閒聊 Reactive Programming

讀了這篇文章《Notes on Reactive Programming Part I: The Reactive Landscape》,寫一點本身的感想。前端

首先,反應式編程這個概念有不少含義,可能指 React JS 表明的前端技術,可能指的是函數式編程。可是,這裏要說的是 RxJava 這樣技術表明的,基於異步編程和非阻塞 IO 技術的異步編程技術。react

雖然 Java 多線程、非阻塞 IO 等技術已經發展了有超過10年的時間(從 Java 1.4 開始),可是現現在在 Java 時間普遍使用的仍是同步式的編程模型。代碼一行行地執行,雖然穩健,可是一些場景下卻顯得效率低下。在有不少 IO 調用的場景中,異步編程模型雖然能夠充分發揮非阻塞 IO 的威力,可是代碼編寫起來很負責,對開發人員的技術要求很是高,不是普通開發人員能夠完成的。spring

因而,近些年反應式編程的概念逐漸成熟,相關的模型和技術也涌現出很多。既有像 Netty 這樣打造穩健高效的 IO 通訊的技術,也有 Akka 這樣基於 Actor 模型實現的異步框架。而隨着 Java 8 的出現,Stream 編程的概念逐漸成熟。雖然 Java 8 中的 Stream 在異步方面仍是顯得很薄弱,可是卻使 Stream 的概念逐漸普及(固然實際工做中用的仍是頗有限)。在 Java 9 中,Flow 的出現將使JDK 的併發編程模型和 Stream 模型更好地融合。編程

固然,開源社區的動做要更快一點,在反應式編程領域,Netflix 的 RxJava、Spring 的 Reactor 和 TypeSafe 的 Akka 可謂是三駕馬車。這三個技術逐漸地將 Reactive Programming 這個鏡花水月般的技術(固然更主要地是由於本身修道太淺,久久參不透其中的道理)從概念轉變爲切切實實的技術。在即將發佈的 Spring 5 中,Reactor 也將做爲核心的技術被引入。多線程

因此,各位同行,是時候認真研究反應式編程技術,從而真正享受到異步編程和非阻塞 IO 所帶來的「飛」通常的享受。併發

相關文章
相關標籤/搜索