Java对象之间的有效通信

时间:2010-01-28 22:24:19

标签: java performance module implementation

我正在开发一个用于创建各种规模的高效应用程序的框架。应用程序由模块组成(应用程序也是一个模块),性能对我来说很重要。我知道现有模块化等框架,但我需要实现自己的框架。虽然我推翻了各个模块的性能并对其进行了优化,但是对象之间(以及线程之间)的通信是我无法决定如何实现的。以下是我考虑的一些选项:

  • NIO Pipes
  • 事件(注册听众)
  • 应用程序上下文中的事务队列

我的问题是, 哪一项更能避免瓶颈和锁定?或者您可以提出任何其他建议吗?

4 个答案:

答案 0 :(得分:3)

我唯一的建议是不要这样做。正如Bill K所说,大多数实现都会更快,更完整。更重要的是,有很好的资源来实现你想要做的事情:例如OSGi,它有Eclipse和Glassfish v3。

我个人实现了类似于你的描述,在运行时加载插件而无需重启容器。维护和调试是一场噩梦。更重要的是,虽然我实现新模块相对容易(毕竟,我设计了这个模块),但编程非常困难。我最终学到了很多关于类加载器的知识,但就是这样。

答案 1 :(得分:2)

有太多变数。唯一可以知道的方法是以可插拔的方式对您的消息传递系统进行编码,以便您可以用不同的方式编写它并在编码时进行测量。

可惜你已经抛弃了使用框架,大多数会比你自己写的任何东西都快得多,更完整,更实用。提出这一要求的人应该面对并可能被解雇。

答案 2 :(得分:1)

i am developing a framework for creating efficient applications in all sizes

为了给出一个非常一般性的建议,我建议你深入了解jboss的源代码,以了解当它们应该工作时如何制作的东西(也许是你可以获得的最旧版本,作为起点)

答案 3 :(得分:0)

如果这是一个旨在推动生产质量的代码的项目,我强烈建议您不可以实现自己的框架。

首先,很明显,您对框架所需的应用程序或者可用于实现此类框架的各种技术的了解不足。不要低估你缺乏知识,以及在你开始时不知道自己在做什么的项目的风险。

其次,您实施自己的框架的动机是错误的。如果您发现现有框架对于您的需求而言过于庞大和复杂,请选择更简单的框架,或者只是学习完成工作所需的子集......并忽略其余部分。

第三,设计和构建一个半合适的框架是很多工作。这可能是您应该花时间构建实际应用程序的时间。当然这很有趣,但你的老板可能对结果更感兴趣。

第四,不要低估使用许多其他人使用的框架的内在优势;例如一个提出问题的社区(比如SO),一个改善框架的社区,在他们的简历中使用框架的就业人员。

最后,通过实施自己的框架,您很可能为团队/公司创建许多额外的未来维护工作。你弄错了,你的同事们会在未来10年里在走廊上咒骂你。即使您使框架100%正确,组织中的某个人仍然必须在依赖它的应用程序的生命周期内维护它。