dbw*_*dbw 7 java events android javafx event-handling
我的要求是我正在寻找一个轻量级的事件框架,它兼容Android和Java Fx(Windows和Linux平台),因此它可以在这两种技术中无缝运行.
我研究了现有的基于事件的框架.
1)事件框架mbassador(by bennidi) - >它与android 4.0(冰淇淋三明治)兼容,因为它与javafx工作正常,并且重量轻,性能也很好.
2)Guava EventBus: - 从文档来看它似乎与android兼容,但性能如何,它比mbassador更好.
事件框架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)(我从本网站的谷歌缓存页面得到了结果)其中谷歌番石榴,SimpleBus,EventBus和大使框架进行了比较,大使是明显的赢家.
编辑:我删除了图片快照,只关注最终结果,
所比较的实现的所示性能特征表明,
1.监听器订阅对于所有实现而言是昂贵的操作,但是MBassador和Guava
2.由于更高的争用/同步,并发访问通常会降低总线性能.
3. SimpleBus是迄今为止最慢的实现.
到目前为止,MBassador是所有方案中实施最快的.它还提供了最佳的扩展特性,这意味着更高的并发率不会像其他人那样降低总线性能.这是因为MBassador依赖于具有非常快速写入操作的自定义数据结构,这些操作不会阻止读取器,同时不会复制现有数据结构(大多数其他实现使用CopyOnWriteArrayList).
总结过去几个月我们一直在使用MBassador
,它符合我们的要求,它在Android,JavaFX中运行良好,在Linux,Windows,Mac等操作系统上也适用于简单的Java