java应用架构设计

                                     第二章 模块化的两方面

                         模块化的两方面:运行时模型和开发模型。

        2.1运行时模型:是关注如何在运行时对模块化的软件系统进行管理。在java平台中,模块化的系统事实标准是OSGI,很多应用应用平台借助OSGi运行时的能力增强模块化。直到现在众多使用平台内部封装OSGi却选择对企业级开发人员隐藏,所以开发人员无法构建充分利用模块化运行环境的应用程序。

       2.2 开发模型:解决的问题是开发人员怎样使用框架构架软件应用。开发模型可以分为两类:编辑模型设计范式

      2.2.1 编辑模型:利用框架和工具,开发人员可以使用运行时模块系统的能力,而不用担心编程模型。框架封装了对API的依赖,这样代码就不用直接和API交互了,通过这些关注点分离能够让java类依旧简单旧式java对象,他们不会依赖模块系统的框架。

     2.2.2设计模式:设计范式的几个实例如:面向对象(OO)编程以及企业级JavaBean(Enterprise JavaBean ,EJB)     。

       面向对象作为可重用的基础,类的粒度大小。开发团队很难的正确的把握和使用面向对象的理念。叫深层次结构的继承及包含太多功能的基类会导致设计不佳和脆弱的软件系统。总之,面向对象开发过早地失效了。面向对象编程语言的运行时功能提供了如多态,动态绑定等特性,开发人员可以很容易地理解编程模型中的很多方面。如今被视为面向对象技术的简单事实(“ 优先使用对象组合而不是对象继承”以及“面向接口编程而不是实现”)。

      企业级 java Bean 尤其是其中的实体bean,曾呗视为将java开发的业务应用进行组件化的一种方式。EJB的运行时能力是很吸引力的——事务、持久为、安全性、透明等——并且直接合并到平台中,不过两个很明显的问题:开发模式的复杂并且无法很好的理解。

     吸取的教训:面向对象的程序设计和EJB都曾经被视为有前途的技术,但事实证明,他们并没有达到期初所炒作的那样。问题不在于面向对象编程语言或实现EJB规范的平台,而在于我们怎么样使用这些技术设计应用。最大的挑战是关于设计规范的。

      注意:运行时模块化系统通常会支持一下几个功能:

  • 封装:包中任何公开类只要在类路径下就能被类路径下的其他类访问。所有的事情都是全局性的,这阻碍了模块化设计。运行时模块化系统提供了隐藏实现细节的能力。
  • 动态部署:在标准的java中更新软件通常需要重新启动JVM。运行时模块系统支持热部署。
  • 版本管理:在标准的java中,不能为一个类部署多个版本。模块化的系统允许部署多个版本。
  • 依赖管理:在标准的java中,没有实现模块的依赖结构。像Maven这样的构建工具试图通过描述依赖关系的JAR文件仓库解决这个问题。运行时模块系统可以实现运行时的依赖管理。
     总结:模块化有两个方面:运行时模型和开发模型。开发模型包括编程模型和设计范式。所有的方面都很重要的,但是如果不能理解如何设计模块化软件将会降低使用模块化运行时或框架带来的益处。    此文章摘抄于:java应用架构设计   模块化模式与OSGI  张卫滨 译 机械工业出版社。

        

猜你喜欢

转载自1025358610.iteye.com/blog/2197357