`
jxb890113
  • 浏览: 2279 次
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

Java Web框架前景浅析

阅读更多

 

基于三(多)层架构模式,典型WEB系统的总体架构如下图所示:

在上述分层架构中,整个应用被划分为两大部分:

  • 客户端:基于浏览器提供信息展现、用户交互等功能。所采用的技术主要有:HTML/HTML5、Javascript、CSS。另外,Flush由于其广泛的浏览器集成度,通常也可归纳为一种WEB技术,但Flush不在本文讨论范围。
  • 服务端:实现业务逻辑处理。通常按三层架构模式划分为展现层、业务逻辑层和数据集成层。服务端的平台选择相比客户端来讲更加广泛,有PHP、Java、.Net、Ruby、Python等。每种平台下都有非常优秀的WEB框架可供选择。

尽管客户端的WEB技术平台主要还是基于HTML+Javascript+CSS,但是基于其上的类库、框架、开发模式、衍生技术等非常繁杂且变化多端,要在实际项目中做出最好的选择绝非易事。有鉴于此,本文不打算深入讨论客户端WEB技术。

服务端虽然平台选择非常多样化,但总体架构基本一致。本文主要讨论Java平台。在所有平台中,Java平台下的WEB框架是最多的,其它语言平台下新的框架总能在Java中找到对应的实现。这也是Java平台生命力强大的体现之一。下图列出了Java平台下的部分Web框架:

上图共列出了62个Java Web框架!一定还有很多Java Web框架没有收录其中。

不过不要担心,在Java世界,流行的或说主流的Web框架并不多,如:Struts、Spring MVC、Play! Framework、GWT、Apache Wicket、JSF等,国产的Java Web框架有EOS、Nuts等在一定范围使用也比较广泛。

  • Struts:这是Java社区最老牌、知名度最高、使用也最广泛的WEB框架。Struts的特点是简单易用、文档丰富,通常与spring-hibernate/ibatis组合使用(SSH/SSI);
  • Spring MVC:Spring当年凭借一句"J2EE Withou EJB"的怒吼拉开了开源社区全面对抗学院派(JCP)的序幕,这一战让Spring一举成名。凭借Spring的东风,其mvc框架也得到社区广泛关注。基于Spring的IOC、AOP等技术,其框架设计简洁优雅、扩展性非常强;
  • Play! Framework:这是Ruby社区非常火爆的Ruby On Rails框架在Java平台的翻版。当年Ruby On Rails的约定优于继承、极简的ORM框架所带来的快速开发能力与当时Java社区经典的SSH中繁杂的XML配置、越来越臃肿复杂的ORM所导致的开发效率的低下形成了鲜明对比。Play!就是这种理念PK下的产物;
  • EOS:国产的基于构件理念的Java开发平台,其图形化的业务逻辑编排能力让许多人眼前一亮,对SOA不遗余力的支持也体现了厂商的态度。EOS的页面流概念应该算是WEB框架领域的一个创举,此前或此后还没有哪个WEB框架考虑过多个请求之间的关联性问题。除此之外,EOS的WEB框架也算中规中距;
  • JSF:2001学院派发起JSR,至2004年推出规范1.0、2006年推出1.2版参考实现、2009年发布2.0规范、2010以后JSF2得到了以JBoss为首的广泛支持。然而时至今日,JSF仍然不温不火,其成就远没有Struts或Spring MVC来得高。不过个人认为,相比前面所说的所有框架来讲,JSF的设计理念是非常先进的。JSF是Java世界中非常少见的以组件为中心的WEB框架!补充一点,金蝶2007年推出的OperaMasks当年高调宣称其基于JSF的框架是世界一流的,但时至今日其官方网站几乎停止更新,着实让人不甚唏嘘;
  • GWT:Google出品的Java WEB框架,倡导使用传统桌面应用开发方式来开发WEB。开发人员不需要懂WEB技术,只需要熟悉Java和面向对象理论,就可以使用类似Swing或RCP的方式开发WEB应用。这一点与eclipse的RAP非常相似。GWT适用于从传统桌面开发转向WEB开发的人群,对于真正了解WEB技术的开发人员来讲,其开发模式很难让人接受;类似这样的框架还有apache wicket等;

每个框架都有各自的特点和使用人群,很难一概而论说哪个好哪个不好。不过从下图中我们可以大致了解开发人员的选择:

 

尽管Java Web框架各类繁多,不同的框架有不同的特点,但不同的框架之间还是有许多共性的。例如,按照页面和处理逻辑的关系我们可以将Java WEB框架划分为:

  • 传统MVC模式的WEB框架:如Struts、Spring、Play!等。这一类框架的特点是页面和处理逻辑按照传统MVC模式进行组织,页面通常使用JSP或某种模板语言(如Freemarker、Velocity等)来实现,服务端处理逻辑通常采用Action或Command模式;
  • 以组件为中心的WEB框架:如JSF。传统MVC框架的请求处理流程通常是“请求-处理-页面”的循环,而在JSF中请求的处理是基于事件的,这种开发模式类似于桌面程序的开发模式,只是页面还是使用JSP加JSF标签组件而已;
  • 模拟桌面开发方式的WEB框架:如GWT、Wicket等。这类框架纯粹使用桌面方式进行WEB开发,开发人员基本不需要知道HTTP及HTML/JS/CSS等知识。这类框架相比JSF更加激进,不仅请求处理模式基于事件,连页面展现也是按照传统桌面方式去开发;

上述三类框架中,第一类是最靠近WEB的开发方式,第三类是最靠近桌面的开发方式,第二类界于两者之间。桌面开发方式的好处是组件化能力非常强,借助发展多年的桌面控件设计经验,可以很容易地设计出复用度非常高的组件。相对的,第一类开发模式下由于界面变化非常大,在展现层就很难做出组件化的设计(这其实也体现了WEB应用展现及交互方式变化多端的内在本质)。

另一方面,第一类框架非常强调客户端与服务端的分离,而第三类框架则试图弱化客户端与服务端的界限,其理想模式是客户端事件直接传递到服务端,中间没有任何转换(这就是桌面程序的模式了)。

考虑现实世界的复杂性以及WEB千变万化的特点,第一类框架只是做好自己的份内事,将客户端的处理交由专门的客户端框架去实现(这样才能充分利用当前欣欣向荣的客户端WEB技术);而第三类框架则试图通吃客户端与服务端,完全无视客户端的特点,这将导致第三类框架只能局限于某些特定领域的应用范围之内,而且随着客户端WEB技术的发展,其应用范围必定越来越狭窄。至于第二类框架,界于前两类框架之间,地位非常尴尬,尽管其有官方正统的血统背景,但其违背WEB大的发展趋势,其前景不被看好。

分享到:
评论

相关推荐

    基于Java的Web开发技术浅析.pdf

    随着Java Web开发的复杂性增加,出现了许多优秀的开发框架,如Spring、Struts、Hibernate等,它们大大提高了开发效率,降低了维护成本。 - Spring:Spring是一个全面的后端开发框架,提供了依赖注入、AOP(面向切面...

    浅析Struts框架下的Java Web应用.pdf

    浅析Struts框架下的Java Web应用 Struts框架是基于MVC模式的开源框架,它能够有效实现系统开发中逻辑层和表示层的分离,促使逻辑层和表示层的彼此独立,从而大大减轻多层Web构建过程中的负担,提高了系统开发和应用...

    基于Java的Web开发技术浅析 (1).zip

    在本压缩包中的"基于Java的Web开发技术浅析 (1).pdf"可能就包含了关于WAR文件的详细解析,以及如何在Web容器中部署和运行WAR文件的方法。 总的来说,Java Web开发技术是一个庞大的领域,涵盖了从服务器端编程、...

    基于Java的Web开发技术浅析.zip

    Java EE(Enterprise Edition,企业版)提供了一种更高级的Web开发框架,例如JavaServer Faces (JSF)。JSF是一个MVC(Model-View-Controller)框架,它帮助开发者将界面、业务逻辑和数据模型分离,使得代码更加结构...

    浅析Java Web开发环境的搭建.pdf

    "浅析Java Web开发环境的搭建.pdf" 本文详细介绍了Java Web开发环境的搭建,包括开发工具包JDK、服务软件Tomcat以及在Tomcat上发布Java Web应用程序的步骤。 Java Web开发环境的搭建是指在Java环境下进行Web应用...

    java 声音技术浅析

    综上所述,Java对声音技术的支持是多维度的,无论是Web环境下的Applet还是独立的Java应用程序,甚至是专业的声音处理需求,Java都提供了相应的工具和框架。掌握这些技术,可以使开发者在创建多媒体应用时更加...

    技术浅析.pdf 知识领域 Javase javaee Java技术浅析 技术关键词 JAVA语言 编程技术框架 原理

    Java技术浅析主要介绍了Java语言的技术关键词、编程技术框架、原理等知识点。 一、异常和异常调用链 Java中有两种类型的异常:自定义异常和系统默认定义的异常。自定义异常是指开发者根据项目需要定义的异常,返回...

    Android软件前景浅析

    ### Android软件前景浅析 #### 引言 随着信息技术的快速发展,智能手机已成为现代生活中不可或缺的一部分。其中,Android作为主流的移动操作系统之一,在全球范围内获得了广泛的应用。本文将深入探讨Android的发展...

    流行java技术架构浅析借鉴.pdf

    Java技术架构中的SSH框架,全称为Struts、Hibernate和Spring,是Java开发中常见的三大开源框架,用于构建企业级Web应用程序。在这个浅析中,主要关注的是Struts框架。 Struts是一个基于MVC设计模式的Java Web框架,...

    浅析Comet技术在Java Web实时系统开发中的应用.pdf

    浅析Comet技术在Java Web实时系统开发中的应用 Comet技术是Java Web实时系统开发中的关键技术之一,它通过实现服务器推送(Server Push)来解决AJAX需要定时频繁发送请求的问题。Comet技术有两种实现方式:长轮询...

    JAVA 的多线程浅析.pdf

    ### JAVA的多线程浅析 #### 一、JAVA语言的背景与特点 Java自诞生以来,便以其独特的魅力在编程领域占据了一席之地。它由Sun Microsystems开发,以其跨平台性、安全性、面向对象特性以及多线程能力著称。在互联网...

    浅析Comet技术在Java Web实时系统开发中的应用.docx

    在使用Comet技术开发Java Web实时系统时,首先需要设计一个能够处理长连接的服务器架构,这可能涉及到对HTTP服务器的扩展或选择支持此类特性的Web框架。其次,需要编写能够处理事件驱动的服务器端代码,当有新数据...

    浅析Java_web程序之客户端和服务器端交互原理.doc

    Java Web程序中的客户端和服务器端交互是Web开发的基础,它涉及到网络通信协议、HTTP协议以及Java编程中的Socket编程。在本文中,我们将深入探讨这两个主要方面:协议和HTTP报文接口,以及它们如何在Java Web应用...

    ZigBee无线通信技术与应用前景浅析.pdf

    ZigBee无线通信技术与应用前景浅析.pdf

    PON技术的电力系统应用前景浅析.pdf

    PON技术的电力系统应用前景浅析.pdf

    庆阳市新能源汽车发展前景浅析.pdf

    庆阳市新能源汽车发展前景浅析.pdf

    JAVA中的IOCP浅析.pdf

    JAVA中的IOCP浅析 同步和异步 在讨论IOCP之前,我们需要了解什么是同步和异步。通俗来说,完成一件事再去做另外一件事就是同步,而一起做两件或者两件以上的事情就是异步。例如,在客户端和服务器通信的过程中,...

Global site tag (gtag.js) - Google Analytics