Java开发人员的反应编程介绍 - Fernando Almeida

栏目: Java · 发布时间: 6年前

内容简介:不可否认的是,在Dev(和Ops最近)领域出现的数千项创新中,讨论最多的主题之一是反应式编程。新的FW框架不断推出,例如ReactiveX(RxJava)的Java语言的实现,最近推出的带有反应式编程的Spring 5,甚至是Java 8中的lambdas和流的推出(自2014年起),很明显,越来越多的反应性思维正在我们使用的代码和FW中出现。由于我是Java Dev,我将尝试在此处评论Java开发人员今天所依赖的主要选项以便创建他们的应用程序。在日常编程的各种情况下,这可能是一个很好的选择,将复杂或昂贵的

不可否认的是,在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 和Flux 。两者都被视为数据流,最多1个(单Mono )或更多(Flux)元素,并通过支持发布者→流的订阅者模式来工作。Spring 5已经发布,这里列出并讨论了新的反应功能。

在今天的市场中,我认为这些是最实用和众所周知的选项(具有活跃的社区和全面的文档),可以使用Java语言中的反应式编程概念。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Haskell

Haskell

Simon Thompson / Addison-Wesley / 1999-3-16 / GBP 40.99

The second edition of Haskell: The Craft of Functional Programming is essential reading for beginners to functional programming and newcomers to the Haskell programming language. The emphasis is on th......一起来看看 《Haskell》 这本书的介绍吧!

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具