快捷搜索:

Java纵横谈

邵莹编译

--------------------------------------------------------------------------------

1984 年 1 月, Apple Computer 公 司 一 举 创 造 了 一 种 成 为 个 人 生 产 力 关 键 因 素 的 全 新 的 计 算 不雅 念: 台 式 计 算 机, 完 全 改 变 此 前 的 计 算 情 况。 1995 年 5 月, 当 Sun Microsystems 公 司 把 Java 发 放 到 Internet 之 上 时, 又 再 一 次 引 起 世 界 的 震 动。

Java 虽 然 名 字 没 有 太 多 的 意 义, 但 有 两 点 却 事 关 重 大年夜。 第 一, Sun 的 这 一 简 单 的 基 于 对 象 的 开 放 系 统 新 语 言, 能 使 软 件 开 发 者 利 用 World Wide Web 或 当 前 ISV 们 正 在 开 发 的 任 何 前 端 软 件, 设 计 可 在 Internet 上 分 发 的 应 用 软 件; 第 二, 它 是 一 种 虚 拟 计 算 机 (技 术 上 叫 做 Java Virtual Machine), 最 终 将 使 一 切 基 于 Java 的 应 用 软 件 无 处 不 在 ? ? ? 在 任 何 地 方 运 行, 不 管 是 什 么 硬 件 和 用 什 么 操 作 系 统。

为 什 么 叫 Java?

Sun 公 司 副 总 裁 James Gosling 于 1990 年 首 次 提 出 Java 的 设 计, 今 天 他 指 挥 着 Sun 的 全 部 Java 开 发 工 作 的 技 术 队 伍。 Java 语 言 原 来 被 James Gosling 叫 做 Oak(橡 树)。 他 起 这 个 名 字 的 灵 感 出 自 他 在 Sun Microsystems 公 司 办 公 室 窗 外 的 一 棵 大年夜 橡 树。

后 来, Java 开 发 小 组 发 现, Oak 是 Sun 的 一 种 编 程 语 言 的 名 字, 于 是 只 得 另 起 新 名。 开 发 小 组 经 过 几 个 小 时 的 冥 思 苦 想 后 发 现, 要 给 一 种 编 程 语 言 起 一 个 好 的 名 字 是 太 难 了。

最 后, 有 一 天 在 去 当 地 咖 啡 馆 的 路 上, 突 然 生 出 了 这 个 妙 想 ? ? ? Java。

其 实, Java 是 印 度 尼 西 亚 共 和 国 的 一 个 最 重 要 的 岛 屿, 中 文 译 名 叫 爪 哇, 位 于 苏 门 答 腊 岛 之 东 与 巴 厘 岛 之 西, 自 1696 年 以 来 便 盛 产 咖 啡。 迄 今, Java 咖 啡 仍 极 富 盛 名。

Java 革 命

Java Virtual Machine 或 者 Java 应 用 软 件, 可 不 作 修 改 且 无 需 重 新 编 译 就 可 在 任 何 平 台 上 运 行, 包 括 智 能 峰 窝 电 话、 膝 上 型 机、 Windows 3.1、 Win95、 NT、 OS/2 或 Unix 工 作 站 及 服 务 器、 以 至 运 行 MVS 的 AS/400 或 IBM S/390。 而 且 它 的 运 行 可 以 跨 越 任 何 数 量 的 网 络 及 Inter-net 协 议, 利 用 自 定 名 (You-Name-It) 数 据 库 网 关, 并 遵 从 包 括 CORBA 及 Network OLE 在 内 的 任 何 一 种 分 布 式 对 象 标 准。

无 疑, 这 是 革 命 性 的。 而 更 具 革 命 性 的 是 Sun 公 开 Ja-va 的 决 策, 尤 其 是 把 Java Virtual Machine 对 一 切 人 公 开。 这 意 味 着, 任 何 软 件 厂 商 或 单 个 的 开 发 人 员, 包 括 开 发 工 具 厂 商、 语 言 编 译 器 开 发 者、 RDBMS 厂 商、 中 间 件 厂 商、 客 户 机 / 服 务 器 应 用 厂 商、 以 至 躲 在 阴 暗 角 落 里 的 “黑 客”, 都 能 利 用 Java Virtual Machine 的 字 节 代 码 语 言, 创 造 出 具 Internet 能 力 的、 可 随 处 运 行 的 应 用 软 件 和 服 务。

所 以, 就 象 革 命 性 的 Mac 硬 件 及 其 OS 展 现 了 企 业 中 以 台 式 机 为 中 心 的 客 户 机 / 服 务 器 计 算 的 亲 用 户 的 时 代 一 样, 现 在 这 种 新 的 Java 技 术 正 在 开 辟 一 条 蓬 勃 发 展 的、 企 业 内 外 以 网 络 为 中 心 的 客 户 机 / 服 务 器 计 算 的 亲 开 发 者 的 道 路。

Java 革 命 将 引 出 一 个 以 授 予 个 人 权 利 为 标 志 的 软 件 世 界。 Java 展 现 了 让 操 作 系 统 像 窗 玻 璃 一 样 透 明 的 前 景。 软 件、 信 息 技 术 与 网 上 的 内 容 将 依 其 质 量 与 服 务 来 评 判, 而 不 由 其 创 建 者 的 独 家 拥 有 (也 可 说 “垄 断”) 所 左 右。

Java 群 体 每 天 都 在 扩 大年夜, 它 既 包 括 一 些 世 界 最 大年夜 的 ISV, 也 包 括 公 司 CIO、 信 息 技 术 人 员、 系 统 分 析 人 员、 C/S 开 发 人 员、 编 程 人 员、 多 媒 体 设 计 者、 市 场 行 销 人 员、 教 育 工 作 者、 经 理、 影 视 生 产 者 甚 至 业 余 爱 好 者 等 广 泛 的 用 户。

从 传 统 上 看, 这 样 一 些 人 在 一 起 有 效 地 工 作 是 不 多 见 的。 当 我 们 谈 到 开 放 系 统 时, 我 们 往 往 是 就 已 发 表 的 API 及 规 格, 或 者 源 码 的 可 得 性, 或 者 硬 件、 联 网 及 操 作 系 统 而 言 的, 没 有 一 个 人 是 从 人 的 开 放 的 意 义 上 来 谈 的。 Java 完 成 了 开 放 系 统 的 闭 合 链。 它 开 发 了 人 力 资 源, 而 反 过 来 又 开 辟 了 共 同 工 作 的 道 路。

正 因 为 如 此, Sun 的 Java 正 以 令 人 难 于 置 信 的 速 度 赢 得 在 企 业 计 算 世 界 中 的 地 位。

让 企 业 在 烤 箱 用 的 OS 上 运 行 吗 ?

原 来 的 Java 小 组 从 事 消 费 电 子 设 备 的 软 件 设 计。 他 们 很 快 发 现, 诸 如 C 及 C++ 等 语 言 是 不 合 适 的, 因 为 它 们 对 特 定 的 计 算 机 芯 片 都 必 须 进 行 编 译。 当 一 种 新 的 芯 片 出 来 后, 大年夜 部 分 软 件 都 要 重 新 编 译, 才 能 充 分 发 挥 新 芯 片 的 特 性。 一 旦 编 译 好 后, 要 用 新 的 软 件 库 时 C 及 C++ 程 序 又 不 容 易 修 改。 当 修 改 库 时, 这 些 程 序 又 必 须 重 新 编 译。

消 费 设 备 软 件 必 须 要 用 新 的 芯 片, 因 为 制 造 商 受 到 元 件 成 本 的 制 约。 如 果 计 算 机 芯 片 的 价 格 太 高, 它 们 就 会 马 上 用 新 的 更 便 宜 的 来 替 换。 即 使 一 点 点 价 格 的 变 化, 当 销 售 成 百 万 台 设 备 时 差 别 就 很 大年夜 了。

用 于 消 费 电 子 设 备 的 软 件 还 一 定 要 非 常 可 靠, 要 比 大年夜 多 数 计 算 机 软 件 可 靠 得 多。 如 果 消 费 产 品 出 现 故 障, 制 造 商 往 往 就 得 替 换 整 个 机 器。

基 于 Java 的 “Internet PC”

很 少 有 象 Internet PC 这 样 的 争 论 成 为 业 界 的 热 门 话 题 的 了。 Internet PC 由 IBM、 Oracle 和 Sun 首 先 倡 导, 而 众 多 较 小 的 公 司 也 在 付 诸 行 动。

其 中 心 思 想 是, 这 种 Internet PC 将 是 不 到 500 美 元 的 设 备, 人 们 可 用 来 从 Internet 卸 载 他 们 需 要 的 程 序, 而 无 需 本 机 存 储 程 序 和 文 件 (大年夜 多 数 Internet PC 的 设 计 均 不 含 硬 盘)。 对 管 理 人 员 来 说, Internet PC 可 望 大年夜 为 减 少 管 理、 维 护 费 用 和 时 间, 消 除 一 轮 又 一 轮 费 钱 的 升 级, 而 装 入 免 费 或 者 几 乎 免 费 的 软 件。

在 Sun 的 Internet PC 设 想 中, Java 的 运 行 犹 如 一 个 小 操 作 系 统 ? ? ? 可 以 称 为 Java OS, 类 似 于 内 核 的 前 端 软 件。 这 种 操 作 系 统 代 码 将 能 在 各 种 微 处 理 器 上 的 和 从 手 持 式 PDA 到 最 小 内 存 ? ? ? 大年夜 概 4MB 的 低 档 PC 机 等 设 备 上 运 行。

如 果 Java 能 在 让 编 程 人 员 编 写 非 常 紧 凑 的 代 码 方 面 获 得 成 功 的 话, 那 么, 即 使 今 天 大年夜 多 数 用 户 面 临 有 限 的 带 宽, 也 可 能 使 用 户 相 当 快 地 卸 载 和 运 行 Java 小 程 序。

今 年 1 月, Sun 在 Demo’ 96 交 易 展 上 预 展 了 一 台 Internet PC 样 机, 包 括 监 视 器 在 内, 尺 寸 约 为 5 × 9 × 2 英 寸。 Sun 公 司 官 员 承 认, 该 机 价 格 将 超 过 500 美 元, 主 要 因 为 它 带 一 种 工 作 站 监 视 器。

低 于 500 美 元 设 备 的 想 法 会 是 什 么 样 子, 请 看 看 Ora-cle 的 Network Computer(NC)。 基 本 机 型 将 包 含 一 只 廉 价 RISC 微 处 理 器、 一 个 基 于 ROM 的 操 作 系 统、 4 ~ 8MB RAM、 一 个 PC Card 扩 展 槽、 一 个 以 太 网 接 头、 一 个 键 盘 和 一 只 鼠 标。 由 于 所 提 出 的 系 统 不 带 监 视 器, 用 户 势 必 要 插 到 PC 监 视 器 或 电 视 机 上。

Oracle 的 NC 定 于 3 月 出 样 机, 预 计 夏 末 限 量 交 付。 O-racle 打 算 设 计 一 种 便 携 机 和 一 种 更 贵 的 多 媒 体 机。 公 司 将 给 其 它 制 造 商 发 放 这 些 设 计 的 许 可 证。

虽 然 Sun、 Oracle 和 IBM(以 其 InterPersonal Com-puter 或 IPC) 大年夜 受 注 意, 而 少 数 小 公 司 本 月 (3 月) 就 可 望 交 付 Net 机。 例 如: 英 国 剑 桥 的 Acorn Computer Group、 德 州 澳 斯 汀 的 SunRiver Data Systems 及 渥 太 华 的 TransPhone。 今 年 年 底, 密 执 安 州 伯 明 翰 的 WebBook 公 司 打 算 提 交 一 种 专 为 Java 设 计 的 Web 接 入 设 备。 该 设 备 将 用 圣 地 亚 哥 的 Patriot Scientific 公 司 的 ShBoom RISC 芯 片 作 它 的 Java 运 行 引 擎。 象 Java 一 样, ShBoom 采 用 一 种 面 向 堆 栈 的 体 系 结 构, Patriot 官 员 声 称, 它 将 有 比 运 行 其 它 处 理 器 更 快 的 优 点。

Java 的 保 证

Java 是 一 种 有 一 大年夜 套 保 证 的 语 言, 当 一 起 获 得 时, 便 成 为 一 种 对 程 序 来 说 确 实 先 进 的 操 作 系 统。 这 些 保 证 的 大年夜 多 数 在 别 的 语 言 中 也 采 用 了, 但 没 有 哪 种 语 言 或 操 作 系 统 一 起 提 供 全 部 的 保 证。

这 些 保 证 包 括:

1.Java 代 码 是 可 移 植 的, 而 且 对 当 代 几 乎 所 有 的 操 作 系 统 无 需 修 改 便 能 运 行。

2.Java 给 程 序 员 提 供 真 正 的 多 线 程 以 及 同 步 化 方 法。

3.Java 提 供 与 平 台 无 关 的 用 户 接 口。

4.Java 具 有 内 置 联 网 功 能。

5. 所 有 Java 对 象 都 知 道 它 们 怎 样 打 印 输 出。

6.Java 编 译 器 强 制 进 行 所 有 的 出 错 和 意 外 处 理。

7. 自 动 进 行 内 存 清 零。

8. 按 小 程 序 编 写 的 程 序 可 自 动 在 网 上 分 发。

9.Java 小 程 序 将 在 任 何 平 台 上 的 轻 型 客 户 机 Web 浏 览 器 中 无 缝 运 行。

Java 优 于 OLE 吗 ?

Sun 并 非 是 唯 一 一 家 想 到 分 布 式 对 象 的 公 司。 Mi-crosoft 在 推 动 其 Object Linking and Embedding(OLE) 规 格 成 为 软 件 组 件 的 事 实 上 的 标 准 方 面, 已 获 得 了 很 大年夜 的 成 功。 而 且, 将 随 Windows NT 的 下 一 个 版 本 (NT 4.0) 交 付 网 络 可 用 的 OCX(即 OLE 控 制), 在 许 多 方 面 都 与 Java 对 象 相 似。 两 者 均 支 持 一 种 重 要 的 面 向 对 象 特 性 ? ? ? 继 承。 要 让 网 络 对 象 发 挥 它 们 的 潜 能, 这 种 继 承 父 对 象 功 能 性 的 能 力 是 至 关 重 要 的。

但 是, 即 使 Java 小 程 序 与 网 络 可 用 的 OCX 在 许 多 方 面 相 似, 却 也 存 在 一 些 极 为 重 要 的 差 别。

首 先, Java 小 程 序 是 与 平 台 无 关 的。 一 个 Java 小 程 序 只 要 写 一 次 就 能 在 运 行 Java Virtual Machine 的 任 何 PC 机 上 运 行。 Java 小 程 序 与 平 台 无 关, 而 OCX 却 或 多 或 少 受 限 于 Windows 工 作 站。

其 次, Java 小 程 序 在 安 全 的 Java 环 境 下 执 行。 相 比 之 下, 执 行 一 个 从 成 百 万 个 Internet 节 点 中 的 某 个 节 点 来 的 电 子 数 据 表 OCX, 难 以 保 证 它 们 实 际 运 行 的 不 是 一 个 病 毒 的 荒 原, 而 使 它 们 的 硬 盘 驱 动 器 不 能 工 作。 Java 就 不 一 样, 它 不 允 许 对 内 存 或 硬 盘 的 非 授 权 访 问, 从 而 大年夜 大年夜 减 小 了 一 个 恶 意 程 序 造 成 的 潜 在 的 危 险。

最 后, OCX 与 Java 小 程 序 之 间 的 一 个 重 要 的 差 别 在 于, 一 个 OCX 只 去 一 个 方 向: 服 务 器 到 客 户 机, 而 Java 小 程 序 可 以 去 两 个 方 向, 在 客 户 机 与 服 务 器 之 间 不 管 方 向。 例 如, 一 个 希 望 在 几 台 服 务 器 上 查 找 一 张 数 据 库 表 的 客 户 机, 可 以 动 态 地 向 每 台 工 作 的 服 务 器 送 一 个 小 程 序。 另 外, 这 些 小 程 序 不 同 于 传 统 的 客 户 机 / 服 务 器 应 用 程 序, 不 必 要 预 先 安 装。

Java Virtual Machine: 一 种 软 CPU

大年夜 概, Java 环 境 最 重 要 的 组 件 就 是 James Gosling 定 名 的 Java Virtual Machine 了。 这 种 VM 比 起 典 型 的 BASIC 或 其 它 高 级 语 言 运 行 期 解 释 器 强 多 了。 VM 是 仿 照 一 种 小 巧 高 效 的 CPU 设 计 的。 它 采 用 Java 编 译 的 字 节 代 码, 而 且 只 要 是 机 器 语 言 它 都 运 行。 VM 的 更 低 层 把 这 种 伪 机 器 代 码 转 换 为 实 际 的 硬 件 调 用 (不 管 它 运 行 的 机 器 上 有 无 OS 驻 留 都 照 办 不 误)。

Java Virtula Machine 支 持 大年夜 约 248 个 字 节 代 码。 每 个 字 节 代 码 执 行 一 种 基 本 的 CPU 运 算, 如 把 一 个 整 数 加 到 寄 存 器, 把 两 个 寄 存 器 中 的 数 相 加, 对 子 程 序 的 转 移, 存 贮 结 果, 寄 存 器 加 1 或 减 1, 不 一 而 足。 其 实, VM 是 一 个 堆 栈 结 构 且 有 本 地 和 全 局 变 量 的 算 术 逻 辑 单 元 (ALU)。

这 种 堆 栈 体 系 结 构 是 这 样 工 作 的: 要 把 两 个 数 相 加, VM 首 先 把 它 们 放 入 堆 栈, 然 后 加 它 们。 在 完 成 加 法 后, VM 把 结 构 留 在 栈 内 供 过 程 的 下 一 步 用。 如 果 你 想 到 HP 计 算 器 的 逻 辑 的 话, 你 就 接 近 于 理 解 VM 的 逻 辑 了。

本 地 VM 变 量 用 于 暂 存 和 调 用 子 程 序。 全 局 变 量 则 用 于 跟 踪, 例 如, 根 据 Java 字 节 代 码 程 序 的 实 际 机 器 代 码 在 内 存 何 处 执 行, 当 前 的 对 象 是 什 么, 相 关 的 数 据 存 放 在 内 存 何 处, 以 及 其 它 的 全 局 信 息。

它 不 应 让 人 惊 讶, 有 些 芯 片 制 造 商 (包 括 Sun Mi-crosystems 和 Patriot Scientific 在 内) 已 经 把 Java 字 节 代 码 作 为 基 本 指 令 集 做 成 了 一 类 新 的 CPU。 它 们 可 以 用 于 简 单 的 手 持 式 设 备 (蜂 窝 电 话、 传 呼 机 等), 以 及 Internet 专 用 设 备。 利 用 把 字 节 代 码 操 作 对 象 烧 到 硅 芯 片 上, 所 以 Java 能 以 相 当 快 的 速 度 运 行。

您可能还会对下面的文章感兴趣: