7

我的要求是我正在寻找一个与 Android 和 Java Fx(Windows 和 Linux 平台)兼容的轻量级事件框架,以便在这两种技术中无缝运行。

我研究了现有的基于事件的框架。
1) 事件框架 mbassador (by bennidi)-> 是否与 android 4.0 (Ice Cream Sandwich) 兼容,因为它与 javafx 配合良好,重量轻,性能也不错。
2) Guava EventBus :- 从文档来看,它似乎与 android 兼容,但性能如何,是否比 mbassador 更好。

4

1 回答 1

7

事件框架MBassador与 Android 4.0 兼容。
Guava Event Bus是轻量级的,并且与这两种技术兼容。

上述框架都是轻量级的,并为订阅/发布模式提供了健壮的机制,并且根据MBassador对其初始设计的描述,它的灵感来自但在某些场景中Guava Event Bus使用的对侦听器的强引用是个问题。Guava Event Bus

根据GitHub MBassador描述中的学分部分

创建此组件的最初灵感来自尝试 Google Guava 的事件总线实现。我喜欢它设计的简单性,而且我非常信任 Google 的开发人员,所以我很高兴地发现他们也提供了一个事件总线系统。它被证明对我们的场景不可用的主要原因是它使用了对侦听器的强引用,因此每个对象都必须显式注销。这在我们的 Spring 托管环境中很困难。最后,我决定创建一个自定义实现,然后它变得稳定、可扩展且非常高效

这两个框架都是健壮的、轻量级的,这取决于您使用哪一个框架。

我在 [Java 事件总线库比较]]( http://codeblock.engio.net/?p=37 ) 上找到了性能比较(我从本网站的 google 缓存页面获得了结果)其中 Google Guava、SimpleBus、EventBus和 mbassador 框架进行了比较,MBassador 是明显的赢家

编辑:我删除了图片快照,只关注最终结果,

所显示的比较实现的性能特征表明:
1. 订阅侦听器是除 MBassador 和 Guava 之外的所有实现的昂贵操作
2. 由于更高的争用/同步,并发访问通常会降低总线性能。
3. SimpleBus 是迄今为止最慢的实现。
4. MBassador 是迄今为止所有场景中最快的实现。它还提供了最好的扩展特性,这意味着更高的并发率不会像其他的那样降低总线性能。这是因为 MBassador 依赖于具有非常快的写入操作的自定义数据结构,不会阻塞读取器,同时不会复制现有数据结构(大多数其他实现使用 CopyOnWriteArrayList)。

总结一下,在过去的几个月里,我们一直在使用MBassador它,它符合我们的要求,它在Android、JavaFX中运行良好,并且在Linux、Windows、Mac等操作系统上的简单 Java中也运行良好

于 2013-08-30T11:49:09.767 回答