【IT168 技术文章】
为什么要使用 Java 技术来实现 Web 支持?
Java 平台既是一种应用程序编程语言,又是一个执行环境。它在语法上类似 C++,并具有类似 SmallTalk 的执行环境。Sun Microsystems 在 1994 年首次发布了 Java 语言,Internet 浏览器的广泛应用使得 Java 语言非常流行。现在业界对于 Java 语言的认可已经非常普遍。计算机和软件供应商以及数百家商业公司都已经对 Java 技术非常认可。
Java 语言是一种简单易用的面向对象语言,它是基于上一代面向对象编程语言(SmallTalk 和 C++)最好的一些特性而开发出来的。Java 语言与体系结构无关,具有良好的可移植性、安全性、稳定性,它是一种分布式的、解释性的动态语言,对于目标应用程序来说性能很高。Java 还语言包括一个完整的应用程序执行环境。这些特性综合作用形成以下三个主要的优点:
Java 语言在源代码和二进制文件两个层次上都是与平台无关的;您只需编写一次 Java 代码就可以在任何地方运行这些代码。
Java 语言的面向对象的基本特性可以大力支持重用,并能让您构建现代的应用程序和组件。
Java 语言的标准 API 集可以让您将应用程序部署到由多个不同供应商所提供的执行环境中。
J2EE 的优点
J2EE 是分布式企业级的 Java 应用程序平台。J2EE 的标准环境可以让您分布式地部署应用并重用应用程序组件。J2EE 中基于组件的现代应用程序体系结构可以大力倡导代码的重用,简化应用程序及组件的开发与维护,为部署提供充分的灵活性,允许使用负载均衡和分布组件提高性能,并为应用程序提供更高的可扩展性。
由于 J2EE 的基础是 Java 技术,而 J2EE 本身就是一种标准,因此它具有良好的可移植性。很多 J2EE 的服务器、供应商以及组件都遵循 J2EE 开放标准,这样就为您的开发和部署环境提供了一种选择。Java 和 J2EE 应用程序都是面向网络的,而且是分布式的,这一特性可以允许您编写基于 Web 的瘦客户机应用程序。与原来的 Windows 应用程序或 Windows 客户机-服务器应用程序相比,这种体系结构提供了很多优点,其中包括:
对 Web 浏览器、各种移动计算设备以及其他应用程序提供统一的访问程序的方法
使用完整的 Java 客户机程序访问相同的应用程序可以获得更丰富的交互性和外观
升级应用程序到新版本非常容易,因为终端用户不需要更新或安装任何代码
可以与采用 Java 语言或 J2EE 应用的现代组件的外部应用程序很好地集成,这样可以提高重用性以及应用程序的灵活性
Java 编程基础
在我们潜心研究为应用程序增加 Web 功能之前,首先请您深入了解一下 Java 编程语言。使用 Java 语言,您既可以编写服务器端的应用程序,也可以编写具有 GUI 的客户机应用程序。本文假设您希望使用 Java 语言在服务器端实现一个基于 Web 的界面,因此我们就忽略 GUI 编程环境,并着重介绍 Java 平台非可视化的部分。我们首先简要介绍一下 Java 软件开发包(SDK),然后向您介绍一下如何使用 Java 语言编写一个久负盛名的“Hello World”程序。接下来,我们向您揭示 Visual Basic 6 与 Java 语言之间的区别。
Java SDK
Java SDK 是您在编写和运行 Java 程序时所需要的一组命令行工具和包。Java 程序会首先使用 JIT 编译器编译成一个与平台无关的字节码,然后这个字节码会在运行时再被编译成专用的代码。最重要的工具是 Java 编译器(javac.exe)和 Java 解释器(java.exe),后者用来运行 Java 程序。SDK 还包括一些基本的类(称为 Java 平台),这些类提供了您开始编写应用程序所需要的基本功能和 API。
Sun Microsystems 已经为它的 5 个主要的 Java 平台发行版各自发布发布了一个 SDK。对于本文来说,我们建议您下载最新的 SDK(Java 1.4.2)。Java SDK 是免费的。如果您现在还没有 SDK,可以立即去下载(请参阅 参考资料)。
您可以参考 Java 2 标准版(J2SE)API 的在线文档(请参阅 参考资料)。这些资料是一些 HTML 文档,您可以使用标准的 Web 浏览器进行查看。API 文档是一份必备的参考手册,您可能会频繁地使用这份手册。
Java SDK 基本步骤
使用可以支持长文件名的文本编辑器用普通的 ASCII 码格式编写源代码。
将源代码保存为一个扩展名为 .java 的文件。
所有的 Java 关键字都是小写的。对于变量名和方法名来说,您可以任意使用大小写,但是在一个类中使用时必须保持一致。
在一个命令行提示符中使用 javac 编译器对程序进行编译,javac 是 SDK 中提供的。此时通常应该指定 .java 扩展名。
在命令行提示符中使用随 SDK 一起提供的 Java 解释器运行 Java 程序。此时 不要指定 .class 扩展名。
如果需要,就对代码进行调试。在编译或运行 Java 程序时,可能会出现错误。
安装 SDK
下载 SDK 之后,您需要将其安装到自己的机器上。安装过程非常简单明了。如果在安装过程中提示您选择“典型安装”或“定制安装”,那么您可以选择“典型安装”。(只有当您清楚地了解自己要做什么,并且知道自己不想向机器上安装什么内容时,才应该选择“定制安装”。)安装程序通常会让您选择将标准的 Java 平台类的源代码也安装到机器上。如果您的机器上有足够的磁盘空间,我们建议您接受这个选项。这些文件可以提供一个机会,让您了解构成 Java 语言和标准的 API 的类是如何实现的。这些类的设计和实现通常都非常精巧,您可以从中学到很多知识。
当您安装好 SDK 之后,可能需要对其进行配置,这样才能在您的系统中正确使用。应该如何配置 SDK 取决于您的操作系统和正在使用的 SDK 的版本。SDK 中包括了完整的安装和配置提示。
第一个 Java 程序
现在,您可以编写自己的第一个 Java 程序了—— 也就是闻名于世的“Hello World”。打开您的文本编辑器,然后输入清单1 中的源代码。
清单 1. Hello World 程序
2
3 public static void main(String[] args) {
4
5 System.out.println("Hello World");
6
7 }
8
9 }
10
11
Java 语言是大小写敏感的,而诸如 class 和 public 之类的关键字通常都是小写。对于您自己的变量名和方法名,您可以任意使用大小写,只要在一个类中使用时保持一致即可。当您输入完源代码时,将这些代码保存到一个 HelloWorld.java 文件中。当源代码被保存为这个文件时,我们没有任何选择。Java 源代码使用一个 .java 扩展名,每个 Java 源代码文件的文件名都 必须 与该文件中定义的类同名。我们无论怎么重申这一点都不过分:大小写非常重要,因此诸如 HELLOWORLD.JAVA 和 Helloworld.java 之类的文件名都会导致一个编译错误。您可以将 HelloWorld.java 保存到机器中的任何目录中。但是您在使用命令行工具时,需要进入这个目录,因此应该确保文件保存的位置比较方便。
编译程序
现在您已经准备好编译 HelloWorld 程序了。随 SDK 一起提供的 Java 编译器是一个名为 javac.exe 的命令行程序。要编译一个 Java 源代码文件,您可以简单地向 javac.exe 程序传递一个名为 .java 的文件。要编译 HelloWorld 程序,请打开一个命令行提示符,然后将当前目录切换到您刚才将 HelloWorld.java 保存到的目录中。接下来执行下面的命令:
javac HelloWorld.java
与 Visual Basic 的编译器类似,Java 编译器可能会产生很多错误。通常,在 Java 编译器成功编译 HelloWorld 程序之前,您需要首先改正这些错误。一次成功的编译会生成一个名为 HelloWorld.class 的文件。这个文件代表您要在 Java 解释器中运行的可执行文件。
运行程序
与 SDK 一起提供的 Java 解释器是一个名为 java.exe 的命令行程序。要运行一个 Java 字节码可执行程序,您可以简单地向 Java 解释器传递一个 Java 程序名。当您使用 Java 解释器时,请不要指定 .class 扩展名。解释器只希望接受类文件,因此如果添加上 .class 扩展名会导致产生错误。要运行您的 HelloWorld 程序,请打开一个命令行提示符,然后将当前目录切换到您刚才编译 HelloWorld.java 文件所在的地方。您的字节码可执行文件 HelloWorld.class 应该就在这个目录中。然后,执行下面的命令:
java HelloWorld
Java 解释器试图执行 HelloWorld 程序的 main() 方法。返回类型为 void 的 Java 方法等价于 Visual Basic 中的 Sub 。返回其他类型的 Java 方法等价于 Visual Basic 中的 Function 。
Java 解释器可能会报告一个运行时错误,这通常会中断程序的执行。像在 Visual Basic 中一样,Java 运行时错误比编译时错误更难调试,但是出现的频率也比后者少。当运行时错误发生时,您可以从容地处理这些错误,因为 Java 程序是在一个受控的环境中执行的,这样可以减少那些“肆意运行的代码”导致整台机器崩溃的可能性。