第 一 讲:Java 概 述一、Java 的 发 展 史1 什 么 是Java美 国 硅 谷 有 一 句 行 话, 每10 年 ~15 年 有 一 次 轮 回。 最 近 的 一 次 轮 回 就 是 从Java 开 始。 Java 是 一 个 由Sun 公 司 开 发 而 成 的 新 一 代 编 程 语 言。 使 用 它 可 在 各 式 各 样 不 同 种 机 器、 不 同 种 操 作 平 台 的 网 络 环 境 中 开 发 软 件。 不 论 你 使 用 的 是 哪 一 种WWW 浏 览 器, 哪 一 种 计 算 机, 哪 一 种 操 作 系 统, 只 要WWW 浏 览 器 上 面 注 明 了“ 支 持Java”, 你 就 可 以 看 到 生 动 的 主 页。Java 正 在 逐 步 成 为Internet 应 用 的 主 要 开 发 语 言。 它 彻 底 改 变 了 应 用 软 件 的 开 发 模 式, 带 来 了 自PC 机 以 来 又 一 次 技 术 革 命, 为 迅 速 发 展 的 信 息 世 界 增 添 了 新 的 活 力。 Sun 的Java 语 言 开 发 小 组 成 立 于1991 年, 其 目 的 是 开 拓 消 费 类 电 子 产 品 市 场, 例 如, 交 互 式 电 视、 烤 面 包 箱 等。Sun 内 部 � 员 把 这 个 项 目 称 为Green, 那 时World Wide Web 还 在 图 纸 上 呢。 该 小 组 的 领 导 � 是James Gosling, 是 一 位 非 常 杰 出 的 程 序 员。 他 出 生 于1957 年, 于1984 年 加 盟Sun Microsystem 公 司, 之 前 在 一 家IBM 研 究 机 构 工 作。 他 是Sun NeWs 窗 口 系 统 的 总 设 计 师。 也 是 第 一 个 用C 实 现 的EMACS 的 文 本 编 辑 器COSMACS 的 开 发 者。 在 研 究 开 发 过 程 中,Gosling 深 刻 体 会 到 消 费 类 电 子 产 品 和 工 作 站 产 品 在 开 发 哲 学 上 的 差 异: 消 费 类 电 子 产 品 要 求 可 靠 性 高、 费 用 低、 标 准 化、 使 用 简 单, 用 户 并 不 关 心CPU 的 型 号, 也 不 欣 赏 专 用 昂 贵 的RISC 处 理 器, 他 们 需 要 建 立 在 一 个 标 准 基 础 之 上, 具 有 一 系 列 可 选 的 方 案, 从8086 到80586 都 可 以 选 取。 2 从C 开 始 为 了 使 整 个 系 统 与 平 台 无 关,Gosling 首 先 从 改 写C 编 译 器 着 手。 但 是Gosling 在 改 写 过 程 中 感 到 仅C 是 无 法 满 足 需 要 的, 于 是 在1991 年6 月 份 开 始 准 备 开 发 一 个 新 的 语 言, 那 么 给 它 起 一 个 什 么 名 字 呢?Gosling 回 首 向 窗 外 望 �, 看 见 一 棵 老 橡 树, 于 是 建 一 个 目 录 叫Oak, 这 就 是Java 语 言 的 前 身( 后 来 发 现Oak 已 是Sun 公 司 另 一 个 语 言 的 注 册 商 标, 才 改 名 为Java, 即 太 平 洋 上 一 个 盛 产 咖 啡 的 岛 屿 的 名 字)。 Gosling 在 开 始 写Java 时, 并 不 局 限 于 扩 充 语 言 机 制 本 身, 更 注 重 于 语 言 所 运 行 的 软 硬 件 环 境。 他 要 建 立 一 个 系 统, 这 个 系 统 运 行 于 一 个 巨 大 的、 分 布 的、 异 构 的 网 格 环 境 中, 完 成 各 电 子 设 备 之 间 的 通 信 与 协 同 工 作。Gosling 在 设 计 中 采 用 了 虚 机 器 码(Virtual Machine Code) 方 式, 即Java 语 言 编 译 后 产 生 的 是 虚 拟 机, 虚 拟 机 运 行 在 一 个 解 释 器 上, 每 一 个 操 作 系 统 均 有 一 个 解 释 器。 这 样 一 来,Java 就 成 了 平 台 无 关 语 言。 这 和Gosling 设 计 的Sun NeWs 窗 口 系 统 有 着 相 同 的 技 术 味 道。 在NeWs 中 用 户 界 面 统 一 用Postscript 描 述, 不 同 的 显 示 器 有 不 同 的Postscript 解 释 器, 这 样 便 保 证 了 用 户 界 面 的 良 好 的 可 移 植 性。 Patrick Naughton 也 是Sun 公 司 的 技 术 骨 干, 曾 经 是Open Windows 项 目 的 负 责 �。 当Naughton 加 入 该 小 组 后, 整 个 工 作 进 展 神 速。 经 过17 个 月 的 奋 战, 整 个 系 统 胜 利 完 成。 它 是 由 一 个 操 作 系 统、 一 种 语 言(Java)、 一 个 用 户 界 面、 一 个 新 的 硬 件 平 台、 三 块 专 用 芯 片 构 成 的。 通 常 情 况 下, 这 样 的 项 目 在Sun 公 司 要75 个 � 干 三 年。 项 目 完 成 后, 在Sun 公 司 内 部 做 了 一 次 展 示 和 鉴 定, 观 众 的 反 应 是: 在 各 方 面 都 采 用 了 崭 新 的、 非 常 大 胆 的 技 术。 许 多 参 观 者 对Java 留 下 了 非 常 深 刻 的 印 象, 特 别 得 到Sun 的 两 位 领 导 �Scott McNealy 和Bill Joy 的 关 注, 但Java 的 前 途 未 卜。 3 Java 语 言 的 转 折 点 到 了1994 年,WWW 已 如 火 如 荼 地 发 展 起 来。Gosling 意 识 到WWW 需 要 一 个 中 性 的 浏 览 器, 它 不 依 赖 于 任 何 硬 件 平 台 和 软 件 平 台, 它 应 是 一 种 实 时 性 较 高、 可 靠 安 �、 有 交 互 功 能 的 浏 览 器。 于 是Gosling 决 定 用Java 开 发 一 个 新 的Web 浏 览 器。 这 项 工 作 由Naughton 和Jonathan Payne 负 责, 到1994 年 秋 天, 完 成 了WebRunner 的 开 发 工 作。WebRunner 是HotJava 的 前 身, 这 个 原 型 系 统 展 示 了Java 可 能 带 来 的 广 阔 市 场 前 景。 WebRunner 改 名 为HotJava, 并 于1995 年5 月23 日 发 表 后, 在 产 业 界 引 起 了 巨 大 的 轰 动,Java 的 地 位 也 随 之 而 得 到 肯 定。 又 经 过 一 年 的 试 用 和 改 进,Java 1.0 版 终 于 在1996 年 年 初 正 式 发 表。 二、Java 带 来 的 影 响Java 虽 出 现 的 时 间 不 长, 但 已 被 业 界 接 受,IBM、Apple、DEC、Adobe、Silicon Graphics、HP、Oracle、Toshiba、Netscap 和 Microsoft 等 大 公 司 已 经 购 买 了Java 的 许 可 证。Microsoft 还 在 其Web 浏 览 器Explorer 3.0 版 中 增 加 了 对Java 的 支 持。另 外, 众 多 的 软 件 开 发 商 也 开 发 了 许 多 支 持Java 的 软 件 产 品。 如:Borland 公 司 的 基 于Java 的 快 速 应 用 程 序 开 发 环 境Latte;Metrowerks 公 司 和Natural Intelligence 公 司 分 别 开 发 的 基 于Machintosh 的Java 开 发 工 具;Sun 公 司 的Java 开 发 环 境Java Workshop;Microsoft 也 开 发 出 系 列Java 产 品。 数 据 库 厂 商 如Illustra, Sybase, Versant, Oracle 都 在 开 发 支 持HTML 和Java 的CGI(Common Gateway Interface)。 在 以 网 络 为 中 心 的 计 算 时 代, 不 支 持HTML 和Java, 就 意 味 着 应 用 程 序 的 应 用 范 围 只 能 限 于 同 质 的 环 境。 Intranet 正 在 成 为 企 业 信 息 系 统 最 佳 的 解 决 方 案。 它 的 优 点 表 现 在: 便 宜、 易 于 使 用 和 管 理。 用 户 不 管 使 用 何 种 类 型 的 机 器 和 操 作 系 统, 界 面 是 统 一 的Web 浏 览 器, 而 数 据 库、Web 页 面、 应 用 程 序( 用Java 编 的applet) 则 存 在WWW 服 务 器 上。 开 发 � 员 只 需 维 护 一 个 软 件 版 本, 管 理 � 员 省 � 了 为 用 户 安 装、 升 级、 培 训 之 苦, 用 户 则 只 需 一 个 操 作 系 统, 一 个Internet 浏 览 器 足 矣。 我 们 可 以 设 想 未 来 的 计 算 方 式, 每 个HomePage 的 实 质 是 一 个 多 媒 体 应 用 程 序, 这 些 程 序 用Java 来 开 发。Java 应 用 程 序 运 行 在 异 质 的 机 器、 异 质 的 操 作 系 统 之 上, 甚 至 于 电 冰 箱、 烤 面 包 箱、 防 盗 电 子 设 备 之 中, 用Internet 把 所 有 的 电 子 设 备 连 接 起 来, 通 过TCP/IP 进 行 信 息 的 交 流。Java 应 用 程 序 之 间 既 可 以 交 换 消 息, 也 可 以 交 换 程 序( 一 个Java 的 小 应 用 程 序applet)。 或 许 有 一 天, 我 们 可 以 在Netscape 浏 览 器 里 查 看 电 冰 箱 的 温 度, 向 烤 面 包 箱 发 一 个 电 子 邮 件。 Java 的 出 现 是 计 算 机 信 息 交 换 的 一 个 重 要 里 程 碑。 在 单 机 时 代, 程 序 进 程 之 间 靠 共 享 存 储 进 行 变 量 交 换; 在 网 络 时 代, 运 行 在 不 同 宿 主 机 上 的 程 序 按 网 络 协 议 进 行 无 格 式 的 消 息( 二 进 制 字 符 流) 交 换, 消 息 的 语 义 由 交 换 程 序 双 方 维 护; 在Java 时 代, 运 行 在 网 络 上 的 程 序 进 程 交 换 的 是 小 应 用 程 序(applet)。 小 应 用 程 序 是 什 么? 它 是 一 个 对 象, 由 一 组 属 性 和 方 法 构 成, 是 一 个 可 执 行 的 实 体; 不 仅 有 数 据 的 状 态, 而 且 有 定 义 在 数 据 上 的 操 作。 未 来 可 能 进 行 代 表(Agent) 交 换, 代 理 有 一 定 的 智 能 性, 那 便 是 信 息 交 换 的 更 高 级 阶 段。 随 着Internet 的 崛 起、Java 的 诞 生, 巨 型 的、 臃 肿 的 应 用 软 件 开 始 向 小 型 化 发 展, 由 众 多“ 生 活” 在Internet 上 的 小 应 用 程 序(applet) 相 互 协 作 完 成 信 息 的 处 理 与 传 递。Java 会 加 速 应 用 软 件 的 小 型 化、 网 络 化 的 趋 势。 随 着Internet 的 发 展, 软 件 必 � 是 面 向“ 大 众”, 而 不 是“ 少 数 �” 的 奢 侈 品, 薄 利 多 销 将 是 网 络 应 用 软 件 的 重 要 特 点。 分 布 式 对 象 技 术 保 证 了 用 多 少, 下 载 多 少。 Java 连 同Internet,WWW 正 在 改 变 应 用 软 件 的 开 发 和 使 用 方 式, 一 切 都 要 围 � 着 网 络, 围 � 着 平 台 无 关。 很 多 � 认 为,Word, Excel 等 传 统 的 信 息 处 理 工 具 都 必 � 走 向 萎 缩, 因 为 它 们 是 单 机 时 代 的 产 物。 信 息 的 价 值 在 于 使 用 和 共 享,Internet 和Web 是 信 息 的 使 用 和 共 享 最 快 捷、 最 便 宜 的 方 式,Word 将 演 化 成 为Web 写 作 工 具,Excel 则 将 演 化 成Web 上 的 电 子 表 格。
|