第二章 模块化的两方面

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

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应用架构设计_java应用架构设计相关推荐

  1. java架构分层_java分层架构概念

    service是业务层,DAO (Data Access Object) 数据访问 781407-20151031081225997-1073983018.jpg 1.JAVA中Action层, Se ...

  2. java获取当前周一_Java互联网架构-Spring IOC源码分析

    欢迎关注头条号:java小马哥 周一至周日下午三点半!精品技术文章准时送上!!! 精品学习资料获取通道,参见文末 源码介绍之前,看几个问题: Bean的承载对象是什么? Bean的定义如何存储的? B ...

  3. java购物车设计_Java简单购物车设计

    还是存在一些问题(比如clear函数没效果.乱码,单独测试也没,确实找不到问题),路过的给解决下... 第一部分     会话控制 会话跟踪: 使用隐藏表单字段 URL重写,实际就是直接把状态信息加到 ...

  4. java计算器课程报告_java计算器课程设计报告

    java计算器课程设计报告 Java 计算器 - 0 - <Java 计算器> Java 课程设计报告 姓 名: ******** 学 号: ******** 专 业: ********* ...

  5. java购物车设计_Java面向对象课程设计——购物车

    Java面向对象课程设计--购物车 小组成员:余景胜.刘格铭.陈国雄.达瓦次仁 一.前期调查 流程 客人(Buyer)先在商城(Mall)中浏览商品(Commidity),将浏览的商品加入购物车(Sh ...

  6. java class 静态模块_Java API 最佳设计实践:在模块化和非模块化 Java 环境中使用...

    了解在设计 Java API 时应该运用的一些 API 设计实践.这些实践通常很有用,而且可确保 API 能在诸如 OSGi 和 Java Platform Module System (JPMS) ...

  7. java数据结构课程设计_java数据结构课程设计

    华东交大理工学院 课程设计(论文)任务书 电信分院2009 电子商务专业一班 一.课程设计(论文)题目走迷宫 二.课程设计(论文)工作自 2011 年6月20 日起至 2011 年6月30 日止. 三 ...

  8. java 6大原则_java 6大设计原则 一:观察者模式

    ================================= 解耦常用的模式 ================================= OrderService.java @Servi ...

  9. java bean参数清空_Java互联网架构-Spring IOC底层源码分析

    欢迎关注头条号:java小马哥 周一至周日早九点半!下午三点半!精品技术文章准时送上!!! 精品学习资料获取通道,参见文末 spring ioc是spring的核心之一,也是spring体系的基础,那 ...

最新文章

  1. DCN-2655 ssh 远程登陆配置
  2. 斯坦福2018 AI指数报告出炉:DL职位需求两年增长35倍
  3. 手机淘宝 521 性能优化项目揭秘
  4. sqlserver 改变编码格式_PR基础教程 | Day7:导出及格式讲解
  5. C++volatile
  6. Premature Optimization
  7. 前端那些年----Webstream快捷键备忘(mac)
  8. 查看jvm 默认的垃圾回收器
  9. 第十三届东北师范大学程序设计竞赛热身赛 C(exgcd+欧拉函数)
  10. c语言 乘号 指针 避免,C语言指针篇(一)指针与指针变量
  11. WOFF字体的Mime类型?
  12. Python 数据分析与挖掘概述
  13. C++实现 利用前序序列和中序序列构建二叉树
  14. Java异常 #IllegalArgumentException: warning no match for this type name: com.wei.cloud.aop
  15. 曼卡尔M1投影仪怎么样?和哈趣H1对比哪款更好用?
  16. 【中塘镇】助力儿童,健康成长---创意超轻黏土手工制作主题活动
  17. HI3516DV300 图像输入
  18. 毕业设计 基于单片机的智能音响设计与实现 -物联网 嵌入式 stm32
  19. mysql输出max函数_MySQL中的max()函数使用教程
  20. 小米手机怎么复制加密门禁卡_小米手机NFC功能复制门禁卡功能升级手册,l加密卡也能添加!...

热门文章

  1. excel 进行二叉树_Excel下拉菜单,那些你不知道的操作
  2. Excel中文字换行
  3. 深度学习85—[深度学习] 感知器
  4. D3引擎用正则运算的方式,实现智能设备APP消息推送
  5. Linux/Unix系统编程手册 第三章:系统编程概念
  6. PHP编程最快明白 by www.kuphp.com 案例实战zencart1.38a支付模块简化Fast and Easy Checkout配置...
  7. PIE 支持项目介绍
  8. 课后作业:情境二:数据类型与运算符 3、运算符及表达式
  9. [不定期更新]需要记住的结论
  10. POJ 3436 ACM Computer Factory(最大流+路径输出)