当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:17:00  来源:本站整理

Web客户端编程[Java编程]

赞助商链接



  本文“Web客户端编程[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

Web最初采取的“服务器-浏览器”筹划可供应交互式内容,但这种交互本领完好由服务器供应,为服务器和因特网带来了不小的负担.服务器普通为客户浏览器产生静态网页,由后者简单地注释并显示出来.基本HTML语言供应了简单的数据汇集机制:文字输入框、复选框、单选钮、列表以及下拉列表等,别的还有一个按钮,只能由程序规定重新设置表单中的数据,以便回传给服务器.用户提交的信息通过全部Web服务器均能支持的“通用网关接口”(CGI)回传到服务器.包含在提交数据中的文字指导CGI该若何操作.最常见的行动是运行位于服务器的一个程序.那个程序普通保存在一个名为“cgi-bin”的目录中(按下Web页内的一个按钮时,请注意一下浏览器顶部的地址窗,常常都能发现“cgi-bin”的字样).大大都语言都可用来编制这些程序,但此中最常见的是Perl.这是由于Perl是专为文字的处理及注释而计划的,所以能在任何服务器上安装和利用,无论采取的处理器或操作系统是什么.

注:本节内容改编自某位作者的一篇文章.那篇文章最早呈目前位于www.mainspring.com的Mainspring上.本节的采取已征得了对方的赞成.

本日的很多Web站点都严峻地成立在CGI的底子上,事实上几近全部事情都可用CGI做到.唯一的问题就是呼应时间.CGI程序的呼应取决于需求传送多少数据,以及服务器和因特网两方面的负担有多重(并且CGI程序的启动对比慢).Web的早期计划者并未预猜测当初绰绰有余的带宽很快就变得不够用,这恰是大量利用充斥网上造成的后果.比方,此时任何情势的动态图形显示都几近不能联贯地显示,因为此时必须成立一个GIF文件,再将图形的每种改变从服务器传送给客户.并且大家应当对输入表单上的数据校验有着深化的领会.本来的办法是我们按下网页上的提交按钮(Submit);数据回传给服务器;服务器启动一个CGI程序,查抄用户输入能否有错;格局化一个HTML页,告诉大概碰到的错误,并将这个页回传给我们;随后必须回到原先那个表单页,再输入一遍.这种办法不但速度非常慢,也显得非常烦琐.
办理的办法就是客户端的程序计划.运行Web浏览器的大大都机械都拥有充足强的本领,可举行其他大量工作.与此同时,原始的静态HTML办法仍旧可以采取,它会一向等到服务器送回下一个页.客户端编程意味着Web浏览器可得到更充分的操纵,并可有效改进Web服务器的交互(互动)本领.
对客户端编程的谈论与通例编程问题的谈论并没有太大的辨别.采取的参数必定是相同的,只是运行的平台差别:Web浏览器就象一个有限的操作系统.无论若何,我们仍旧需求编程,仍旧会在客户端编程中碰到大量问题,同时也有很多办理的筹划.在本节剩下的部份里,我们将对这些问题举行一番概括,并介绍在客户端编程中采纳的对策.

1. 插件
朝客户端编程迈进的时刻,最重要的一个问题就是插件的计划.操纵插件,程序员可以便利地为浏览器增添新功效,用户只需下载一些代码,把它们“插入”浏览器的得当位置便可.这些代码的作用是奉告浏览器“从目前开始,你可以举行这些新活动了”(仅需下载这些插入一次).有些快速和功效强盛的行为是通过插件增添到浏览器的.但插件的编写并非一件简单的任务.在我们构建一个特定的站点时,大概并不但愿触及这方面的工作.对客户端程序计划来说,插件的代价在于它答应专业程序员计划出一种新的语言,并将那种语言增添到浏览器,同时没必要经过浏览器原创者的答应.由此可以看出,插件实际是浏览器的一个“后门”,答应成立新的客户端程序计划语言(固然并非全部语言都是作为插件实现的).

2. 脚本编制语言
插件造成了脚本编制语言的爆炸性增长.通过这种脚本语言,可将用于自己客户端程序的源码直接插入HTML页,而对那种语言举行注释的插件会在HTML页显示的时刻自动激活.脚本语言普通都偏向于尽大概简化,易于理解.并且由于它们是从属于HTML页的一些简单正文,所以只需向服务器发出对那个页的一次恳求,便可非常快地载入.缺陷是我们的代码全部表露在人们眼前.另一方面,由于普通不用脚本编制语言做过份复杂的事情,所以这个问题暂且可以放在一边.
脚本语言真正面向的是特定范例问题的办理,此中主要触及若何成立更丰富、更具有互动本领的图形用户界面(GUI).但是,脚本语言大概能办理客户端编程中80%的问题.你碰到的问题大概完好就在那80%里面.并且由于脚本编制语言的目标是尽大概地简化与快速,所以在考虑其他更复杂的筹划之前(如Java及ActiveX),首先应想一下脚本语言能否可行.
目前谈论得最多的脚本编制语言包含JavaScript(它与Java没有任何干系;之所以叫那个名字,美满是一种市场战略)、VBScript(同Visual Basic很类似)以及Tcl/Tk(根源于风行的跨平台GUI构造语言).当然还有其他很多语言,也有很多正在开辟中.
JavaScript大概是目常用的,它得到的支持也最全面.无论NetscapeNavigator,Microsoft Internet Explorer,还是Opera,目前都供应了对JavaScript的支持.除此以外,市面上报告JavaScript的书籍也要比报告其他语言的书多得多.有些工具还能操纵JavaScript自动产生网页.当然,假如你已经有Visual Basic大概Tcl/Tk的深沉功底,当然用它们要简单得多,最少可以避免学习新语言的懊恼(办理Web方面的问题就已经够让人头痛了).

3. Java
假如说一种脚本编制语言能办理80%的客户端程序计划问题,那么剩下的20%又该怎么办呢?它们属于一些高难度的问题吗?目前最风行的筹划就是Java.它不但是一种功效强盛、高度安全、可以跨平台利用以及国际通用的程序计划语言,也是一种具有茂盛生命力的语言.对Java的扩大是不断举行的,供应的语言特点和库可以很好地办理传统语言不能办理的问题,比方多线程操作、数据库拜候、连网程序计划以及分布式计算等等.Java通过“程序片”(Applet)巧妙地办理了客户端编程的问题.
程序片(或“小利用程序”)是一种非常小的程序,只能在Web浏览器中运行.作为Web页的一部份,程序片代码会自动下载回来(这和网页中的图片差不多).激活程序片后,它会履行一个程序.程序片的一个长处表目前:通历程序片,一旦用户需求客户软件,软件便可从服务器自动下载回来.它们能自动获得客户软件的最新版本,不会出错,也没有重新安装的麻烦.由于Java的计划原理,程序员只需求成立程序的一个版本,那个程序能在几近全部计算机以及安装了Java注释器的浏览器中运行.由于Java是一种全功效的编程语言,所以在向服务器发出一个恳求之前,我们能先在客户端做完尽大概多的工作.比方,再也没必要通过因特网传送一个恳求表单,再由服务器肯定此中能否存在一个拼写大概其他参数错误.大大都数据校验工作都可在客户端完成,没有必要坐在计算机前面焦虑地等候服务器的呼应.这样一来,不但速度和呼应的矫捷度得到了极大的提高,对网络和服务器造成的负担也可以明显减轻,这对保障因特网的通畅是至关重要的.
与脚本程序相比,Java程序片的另一个长处是它采取编译好的情势,所以客户端看不到源码.当然在另一方面,反编译Java程序片也并非件难事,并且代码的躲藏普通并非个重要的问题.大家要注意别的两个重要的问题.正如本书从前会讲到的那样,编译好的Java程序片大概包含了很多模块,所以要多次“命中”(拜候)服务器以便下载(在Java 1.1中,这个问题得到了有效的改进——操纵Java压缩档,即JAR文件——它答应计划者将全部必要的模块都封装到一同,供用户统一下载).在另一方面,脚本程序是作为Web页正文的一部份集成到Web页内的.这种程序普通都非常小,可有效削减对服务器的点击数.另一个因素是学习方面的问题.不管你平常听别人怎么说,Java都不是一种非常简单便可学会的语言.假如你从前是一名Visual Basic程序员,那么转向VBScript会是一种最快速的筹划.由于VBScript可以办理大大都典型的客户机/服务器问题,所以一旦上手,就很难下定决计再去学习Java.假如对脚本编制语言对比熟,那么在转向Java之前,倡议先熟习一下JavaScript大概VBScript,因为它们大概已经可以满意你的需求,没必要阅历学习Java的艰苦历程.

4. ActiveX
在某种程度上,Java的一个有力竞争对手应当是微软的ActiveX,固然它采取的是完好差别的一套实现机制.ActiveX最早是一种纯Windows的筹划.经过一家独立的专业协会的勤奋,ActiveX目前已具有了跨平台利用的本领.实际上,ActiveX的意思是“假定你的程序同它的工作环境正常衔接,它就可以进入Web页,并在支持ActiveX的浏览器中运行”(IE固化了对ActiveX的支持,而Netscape需求一个插件).所以,ActiveX并没有限制我们利用一种特定的语言.比方,假定我们已经是一名有经验的Windows程序员,能纯熟地利用象C++、Visual Basic大概BorlandDelphi那样的语言,就可以几近不加任何学习地成立出ActiveX组件.事实上,ActiveX是在我们的Web页中利用“历史遗留”代码的最佳途径.

5. 安全
自动下载和通过因特网运路程序听起来就象是一个病毒制造者的幻想.在客户端的编程中,ActiveX带来了最让人头痛的安全问题.点击一个Web站点的时刻,大概会伴随HTML网页传回任何数目的东西:GIF文件、脚本代码、编译好的Java代码以及ActiveX组件.有些是无害的;GIF文件不会对我们造成任何危害,而脚本编制语言普通在自己可做的事情上有着很大的限制.Java也计划成在一个安全“沙箱”里在它的程序片中运行,这样可避免操作位于沙箱以外的磁盘大概内存区域.
ActiveX是全部这些里面最让人耽忧的.用ActiveX编写程序就象编制Windows利用程序——可以做自己想做的任何事情.下载回一个ActiveX组件后,它完好大概对我们磁盘上的文件造成破坏.当然,对那些下载回来并不限于在Web浏览器内部运行的程序,它们一样也大概破坏我们的系统.从BBS下载回来的病毒一向是个大问题,但因特网的速度使得这个问题变得越发复杂.
目前办理的办法是“数字签名”,代码会得到声望机构的考证,显示出它的作者是谁.这一机制的底子是认为病毒之所以会传达,是由于它的编制者匿名的来由.所以假定去掉了匿名的因素,全部计划者都不得不为它们的行为负责.这仿佛是一个很好的主张,因为它使程序显得越发正规.但我对它能消除恶意因素持猜疑态度,因为假定一个程序便含有Bug,那么一样会造成问题.
Java通过“沙箱”来避免这些问题的发生.Java注释器内嵌于我们本地的Web浏览器中,在程序片装载时会查抄全部有嫌疑的指令.分外地,程序片根本没有权利将文件写进磁盘,大概删除文件(这是病毒最喜好做的事情之一).我们普通认为程序片是安全的.并且由于安全关于营建一套坚固的客户机/服务器系统至关重要,所以会给病毒留下漏洞的全部错误都能很快得到修复(浏览器软件实际需求强行服从这些安全法则;而有些浏览器则答应我们挑选差别的安全级别,避免对系统差别程度的拜候).
大家大概会猜疑这种限制能否会阻碍我们将文件写到本地磁盘.比方,我们有时需求构建一个本地数据库,或将数据保存下来,以便日后离线利用.最早的版本仿佛每个人都能在线做任何敏感的事情,但这很快就变得非常不实际(固然低价“互联网工具”有一天大概会满意大大都用户的需求).办理的筹划是“签了名的程序片”,它用大众密钥加密算法考证程序片确切来自它所声称的地方.当然在通过考证后,签了名的一个程序片仍旧可以开始排除你的磁盘.但从理论上说,既然目前可以找到成立人“计帐”,他们普通不会干这种蠢事.Java 1.1为数字签名供应了一个框架,在必要时,可以让一个程序片“走”到沙箱的表面来.
数字签名遗漏了一个重要的问题,那就是人们在因特网上移动的速度.以下载回一个错误百出的程序,而它很不幸地真的干了某些蠢事,需求多久的时间才能发觉这一点呢?这大概是几天,也大概几周之后.发现了之后,又若何追踪当初肇事的程序呢(以及它当时的责任有多大)?

6. 因特网和内联网
Web是办理客户机/服务器问题的一种常用筹划,所以最好能用相同的技术办理此类问题的一些“子集”,分外是公司内部的传统客户机/服务器问题.关于传统的客户机/服务器情势,我们面对的问题是拥有多种差别范例的客户计算机,并且很难安装新的客户软件.但通过Web浏览器和客户端编程,这两类问题都可得到很好的办理.若一个信息网络范围于一家特定的公司,那么在将Web技术利用于它之后,便可称其为“内联网”(Intranet),以示与国际性的“因特网”(Internet)有别.内联网供应了比因特网更大的安全级别,因为可以物理性地掌握对公司内部服务器的利用.说到培训,普通只要人们理解了浏览器的通例概念,便可以非常轻松地掌握网页和程序片之间的差别,所以学习新型系统的开销会大幅度削减.
安全问题将我们引入客户端编程范畴一个仿佛是自动形成的分支.若程序是在因特网上运行,由于无从知晓它会在什么平台上运行,所以编程时要分外留神,防备大概呈现的编程错误.需作一些跨平台处理,以及得当的安全防备,比方采取某种脚本语言大概Java.
但假定在内联网中运行,面对的一些制约因素就会发生改变.全部机械均为Intel/Windows平台是件很普通的事情.在内联网中,需求对自己代码的质量负责.并且一旦发现错误,便可以即刻改正.除此以外,大概已经有了一些“历史遗留”的代码,并用较传统的客户机/服务器方法利用那些代码.但在举行进级时,每次都要物理性地安装一道客户程序.浪费在进级安装上的时间是转移到浏览器的一项重要缘由.利用了浏览器后,进级就变得轻而易举,并且整个历程是透明和自动举行的.假如真的是牵扯到这样的一个内联网中,最明智的办法是采取ActiveX,而非试图采取一种新的语言来改写程序代码.
面对客户端编程问题令人困惑的一系列办理筹划时,最好的筹划是先做一次投资/回报解析.请总结出问题的全部制约因素,以及什么才是最快的筹划.由于客户端程序计划仍旧要编程,所以无论若何都该针对自己的特定情形采纳最好的开辟途径.这是预备面对程序开辟中一些不可避免的问题时,我们可以作出的最佳姿势.


  以上是“Web客户端编程[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • Web客户端编程
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .