`
finally_mm
  • 浏览: 25087 次
  • 性别: Icon_minigender_2
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

Web应用的发展历程

    博客分类:
  • JSP
阅读更多

最初,所有Web页面都是静态的,用户请求一个资源,服务器再返回这个资源。什么都不动,什么都不闪。坦率地讲,对于许多Web网站来说,这样也是可以的,这些网站的Web页面只是电子形式的文本,在一处生成,内容固定,再发布到多处。在浏览器发展的最初阶段,Web页面的这种静态性不成问题,科学家只是使用因特网来交换研究论文,大学院校也只是通过因特网在线发布课程信息。企业界还没有发现这个新“渠道”会提供什么商机。实际上,以前公司主页显示的信息通常很少,无非是一些联系信息或者只是一些文档。不过没过多久,Web用户就开始有新的要求了,希望能得到更动态的网上体验。个人计算机成为企业不可或缺的资源,而且从个人宿舍到住家办公室开始出现越来越多的计算机。随着Windows 95的问世,随着人们已经领教了Corel WordPerfectMicrosoft Excel丰富的功能,用户的期望也越来越高。

1 CGI

要让Web更为动态,第一个办法是公共网关接口(Common Gateway InterfaceCGI)。与静态的Web获取不同,使用CGI可以创建程序,当用户发出请求时就会执行这个程序。假设要在Web网站上显示销售的商品,你可以利用CGI脚本来访问商品数据库,并显示结果。通过使用简单的HTML表单和CGI脚本,可以创建简单的网上店面,这样别人就可以通过浏览器来购买商品。编写CGI脚本可以用多种语言,从PerlVisual Basic都可以,这使得掌握不同编程语言的人都能编写CGI脚本。

不过,要创建动态的Web页面,CGI并不是最安全的方法。如果采用CGI,将允许别人在你的系统上执行程序。大多数情况下这可能没有问题,但是倘若某个用户有恶意企图,则很可能会利用这一点,让系统运行你本来不想运行的程序。尽管存在这个缺陷,到如今CGI仍在使用。

2applet

很显然,CGI可以有所改进。19955月,Sun公司的John GageAndreessen(目前在Netscape通信公司)宣布一种新的编程语言诞生,这就是JavaNetscape Navigator为这种新语言提供了支持,最初是为了支持机顶盒。(你可能原认为最早涉足智能家居的公司是MicrosoftSony其实不然。)就像所有革命都机缘巧合一样,Java和因特网的出现恰到好处,在适当的时间、适当的地点横空出世,JavaWeb上发布仅几个月,就已经有成千上万的人下载。由于NetscapeNavigator支持Java,动态Web页面掀开了新的一页:applet时代到来了。

applet允许开发人员编写可嵌入在Web页面上的小应用程序。只要用户使用支持Java的浏览器,就可以在浏览器的Java虚拟机(Java Virtual MachineJVM)中运行applet。尽管applet可以做很多事情,但它也存在一些限制:通常不允许它读写文件系统,它也不能加载本地库,而且可能无法启动客户端上的程序。除了这些限制外,applet是在一个沙箱安全模型中运行的,这是为了有助于防止用户运行恶意代码。

对许多人来说,最初接触Java编程语言就是从applet开始的,当时这是创建动态Web应用的一种绝好的方法。applet允许你在浏览器中创建一个胖客户应用,不过要在平台的安全限制范围内。当时,在很多领域都广泛使用了applet,但是,Web社区并没有完全被applet“征服”。胖客户的开发人员都很熟悉一个问题:必须在客户端上部署适当的Java版本。因为applet在浏览器的虚拟机中运行,所以开发人员必须确保客户端安装了适当版本的Java。尽管这个问题也可以解决,但它确实妨碍了applet技术的进一步推广。而且如果applet写得不好,很可能对客户主机造成影响,这使许多客户对于是否采用基于applet的解决方案犹豫不定。

3 JavaScript

与此同时,Netscape创建了一种脚本语言,并最终命名为JavaScript(建立原型时叫做Mocha,正式发布之前曾经改名为LiveWireLiveScript,不过最后终于确定为JavaScript)。设计JavaScript是为了让不太熟悉JavaWeb设计人员和程序员能够更轻松地开发applet(当然,Microsoft也推出了与JavaScript相对应的脚本语言,称为VBScript)。NetscapeBrendan Eich来设计和实现这种新语言,他认为市场需要的是一种动态类型脚本语言。由于缺乏开发工具,缺少有用的错误消息和调试工具,JavaScript很受非议,但尽管如此,JavaScript仍然是一种创建动态Web应用的强大方法。

最初,创建JavaScript是为了帮助开发人员动态地修改页面上的标记,以便为客户提供更丰富的体验。人们越来越认识到,页面也可以当作对象,因此文档对象模型(Document Object ModelDOM)应运而生。刚开始,JavaScriptDOM紧密地交织在一起,但最后它们还是“分道扬镳”,并各自发展。DOM是页面的一个完全面向对象的表示,该页面可以用某种脚本语言(如JavaScriptVBScript)进行修改。

最后,万维网协会(World Wide Web ConsortiumW3C)介入,并完成了DOM的标准化,而欧洲计算机制造商协会(ECMA)批准JavaScript作为ECMAScript规约。根据这些标准编写的页面和脚本,在遵循相应原则的任何浏览器上都应该有相同的外观和表现。

在最初的几年中,JavaScript的发展很是坎坷,这是许多因素造成的。首先,浏览器支持很不一致,即使是今天,同样的脚本在不同浏览器上也可能有不同的表现;其次,客户可以自由地把JavaScript关闭,由于存在一些已知的安全漏洞,往往鼓励用户把JavaScript关掉。由于开发JavaScript很有难度(你会用alert吗?),许多开发人员退避三舍,有些开发人员干脆不考虑 JavaScript,认为这是图形设计人员使用的一种“玩具”语言。许多人曾试图使用、测试和调试复杂的JavaScript,并为此身心俱疲,所以大多数人在经历了这种痛苦之后,最终只能满足于用JavaScript创建简单的基于表单的应用。

4servletASPPHPJSP……

尽管applet是基于Web的,但胖客户应用存在的许多问题在applet上也有所体现。在大量使用拨号连接的年代(就算是今天,拨号连接也很普遍),要下载一个复杂applet的完整代码,要花很多时间,用户不能承受。开发人员还要考虑客户端上的Java版本,有些虚拟机还有更多的要求[3]。理想情况下只需提供静态的Web页面就够了,毕竟,这正是设计因特网的本来目的。当然,尽管静态页面是静态的,但是如果能在服务器上动态地生成内容,再把静态的内容返回,这就太好了。

Java问世一年左右,Sun引入了servlet。现在Java代码不用再像applet那样在客户端浏览器中运行了,它可以在你控制的一个应用服务器上运行。这样,开发人员就能充分利用现有的业务应用,而且,如果需要升级为最新的Java版本,只需要考虑服务器就行了。Java推崇“一次编写,到处运行”,这一点使得开发人员可以选择最先进的应用服务器和服务器环境,这也是这种新技术的另一个优点。servlet还可以取代CGI脚本。

servlet向前迈出了很大一步。servlet提供了对整个Java应用编程接口(API)的完全访问,而且提供了一个完备的库可以处理HTTP。不过,servlet不是十全十美的。使用servlet设计界面可能很困难。在典型的servlet交互中,先要从用户那里得到一些信息,完成某种业务逻辑,然后使用一些“打印行”创建HTML,为用户显示结果。

代码清单1-1 简单的servlet代码

response.setContentType("text/html;charset=UTF-8");

PrintWriter out = response.getWriter();

out.println("<html>");

out.println("<head>");

out.println("<title>Servlet SimpleServlet</title>"); 软件开发网 www.mscto.com

out.println("</head>"); 软件开发网 www.mscto.com

out.println("<body>");

out.println("<h1>Hello World</h1>");

out.println("<p>Imagine if this were more complex.</p>");

out.println("</body>");

out.println("</html>");

out.close();

servlet不仅容易出错,很难生成可视化显示,而且还无法让开发者尽展其才。一般地,编写服务器端代码的人往往是软件开发人员,他们只是对算法和编译器很精通,但不是能设计公司精美网站的图形设计人员。业务开发人员不仅要编写业务逻辑,还必须考虑怎么创建一致的设计。因此,很有必要将表示与业务逻辑分离。因此JSPJavaServer Pages)出现了。

在某种程度上,JSP是对 Microsoft Active Server Pages (ASP)做出的回应。MicrosoftSunservlet规约上所犯的错误汲取了教训,并创建了ASP来简化动态页面的开发。Microsoft增加了非常好的工具支持,并与其Web服务器紧密集成。JSPASP的设计目的都是为了将业务处理与页面外观相分离,从这个意义上讲,二者是相似的。虽然存在一些技术上的差别(Sun也从Microsoft那里学到了教训),但它们有一个最大的共同点,即Web设计人员能够专心设计页面外观,而软件开发人员可以专心开发业务逻辑。代码清单1-2显示了一个简单的JSP

代码清单1-2 简单的JSP

<%@page contentType="text/html"%>

<%@page pageEncoding="UTF-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

"http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Hello World</title>

</head>

<body>

<h1>Hello World</h1>

<p>This code is more familiar for Web developers.</p>

</body>

</html>

当然,MicrosoftSun并没有垄断服务器端解决方案。还有许多其他的方案在这个领域都有一席之地,如PHPColdFusion等等。有些开发人员喜欢新奇的工具,还有一些则倾向于更简单的语言。目前来看,所有这些解决方案完成的任务都是一样的,它们都是要动态生成HTML。在服务器端生成内容可以解决发布问题。不过,与使用胖客户或applet所做的工作相比,用户从原始HTML得到的体验就太过单调和苍白了。下面几节将介绍几种力图提供更丰富用户体验的解决方案。

5 Flash

并不是只有MicrosoftSun在努力寻找办法来解决动态Web页面问题。1996年夏天,FutureWave发布了一个名叫FutureSplash Animator的产品。这个产品起源于一个基于Java的动画播放器,FutureWave很快被Macromedia兼并,Macromedia则将这个产品改名为Flash

利用Flash,设计人员可以创建令人惊叹的动态应用。公司可以在Web上发布高度交互性的应用,几乎与胖客户应用相差无几。不同于appletservletCGI脚本,Flash不需要编程技巧,很容易上手。在20世纪90年代末期,掌握Flash是一个很重要的特长,因为许多老板都非常需要有这种技能的员工。不过,这种易用性也是有代价的。

像许多解决方案一样,Flash需要客户端软件。尽管许多流行的操作系统和浏览器上都内置有所需的Shockwave播放器插件,但并非普遍都有。虽然能免费下载,但由于担心感染病毒,使得许多用户都拒绝安装这个软件。Flash应用可能还需要大量网络带宽才能正常地工作,另外,由于没有广泛的宽带连接,Flash的推广受到局限(因此产生了“跳过本页”之类的链接)。虽然确有一些网站选择建立多个版本的Web应用,分别适应于不同的连接速度,但是许多公司都无法承受支持两个或更多网站所增加的开发开销。

总之,创建Flash应用需要专用的软件和浏览器插件。applet可以用文本编辑器编写,而且有一个免费的Java开发包,Flash则不同,使用完整的Flash工具包需要按用户数付费,每个用户需要数百美元。尽管这些因素不是难以逾越的障碍,但它们确实减慢了Flash在动态Web应用道路上的前进脚步。

6DHTML革命

MicrosoftNetscape发布其各自浏览器的第4版时,Web开发人员有了一个新的选择:动态HTMLDynamic HTMLDHTML)。与有些人想像的不同DHTML不是一个W3C标准,它更像是一种营销手段。实际上,DHTML结合了HTML、层叠样式表(Cascading Style SheetsCSS)、JavaScriptDOM。这些技术的结合使得开发人员可以动态地修改Web页面的内容和结构。

最初DHTML的反响很好。不过,它需要的浏览器版本还没有得到广泛采用。尽管IENetscape都支持DHTML,但是它们的实现大相径庭,这要求开发人员必须知道他们的客户使用什么浏览器。而这通常意味着需要大量代码来检查浏览器的类型和版本,这就进一步增加了开发的开销。有些人对于尝试这种方法很是迟疑,因为DHTML还没有一个官方的标准。不过,将来新标准有可能会出现。

7XML衍生语言

20世纪90年代中期,基于SGML衍生出了W3C的可扩展标记语言(eXtensible Markup LanguageXML),自此以后,XML变得极为流行。许多人把XML视为解决所有计算机开发问题的灵丹妙药,以至于XML几乎无处不在。实际上,Microsoft就已经宣布,Office 12将支持XML文件格式。

如今,我们至少有4XML衍生语言可以用来创建Web应用(W3CXHTML不包括在内):MozillaXULXAMJ,这是结合Java的一种开源语言;MacromediaMXML MicrosoftXAML

XULXUL(读作“zool”)代表XML用户界面语言(XML User Interface Language),由Mozilla基金会推出。流行的Firefox浏览器和Thunderbird邮件客户端都是用XUL编写的。利用XUL,开发人员能构建功能很丰富的应用,这个应用可以与因特网连接,也可以不与因特网连接。为了方便那些熟悉DHTML的开发人员使用,XUL设计为可以跨平台支持诸如窗口和按钮等标准界面部件。虽然XUL本身不是标准,但它是基于各种标准的,如HTML 4.0CSSDOMXMLECMAScript等等。XUL应用可以在浏览器上运行,也可以安装在客户端主机上。

当然,XUL也不是没有缺点。它需要Gecko引擎,而且目前IE还没有相应的插件。尽管Firefox在浏览器市场中已经有了一定的份额,但少了IE的支持还是影响很大,大多数应用都无法使用XUL。目前开展的很多项目都是力图在多个平台上使用XUL,包括Eclipse

XAMLXAML(读作“zammel”)是Microsoft即将推出的操作系统(名为Windows Vista)的一个组件。XAML是可扩展应用标记语言(eXtensible Application Markup Language)的缩写,它为使用Vista创建用户界面定义了标准。与HTML类似,XAML使用标记来创建标准元素,如按钮和文本框等。XAML建立在Microsoft .NET平台之上,而且可以编译为 .NET类。

XAML的局限应当很清楚。作为Microsoft的产品,它要求必须使用Microsoft的操作系统。多数情况下特别是在大公司中,这可能不成问题,但是有些小公司使用的不是Microsoft的操作系统,总不能削足适履吧,就像是没有哪家公司会因为买家没有开某种牌子的车来就把他拒之门外。Vista交付的日期一再推迟,与此同时XAML也有了很大变化,不再只是一个播放器。据说,在未来几年内,我们可能会看到一个全新的XAML

MXMLMacromedia创建了MXML,作为与其Flex技术一同使用的一种标记语言。MXML是最佳体验标记语言(Maximum eXperience Markup Language)的缩写,它与HTML很相似,可以以声明的方式来设计界面。与XULXAML类似,MXML提供了更丰富的界面组件,如DataGridTabNavigator,利用这些组件可以创建功能丰富的因特网应用。不过,MXML不能独立使用,它依赖于FlexActionScript编程语言来编写业务逻辑。

MXMLFlash有同样的一些限制。它是专用的,而且依赖于价格昂贵的开发和部署环境。尽管将来.NET可能会对MXML提供支持,但现在Flex只能在J2EE应用服务器上运行,如TomcatIBMWebSphere,这就进一步限制了MXML的广泛采用。

XAMJ:让人欣喜的是,开源社区又向有关界面设计的XML衍生语言领域增加了新的成员。XAMJ作为另一种跨平台的语言,为Web应用开发人员又提供了一个工具。这种衍生语言基于Java,而Java是当前最流行的面向对象语言之一,XAMJ也因此获得了面向对象语言的强大功能。XAMJ实际上想要替代基于XAMLHTML的应用,力图寻找一种更为安全的方法,既不依赖于某种特定的框架,也不需要高速的因特网连接。XAMJ是一种编译型语言,建立在“clientlet”(小客户端)体系结构之上,尽管基于XAMJ的程序也可以是独立的应用,但通常都是基于Web的应用。在撰写本书时,XAMJ还太新,我们还没有听到太多批评的声音。

当谈到“以X开头的东西”时,别忘了W3C XForms规约。XForms设计为支持更丰富的用户界面,而且能够将数据与表示解耦合。毋庸置疑,XForms数据是XML,这样你就能使用现有的XML技术,如XPathXML Schema。标准HTML能做的,XForms都能做,而且XForms还有更多功能,包括动态检查域值、与Web服务集成等等。不同于其他的许多W3C规约,XForms不需要新的浏览器,你可以使用现在已有的许多浏览器去实现。与大多数XML衍生语言一样,XForms是一种全新的方法,所以它要得到采纳尚需时日。

分享到:
评论
1 楼 fanyilong_v5 2012-07-05  
好东西 找了好久的 东西

相关推荐

    struts2.0课件

    Struts2.0是Java Web开发中的一个框架,属于Model 2 MVC架构的实现,它在Web应用发展历程中扮演了重要角色。Model 2模式强调将业务逻辑、数据访问和用户界面分离,以提高代码的可维护性和复用性。 在Web应用早期,...

    Web应用安全的发展和未来.pdf

    本文将对Web应用安全的发展历程、当前面临的安全挑战、OWASP Top 10攻击类型、Web应用安全的未来发展趋势等方面进行详细的分析和解读。 一、Web应用安全的发展历程 Web应用安全的发展可以追溯到20世纪90年代,当时...

    【网络安全】-Web的发展历程.ppt

    Web技术的发展历程是互联网历史的重要组成部分,它不仅塑造了我们今天所熟知的互联网形态,而且在不断推动着计算机网络技术的进步。从Web的起源到现在的Web3.0,这一过程经历了多个关键阶段。 Web的起源可以追溯到...

    基于_NET的Web应用架构构建模式

    Web应用架构的发展历程是从简单的HTML静态页面逐渐演变为动态、复杂的系统。最初,动态网页多以CGI脚本形式出现,将业务逻辑和HTML表示混合在一起。随着需求的增长,ASP.NET和JSP等基于页面的开发工具应运而生,它们...

    非常详尽的Ajax教程.doc

    ### 1.3 Web应用发展历程 从早期的FTP和电子邮件系统,到BBS、论坛,再到现在的社交媒体、在线购物平台,Web应用的复杂性和互动性显著增强,Ajax技术在其中起到了关键作用。 ### 1.4 可用性问题 Ajax的主要挑战之一...

    java的发展历程

    总的来说,Java的发展历程是一个从家庭娱乐设备的设想,到成为全球互联网和企业应用的核心力量的转变。其跨平台的特性、强大的社区支持和持续的技术更新,使Java成为了现代软件开发不可或缺的一部分。

    Building_a_Java_applet.zip_applet_building_java Applet

    Java Applet是Java技术在早期Web...虽然Applet在现代Web开发中已不常见,了解其工作原理和历史对于理解Java的Web应用发展历程仍具有价值。同时,学习这个过程也可以帮助你更好地掌握Java编程基础和Web应用程序的构建。

    web应用简介及开发环境

    在Web应用的发展历程中,C/S(Client/Server,客户/服务器)和B/S(Browser/Server,浏览器/服务器)两种计算模式起到了关键作用。 1. C/S模式 C/S模式是一种典型的分布式计算模型,其中客户端(Client)负责用户...

    Python Django Web典型模块开发实战_用Django REST framework实现豆瓣API应用项目.pdf

    **Python Django Web典型模块开发实战** - 这个主题涵盖了使用Python的Django框架进行Web应用开发的实践项目。Django是一个高级的Python Web框架,它鼓励快速开发和干净、实用的设计。通过使用Django,开发者可以...

    传统Web应用与AJAX应用

    在Web应用的发展历程中,传统的Web应用和AJAX(Asynchronous JavaScript and XML)应用是两个重要的阶段。传统的Web应用,又称为“页面刷新”模型,是基于HTTP协议的请求-响应模式。用户在浏览器中输入URL,服务器...

    Ajax基础教程

    Web应用发展历程 Web 1.0时代,主要是静态内容展示;Web 2.0时代,Ajax成为主流,推动了动态、交互性强的网页应用,如Google Maps、Gmail等,它们展示了Ajax的强大功能。 ### 4. 可用性问题 尽管Ajax提供了更好...

    CSS3实现的个人或者公司发展历程时间轴

    网页时间轴一般用于展示以时间为主线的事件,如个人成长经历或者企业网站常见的公司发展历程等。给大家介绍一款基于HTML5和CSS3的漂亮的垂直时间轴,它可以响应页面布局,适用于HTML5开发的PC和移动手机WEB应用。

    基于Python的Web应用程序的Web服务器比较.md

    本文将深入探讨Python Web服务器领域内的几个核心概念及其发展历程,并着重对比不同类型的Web服务器如何支持Python Web应用程序。我们将从Python Web服务器网关接口(WSGI)入手,然后逐一分析几款流行的Web服务器...

    IT互联网发展历程.pptx

    IT互联网的发展历程是一个充满创新与变革的历程,涵盖了多个关键领域的演进。在这个过程中,UI设计、Web前端开发以及PHP编程语言都扮演了至关重要的角色。 首先,UI(用户界面)设计是IT行业中的核心组成部分,它...

    豆瓣网技术架构的发展历程

    豆瓣网,作为中国知名的Web2.0平台,其技术架构的发展历程揭示了互联网技术的演进和创新。本文将深入探讨豆瓣网的技术架构变化,包括早期的基础架构、应对高并发的解决方案、数据存储与处理、分布式系统以及持续优化...

    微软研发探秘系列课程(14):高端培训之名家讲坛——Web应用的历史发展

    这门课程是微软研发探秘系列的一部分,专注于讲解Web应用的发展历程,旨在深入剖析Web技术的演变及其对信息技术产业的影响。课程内容涵盖从早期的静态网页到现代动态交互式Web应用程序的转变,揭示了互联网技术的...

    Java开发Web应用

    本章主要介绍了Web应用的发展历程,从静态网页到动态网页的转变,以及几种主流的Web开发技术。 首先,静态网页是Web的起点,它们由HTML、CSS和JavaScript等静态内容构成,无法进行服务器端的数据交互。随着互联网的...

Global site tag (gtag.js) - Google Analytics