Java 是否可以使用非函数式语言构建反应式应用程序?
我想了解,反应式应用程序宣言背后的原则是否可以使用非功能性语言实现 有人说,由于FP使用不可变状态和自由副作用函数,它们更容易实现并发、分布式和弹性系统 但是,我们如何以Java为例实现这一点呢 有些框架,比如ApacheCamel,有一些组件可以使用,比如Camel RX和Camel SEDA 这些框架够了吗 我将尝试澄清我的问题: 我认为反应式编程是一种新的编程范式,而新的编程范式需要新的工具和框架 函数式语言以不同的方式处理对象,这就是为什么有很多关于FRP处理基于事件和异步的事物的文章 但是现在,回到Java或其他面向对象语言,让我们考虑一下Web应用程序:Java 是否可以使用非函数式语言构建反应式应用程序?,java,functional-programming,apache-camel,reactive-programming,Java,Functional Programming,Apache Camel,Reactive Programming,我想了解,反应式应用程序宣言背后的原则是否可以使用非功能性语言实现 有人说,由于FP使用不可变状态和自由副作用函数,它们更容易实现并发、分布式和弹性系统 但是,我们如何以Java为例实现这一点呢 有些框架,比如ApacheCamel,有一些组件可以使用,比如Camel RX和Camel SEDA 这些框架够了吗 我将尝试澄清我的问题: 我认为反应式编程是一种新的编程范式,而新的编程范式需要新的工具和框架 函数式语言以不同的方式处理对象,这就是为什么有很多关于FRP处理基于事件和异步的事物的文章
- 前端是一个很好的ajax框架,它使后端的“信息传递”更加顺畅李>
- 在后端,一种使用框架或库(Camel SEDA ou Camel RX)并行执行事情的方法
你认为这是一个好方法吗?好吧,如果你看一下你的参考资料,你会发现,“functional”一词根本没有出现在那里。相反,有4个特定标准用于定义什么是“反应式”应用程序:
- 事件驱动
- 可伸缩
- 弹性的
- 响应的
RxJava之类的框架可以通过提供一个面向数据流的事件驱动系统,进一步帮助您编写满足宣言中定义的标准的应用程序,这基本上是最新的。反应式编程不是新的,但对大多数人来说是新的。它只是数据流的另一个名称,自20世纪60年代以来一直存在。反应式宣言只是描述数据流和反应式编程的最佳品质的一种方式 函数式语言当然是不需要的,也不是一个巨大的库。我已经实现了许多数据流系统。它们中的大多数都是助手函数的集合,而不是大多数人所说的“库”。这实际上取决于您希望在系统中使用什么类型的功能 数据流是一个非常“广泛”的话题。该系统可以包括许多很好的功能,也可以只包含基本功能。数据流的核心是数据控制执行。这与“控制流”(在C#和Java等所有主流语言中使用)形成对比,在“控制流”中,您可以告诉计算机何时、何地以及如何处理数据。最常见的数据流形式是管道模型。。。通过链接(也称为管道、导线或圆弧)顺序连接到另一个的一系列长方体(或节点)
我刚刚开始研究可用于Java数据流编程的库,所以现在无法给出具体的答案。RxJava似乎是Java中数据流的当前“名牌”,所以我将从这里开始。在我即将出版的书()中,我将用一整节的篇幅介绍通用语言(包括Java)中可用的数据流库。定义反应式是第一步。例如: 反应式程序中的每一个状态都定义了如何计算它,运行时管理它们的计算,而不是发出修改共享状态的命令;运行时传播派生状态。如果您已经编写了电子表格公式,那么您已经完成了反应式编程 ReactiveSax源于SAX的一个基本缺陷,该缺陷使其与反应式编程模型不兼容。SAX的思想非常适合于反应式编程,因为它是一个推送模型——事件被推送到管道中的下一个事件,它进行一些处理并将内容推送到下一个事件,等等。不幸的是,XMLReader接口定义了一个解析方法,该方法在到达实际的解析器之前调用解析链;该方法采用InputSource参数,该参数必须提供InputStream。这就是缺陷所在——InputStream是一个阻塞I/O,从根本上说是一个阻塞拉动。这与SAX的推送模型背道而驰,不适合使用Future或Task进行反应式编程。如果一组解析器阻塞了所有等待输入的线程,并且它们提取输入的能力依赖于程序的其他位推送数据(比如说,推送数据到java.nio.Pipe或java.io.PipedWriter),那么您将面临死锁 一个可观察的XmlReader将允许您订阅它,并将为您迭代Xml文档,在读取每个节点时通知您。使用这种方法的程序员可以很容易地编写反应式LINQ表达式,以在Xml中的特定节点上进行选择,从而生成看起来和感觉上都很像LINQtoXML的代码,但具有XmlReader的所有性能优势 怒族游戏