下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

Java Web框架的不同

作者:课课家教育     来源: http://www.kokojia.com点击数:1102发布时间: 2017-04-05 14:03:39

标签: Web框架Java Web开发

大神带你学编程,欢迎选课

  java 的 Web框架虽然各不相同,但基本也都是遵循特定的路数的,我们来了解了解吧!

  Web框架是人们在使用某种语言编写Web应用服务端时关于架构的最佳实践。

  有些Web框架是从实际的Web项目抽取出来的,也就是说,做一个具体的应用项目时,采取的架构比较理想,就把这部分和领域无关,而仅和Web的请求和响应处理有关的设计拿出来,形成一个基础,在开发别的应用项目的时候则可以从这基础做起,让开发者更关注领域问题,而不是Web的请求和响应的控制。
  也有些Web框架是直接设计出来的,很多Web框架在设计的时候也都借鉴了别的框架,吸取优点,修改不足,并根据自己的框架的定位,在特定方面有自己的发挥,形成了自己的特点,比如有的web框架追求的是松耦合性,层次,结构之间都不密切绑定,有的Web框架则追求敏捷性,强调约定而不是配置。
  Java 的 Web框架虽然各不相同,但基本也都是遵循特定的路数的:使用Servlet或者Filter拦截请求,使用MVC的思想设计架构,使用约定,XML或 Annotation实现配置,运用Java面向对象的特点,面向抽象实现请求和响应的流程,支持Jsp,Freemarker,Velocity等视图。

  在Java的Web框架中,我觉得看一个Java Web框架应看看下面几个方面:

  1.设计理念

  一个框架设计出来应该有一个基本的思路,它为什么要要被设计出来?有的框架的目标 就是提高效率,有的框架的目标的给用户充分的选择,有的框架的目标是充分了解实际需求,给用户一个尽量合理的默认选择,有的框架是要给使用者开发桌面程序的感觉。应该说,一个好的框架应该是实现了预期目标,体现出了自己的设计理念的。

  2.设计的合理性

  设计的合理性表现在框架在一些关键问题上的处理,比如灵活性和敏捷性之间的权衡,硬编码和文本配置之间的权衡。灵活性指的是可以适应用户多样的需求,很特殊的要求也能得到支持,有的框架的实现基于太多的约定,使得用户只能遵循。而敏捷性指的是用户在解决绝大多数常规问题的时候,能尽量少做工作,提高效率。框架设计者只能在这两者见达到一个平衡点,权衡的怎么样,就很见水平了。硬编码和文本配置之间的权衡也很有意思,文本配置的意义在于Java是一个编译语言,强调代码的封闭,讲究扩展而不是修改,这种情况下文本配置信息可以很方便的在不修改程序的情况下改变程序行为,但是随着一些灵活的脚本语言实现的 Web框架的出现,人们发现在这样的框架中,脚本语言即做程序编码语言,也做配置语言,还做视图上的标记语言,这使我们对Java实现的框架有了一番新的审视,既然配置文件并没有消除对程序的修改,为什么不能在应编码上下下功夫呢?

  3.设计的平衡性

  设计的平衡性指的是,框架在设计流程中各阶段,各层次的实现方式时,所达到的上述权衡(灵活性和敏捷性之间的权衡等)应该是具有一致的水平。一个在控制上过分灵活,而视图上具有非常大限制的框架是不能算做一个好的框架的。

  4.框架真的解放了开发者吗

  框架的目的是让开发者把更多的精力放在领域问题,而非Web的请求和响应的处理问题上。而事实上框架都做到这一点了吗?不可否认,框架的使用提高代码的可维护性,但是框架在解放开发者这点上就未必了,有时还给开发者带来了额外的负担。事实上,直接使用Servlet,只要维持好代码风格,一样可以很有效率,当然,直接使用Servlet的灵活性就不用说了。

  在我接触的Web框架中,我最推崇的是Struts2,设计优雅,偏重灵活,也基本不造成额外的负担,当然这些评价是和我参与的项目的规模有关的,其他规模的项目Struts2就未必合适了。我希望Struts2能在下面几个方面有些改善:
  1.在提供文本配置方式的基础上给一个约定配置的方式,让开发者在大多数情况下可以不配置。
  2.配置也支持硬编码,因为有时候维护可修改的硬编码是很有效率的。
  3.在拦截请求上,能借鉴下ROR,Django的思路,适应新的Url的需求,考虑大家对“?”后添加属性的回避,支持带占位符的Url。

  介绍下它们的优缺点:

  JSF

  简介
  JavaServer Faces (JSF) 是一种用于构建Java Web 应用程序的标准框架。它提供了一种以组件为中心的用户界面(UI)构建方法,从而简化了Java服务器端应用程序的开发。由于由Java Community Process (JCP) 推动,属于Java EE 5中的技术规范,而受到了厂商的广泛支持。

  优点:

  Java EE标准,这意味着有很大的市场需求和更多的工作机会

  上手快速并且相对容易

  有大量可用的组件库

  缺点:

  大量的JSP标签

  对REST和安全支持不好

  没有一个统一的实现。既有SUN的实现,又有Apache的实现——MyFaces。

  国内的OperaMasks还支持AJAX,以及有开发工具 支持

  Spring MVC

  简介
  SpringMVC属于SpringFrameWork的后续产品,已经融合在SpringWebFlow里面。Spring框架提供了构建Web应用程序的全功能MVC模块。使用Spring可插入的MVC架构,可以选择是使用内置的SpringWeb框架还可以是Struts这样的Web框架。

Java Web框架的不同_Web框架_Java_Web开发课课家

  优点:

  对覆盖绑定(overriding binding)、验证(validation)等提供生命周期管理

  与许多表示层技术/框架无缝集成:JSP/JSTL、Tiles、Velocity、FreeMarker、Excel、XSL、PDF 等

  便于测试——归功于IoC

  缺点:

  大量的XML配置文件

  太过灵活——没有公共的父控制器

  没有内置的Ajax支持

  Stripes

简介

Stripes是一个使用最新的Java技术来构建Web应用的展现框架。

优点:不需要书写XML配置文件 良好的学习文档 社区成员很热心 缺点:社区比较小 不如其他的项目活跃ActionBean里面的URL是硬编码的

  优点:

  不需要书写XML配置文件

  良好的学习文档

  社区成员很热心

  缺点:

  社区比较小

  不如其他的项目活跃

  ActionBean里面的URL是硬编码的

  Struts 2

  优点:

  架构简单——易于扩展

  标记库很容易利用FreeMarker或者Velocity来定制

  基于控制器或者基于页面的导航

  缺点:

  文档组织得很差

  对新特征过分关注

  通过Google搜索到的大多是Struts 1.x的文档

  Tapestry

  简介
  Tapestry框架是一个位于java servlet容器和Tapestry应用程序之间的层。Tapestry不是一个独立运行的服务器;它是一个servlet的扩展,它运行于servlet容器(例如Tomcat)或包含servlet容器的应用服务器中(如Jboss,Websphere,或者WebLogic). Tapestry应用其实是由一系列页面组成,而每个页面是由可以复用的组件构成。
  Tapestry是一种基于java的Web应用程序框架。Tapestry采用了组件的概念。程序员可以应用现有的组件或自定义应用程序相关的组件来构建应用程序。相对与现有的其他Web应用程序框架而言,应用Tapestry会让程序员从烦琐的,不必要的底层代码中解放出来。
  Tapestry使用组件库替代了标签库,没有标签库概念,从而避免了标签库和组件结合的问题。Tapestry是完全组件化的框架。Tapestry只有组件或页面两个概念,因此,链接跳转目标要么是组件,要么是页面,没有多余的path概念。组件名,也就是对象名称,组件名称和path名称合二为一。

 优点:    一旦学会它,将极大地提高生产率    HTML模板——对页面设计师非常有利    每出一个新版本,都会有大量的创新    缺点:    文档过于概念性,不够实用    学习曲线陡峭    发行周期长——每年都有较大的升级

  优点:

  一旦学会它,将极大地提高生产率

  HTML模板——对页面设计师非常有利

  每出一个新版本,都会有大量的创新

  缺点:

  文档过于概念性,不够实用

  学习曲线陡峭

  发行周期长——每年都有较大的升级

  Wicket

  简介
  Wicket一个开发Java Web应用程序框架。它使得开发web应用程序变得容易而轻松。 Wicket利用一个POJO data beans组件使得它可以与任何 持久层技术相结合。
  Wicket使用原生的HTML元素,通过标签<wicket:id>声明为特殊的控件,在后台使用java 程序控制这些控件。

  优点:

  对Java开发者有利(不是Web开发者)

  页面和显示绑定紧密

  社区活跃——有来自创建者的支持

  缺点:

  HTML模板和Java代码紧挨着

  需要对OO有较好的理解

  Wicket逻辑——什么都用Java搞定

  本次的讲解就到一段落了,如果以后有什么相关的内容进行补充或者修改的话,笔者会继续在此进行相关的内容的补充或者修改的工作,同时也欢迎大家对本次的讲解提出自己的建议和补充,登陆课课家你会学到更多的知识呐!

赞(26)
踩(0)
分享到:
华为认证网络工程师 HCIE直播课视频教程