JAVA外文文献翻译.docx

上传人:wj 文档编号:64762 上传时间:2023-04-28 格式:DOCX 页数:24 大小:35.50KB
下载 相关 举报
JAVA外文文献翻译.docx_第1页
第1页 / 共24页
JAVA外文文献翻译.docx_第2页
第2页 / 共24页
JAVA外文文献翻译.docx_第3页
第3页 / 共24页
JAVA外文文献翻译.docx_第4页
第4页 / 共24页
JAVA外文文献翻译.docx_第5页
第5页 / 共24页
JAVA外文文献翻译.docx_第6页
第6页 / 共24页
JAVA外文文献翻译.docx_第7页
第7页 / 共24页
JAVA外文文献翻译.docx_第8页
第8页 / 共24页
JAVA外文文献翻译.docx_第9页
第9页 / 共24页
JAVA外文文献翻译.docx_第10页
第10页 / 共24页
JAVA外文文献翻译.docx_第11页
第11页 / 共24页
JAVA外文文献翻译.docx_第12页
第12页 / 共24页
JAVA外文文献翻译.docx_第13页
第13页 / 共24页
JAVA外文文献翻译.docx_第14页
第14页 / 共24页
JAVA外文文献翻译.docx_第15页
第15页 / 共24页
JAVA外文文献翻译.docx_第16页
第16页 / 共24页
JAVA外文文献翻译.docx_第17页
第17页 / 共24页
JAVA外文文献翻译.docx_第18页
第18页 / 共24页
JAVA外文文献翻译.docx_第19页
第19页 / 共24页
JAVA外文文献翻译.docx_第20页
第20页 / 共24页
亲,该文档总共24页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

JAVA外文文献翻译.docx

《JAVA外文文献翻译.docx》由会员分享,可在线阅读,更多相关《JAVA外文文献翻译.docx(24页珍藏版)》请在冰点文库上搜索。

JAVA外文文献翻译.docx

中文翻译

基于Java技术的Web应用设计模型的比较研究

来源:

SchoolofComputerScienceandEngineeringUniversityofNewSouthWalesSydney,NSW

2052,Australia

作者:

BudiKurniawanandJinglingXue

摘要

Servlet技术是在建立可扩展性Web应用中被应用最广泛的技术。

在运用JAVA技术开

发Web应用中有四种模型,分别是:

ModelModel2、StrutsftJavaServerFacesJSFOModel

1使用一连串的JSP页面,Model2采用了模型,视图,控制器MVC模式。

Struts是一个采

用了Model2设计模型的框架,JSF是一种支持ready-to-use组件来进行快速Web应用开

发的新技术。

Model1对于中等和大型的应用来说很难维护,所以不推荐使用。

本文通过利

用Model2、Struts和JSF这三种模型分别构建三个不同版本的在线商店应用程序来比较

和评价这三种模型在应用程序开发和性能上的差异。

1.绪论

当今Web应用是一种展现动态内容的最普遍的方式。

构建Web应用有许多种方法,其

中最流行的是Servlet技术。

这种技术的流行是因为它比CGI、PHP等其他技术更具优越

性。

然而Servlet对于开发来说还是麻烦的,因为它在传送HTML标签时需要程序员将他们

组合成为一个字符串对象,再将这个对象传给浏览器。

同样的,对于输出的一个很小的改

动也要求Servlet被重新编译。

基于这个原因SUN公司发明了JavaServerPagesJSP技术。

JSP允许HTML标签和Java代码混合在一起,每个页面将被转化为一个Servlet,一个JSP

就是一个Servlet,而且编译将在JSP页面第一次被请求时自动进行改变输出也不需要重新

编译。

另外通过使用JavaBean和定制标签库,JSP能够将表示与业务逻辑相分离。

现今基

于JAVA的Web应用开发标准是将servlets与JSP结合在一起。

随后出现了许多种设计模

型用来构建servlet/JSP应用。

Model1、Model2、Struts]和JavaServerFacesJSFO

Model1和Model2最早是在JSP规范中被提及的。

Model1只使用JSP而不使用servlet,

Model2则结合了JSP与servlet。

Model1和Model2的使用是有条件的。

Model1适合

与开发原型和非常小的应用,Model2则是开发中型和大型应用推荐的设计模型。

由于

Model2越来越被行业所接受,一个建立Struts框架的开源项目也因此被启动了。

Struts

通过为Model2提供了模型、视图、控制器中的控制器来完善Model2。

另外Struts提供了更好的页面导航管理机制和一些定制标签库,能够进行更快速的开

发。

尽管它学习难度大,并且实际上它没有在任何的规范中被定义,但是它还是作为Model

2的一种替代获得了流行。

JavaServerFaces是在JCP的JSRT27规范下被建立。

Sun公司

力推这项技术,希望它能够成为构建JavaWeb应用的最终模型。

JSF最重要的特性是对

ready-to-use组件的支持,比如,可扩展用户接口组件、简易的页面导航、输入验证、数

据转换和JavaBean管理机制。

servlet/JSP程序员面临的问题是选择最合适的设计模型。

明显的JSF在开发时间上提供了更好的解决方案。

然而,有些人担心实施JSF的开销所带

来的性能下降而不愿采用这种技术。

我们使用Yodel2、Struts和JSF分别构建三个不同版本的在线商店应用比较的参数

是代码的行数、类的数目和性能测试结果。

我们研究哪种设计模型能够进行最快速的开发。

我们评估基于这些模型的应用的性能。

我们提供一些建议来完善现有的设计模型使得开发速度更快。

文章的余下部分组织如下

第二部分讨论了Web开发中的问题,第三部分解释了三个设计模型如何来解决这些开

发问题,第四部分详细介绍了试验所需要的硬件和软件,第五部分给出试验的结果并进行

分析,第六部分回顾相关工作,第七部分得出结论并提出了一些改进现有设计模型的建议。

2.Web开发中的问题

所有的Java开发都使用Servlet技术作为基础技术。

同样的所有的JavaWeb应用都

有一些问题需要解决:

1.用户接口是在客户浏览器上呈现出的HTML标签。

任何在应用中使用的服务器端组

件都必须被编码成为正确的HTML标签。

除了显示内容和数据外,用户接口还负责接收用

户的输入。

2.用户的输入必须要验证。

输入的验证有两种类型:

服务器端和客户端。

顾名思义,

服务器端的输入验证是在输入的数据到达服务器后在服务器上进行的。

客户端的输入验证

是在浏览器上完成的,一般使用JavaScript或其他脚本语言。

利用客户端进行输入验证

的好处是反应迅速,而且能够戒轻服务器的负载。

无论是否存在客户端输入验证,服务器

端的输入验证是一定要执行的。

因为无法保证用户的浏览器的脚本特性被打开,而且恶意

用户能够很轻松的绕过客户端的验证。

3.在基于Java的Web应用中模型对象是以JavaBean的形式出项的。

模型对象组成了

基于MVC设计模型的模型部分。

一个模型对象能够用来绑定一个组件的值以备下阶段使

用。

此外它能够封装需要执行的业务逻辑。

4.大多数的Web应用都包含多个页面.能够使用户从一个页面跳转到另一个页面。

有的基于MVC的设计模式都使用Servlet作为控制部分。

这个Servlet也作为进入应用的

唯一入口。

当前的请求之后哪个页面会被显示取决于请求参数的具体值。

管理页面导航是

至关重要的。

3.Web应用设计模型

Model2设计模型是基于模型、视图、控制器、MVC设计模式的。

正如Burbeck所解释

的,在MVC中有三个主要模块:

控制器、视图和模型。

控制器作为应用的中心,所有的用

户交互都要通过它。

视图包含了应用的显示,而模型用来存储数据和封装应用的业务逻

辑。

随后,Struts框架提供了一个通用框架能够容易的构建Model2应用。

最主动的是同

样使用MVC设计模式的JSF。

在之后的章节,我们将来讨论这三种设计模型,并且说明每

一种设计模型是怎样来解决之前提到的开发问题。

Model2

一个基于Model2设计模型的JavaWeb应用有一个作为控制部分的servlet称为控制

器servleto所有的请求首先被这个servlet处理,它通过RequestDispatcher对象将请求

迅速的分派到合适的视图。

在Model2中视图是通过JSP页面来表现的。

JavaBean作为

Model2的模型部分,用来在应用中存储数据。

除了存储数据JavaBean还用来封装业务逻

辑。

每个HTTP请求都带有一个行为参数,用来指出哪个视图指派给这个请求。

程序员必须

在所有的JSP页面中为用户接口编写HTML标签代码,并且编写输入验证代码。

此外,模型

对象被单独的JSP页面所管理。

StrutsStruts

框架是Model2设计模型的一个改进。

它提供了一个默认的控制器servlet使得程序

员不用非得去编写一个。

Struts允许在应用配置文件一个XML文件中编写导航规则来就轻

页面导航的任务,改变导航规则不需要重新编译。

除了更简单的页面导航,Struts还提供

了定制标签库来定义标签代表HTML元素。

这些标签中的一些用来处理异常,而且Struts

支持国际化,能够显示本地化的错误消息。

就像Model2一样,Struts使用JavaBean作

为模型。

此外Struts程序员必须编写输入验证代码,

JSF

JSF同样使用了一个控制器servlet称为FacesServleto这个Servlet是整个JSF应用

的唯一入口。

JSF同样使用JSP页面作为它的视图,使用JavaBean作为模型对象。

与Model

2和Struts不同।JSF提供了能够写入JSP页面的ready-to-use的用户接口组件。

JSF应用中的页面的调用,FacesServlet建立了一个组件树来显示JSP页面的请求。

大部

分的组件还能够触发事件来构成JSF的事件驱动。

对于页面导航,JSF使用了和Struts类

似的方法,即允许在一个应用控制文件,XML文件中定义导航规则。

JSF应用与非JSF的servlet/JSP应用的不同在于JSF是事件驱动的。

JSF的用户接口

是一个或多个JSP页面,用来服务诸如表单和输入框等Web组件。

这些组件以JSF定制标签

的形式出现而且能够保存数据。

一个组件能够嵌套在另一个组件中,有可能形成一个组件

的树状结构。

在普通的servlet/JSP应用中,使用JavaBean来存储用户输入的数据。

4.运行环境

以下是我们实验的软硬件详细描述。

Servlet容器

JavaWeb应用是在servlet容器中运行的,在应用中它一个引擎用来处理接踵而来的

请求资源的HTTP请求。

在这个试验项目中,我们使用Tomcat-----------个来自

Apache软件基金会的开源的servlet容器,版本号是,基本上一个servlet容器通过执行

下面的任务来处理一个servlet:

创建一个HttpRequest对象

创建一个HttpResponse对象

传递HttpRequestsHttpResponse对象来调用Servlet接口的service方法测试用

客户端

为了进行性能测试,我们使用同样来自Apache软件基金会的来模拟多用户。

JMeter

允许用户选择一定数量的线程来执行测试。

每个线程模拟了一个不同的用户。

JMeter来能

允许我们选择完成一次测试的测试次数。

使用JMeter来测试一个Web应用。

你只要直接向

某个IP地址、上下文路径和端口号发出请求。

你也可以将请求参数包含在HTTP请求中。

对于一个测试,JMeter将服务器的响应时间以毫秒的形式输出。

从响应时间,我们能够得

到服务器执行服务的每秒命中次数。

硬件

为了得到最大的性能度量精度.我们使用不同的计算机来进行应用的测试。

运行应用

的是一台XP计算机,它的配置如下:

IntelCore1GHzCPU、1GRAMC测试用客户端是运

行JMeter的Windows2000计算机,具体配置如下:

IntelCore1GHzCPU、

1GRAMo

5.结论

我们得到两类实验结果:

开发的难易程度和性能。

开发的难易程度比较了类的数目和

代码的行数。

这些数目显示了遵从某个设计模型来开发一个应用的难易程度。

一个应用

包含较少的类和较少的代码行数说明应用相对而言更容易构建。

一个应用包含较多的类

说明应用需要花费更多的时间来开发。

性能度量结果是通过比较这两个操作来获得的。

查找操作是一个应用中最普通的操

作以及浏览操作。

应用开发的难易程度

就如表1显示的,应用Model2设计模型需要花费最多的努力。

使用Struts能

莒使问题减轻“使用9

5F取目力0

二/r

Servlet

ff■

f1Y•

Bean

41.

fIY•

A

JSP

...•XXZ"V

Others

fIY•

L

L

Total

fIY•

.一..

<<^0

表1应用中类的数目和代码行数

Model2设计模型的特点是存在一个控制器servlet和多个JavaBean类,作为模型

及JSP页面作为视图。

控制器类通过一系列的if语句来负责页面导航规则。

Model2程

序员还必须为输入验证编写代码,在这个实验中是通过在内部编写许多定制标签库来完

成的。

在Model2设计模型中的其它类是定制标签库,这些标签是用来负责输入验证和

数据显示的。

实际上输入验证使用了590行代码,大约是所有代码的30%o

在Struts应用中,控制器servlet是由框架提供的,所以Struts程序员不用编写

它,节省了时间。

然而,他仍然需要在应用控制文件中编写导航规则,这比编写一个

servlet容易些,因为应用控制文件可以用文本编辑器编辑,不必编译。

虽然Struts框架

提供了错误处理机制,但仍然需要手工编写输入验证。

用来进行输入验证的类的数量和代

码的行数与Model2应用的很相似。

Struts中其他的类是Action类用来调度请求到默认

的控制servleto

在JSF中,提供使用验证组件而不用编写输入验证。

所以JSF应用开发人员可以跳过

这个任务。

此外页面导航和Struts相同,都是使用一个应用控制文件。

在JSF中其他的类

是ContextListenersActionListener和数据库工具类。

性能度量

对于每一个操作,通过1T0个并发用户.我们来测量服务器的响应时间(以毫秒形式)

每个用户在JMeter中设定了一定数量的线程。

每次测试进行10次,取平均值。

每个操作

在下面的章节中讨论。

查询操作

查询操作,其名称或描述与关键字匹配,它将执行一个SQL的SELECT语句。

图2比较

了三个版本的应用的查询操作。

图2查询操作的性能比较

在Model2应用中,对于一个用户,服务器平均的响应时间是173毫秒,对于10个用

户是919毫秒。

在Struts应用中,相对地,其值是189毫秒和900毫秒,在JSF中则是210

毫秒和932毫秒。

响应时间随着并发用户数成比例的增加,说明了服务器仍然能够应付装

载。

Model2应用开销最小,所以它的平均性能比Struts和JSF更好。

然而,Struts的性能

同Model2的相同,这是因为服务器有足够的内存用来加载运行Struts需要的Struts库。

同时,应该注意到Struts中的页面导航规则是加载和存储在一个叫ActionMapping的对象

中。

因此,给出一个请求参数,导航到下个页面是通过查找得到的。

另一方面,给出一个请

求参数,Model2应用是利用一系列的if语句来得到下一个页面的导航。

在几乎所有的并发用户数字中.JSF应用的性能都稍逊于其他应用。

这可能是由于JSF

将时间消耗在为每个请求构建一颗组件树上。

但JSF的服务器响应时间与其他应用差距并

不明显(:

浏览操作

三个版本的浏览操作,如同查询操作,将执行一个SQLSELECT语句。

图3这个操作的

测试结果。

图3浏览的性能比较

平均来说,Model2应用的性能最好,因为它具有最少的开销。

对于是一个用户服务

器的平均响应时间是111毫秒,10个用户是899毫秒。

Struts应用有着同样的性能,对

于是一个用户服务器的平均响应时间是180毫秒,10个用户是920毫秒。

JSF则稍落后与

其他两个应用,相对地,它的时间是190毫秒和1009毫秒。

响应时间随着并发用户数成

比例的增加,意味着服务器能很好地服务这些用户。

浏览地平均性能测量结果同查询操作

很相似,这是因为这两种数据库操作类似。

6.相关工作

使用servlet、PHP(版本3)、通用网关接口(CGI)来比较基于数据库的Web应用的

性能。

经过执行从MySQL数据库返回数据的一系列的基准测试,发现Javaservlet使用持

久数据库连接的方案性能最佳。

PHP3使用持久数据库连接相对于CGI方案而言性能相当不,

也同样提到了使用Javaservlet的优势。

根据这些作者,Javaservlet是迎合电子商务(比

如在线商店)需求的最佳选择,而且能够在高交互式模式中处理客户请求。

比较PHP4、Javaservlet、和EJB。

使用两个应用来测试了这三种结构,研究显示了

PHP4比Javaservlet更有效,而EJB的性能比servlet差°然而,注意到作为Java方案

的一部分的servlet提供了适应性,能够移植到不同操作系统的其他系统上。

7.结论

我们发现使用JSF构建Web应用最迅速:

Model2最慢但性能最好;Struts应用在计

较中处于其他两种设计模型中间。

我们提出了一些建议用来大体上改善Servlet技术和增强基于这些设计模式的应用

的性能。

1.Struts没有基于任何规范,也没有文档来讨论它的内部工作方式。

因此,很难知道

哪些实现了以及哪些改善了。

2.Servlet技术,规范没有定义任何的缓存机制,也没有在即将到来的中提及,尽管

Web应用的内容具有动态性,但有写内容也不是经常去改变了。

比如,在在线商店

的应用中,用户可以浏览的商品种类可能每隔一个月才变动一次。

如果这些半静态

的内容必须每次在需要的时候从数据库中获取,将浪费大量的编程资源。

Servlet程

序员通过编写一个对象缓存某些内容来实现缓存。

然而,只要没有缓存标准,许多

程序员将反复的写相同的代码段.

3.Model2主要的缺点是页面导航规则在控制器servlet中是硬编码的。

这意味着程

序流程的任何微小的改动就需要控制器servlet重新编译。

解决这个问题的方法是

在应用启动时,提供一个映射器来读取页面导航规则。

在控制器servlet的init方

法中很容易添加代码。

这个方法只执行一次,就是在servlet首次被载入内存的时

候。

如果属性文件在每次改动后需要重新读取.程序员可以在每次请求时检查属性文

件的时间戳,将它于先前读入的文件比较.如果它比之前读入的文件的时间戳更新,

则重新构建映射器。

这个特性可以在上下文对象的初始化参数中开启或者关闭。

开发的角度来讲,这个特性应该开启。

在部署时,这个特性应该关闭。

使用属性文

件来存储页面导航规则还可能避免在控制器中的一连串的if语句,它将在每次请求

时消耗时间。

可以使用一个HashMap,将请求参数作为Key值,将跳转页面作为Value

值。

这个设计模型的另一个缺陷是缺少标准的输入验证组件和用户接口组件,而这

些将在JSF中得到解决。

4.JSF解决了开发Web应用中的大部分问题,比如:

页面导航管理、用户接口组件和输

入验证组件。

然而,由于这项技术仍然很年轻,还没有太多的用户接口可用,强迫

了程序员将JSF和非JSF的servlets/JSP页面相结合。

JSF是事件驱动的,JSF程

序员通过编写事件监听来决定JSF应用的行为,就像Swing应用中的监听器一样.在

JSF版本中,通常有两类事件能够被触

发:

ActionEvent和ValueChangedEvent,但这已经能在应用和用户之间提供足参考

要跳交互性了。

1.Burbeck,S・,ApplicationsProgramminginSmalltalk-80:

HowtouseModel-View-

2.Cecchet,E・,ChandaA・,ElniketyS・,MargueriteJ・,ZwaenepoelW.:

Performance

ComparisonofMiddlewareArchitecturesforGeneratingDynamicWebContent.

Proceedingofthe4thInternationalMiddelwareConference,2003.

3.Cecchet,E.,Marguerite,J.,andZwaenepoeLW.:

PerformanceandScalabilityofEJB

Applications.ProceedingsofOOPSLA'02,2002.

4.JavaServletandJavaServerPagesSpecification(JSR-053),

5.JavaServletSpecification(ProposedFinalDraft3),

10.SunMicrosystems,ComparingMethodsforServer-SideDynamicContent,

13.Wu,A.,Wang,H.,andWilkins,D.:

PerformanceComparisonofAlternativeSolutionsforWeb-

To-DatabaseApplications.ProceedingsoftheSouthernConferenceonComputing,theUniversityof

SouthernMississippi,2000.

英文原文’

AComparativeStudyo

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2