<html><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<TITLE>Java language</TITLE>
<META NAME="GENERATOR" CONTENT="Mozilla/3.01Gold (Win95; I) [Netscape]">
</HEAD>
<BODY TEXT="#32322E" BGCOLOR="#FFFFFF" LINK="#9C39FF" VLINK="#9C39FF" ALINK="#FFFFFF">
<CENTER><P><A NAME="j12"></A><FONT SIZE=+1>§ 1.2 Java的 特 点 </FONT></P></CENTER>
<P>Java是 一 个 广 泛 使 用 的 网 络 编 程 语 言 ,它 是 一 种 新 的 计
算概 念 。 </P>
<P>首 先 ,作 为 一 种 程 序 设 计 语 言 ,它 简 单 、 面向对象 、 不依 赖
于 机 器 的 结 构 、具 有 可 移 植 性 、 鲁 棒 性 、 安 全 性 、 并 且
提 供 了 并 发 的 机 制 、具 有 很 高 的 性 能。 </P>
<P>其 次 ,它 最 大 限 度 地 利 用 了 网 络 ,Java的小应用程序(applet) 可在
网 络 上 传 输 而 不受 CPU和 环 境 的 限 制 。 另 外 ,Java还 提 供 了 丰
富 的 类 库 ,使 程 序 设计 者 可 以 很 方 便地 建 立 自 己 的 系 统 。
</P>
<P>下 面 我 们 分 别 从 这 三 个 方 面 来 讨 论 Java的 特 点 ,然 后通 过把
Java与 C,C++相 比进 一 步 指 出 它 所 具 有 的 优 点 。 </P>
<P>一 、 Java语 言 </P>
<P>Java语 言 有 下 面 一 些 特 点 :简 单 、 面 向 对 象 、 分 布 式 、
解释 执 行 、 鲁 棒 、安 全 、 体 系 结 构 中 立 、 可 移 植 、 高 性 能
、 多 线 程 以 及 动 态 性。 </P>
<P>1.简 单 性 </P>
<P>Java语 言 是 一 种 面 向 对 象 的 语 言 ,它 通 过 提 供 最 基 本 的
方法 来 完 成 指 定 的任 务 ,只 需 理 解 一 些 基 本 的 概 念 ,就 可 以
用 它 编 写 出 适 合 于 各种 情 况 的 应 用 程 序。 Java略 去了 运 算 符
重 载 、 多 重 继 承 等 模 糊 的 概 念 ,并 且 通 过实 现 自 动 垃 圾 收集
大 大 简 化 了 程 序 设 计 者 的 内 存 管 理 工 作 。 另 外 ,Java也 适
合于 在 小 型 机 上 运行 ,它 的 基 本 解 释 器 及 类 的 支 持 只 有 40KB左
右 ,加 上 标 准 类 库 和线 程 的 支 持 也 只 有 215KB左 右 。 库 和 线
程 的 支 持 也 只 有 2 15KB左 右 。 </P>
<P>2.面 向 对 象 </P>
<P>Java语 言 的 设 计 集 中 于 对 象 及 其 接 口 ,它 提 供 了 简 单 的
类机 制 以 及 动 态 的接 口 模 型 。 对 象 中 封 装 了 它 的 状 态 变 量
以 及 相 应 的 方 法 ,实现 了 模 块 化 和 信 息隐 藏 ;而 类 则 提 供 了
一 类 对 象 的 原 型 ,并 且 通 过 继 承 机 制 ,子 类可 以 使 用 父 类 所提
供 的 方 法 , 实 现 了 代 码 的 复 用 。 </P>
<P>3.分 布 性 </P>
<P>Java是 面 向 网 络 的 语 言 。 通 过 它 提 供 的 类 库 可 以 处 理TCP/IP协
议 ,用 户 可 以通 过 URL地 址 在 网 络 上 很 方 便 地 访 问 其 它 对 象
。 </P>
<P>4.鲁 棒 性 </P>
<P>Java在 编 译 和 运 行 程 序 时 ,都 要 对 可 能 出 现 的 问 题 进 行
检查 ,以 消 除 错 误 的产 生 。 它 提 供 自 动 垃 圾 收 集 来 进 行 内
存 管 理 ,防 止 程 序 员 在管 理 内 存 时 容 易 产生 的 错 误 。 通 过
集 成 的 面 向 对 象 的 例 外 处 理 机 制 ,在 编 译 时,Java提 示 出 可
能 出现 但 未 被 处 理 的 例 外 ,帮 助 程 序 员 正 确 地 进 行 选 择 以
防 止 系统 的 崩 溃 。 另 外,Java在 编 译 时 还 可 捕 获 类 型 声 明 中
的 许 多 常 见 错 误 ,防 止 动 态运 行 时 不 匹 配 问题 的 出 现 。 </P>
<P>5.安 全 性 </P>
<P>用 于 网 络 、 分 布 环 境 下 的 Java必 须 要 防 止 病 毒 的 入 侵 。Java
不 支 持 指 针 ,一切 对 内 存 的 访 问 都 必 须 通 过 对 象 的 实 例 变
量 来 实 现 ,这 样 就防 止 程 序 员 使 用 "特洛 伊 " 木 马 等
欺 骗 手 段 访 问 对 象 的 私 有 成 员 ,同 时 也 避 免 了指 针 操 作 中
容 易 产 生的 错 误 。 </P>
<P>6.体 系 结 构 中 立 </P>
<P>Java解 释 器 生 成 与 体 系 结 构 无 关 的 字 节 码 指 令 ,只 要 安
装了 Java运 行 时 系 统,Java程 序 就 可 在 任 意 的 处 理 器 上 运 行 。
这 些 字 节 码 指 令 对 应于 Java虚 拟 机 中 的表 示 ,Java 解 释 器 得
到 字 节 码 后 ,对 它 进 行 转 换 ,使 之 能 够 在 不同 的 平 台 运 行 。
</P>
<P>7.可 移 植 性 </P>
<P>与 平 台 无 关 的 特 性 使 Java程 序 可 以 方 便 地 被 移 植 到 网 络上
的 不 同 机 器 。同 时 ,Java的 类 库 中 也 实 现 了 与 不 同 平 台 的 接
口 ,使 这 些 类 库 可以 移 植 。 另 外 ,Java编 译 器 是 由 Java语 言 实
现 的 ,Java运 行 时 系 统 由 标 准 C实 现 ,这使 得 Java系 统 本 身 也具
有 可 移 植 性 。 </P>
<P>8.解 释 执 行 </P>
<P>Java解 释 器 直 接 对 Java字 节 码 进 行 解 释 执 行 。 字 节 码 本
身携 带 了 许 多 编 译时 信 息 ,使 得 连 接 过 程 更 加 简 单 。 </P>
<P>9.高 性 能 </P>
<P>和 其 它 解 释 执 行 的 语 言 如 BASIC、 TCL不 同 ,Java字 节 码 的 设计
使 之 能 很 容 易地 直 接 转 换 成 对 应 于 特 定 CPU 的 机 器 码 ,从 而
得 到 较 高 的 性 能。 </P>
<P>10.多 线 程 </P>
<P>多 线 程 机 制 使 应 用 程 序 能 够 并 行 执 行 ,而 且 同 步 机 制 保证
了 对 共 享 数 据 的正 确 操 作 。 通 过 使 用 多 线 程 ,程 序 设 计 者
可 以 分 别 用 不 同 的线 程 完 成 特 定 的 行为 ,而不 需 要 采 用 全 局
的 事 件 循 环 机 制 ,这 样 就 很 容 易 地 实 现 网 络 上 的 实 时 交 互行
为 。 </P>
<P>11.动 态 性 </P>
<P>Java的 设 计 使 它 适 合 于 一 个 不 断 发 展 的 环 境 。 在 类 库 中可
以 自 由 地 加 入新 的 方 法 和 实 例 变 量 而 不 会 影 响 用 户 程 序
的 执 行 。 并 且Java通 过 接 口 来 支 持 多重 继 承 ,使 之 比 严 格 的
类 继 承 具 有 更 灵 活 的 方 式 和 扩 展 性 。 </P>
<P>二 、 Java Applet </P>
<P>Java语 言 的 特 性 使 它 可 以 最 大 限 度 地 利 用 网 络 。 Applet是Jav
a的 小 应 用 程序 ,它 是 动 态 、 安 全 、 跨 平 台 的 网 络 应 用 程 序
。 Java Applet嵌 入HTML语 言 ,通 过 主页 发 布 到 Internet。 网 络 用 户
访 问 服 务 器 的Applet时 ,这些Applet 从网 络 上 进 行 传 输 ,然 后 在
支 持 Java 的 浏 览 器 中 运 行 。 由 于 Java语 言 的 安 全 机 制,用 户
一 旦 载 入Applet,就 可 以 放 心 地 来 生 成 多 媒 体 的 用 户 界 面 或
完 成 复 杂 的计 算 而 不 必 担 心 病毒 的 入 侵 。 虽 然 Applet可 以 和
图 像 、 声 音 、 动 画 等 一 样 从 网 络上 下 载 ,但 它 并 不同 于 这
些 多 媒 体 的 文 件 格 式 ,它 可 以 接 收 用 户 的 输 入 ,动 态 地进 行
改 变 ,而 不 仅 仅是 动 画 的 显 示 和 声 音 的 播 放 。 </P>
<P>三 、 丰 富 的 类 库 </P>
<P>Java提 供 了 大 量 的 类 以 满 足 网 络 化 、 多 线 程 、 面 向 对 象系
统 的 需 要 。 </P>
<P>1.语 言 包 提 供 的 支 持 包 括 字 符 串 处 理 、 多 线 程 处 理 、
例外 处 理 、 数 学 函数 处 理 等 ,可 以 用 它 简 单 地 实 现 Java 程 序
的 运 行 平 台 。 </P>
<P>2.实 用 程 序 包 提 供 的 支 持 包 括 哈 希 表 、 堆 栈 、 可 变 数
组、 时 间 和 日 期 等。 </P>
<P>3.输 入 输 出 包 用 统 一 的 "流 "模 型 来 实 现 所 有 格
式 的 I/O,包括 文 件 系 统 、 网 络、 输 入 /出 设 备 等 。 </P>
<P>4.低 级 网 络 包 用 于 实 现 Socket编 程 。 </P>
<P>5.抽 象 图 形 用 户 接 口 包 实 现 了 不 同 平 台 的 计 算 机 的 图
形用 户 接 口 部 件 ,包括 窗 口 、 菜 单 、 滚 动 条 、 对 话 框 等 ,使
得 Java可 以 移 植 到 不 同平 台 的 机 器 。 </P>
<P>6.网 络 包 支 持 Internet的 TCP/IP协 议 ,提 供 了 与 Internet的 接 口。
它 支 持 URL连 接,WWW的 即 时 访 问 ,并 且 简 化 了 用 户 /服 务 器 模
型 的 程 序 设 计 。 </P>
<P>四 、 Java和 C、 C++ </P>
<P>对 于 变 量 声 明 、 参 数 传 递 、 操 作 符 、 流 控 制 等 ,Java 使
用了 和 C、 C++相 同的 传 统 ,使 得 熟 悉 C、 C++的 程 序 员 能 很 方 便
地 进 行 编 程 。 同 时,Java为 了 实 现 其简 单 、 鲁 棒 、 安 全 等 特
性 ,也 摒 弃 了 C和 C++中 许 多 不 合 理 的 内容 。 </P>
<P>1.全 局 变 量 </P>
<P>Java程 序 中 ,不 能 在 所 有 类 之 外 定 义 全 局 变 量 ,只 能 通 过
在一 个 类 中 定 义 公用 、 静 态 的 变 量 来 实 现 一 个 全 局 变 量 。
例 如 : </P>
<P>Class GlobalVar{ </P>
<P>public static global_var; </P>
<P>} </P>
<P>在 类 GlobalVar中 定 义 变 量 global_var为 public stat-ic,使 得 其 它类
可 以 访 问 和 修 改该 变 量 。 </P>
<P>Java对 全 局 变 量 进 行 了 更 好 的 封 装 。 而 在 C和 C++中 , 依 赖
于不 加 封 装 的 全局 变 量 常 常 造 成 系 统 的 崩 溃 。 </P>
<P>2.Goto </P>
<P>Java不 支 持 C、 C++中 的 goto语 句 ,而 是 通 过 例 外 处 理 语 句 try,Ca
tch, final等 来 代替 C、 C++中 用 goto来 处 理 遇 到 错 误 时 跳 转 的
情 况 ,使 程 序 更 可 读且 更 结 构 化 。 </P>
<P>3.指 针 </P>
<P>指 针 是 C、 C++中 最 灵 活 ,也 是 最 容 易 产 生 错 误 的 数 据 类
型。 由 指 针 所 进 行的 内 存 地 址 操 作 常 会 造 成 不 可 预 知 的 错
误 ,同 时 通 过 指 针 对某 个 内 存 地 址 进 行显 式 类 型 转 换 后 ,可
以 访 问 一 个 C++中 的 私 有 成 员 ,从 而 破 坏 安全 性 ,造 成 系 统 的
崩 溃 。 而 Java 对 指 针 进 行 完 全 的 控 制 ,程 序 员 不 能 直 接进
行 任 何 指 针 操 作 ,例 如把 整 数 转 化 为 指 针 ,或 者 通 过 指 针释
放 某