什么是框架

在的J2EE开发中,经常会提到“框架”这个词汇,例如Spring,Struts,Webx等等都称之为J2EE开发框架。那么什么是框架呢?

框架的英文为Framework,带有骨骼,支架的含义。

在软件工程中,框架被定义为整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法;另一种定义认为,框架是可被应用开发者定制的应用骨架。

一个框架是一个可复用的设计构件,它规定了应用的体系结构,阐明了整个设计、协作构件之间的依赖关系、责任分配和控制流程,表现为一组抽象类以及其实例之间协作的方法,它为构件复用提供了上下文(Context)关系。

框架是实现了某应用领域通用功能的底层服务。使用这种框架的编程人员可以在一个通用功能已经实现的基础上开始具体的系统开发。框架提供了所有应用期望的默认行为的类集合。具体的应用通过重写子类或组装对象来支持应用专用的行为。

通俗的说,框架是完成是某种应用的半成品,提供了一些常用的工具类和一些基础通用化的组件,可以供开发人员在此基础上,更便捷的完成各自特有的系统。

为什么要用框架

软件系统发展到今天已经很复杂了,特别是服务器端软件,涉及到的知识,内容,非常广泛。这样开发出完善健壮的软件,对程序员的要求将会非常高。如果采用成熟,稳健的框架,那么一些基础的通用工作,比如,事物处理,安全性,数据流控制等都可以交给框架处理,那么程序员只需要集中精力完成系统的业务逻辑设计,可以降低开发难度。

从程序员角度看,使用框架最显著的好处是重用,由于框架能重用代码,因此从一已有构件库中建立应用变得非常容易,因为构件都采用框架统一定义的接口,从而使构件间的通信简单。框架能重用设计。它提供可重用的抽象算法及高层设计,并能将大系统分解成更小的构件,而且能描述构件间的内部接口。这些标准接口使在已有的构件基础上通过组装建立各种各样的系统成为可能。只要符合接口定义,新的构件就能插入框架中,构件设计者就能重用构架的设计。框架还能重用分析。所有的人员若按照框架的思想来分析事物,那么就能将它划分为同样的构件,采用相似的解决方法,从而使采用同一框架的分析人员之间能进行沟通。

一种技术,最终都是为业务发展而服务的。从业务的角度来讲。首先,框架的是为了企业的业务发展和战略规划而服务的,他服从于企业的愿景(vision);其次,框架最重要的目标是提高企业的竞争能力,包括降低成本、提高质量、改善客户满意程度,控制进度等方面。最后,框架实现这一目标的方式是进行有效的知识积累。软件开发是一种知识活动,因此知识的聚集和积累是至关重要的。框架能够采用一种结构化的方式对某个特定的业务领域进行描述,也就是将这个领域相关的技术以代码、文档、模型等方式固化下来。

合理的使用框架可以带来的好处

重用代码大大增加,软件生产效率和质量也得到了提高;
代码结构的规范化,降低程序员之间沟通以及日后维护的成本;
知识的积累,可以让那些经验丰富的人员去设计框架和领域构件,而不必限于低层编程;
软件设计人员要专注于对领域的了解,使需求分析更充分;
允许采用快速原型技术; 有利于在一个项目内多人协同工作;
大粒度的重用使得平均开发费用降低,开发速度加快,开发人员减少,维护费用降低,而参数化框架使得适应性、灵活性增强。

框架分类

框架与类库是不同的,框架强调的是软件的设计重用性和系统的可扩充性,以缩短大型应用软件系统的开发周期,提高开发质量。

与传统的基于类库的面向对象重用技术比较,应用框架更注重于面向专业领域的软件重用。应用框架具有领域相关性,构件根据框架进行复合而生成可运行的系统。框架的粒度越大,其中包含的领域知识就更加完整。

J2EE有很多开源框架,一般每一种框架都会针对某一方面领域。

Struts是基于JavaEE应用的MVC设计模式的应用框架,减弱了业务逻辑接口和数据接口之间的耦合,以及让视图层更富于变化。

Hibernate是一个对象关系映射框架,目的是让Java程序员可以使用对象编程思维来操纵数据库。

Spring是一个综合型框架,致力于J2EE应用的各层的解决方案,而不是仅仅专注于某一层的方案。可以说Spring可以作为应用开发的“一站式”选择,并贯穿表现层、业务层及持久层。然而,Spring并不想取代那些已有的框架,它可以与其他框架无缝地整合。

考虑到面向的领域,以及实现编码实现,我们可以将将框架至少分为三类。

第一类是基础类库,主要包含多数项目所需要的类库。(开发人员将其作为一个类库使用,可以简化一些常用的算法逻辑。)

第二类是基础框架,该框架应该整合或者实现J2EE开发所需要的常用功能。(此框架可以为各类WEB项目开发提供基础支持。)

第三类是平台框架,针对于某种特定领域,实现特定领域所需要的常用功能。(这个框架需要实现具体领域的业务的逻辑。并且应该支持各类扩展)

转载于:https://www.cnblogs.com/relucent/p/3718579.html

程序开发为什么要使用框架相关推荐

  1. java cuba_CUBA平台–用于快速应用程序开发的开源Java框架

    java cuba 传统上,自计算时代开始以来,企业软件开发自然面临着一个挑战,当时自然而然地,企业软件开发本应专注于解决实际的业务问题,但与此同时,开发人员必须在技术上花费大量时间和精力.解决方案的 ...

  2. CUBA平台–用于快速应用程序开发的开源Java框架

    传统上,自计算时代开始以来,企业软件开发自然面临着一个挑战,当时自然而然地,企业软件开发本应专注于解决实际的业务问题,但与此同时,开发人员必须在技术上花费大量时间和精力.解决方案的一面,例如架构和通用 ...

  3. 小程序开发的5个框架

    1.最熟悉的微信小程序 2.WePY(发音:/'wepi /)是小程序上最早的一款类Vue语法的开发框架.WePY 2是基于小程序原生组件实现组件化开发.因此WePY 2支持的最低版本小程序基础库为1 ...

  4. uniapp + vue3微信小程序开发(1)框架搭建

    uniapp内置vue2,很多小伙伴喜欢用,但是作为首批吃螃蟹的人,肯定会想用vue3来开发,那么会遇到哪些问题呢? 1.编辑器等工具 Hbuilder X 3.4.6版本及以上(编辑器也在不断更新, ...

  5. 2022年移动应用程序开发的最佳后端框架

    技术的进步带来了移动应用程序开发过程的巨大变化.公司的目标是为客户提供有价值的产品--一种可以帮助用户满足他们需求的产品. 该框架被认为是移动应用程序开发过程的重要组成部分.框架是整个项目的依赖所依赖 ...

  6. 微信小程序开发原生与框架对比

    1.为什么使用框架 (1) 原生微信小程序工程化差.不支持node (2) 原生微信小程序语法比较奇怪还需要我们学习新的一套语法. (3) 微信小程序的开发者工具开发体验较差. (4) 使用框架可以使 ...

  7. 微信小程序开发引入vant框架(步骤详细,供学习的同学们参考)

    一.安装nodejs 参考网址 下载node的网址:http://nodejs.cn/download/ node安装及配置的网址:https://blog.csdn.net/JingYan_Chan ...

  8. Web前端开发的十佳前端框架优缺点

    用户体验是网站.Web应用程序最重要的部分,再强大的特性和功能,如果没有良好的用户体验,那也只能是个摆设.这需要使用前端框架来简化交互式.以用户为中心的网站的开发.凭借我们作为 Web 开发公司的经验 ...

  9. 用python可以开发小程序吗,python可以小程序开发吗

    python可以开发小程序吗 谷歌人工智能写作项目:小发猫 怎样用python 写小程序 你好,python不适合做小程序的前端需要学typescript.1.微信官方为小程序提供了大量的接口api ...

最新文章

  1. oracle建表权限问题和JSP连接oracle数据库基本操作
  2. Android 开发学习随笔
  3. 97.PC 的串口是同步还是异步
  4. PHP获取文件后缀名
  5. 如何有效开展小组教学_高效课堂 有效教学 | 教育部专家到徐州市第三中学开展教研活动...
  6. VC++和VC++.NET中与图像处理有关的几个概念、结构和类
  7. CF468B Two Sets
  8. 请教各位 android activity之间切换的问题
  9. Java语言 List 和 Array 相互转换
  10. ajax fetch api,fetch 简介: 新一代 Ajax API
  11. 极客大学算法突击训练营-毕业总结
  12. 金蝶KIS商贸版开发销售出库单、销售订单带商品图片打印单据
  13. Python下各种GUI(图形用户界面)简介、使用优缺点对比
  14. iOS 3DTouch 开发
  15. 电子邮件营销与MailChimp。它是适合你
  16. 关于U盘烧录iso问题
  17. error:The calling thread cannot access this object because a different thread owns it解决方法
  18. 某IC卡加密方法初探
  19. 华硕ezflash3找不到u盘_华硕ez flash 3
  20. oracle账号被锁定的话如何解锁

热门文章

  1. 5.28 综合案例2.0-简易起夜灯
  2. Eclipse - Expressions Add Watch Expression
  3. 还将有不少同学在舞台上表演节目
  4. STM32--ESP8266物联网WIFI模块(贝壳物联)--温湿度数据上传服务器显示
  5. 用for循环语句打印三角形
  6. C语言union学习总结
  7. 在中国,千万别一辈子靠技术生存 !
  8. 详解shell中的几种标准输出重定向方式
  9. SpringMVC 表单标签中 htmlEscape 属性的作用
  10. android_Quantity Strings (Plurals)