CHAPTER 1
在当今企业级应用解决方案中,ASP.NET与Java EE依然难分伯仲。不过Java EE凭借其强劲的开源社区更是一番欣欣向荣的景象。从某种角度而言,Java EE在为我们提供稳健的企业级应用服务的同时的确节省了不少成本,使我们永远也忘不了Java程序开发过程中那种特有的快感。
Java Web应用已不再局限企业级应用的开发,Internet上许多商业网站都有它的影子,这意味着Java Web应用开发技术又面临着一个更加广阔的天空,也更加稳固了其雄居已久的霸主宝座。
其实Java Web应用开发的核心技术就是JSP、Servlet与JavaBean。遗憾的是一直没有一套行之有效的开发规范来约束这些JSP程序员,导致“百家争鸣”、“各自为政”, 100 个JSP程序员可能写出 100 种不同风格的JSP程序。项目规模愈大,这种弊端就愈发明显,这就大大降低了应用程序的可维护性,增加了项目管理的难度。在这种情况下,采用Java Web应用框架来规范开发势在必行,尽管采用框架比直接使用JSP+Servlet+JavaBean略显烦琐,但它在规范开发行为,统一开发风格方面所起的巨大作用是毋庸置疑的。
一个基于Web框架开发Web应用的时代已经来临,Web框架技术表现出旺盛的生命力,这与Java开源社区源源不断的支持密不可分。继Struts的成功推行之后,一系列非常优秀的开源框架如雨后春笋般不断涌现,真可谓琳琅满目,令人眼花缭乱。对于初学者而言,站在众多优秀的框架面前很难抉择,当然这主要原因是对这些框架没有一个深入的了解。
当我们在Java开源大全网站(http://www.open-open.com)上单击“Web框架”时,会列出几十个非常优秀的开源框架供你选择,这里只简单介绍几个目前应用较广的Web框架以供参考,见表1-1。
表1-1 常用的几个Web框架介绍
除了Web框架之外,持久层框架是我们关注的另一个热门话题。持久层框架的出现不是为了提高数据库的操作效率,而是为了规范数据库的访问,将数据库的操作提升到一个面向对象的层面上来。与Java EE中的EJB相比,这里所说的持久层框架都是轻量级的,不需要专有容器的支持,而且消耗的系统资源通常很少。
下面列举几款开源的持久层框架以供参考,见表1-2。
表1-2 常用的几个持久层框架介绍
Web 2.0 时代,AJAX的字眼漫天飞舞,AJAX是Asynchronous JavaScript and XML(异步JavaScript和XML)的缩写,它采用的是一种异步通信机制,是一种运用JavaScript和可扩展标记语言(XML),在网络浏览器和服务器之间传送或接收数据的技术。AJAX的工作原理相当于在用户和服务器之间加了—个中间层,使用户请求与服务器响应异步化。这样把以前的一些服务器负担的工作转交给客户端,利用客户端闲置的处理能力来处理,减轻服务器和带宽的负担。恰当地将AJAX技术运用到Web应用中,可以使我们的应用如虎添翼,给用户一种全新的体验。
下面列举几款AJAX的组件以供参考,见表1-3。
表1-3 常用的几个AJAX组件介绍
看过上述这么多优秀框架的介绍之后,也许你会问一个普遍存在的问题,那就是到底该如何选择?拥有选择机会是幸福的,不知如何选择是痛苦的,不管怎样我们都要感谢开源社区做出的伟大贡献。从上述框架的介绍中不难看出,它们各有千秋,有的功能上有所重复,有的却正好构成互补。存在即是合理的,关键是把它用在合适的位置上。
虽然Struts2号称是一个全新的框架,但这仅仅是相对Struts1而言的。Struts2与Struts1相比,确实有很多革命性的改进,但它并不是新发布的新框架,而是在另一个赫赫有名的框架WebWork基础上发展起来的。从某种程度上来讲,Struts2没有继承Struts1的血统,而是继承WebWork的血统。或者说,WebWork衍生出了Struts2,而不是Struts1衍生了Struts2。因为Struts2是WebWork的升级,而不是一个全新的框架,因此稳定性、性能等各方面都有很好的保证,又加上Struts2吸收了Struts1和WebWork两者的精华,因此一举成为MVC框架领域的混血新宠儿。
在讲求开发效率与运行性能的Java EE技术时代,轻量级Java EE框架的出现,对Java EE程序员而言无疑是雪中送炭。开源轻量级Java EE框架Spring凭借其精良的设计、优异的性能与良好的开发体验一枝独秀,在Spring中使用基本的JavaBean可完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。Spring的诞生揭开了轻量级Java EE应用开发时代的序幕,标志着Java EE技术时代的又一个明媚春天。
尽管Spring致力于提供“一站式”服务,在MVC应用领域,大家还是会被Struts的出色表现所折服,谈到ORM,总是忘不了Hibernate娴熟的身影。Spring宽广的胸怀,为Struts与Hibernate敞开大门,提供了极为便利的集成方式,让SSH(Spring+Struts+Hibernate)这个崭新的组合框架从此映入Java EE程序员的眼帘,成为Java EE应用开发史上的“桃园三结义”。