1、文献来源: Bruce Eckel. Thinking in Java J. Pearson Higher Isia Education,2006-2-20. Java 编程思想 (Java 和因特网 ) 既然 Java 不过另一种类型的程序设计语言,大家可能会奇怪它为什么值得如此重视,为什么还有这么多的人认为它是计算机程序设计的一个里程碑呢?如果您来自一个传统的程序设计背景,那么答案在刚开始的时候并不是很明显。Java 除了可解决传统的程序设计问题以外,还能解决 World Wide Web(万维网 )上的编程问题。 1、 客户端编程 Web 最初采用的 “服务器浏览器 ”方案可提供交互式内
2、容,但这种交互能力完全由服务器提供,为服务器和因特网带来了不小的负担。服务器一般为客户浏览器产生静态网页,由后者简单地解释并显示出来。基本 HTML 语言提供了简单的数据收集机制:文字输入框、复选框、单选钮、列表以及下拉列表等,另外还有一个按钮,只能由程序规定重新设置表单中的数据,以便回传给服务器。用户提交的信息通过所有 Web 服务器均能支持的 “通用网关接口 ”( CGI)回传到服务器。包含在提交数据中的文字指示 CGI 该如何操作。最常 见的行动是运行位于服务器的一个程序。那个程序一般保存在一个名为 “cgi-bin”的目录中(按下Web 页内的一个按钮时,请注意一下浏览器顶部的地址窗,
3、经常都能发现 “cgi-bin”的字样)。大多数语言都可用来编制这些程序,但其中最常见的是 Perl。这是由于 Perl 是专为文字的处理及解释而设计的,所以能在任何服务器上安装和使用,无论采用的处理器或操作系统是什么。 2、 脚本编制语言 插件造成了脚本编制语言的爆炸性增长。通过这种脚本语言,可将用于自己客户端程序的源码直接插入 HTML页,而对那种语言进行解释的插件会在 HTML页显示的时候自动激活。脚本语言一般都倾向于尽量简化,易于理解。而且由于它们是从属于 HTML 页的一些简单正文,所以只需向服务器发出对那个页的一次请求,即可非常快地载入。缺点是我们的代码全部暴露在人们面前。另一方面
4、,由于通常不用脚本编制语言做 过分 复杂的事情,所以这个问题暂且可以放在一边。 脚本语言真正面向的是特定类型问题的解决,其中主要涉及如何创建更丰富、更具有互动能力的图形用户界面( GUI)。然而,脚本语言也许能解决客户端编程中 80的问题。你碰到的问题可能完全就在那 80里面。而且由于脚本编制语言的 宗旨是尽可能地简化与快速,所以在考虑其他更复杂的方案之前(如 Java及 ActiveX),首先应想一下脚本语言是否可行。 目前讨论得最多的脚本编制语言包括 JavaScript(它与 Java 没有任何关系;之所以叫那个名字,完全是一种市场策略)、 VBScript(同 Visual Basic
5、 很相似)以及 Tcl/Tk(来源于流行的跨平台 GUI 构造语言)。当然还有其他许多语言,也有许多正在开发中。 JavaScript也许是 日 常用的,它得到的支持也最全面。无论 NetscapeNavigator,Microsoft Internet Explorer,还是 Opera,目前都提供了对 JavaScript 的支持。除此以外,市面上讲述 JavaScript 的书籍也要比讲述其他语言的书多得多。有些工具还能利用 JavaScript自动产生网页。当然,如果你已经有 Visual Basic或者 Tcl/Tk的深厚功底,当然用它们要简单得多,起码可以避免学习新语言的烦恼(解决
6、Web 方面的问题就已经够让人头痛了)。 3、 Java 如果说一种脚本编制语言能解决 80的客户端程序设计问题,那么剩下的 20又该怎么办呢?它们属于一些高难度的问题吗?目 前最流行的方案就是 Java。它不仅是一种功能强大、高度安全、可以跨平台使用以及国际通用的程序设计语言,也是一种具有旺盛生命力的语言。对 Java 的扩展是不断进行的,提供的语言特性和库能够很好地解决传统语言不能解决的问题,比如多线程操作、数据库访问、连网程序设计以及分布式计算等等。 Java 通过 “程序片 ”( Applet)巧妙地解决了客户端编程的问题。 程序片(或 “小应用程序 ”)是一种非常小的程序,只能在 W
7、eb 浏览器中运行。作为 Web 页的一部分,程序片代码会自动下载回来(这和网页中的图片差不多)。激活程序片后,它会 执行一个程序。程序片的一个优点体现在:通过程序片,一旦用户需要客户软件,软件就可从服务器自动下载回来。它们能自动取得客户软件的最新版本,不会出错,也没有重新安装的麻烦。由于 Java 的设计原理,程序员只需要创建程序的一个版本,那个程序能在几乎所有计算机以及安装了 Java 解释器的浏览器中运行。由于 Java 是一种全功能的编程语言,所以在向服务器发出一个请求之前,我们能先在客户端做完尽可能多的工作。例如,再也不必通过因特网传送一个请求表单,再由服务器确定其中是否存在一个拼写
8、或者其他参数错误。大多数数据校验工作均可在 客户端完成,没有必要坐在计算机前面焦急地等待服务器的响应。这样一来,不仅速度和响应的灵敏度得到了极大的提高,对网络和服务器造成的负担也可以明显减轻,这对保障因特网的畅通是至关重要的。 与脚本程序相比, Java 程序片的另一个优点是它采用编译好的形式,所以客户端看不到源码。当然在另一方面,反编译 Java 程序片也并不是件难事,而且代码的隐藏一般并不是个重要的问题。大家要注意另外两个重要的问题。正如本书以前会讲到的那样,编译好的 Java 程序片可能包含了许多模块,所以要多次 “命中 ”(访问)服务器以便下载(在 Java 1.1 中,这个问题得到了
9、有效的改善 利用 Java 压缩档,即 JAR 文件 它允许设计者将所有必要的模块都封装到一起,供用户统一下载)。在另一方面,脚本程序是作为 Web 页正文的一部分集成到 Web 页内的。这种程序一般都非常小,可有效减少对服务器的点击数。另一个因素是学习方面的问题。不管你平时听别人怎么说, Java 都不是一种十分容易便可学会的语言。如果你以前是一名 Visual Basic 程序员,那么转向 VBScript 会是一种最快捷的方案。由于 VBScript 可以解决大多数典型的客户机服务器问题,所以一 旦上手,就很难下定决心再去学习 Java。如果对脚本编制语言比较熟,那么在转向 Java 之前,建议先熟悉一下 JavaScript 或者 VBScript,因为它们可能已经能够满足你的需要,不必经历学习 Java 的艰苦过程。 4、 因特网和内联网