Java and the Internet
If Java is, in fact, yet another computer programming language, you may question why it is so important and why it is being promoted as a revolutionary step in computer programming. The answer isnrsquo;t immediately obvious if yoursquo;re coming from a traditional programming perspective. Although Java is very useful for solving traditional stand-alone programming problems, it is also important because it will solve programming problems on the World Wide Web.
1.Client-side programming
The Webrsquo;s initial server-browser design provided for interactive content, but the interactivity was completely provided by the server. The server produced static pages for the client browser, which would simply interpret and display them. Basic HTML contains simple mechanisms for data gathering: text-entry boxes, check boxes, radio boxes, lists and drop-down lists, as well as a button that can only be programmed to reset the data on the form or “submit” the data on the form back to the server. This submission passes through the Common Gateway Interface (CGI) provided on all Web servers. The text within the submission tells CGI what to do with it. The most common action is to run a program located on the server in a directory thatrsquo;s typically called “cgi-bin.” (If you watch the address window at the top of your browser when you push a button on a Web page, you can sometimes see “cgi-bin” within all the gobbledygook there.) These programs can be written in most languages. Perl is a common choice because it is designed for text manipulation and is interpreted, so it can be installed on any server regardless of processor or operating system.
Many powerful Web sites today are built strictly on CGI, and you can in fact do nearly anything with it. However, Web sites built on CGI programs can rapidly become overly complicated to maintain, and there is also the problem of response time. The response of a CGI program depends on how much data must be sent, as well as the load on both the server and the Internet. (On top of this, starting a CGI program tends to be slow.) The initial designers of the Web did not foresee how rapidly this bandwidth would be exhausted for the kinds of applications people developed. For example, any sort of dynamic graphing is nearly impossible to perform with consistency because a GIF file must be created and moved from the server to the client for each version of the graph. And yoursquo;ve no doubt had direct experience with something as simple as validating the data on an input form. You press the submit button on a page; the data is shipped back to the server; the server starts a CGI program that discovers an error, formats an HTML page informing you of the error, and then sends the page back to you; you must then back up a page and try again. Not only is this slow, itrsquo;s inelegant.
The solution is client-side programming. Most machines that run Web browsers are powerful engines capable of doing vast work, and with the original static HTML approach they are sitting there, just idly waiting for the server to dish up the next page. Client-side programming means that the Web browser is harnessed to do whatever work it can, and the result for the user is a much speedier and more interactive experience at your Web site.
The problem with discussions of client-side programming is that they arenrsquo;t very different from discussions of programming in general. The parameters are almost the same, but the platform is different: a Web browser is like a limited operating system. In the end, you must still program, and this accounts for the dizzying array of problems and solutions produced by client-side programming. The rest of this section provides an overview of the issues and approaches in client-side programming.
2.Plug-ins
One of the most significant steps forward in client-side programming is the development of the plug-in. This is a way for a programmer to add new functionality to the browser by downloading a piece of code that plugs itself into the appropriate spot in the browser. It tells the browser “from now on you can perform this new activity.” (You need to download the plug-in only once.) Some fast and powerful behavior is added to browsers via plug-ins, but writing a plug-in is not a trivial task, and isnrsquo;t something yoursquo;d want to do as part of the process of building a particular site. The value of the plug-in for client-side programming is that it allows an expert programmer to develop a new language and add that language to a browser without the permission of the browser manufacturer. Thus, plug-ins provide a “back door” that allows the creation of new client-side programming languages (although not all languages are implemented as plug-ins).
3.Scripting languages
Plug-ins resulted in an explosion of scripting languages. With a scripting language you embed the source code for your client-side program directly into the HTML page, and the plug-in that interprets that language is automatically activated while the HTML page is being displayed. Scripting languages tend to be reasonably easy to understand and, because they are simply text that is part of an HTML page, they load very quickly as part of the single server hit required to procure that page. The trade-off is that your code is exposed for everyone to see (and steal). Generally, however, you arenrsquo;t doing amazingly sophisticated things with scripting languages so this is not too much of a hardship.
This points out that the scripting languages used inside Web browsers are really intended to solve specific types of problems, primarily the creation of richer and more interactive graphical user interfaces (GUIs). However, a scripting language might solve 80 percent of the problems encountered in client-side programming. Your problems might very well fit completely within that 80 percent, and since scripting languages can allow easier and fas
剩余内容已隐藏,支付完成后下载完整资料
Java 和因特网
既然 Java 不过另一种类型的程序设计语言, 大家可能会奇怪它为什么值得如此重视, 为什么还有这么多的人认为它是计算机程序设计的一个里程碑呢? 如果您来自一个传统的程序设计背景, 那么答案在刚开始的时候并不是很明显。 Java 除了可解决传统的程序设计问题以外, 还能解决 World Wide Web(万维网)上的编程问题。
1 .客户端编程
Web 最初采用的“服务器-浏览器”方案可提供交互式内容, 但这种交互能力完全由服务器提供, 为服务器和因特网带来了 不小的负担。 服务器一般为客户浏览器产生静态网页, 由后者简单地解释并显示出来。 基本HTML 语言提供了简单的数据收集机制: 文字输入框、 复选框、 单选钮、列表以及下拉列表等, 另外还有一个按钮, 只能由程序规定重新设置表单中的数据, 以便回传给服务器。 用户提交的信息通过所有 Web 服务器均能支持的“通用网关接口”(CGI) 回传到服务器。 包含在提交数据中的文字指示 CGI 该如何操作。 最常见的行动是运行位于服务器的一个程序。 那个程序一般保存在一个名为“cgi-bin”的目录中(按下 Web 页内的一个按钮时, 请注意一下浏览器顶部的地址窗, 经常都能发现“cgi-bin”的字样)。 大多数语言都可用来编制这些程序, 但其中最常见的是 Perl。 这是由于 Perl 是专为文字的处理及解释而设计的, 所以能在任何服务器上安装和使用, 无论采用的处理器或操作系统是什么。
现今许多Web站点都严格地建立在CGI的基础上,而实际上你能用它来做几乎任何事情。然而,网站建立在CGI程序会很快变得过于复杂而且难以维护,也使响应时间很长。CGI程序的响应时间取决于要发送多少数据,以及对服务器和网络的负载。(在这方面,开始一个CGI 项目往往是缓慢的),web的最初设计者无法预见到这个带宽发展如此迅速,导致使用应用的人也感到疲惫。例如,任何类型的动态图形几乎都不可能连贯的执行,因为一个GIF文件必须被创建然后被移动到图片的每个版本。然后你可以用一些关于这些的直接经验来验证数据输入。你按下网页上的提交按钮;数据回传给服务器;服务器启动一个CGI程序,发现错误,格式的HTML页面告知你的错误,然后将页面返回给你;你必须返回到上一页并再试一次。这不仅是缓慢的,也是不优雅的。
解决方案是客户端编程。大多数运行Web浏览器的机器都有强大的发动机能够做很多工作,与原来的静态HTML的方法,他们都坐在那里,只是无所事事地等待服务器发送下一页。客户端编程意味着Web浏览器能物尽其用,其结果是用户能更快、更互动的体验你的网站。
需要讨论的客户端编程的问题是,从一般的编程讨论它们是不是很不一样。参数几乎是相同的,但不同的平台是不同的:一个web浏览器就像是一个有限的操作系统。最后,你必须一直计划令人眼花缭乱的问题并提供客户端编程的解决方案。本节的其余部分提供了一个关于在客户端编程概述的问题和方法。
- 插件
朝客户端编程迈进的时候, 最重要的一个问题就是插件的设计。 利用插件, 程序员可以方便地为浏览器添加新功能, 用户只需下载一些代码,把它们“插入”浏览器的适当位置即可。 这些代码的作用是告诉浏览器“从现在开始, 你可以进行这些新活动了 ”(仅需下载这些插入一次)。 有些快速和功能强大的行为是通过插件添加到浏览器的。 但插件的编写并不是一件简单的任务。 在我们构建一个特定的站点时, 可能并不希望涉及这方面的工作。 对客户端程序设计来说, 插件的价值在于它允许专业程序员设计出一种新的语言, 并将那种语言添加到浏览器, 同时不必经过浏览器原创者的许可。 由此可以看出, 插件实际是浏览器的一个“后门”, 允许创建新的客户端程序设计语言(尽管并非所有语言都是作为插件实现的)。
- 脚本编制语言
插件造成了 脚本编制语言的爆炸性增长。 通过这种脚本语言, 可将用于自己客户端程序的源码直接插入 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 方面的问题就已经够让人头痛了)。
- 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 的艰苦过程。
5. ActiveX
在某种程度上, Java 的一个有力竞争对手应该是微软的 ActiveX, 尽管它采用的是完全不同的一套实现机制。 ActiveX 最早是一种纯 Windows 的方案。 经过一家独立的专业协会的努力, ActiveX 现在已具备了跨平台使用的能力。 实际上, ActiveX 的意思是“假如你的程序同它的工作环境正常连接, 它就能进入 Web 页, 并在支持 ActiveX 的浏览器中运行”(IE 固化了对ActiveX 的支持, 而 Netscape 需要一个插件)。 所以, ActiveX 并没有限制我们使用一种特定的语言。 比如, 假设我们已经是一名有经验的 Windows程序员, 能熟练地使用像 C 、 Visual Basic 或者 Borland Delphi 那样的语 言, 就能几乎不加任何学习地创建出 ActiveX 组件。 事实上, ActiveX 是在我们的 Web 页中使用“历史遗留”代码的最佳途径。
- 安全
自 动下载和通过因特网运行程序听起来就像是一个病毒制造者的梦想。 在客户端的编程中, ActiveX 带来了最让人头痛的安全问题。 点击一个Web 站点的时候, 可能会随同 HTML 网页传回任何数量的东西: GIF 文件、脚本代码、 编译好的 Java 代码以及 ActiveX 组件。 有些是无害的; GIF 文件不会对我们造成任何危害, 而脚本编制语言通常在自己可做的事情上有着很大的限制。 Java 也设计成在一个安全“沙箱”里在它的程序片中运行,这样可防止操作位于沙箱以外的磁盘或者内存区域。
ActiveX 是所有这些里面最让人担心的。 用 ActiveX 编写程序就像编制Windows 应用程序——可以做自己想做的任何事情。 下载回一个 ActiveX组件后, 它完全可能对我们磁盘上的文件造成破坏。 当然, 对那些下载回来并不限于在 Web 浏览器内部运行的程序, 它们同样也可能破坏我们的系统。 从 BBS 下载回来的病毒一直是个大问题, 但因特网的速度使得这个问题变得更加复杂。
目前解决的办法是“数字签名”, 代码会得到权威机构的验证, 显示出它的作者是谁。 这一机制的基础是认为病毒之所以会传播, 是由于它的编制者匿名的缘故。 所以假如去掉了 匿名的因素, 所有设计者都不得不为它们的行为负责。 这似乎是一个很好的主意, 因为它使程序显得更加正规。但我对它能消除恶意因素持怀疑态度, 因为假如一个程序便含有 Bug, 那么同样会造成问题。
Java 通过“沙箱”来防止这些问题的发生。 Java 解释器内嵌于我们本地的 Web 浏览器中, 在程序片装载时会检查所有有嫌疑的指令。 特别地, 程序片根本没有权力将文件写进磁盘, 或者删除文件(这是病毒最喜欢做的事情之一)。 我们通常认为程序片是安全的。 而且由于安全对于营建一套可靠的客户机/ 服务器系统至关重要, 所以会给病毒留下漏洞的所有错误都能很快得到修复(浏览器软件实际需要强行遵守这些安全规则; 而有些浏览器则允许我们选择不同的安全级别, 防止对系统不同程度的访问)。
大家或许会怀疑这种限制是否会妨碍我们将文件写到本地磁盘。 比如,我们有时需要构建一个本地数据库, 或将数据保存下来, 以便日后离线使用。 最早的版本似乎每个人都能在线做任何敏感的事情, 但这很快就变得非常不现实(尽管低价“互联网工具”有一天可能会满足大多数用户的需要)。 解决的方案是“签了名的程序片”, 它用公共密钥加密算法验证程序片确实来自它所声称的地方。 当然在通过验证后, 签了 名的一个程序片仍然可以开始清除你的磁盘。 但从理论上说, 既然现在能够找到创建人“算帐”,他们一般不会干这种蠢事。 Java 1.1 为数字签名提供了一个框架, 在必要时,可让一个程序片“走”到沙箱的外面来。
数字签名遗漏了一个重要的问题, 那就是人们在因特网上移动的速度。如下载回一个错误百出的程序, 而它很不幸地真的干了 某些蠢事, 需要多久的时间才能发觉这一点呢? 这也许是几天, 也可能几周之后。 发现了 之后, 又如何追踪当初肇事的程序呢?以及它当时的责任有多大 ?
- 因特网和内联网
Web 是解决客户机/ 服务器问题的一种常用方案, 所以最好能用相同的技术解决此类问题的一些“子集”, 特别是公司内部的传统客户机/ 服务器问题
剩余内容已隐藏,支付完成后下载完整资料
资料编号:[153824],资料为PDF文档或Word文档,PDF文档可免费转换为Word
以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。