我的要求是,我正在寻找一个轻量级的事件框架,它在Android和Java Fx(Windows和Linux平台)中兼容,以便在这两种技术中无缝运行。
我研究了现有的基于事件的框架
1) 事件框架mbassador(由bennidi)->它是否与android 4.0兼容(冰淇淋三明治)因为它可以很好地与javafx配合使用,而且重量轻,性能也很好
2) Guava EventBus:-从文档来看,它似乎与android兼容,但性能如何?它比mbassador更好吗。
Eventing框架MBassador
与Android 4.0兼容。
CCD_ 2是轻量级的,并且还与这两种技术兼容。
上述两个框架都是轻量级的,并为订阅/发布模式提供了强大的机制。根据对MBassador
的描述,它的最初设计灵感来自Guava Event Bus
,但在某些情况下,Guava Event Bus
中使用的对侦听器的强引用是个问题。
根据GitHub MBassador 描述中的学分部分
创建这个组件的最初灵感来自于尝试GoogleGuava的事件总线实现。我喜欢它的简单设计,我非常信任谷歌的开发人员,所以我很高兴发现他们还提供了一个事件总线系统。事实证明,它在我们的场景中不可用的主要原因是,它使用了对侦听器的强引用,因此每个对象都必须显式注销。这在我们的Spring管理环境中很困难。最后,我决定创建一个自定义实现,然后它成熟为稳定、可扩展且非常高效的
这两个框架都是健壮的、轻量级的,这取决于您的需求使用哪一个。
我在[Java事件总线库比较]]上找到了性能比较(http://codeblock.engio.net/?p=37)(我从这个网站的谷歌缓存页面上得到了结果),其中比较了谷歌Guava、SimpleBus、EventBus和mbassador框架,mbassador显然是赢家。
编辑:我删除了图片快照,只关注最终结果,
所显示的比较实现的性能特征表明,
1.对于除MBassador和Guava之外的所有实现,侦听器订阅都是一项昂贵的操作
2.并发访问通常会降低总线性能,因为争用/同步
3.SimpleBus是迄今为止实现速度最慢的
4.MBassador是迄今为止实现速度最快的场景。它还提供了最佳的扩展特性,这意味着较高的并发率不会像其他并发率那样降低总线性能。这是因为MBassador依赖于一个具有非常快速写入操作的自定义数据结构,该结构不会阻塞读取器,同时也不会复制现有的数据结构(大多数其他实现使用CopyOnWriteArrayList)。
综上所述在过去的几个月里,我们一直在使用MBassador
,它符合我们的要求,它在Android、JavaFX中运行良好,在Linux、Windows、Mac等O.S.