Microsoft Word - Borland传奇.doc
|
|
|
- 允肝 裘
- 9 years ago
- Views:
Transcription
1 Borland 传 奇 第 一 章 Borland 的 诞 生 和 发 展 一 直 想 写 篇 文 章, 讲 述 我 个 人 在 过 去 10 多 年 来 工 作 中 经 历 的 一 些 事 情, 以 及 这 些 日 子 中 那 些 我 心 目 中 的 伟 大 的 工 程 师 们 对 于 信 息 界 的 贡 献 如 果 读 者 和 我 的 年 龄 差 不 多, 那 对 于 这 些 内 容 可 能 会 更 有 兴 趣, 因 为 它 们 揭 示 了 当 时 许 多 软 件 兴 起 和 没 落 的 过 程 以 及 原 因 虽 然 这 些 事 情 距 离 我 们 很 遥 远, 但 我 相 信 许 多 人 仍 然 对 于 背 后 的 故 事 感 兴 趣 即 便 没 有 经 历 过 那 段 美 好 的 回 忆, 那 也 可 以 把 这 些 内 容 当 成 一 个 有 趣 的 故 事 来 读 吧 不 过 我 想, 更 重 要 的 是 让 我 们 一 起 认 识 一 些 伟 大 的 人 物, 我 个 人 对 于 其 中 的 许 多 人 都 非 常 佩 服, 也 非 常 羡 慕 甚 至 我 常 常 在 想, 如 果 自 己 也 有 他 们 的 环 境, 是 不 是 也 能 够 和 他 们 一 样 这 么 有 成 就 呢? 这 些 人 对 于 以 往 都 有 着 重 要 的 贡 献, 对 未 来 也 仍 将 有 着 重 要 的 影 响, 因 为 他 们 都 有 一 身 不 凡 的 技 术 对 于 许 多 重 要 的 人 物, 我 都 尽 量 收 集 了 他 们 的 照 片, 让 各 位 也 能 够 认 识 这 些 优 秀 的 工 程 师 杰 出 的 人 物 当 然, 如 果 各 位 能 够 从 这 些 内 容 中 学 习 到 失 败 的 教 训 以 及 成 功 的 经 验, 那 么 本 书 就 更 有 价 值 了 Borland 的 兴 起 记 得 大 学 时, 第 一 个 在 PC 上 使 用 的 软 件 就 是 SideKick 这 个 至 今 让 我 仍 然 无 法 忘 记 的 软 件, 也 曾 让 许 多 人 津 津 乐 道, 而 Borland 当 时 也 就 是 以 SideKick 成 为 全 球 知 名 的 软 件 公 司 不 过 Borland 第 一 个 奠 立 创 业 基 础 的 软 件, 却 是 我 大 二 用 来 交 作 业 的 Turbo Pascal, 而 Turbo Pascal 也 是 我 听 到 的 第 一 个 关 于 Borland 的 有 趣 的 故 事 当 年 Philippe Kahn(Borland 的 创 始 人 ) 和 Anders Hejlsberg 到 美 国 创 业 时, 便 由 Anders 以 汇 编 语 言 撰 写 了 Turbo Pascal 的 编 译 器, 而 Philippe 则 包 办 了 Turbo Pascal 其 他 的 部 分 在 这 两 位 仁 兄 开 发 完 Turbo Pascal 之 后, 穷 得 快 连 登 广 告 的 钱 都 没 有 了 Philippe 为 了 在 Byte 杂 志 ( 还 记 得 这 个 著 名 的 杂 志 吗?) 刊 登 Turbo Pascal 的 广 告, 和 Anders 商 量 了 一 个 方 法, 那 就 是 直 接 约 Byte 杂 志 的 人 到 当 时 Borland 的 办 公 室 讨 论 刊 登 广 告 的 事 情 当 Byte 的 人 到 了 Borland 之 后,Philippe Anders 和 公 司 的 助 理 小 姐 故 意 忙 着 接 电 话, 接 受 Turbo Pascal 的 订 单, 并 且 告 诉 Byte 杂 志 的 人 等 一 下 过 了 一 阵 之 后 Philippe 才 进 入 房
2 间 向 Byte 的 人 道 歉, 说 他 们 的 Turbo Pascal 受 到 市 场 的 热 烈 欢 迎, 订 单 源 源 不 断 地 到 来, 因 此 可 能 不 需 要 在 Byte 杂 志 刊 登 广 告 了, 接 着 Philippe 向 Byte 的 人 展 示 Turbo Pascal 这 个 产 品 由 于 在 当 时 的 机 器 中 Turbo Pascal 能 够 在 极 少 的 RAM 中 常 驻 执 行, 又 提 供 闪 电 般 的 编 译 速 度, 这 立 刻 让 Byte 杂 志 的 人 当 场 震 惊 凭 着 专 业 知 识 和 丰 富 的 经 验,Byte 的 人 立 刻 知 道 这 将 是 一 个 革 命 性 的 软 件, 因 此 马 上 希 望 Philippe 能 够 在 Byte 杂 志 刊 登 Turbo Pascal 的 广 告, 并 且 愿 意 以 半 价 刊 登 当 然,Philippe 也 立 刻 爽 快 地 答 应 了, 于 是 一 个 革 命 性 的 软 件 Turbo Pascal 终 于 在 Byte 杂 志 刊 登 出 来 了 当 时 售 价 美 元 的 Turbo Pascal 立 刻 为 Borland 带 来 了 大 量 的 财 富,Turbo Pascal 也 马 上 成 为 PC 上 除 了 基 本 的 Basic 之 外 最 畅 销 的 开 发 工 具, 由 此 正 式 揭 开 了 Borland 影 响 PC 开 发 工 具 近 20 年 的 历 史 的 序 幕 Turbo Pascal 是 由 Anders Hejlsberg 亲 自 开 发 的, 并 且 和 Philippe Kahn 谈 好 的 条 件 是 Borland 每 卖 出 一 套 Turbo Pascal,Anders 便 从 中 抽 取 一 份 版 权 费 由 于 当 时 软 件 的 价 格 不 算 便 宜, 能 够 写 编 译 器 的 人 更 是 少 之 又 少, 所 以 编 译 器 工 程 师 通 常 都 能 够 获 得 优 厚 的 报 酬 因 此 当 时 Anders Hejlsberg 在 完 成 了 Turbo Pascal 并 且 和 Philippe Kahn 谈 好 了 合 作 条 件 之 后,Anders 理 所 当 然 地 认 为 一 套 Turbo Pascal 会 定 价 数 百 元 美 金, 因 为 这 不 但 是 当 时 一 般 编 译 器 的 价 格, 而 且 Turbo Pascal 还 内 含 了 一 个 开 发 环 境 和 编 辑 器 (Editor), 这 是 当 时 许 多 工 具 没 有 提 供 的 没 有 想 到 极 具 商 业 头 脑 的 Philippe Kahn 了 解 到 : 如 果 把 Turbo Pascal 定 价 在 数 百 美 金, 那 么 Turbo Pascal 可 能 只 会 卖 出 数 百 到 数 千 套, 无 法 冲 出 大 量 的 销 售 额 因 此,Philippe Kahn 以 极 大 的 勇 气, 瞒 着 Anders Hejlsberg 只 把 Turbo Pascal 定 价 为 美 金 这 种 价 格 在 当 时 对 于 编 译 器 和 开 发 工 具 来 说 简 直 是 不 可 思 议 的 低 价 当 Anders Hejlsberg 知 道 了 Philippe Kahn 的 定 价 后, 简 直 快 气 昏 了 因 为 在 这 么 低 的 价 格 下 Anders 的 版 税 金 一 定 少 得 可 怜, 因 此 当 时 Anders 说 他 把 最 好 的 Pascal 开 发 工 具 拿 去 让 一 个 白 痴 销 售 没 有 想 到 的 是,Philippe Kahn 的 定 价 策 略 获 得 了 极 大 的 成 功 Turbo Pascal 以 极 佳 的 品 质 和 令 人 不 可 思 议 的 低 价 格 成 为 当 时 最 具 吸 引 力 的 Pascal 开 发 工 具 当 然, 在 Turbo Pascal 卖 出 了 让 人 难 以 置 信 的 成 绩 之 后,Anders 便 再 也 不 提 他 把 专 业 Pascal 编 译 器 让 白 痴 去 卖 这 件 事 了 关 键 产 品 --SideKick 虽 然 Turbo Pascal 快 速 地 让 Borland 在 当 时 全 世 界 的 程 序 员 中 成 为 最 响 亮 的 软 件 新 星, 但 是 真 正 让 Borland 打 人 一 般 计 算 机 使 用 人 群 快 速 成 长 为 软 件 巨 人 的 大 功 臣 的, 却 是 Borland 早 期 最 重 要 的 产 品 --SideKick 在 Turbo Pascal 之 后,Borland 接 着 推 出 了 SideKick 这 套 软 件 SideKick 可 以 说 是 随 后 著 名 的 内 存 常 驻 软 件 (Terminate and Stay Resident-TSR) 的 始 祖, 也 是 Borland 跨 出 开 发 工 具 领 域 让 几 乎 所 有 PC 使 用 者 认 识 Borland 的 关 键 软 件 SideKick 在 当 时 以 许 多 丰 富 的 小 工 具 和 记 事 功 能 让 它 成 为 每 一 个 程 序 员 爱 不 释 手 的 工 具 还 记 得 当 时 我 每 天 都 会 使 用 SideKick 的 ASCII 对 照 表 和 计 算 器 的 功 能, 因 为 在 汇 编 语 言 (Assembly) 盛 行 的 时 期, 查 阅 ASCII 对 照 表 和 在 2 进 制 10 进 制 以 及 16 进 制 之 间 进 行 转 换 是 每 日 必 要 的 工 作 当 然 SideKick 也 很 快 成 为 了 畅 销 软 件, 在 全 球 狂 卖 数 10 万 套, 继 续 把 Borland 往 顶 尖
3 的 软 件 公 司 推 进 所 谓 的 TSE 代 表 Terminate and Stay Resident 这 个 意 思 是 说, 这 类 软 件 在 执 行 后 会 隐 藏 在 内 存 的 某 个 位 置 中, 但 是 并 没 有 出 现 在 屏 幕 上 不 过 使 用 者 通 过 一 个 快 捷 键 就 可 以 立 刻 调 出 这 类 软 件 让 使 用 者 使 用, 在 使 用 完 毕 之 后 又 可 以 按 一 个 快 捷 键 再 度 隐 藏 它 这 样 的 软 件 运 行 方 式 在 当 时 是 一 项 全 新 的 创 举 以 我 的 眼 光 来 看,SideKick 这 个 软 件 对 于 Borland 来 说 是 非 常 关 键 的 作 品, 因 为 我 将 SideKick 归 类 成 " 消 费 型 软 件 " 产 品 所 谓 消 费 型 软 件, 是 指 可 以 被 所 有 计 算 机 使 用 者 使 用 的 软 件, 而 不 是 只 给 程 序 员 或 是 开 发 者 使 用 的 软 件 凡 是 现 今 比 较 会 赚 钱 或 是 规 模 比 较 大 的 软 件 公 司 大 都 属 于 开 发 " 消 费 型 软 件 " 的 公 司 例 如 Microsoft 除 了 有 和 Borland 竞 争 得 你 死 我 活 的 开 发 工 具 之 外, 最 重 要 的 是 Microsoft 拥 有 两 大 " 消 费 型 软 件 ":Windows 操 作 系 统 和 Office 这 两 类 软 件 才 是 Microsoft 最 赚 钱 的 产 品 Oracle 是 另 外 一 个 很 好 的 例 子, 数 据 库 几 乎 是 现 在 任 何 应 用 都 需 要 使 用 的 软 件 同 样,SideKick 就 属 于 这 一 类 型 的 软 件, 因 为 SideKick 可 以 被 所 有 的 开 发 者 使 用 来 增 加 生 产 力, 而 不 管 开 发 者 使 用 的 是 什 么 语 言 因 此 当 Borland 推 出 SideKick 之 后, 立 刻 在 全 世 界 狂 卖, 也 成 为 继 Turbo Pascal 之 后 Borland 最 赚 钱 的 产 品 我 认 为 在 后 来 的 数 年 之 中 Borland 走 得 比 较 辛 苦, 便 是 因 为 Borland 再 也 没 有 推 出 像 SideKick 一 样 属 于 " 消 费 型 软 件 " 的 重 量 级 产 品, 而 只 有 属 于 程 序 员 和 开 发 者 小 众 市 场 的 产 品, 这 是 非 常 可 惜 的 事 情 而 " 消 费 型 软 件 " 也 是 到 现 在 我 仍 然 认 为 Borland 应 该 推 出 的 产 品 由 于 SideKick 的 TSR 技 术 是 当 时 独 一 无 二 的, 而 且 是 如 此 的 好 用, 这 引 起 了 当 时 许 多 人 的 好 奇, 并 且 成 了 所 有 软 件 厂 商 模 仿 的 对 象, 我 还 记 得 稍 后 许 多 的 计 算 机 信 息 书 籍 都 以 如 何 学 习 TSR 技 术 作 为 卖 点 也 是 因 为 SideKick 和 TSR 太 成 功 了, 因 此 Borland 立 刻 进 行 了 两 个 工 作 第 一 当 然 是 马 上 开 发 下 一 版 的 SideKick, 让 SideKick 继 续 执 类 似 软 件 的 牛 耳, 以 防 止 其 他 软 件 公 司 推 出 类 似 的 软 件 来 分 食 SideKick 打 下 的 天 下 很 快 地,Borland 便 推 出 了 SideKick 的 后 续 版 本, 不 但 功 能 更 多, 而 且 SideKick 从 原 本 完 全 以 开 发 者 为 中 心 的 软 件 转 变 为 适 合 所 有 计 算 机 使 用 者 使 用 的 消 费 型 软 件 看 看 左 图, 从 产 品 封 面 以 "Desktop Organizer" 为 主 题 便 可 以 了 解 到 SideKick 在 当 时 的 定 位 果 然, 后 续 的 SideKick 又 持 续 地 大 卖, 这 让 Philippe Kahn 非 常 振 奋, 也 让 他 雄 心 大 盛, 开 始 想 要 通 过 SideKick 的 成 功 主 导 PC 软 件 的 标 准, 这 当 然 就 是 SideKick 一 举 成 名 的 TSR 技 术 在 Borland 通 过 Turbo Pascal 和 SideKick 大 获 成 功 之 后, 也 因 TSR 技 术 成 为 大 多 数 开 发 者 津 津 乐 道 的 软 件 公 司, 许 多 软 件 公 司 都 开 始 模 仿 Borland 的 TSR 技 术 开 发 大 量 的 TSR 软 件 不 过 当 TSR 技 术 大 量 被 运 作 之 后 最 后 却 造 成 众 多 的 TSR 软 件 彼 此 冲 突, 无 法 正 确 地 相 互 共 存, 这 主 要 是 因 为 许 多 TSR 软 件 都 使 用 了 相 同 的 快 捷 键 来 调 出 / 关 闭 软 件, 或 是 隐 藏 在 相 同 的 内 存 位 置 我 还 记 得, 当 时 同 时 使 用 几 个 TSR 软 件 时, 必 须 遵 照 一 定 的 运 行 次 序 才 可 以 正 常 使 用 为 了 解 决 这 个 扰 人 的 问 题,Borland 开 始 广 邀 软 件 公 司, 想 要 以 Borland 为 首 制 定 TSR 的 标 准 如 此 一 来, 只 要 所 有 的 软 件 厂 商 遵 照 Borland 制 定 的 标 准, 那 么 所 有 的 TSR 软 件 就 可 以 彼 此 正 确 地 运 行 在 PC 之 中 当 Borland 公 布 了 这 个 想 法 并 且 发 表 了 初 步 的 TSR 标 准 规 格 之 后, 却 立 刻 引 起 了 Microsoft 的 紧 张 因 为 当 时 TSR 是 如 此 的 流 行,Microsoft 害 怕 TSR 技 术 由 Borland 主 导 之 后 会 让 Borland 成 为 PC 软 件 的 霸 主, 进 而 严 重 影 响 Microsoft 想
4 主 宰 PC 的 计 划 因 此 在 Borland 开 始 正 式 制 定 TSR 标 准 之 际,Microsoft 便 站 出 来 反 对 Borland 定 义 的 TSR 标 准, 并 且 声 明 Microsoft 将 在 未 来 的 DOS 操 作 系 统 中 加 入 对 于 TSR 的 支 持, 因 此 没 有 必 要 再 额 外 制 定 TSR 标 准 当 时 的 软 件 公 司, 包 括 Borland 在 内, 都 无 法 和 Microsoft 对 抗 在 操 作 系 统 厂 商 表 明 了 反 对 立 场 之 后,Borland 的 这 个 构 想 很 快 便 迫 于 形 势 而 放 弃 了 关 于 TSR 的 争 议 应 该 算 是 Borland 和 Microsoft 之 间 的 第 一 场 战 争 虽 然 在 没 有 引 起 太 大 的 烽 火 之 前 便 很 快 收 场, 不 过 也 算 是 Borland 和 M1crosoft 第 一 次 真 正 的 交 手 也 正 是 由 于 这 次 的 相 争, 让 Microsoft 惊 讶 于 Borland 快 速 的 兴 起, 并 开 始 正 视 Borland 这 家 在 当 时 还 算 小 的 软 件 公 司 虽 然 在 有 关 TSR 的 技 术 之 争 中 Microsoft 赢 得 了 胜 利, 不 过 很 奇 怪 的 是, 此 后 TSR 软 件 反 而 开 始 慢 慢 地 退 烧 除 了 一 些 少 数 的 公 用 程 序 软 件 仍 然 使 用 TSR 之 外, 之 后 便 没 有 什 么 重 量 级 的 软 件 是 使 用 TSR 技 术 开 发 的, 这 算 不 算 是 另 一 桩 Microsoft 介 入 之 后 搞 砸 的 技 术 呢? 最 后 再 叙 述 一 个 从 Borland 老 员 工 处 听 来 的 有 趣 故 事 许 多 人 一 直 想 要 知 道 :Borland 的 总 部 在 哪 里? 或 是 想 要 知 道 : 为 什 么 Borland 会 选 择 Scott Valley 作 为 总 部? 事 情 的 经 过 是 这 样 的 : 当 年 Philippe Kahn 和 Anders Hejlsberg 到 美 国 准 备 开 始 创 业 时, 由 于 没 有 资 金,Philippe Kahn 就 在 西 餐 厅 打 工, 负 责 端 盘 子 的 工 作, 而 Anders Hejlsberg 则 努 力 的 在 开 发 Turbo Pascal 当 Philippe Kahn 存 了 一 笔 小 钱 之 后, 两 个 人 便 开 始 了 创 业 大 计 首 先 他 们 必 须 找 到 一 个 公 司 的 总 部, 可 是 要 在 哪 里 实 现 Philippe Kahn 和 Anders Hejlsberg 心 中 的 理 想 呢? 虽 然 当 时 他 们 住 在 L.A. 附 近, 但 是 光 凭 Philippe Kahn 存 的 一 点 小 钱 是 绝 不 够 在 L.A. 大 展 鸿 图 的, 因 此 Philippe Kahn 和 Anders Hejlsberg 决 定 到 比 较 偏 远 的 地 方 试 试 于 是 这 两 位 仁 兄 便 开 着 Philippe Kahn 的 破 车 往 南 出 发 了 听 说 当 Philippe Kahn 把 车 开 到 Scott Valley 附 近 时 刚 好 没 有 汽 油 了, 眼 看 四 周 的 环 境 觉 得 还 不 错, 就 决 定 在 这 个 地 方 展 开 Philippe Kahn 和 Anders Hejlsberg 的 创 业 之 梦 就 是 这 个 决 定 让 原 本 默 默 无 闻 的 Scott Valley 在 数 年 之 后 竟 成 为 一 个 家 喻 户 晓 的 高 科 技 盛 地 和 Borland 的 缘 由 Turbo Pascal 是 我 在 大 二 大 三 撰 写 作 业 时 的 最 爱, 几 乎 所 有 的 作 业 都 是 使 用 Turbo Pascal 完 成 的 当 然 其 时 Horowise 的 Data Structure 这 门 课 也 是 使 用 Turbo Pascal 过 关 的, 因 此 从 那 个 时 候 开 始, 我 便 非 常 喜 欢 Borland 这 家 公 司, 慢 慢 地 也 开 始 对 Borland 有 了 特 别 的 感 情 在 我 大 二 时,Microsoft 推 出 了 Microsoft Pascal, 但 是 它 和 Turbo Pascal 的 确 有 一 段 差 距, 我 使 用 了 一 次 之 后 便 把 它 丢 到 垃 圾 桶 稍 后 Borland 也 推 出 了 Turbo Basic 1.0 我 记 得 这 个 编 译 器 非 常 的 棒, 编 译 速 度 就 和 Turbo Pascal 一 样 快, 是 一 个 非 常 有 前 途 的 产 品 但 是 不 知 道 为 什 么 它 只 有 1.0, 之 后 便 和 Microsoft Pascal 一 样 消 失 了 后 来 听 说 是 Microsoft 和 Borland
5 互 相 交 换 条 件,Microsoft 不 进 入 Pascal 的 市 场, 而 Borland 则 退 出 Basic 的 市 场 至 于 是 不 是 真 的 确 有 其 事, 我 就 不 得 而 知 了 我 在 大 二 初 次 接 触 到 了 C 语 言, 第 一 本 阅 读 的 书 便 是 王 兴 隆 先 生 写 的 C 语 言 书 籍, 也 从 此 开 始 和 C 语 言 结 下 了 渊 源 平 生 第 一 个 使 用 的 C 编 译 器 便 是 Lattice C, 不 知 道 还 有 没 有 读 者 记 得? 当 时 使 用 两 个 5 吋 磁 盘 抽 换 以 便 编 译 C 程 序 的 情 景, 真 是 麻 烦 得 不 得 了 稍 后 Borland 终 于 推 出 了 风 行 天 下 的 Turbo C 编 译 器, 从 此 之 后 Turbo C 便 成 了 我 不 离 身 的 工 具, 而 Borland 也 通 过 Turbo C 这 第 三 项 畅 销 产 品 迈 向 了 世 界 前 10 名 的 项 尖 软 件 公 司 当 完 2 年 的 兵 之 后, 我 在 中 研 院 首 次 使 用 了 C++ 语 言 第 一 个 使 用 的 C++ 编 译 器 则 是 Zortech C/C++, 这 家 公 司 稍 后 被 Symantec 收 购 成 为 Symantec C/C++ 的 核 心 部 门, 这 个 故 事 稍 后 再 说 明 后 来 Borland 也 推 出 了 它 的 第 一 个 C/C++ 编 译 器 Turbo C/C++1.0, 但 是 和 Zortech C/C++ 比 较 之 后, 我 还 是 觉 得 Zortech C/C++ 比 较 好, 因 此 就 继 续 使 用 Zortech C/C++ 一 直 到 Borland 的 Turbo C/C++2.0 编 译 器 推 出 之 后, 才 逐 渐 成 为 C/C++ 语 言 的 王 者, 而 我 也 像 以 往 一 样 把 Zortech C/C++ 换 成 了 Turbo C/C++ 在 我 1991 年 到 Georgia Institute of Technology 念 硕 土 时, 终 于 使 用 自 己 的 零 用 钱 美 金 购 买 了 生 平 第 一 套 正 版 软 件 Turbo C/C++4.5, 随 后 又 购 买 了 Borland Pascal 在 毕 业 前 的 一 个 Quarter,Microsoft 推 出 了 Microsoft C/C++6.0 以 及 MFC 1.z, 由 于 MFC 是 第 一 个 C/C++ 的 Framework, 因 此 也 花 了 一 些 钱 购 买 了 一 套 Microsoft C/C++ 以 便 学 习 MFC 但 是 在 收 到 Microsoft C/C++ 之 后, 我 却 很 失 望, 因 为 Microsoft C/C++6.0 仍 然 没 有 Windows 图 形 集 成 开 发 环 境, 还 是 在 DOS 下 的 集 成 开 发 环 境 而 且 以 我 的 眼 光 来 看,MFC 1.0 并 不 好 用 Microsoft C/C++6.0 的 C/C++ 最 佳 化 编 译 器 在 当 时 也 是 一 个 笑 话, 不 但 产 生 的 程 序 代 码 效 率 不 好, 甚 至 会 产 生 错 误 的 程 序 代 码 许 多 IT 杂 志 也 称 Microsoft C/C++6.0 是 一 个 平 庸 的 (Mediocre) 产 品 因 此 我 就 把 它 丢 在 一 边 再 也 没 有 使 用 在 Microsoft C/C++6.0 推 出 之 后 不 久,Borland 终 于 发 布 了 Borland C/C++3.0, 而 这 套 软 件 也 开 启 了 Borland 雄 霸 C/C++ 编 译 器 长 达 五 六 年 之 久 的 序 幕 Borland C/C++3.0 推 出 之 后, 由 于 拥 有 第 一 个 在 Windows 下 稳 定 的 图 形 集 成 开 发 环 境, 而 且 它 产 生 的 最 佳 化 程 序 代 码 也 是 Microsoft C/C++6.0 望 尘 莫 及 的, 因 此, 很 快 地 几 乎 所 有 的 C/C++ 程 序 员 都 转 而 使 用 Borland C/C++3.0 那 个 时 候 几 乎 所 有 的 公 用 程 序 或 是 Shareware 都 是 使 用 Borland C/C++ 开 发 的, 许 多 硬 件 厂 商 的 驱 动 程 序 也 是 使 用 Borland C/C++3.0 来 撰 写 的 1992 年 我 取 得 Georgia Institute of Technology 的 硕 士 学 位 之 后, 最 想 进 入 的 公 司 便 是 Borland 和 Microsoft, 不 过 最 后 我 还 是 决 定 回 台 湾 工 作 在 此 时 Borland 也 逐 渐 进 入 了 最 巅 峰 的 时 期, 因 为 Borland 推 出 了 Borland C/C++3.1 Borland 在 Borland C/C++3.0 获 得 空 前 的 胜 利 之 后, 并 没 有 松 懈 下 来, 因 为 Borland 知 道 Borland C/C++3.0 还 缺 一 个 最 重 要 的 胜 利 因 子, 那 就 是 如 同 Microsoft 的 MFC 一 样 的 C/C++ Framework, 因 为 Borland 也 看 出 了 Framework 将 会 是 未 来 C/C++ 产 品 中 最 重 要 的 一 环 不 过 Borland 此 时 来 到 了 一 个 重 要 的 十 字 路 口, 那 就 是 到 底 要 自 己 开 发 一 个 和 MFC 抗 衡 的 Framework, 还 是 直 接 采 用 Microsoft 的 MFC? 如 果 要 使 用 MFC 的 话, 那 么 Microsoft 会 愿 意 授 权 给 Borland 吗? 如 果 Borland 要 自 己 开 发 Framework, 那 么 势 必 要 花 上 一 些 时 间,
6 但 是 Borland 想 趁 Borland C/C++3.0 如 虹 的 气 势 再 下 一 城, 以 便 彻 底 击 溃 Microsoft C/C++ 因 此, 最 后 Borland 决 定 向 一 家 叫 White Water 的 公 司 购 买 一 套 由 这 家 公 司 开 发 的 一 个 Framework, 这 套 Framework 便 是 后 来 鼎 鼎 大 名 的 OWL 的 源 流 而 Borland 也 因 为 向 White Water 购 买 了 这 套 Framework, 因 而 也 引 进 了 一 个 日 后 非 常 重 要 的 人 物, 那 就 是 后 来 负 责 开 发 Delphi 的 一 员 大 将 --Zack Urlocker C/C++ 的 光 荣 战 役 Borland 购 买 了 White Water 的 C/C++ Framework 之 后, 便 更 名 为 OWL(Object Windows Library), 并 且 很 快 地 推 出 了 以 OWL 1.0 为 核 心 的 Borland C/C++3.1 由 于 OWL 比 当 时 的 MFC 1.0 封 装 得 更 为 完 整 且 好 用, 再 加 入 Resource Workshop 可 视 化 能 力, 以 及 Borland C/C++3.1 本 身 最 强 劲 的 编 译 器 和 集 成 开 发 环 境, 因 此 立 刻 风 靡 了 全 世 界, 其 受 欢 迎 的 程 度 更 是 远 远 的 超 过 了 它 的 前 一 版 本 Borland C/C++3.0 Borland C/C++3.1 的 畅 销, 立 刻 让 Borland 在 C/C++ 市 场 一 举 击 溃 Microsoft C/C++, 市 场 占 有 率 超 过 了 50%, 是 全 球 第 一 的 C/C++ 产 品, 也 把 Borland 推 上 了 最 高 峰, 成 为 全 世 界 第 三 大 的 软 件 公 司 在 当 时, 我 所 工 作 的 开 发 小 组 也 立 刻 改 用 Borland C/C 来 开 发 Windows 下 的 MRP 系 统, 而 Borland C/C++3.1 也 是 我 使 用 过 的 Borland 最 稳 定 的 C/C++ 版 本 之 一 由 于 那 个 时 候 一 天 到 晚 都 使 用 C/C++ 工 作, 因 此 就 有 了 一 些 小 心 得 稍 加 整 理 后 我 便 投 稿 到 刚 成 立 不 久 的 RUN!PC 杂 志, 也 许 是 我 的 运 气 不 错, RUN!PC 很 快 发 表 了 我 的 文 章 就 在 这 篇 文 章 发 表 之 后, 台 湾 的 Borland 分 公 司 注 意 到 了 我, 开 始 和 我 联 络, 并 且 从 此 展 开 了 我 和 Borland 的 互 动 而 Borland C/C++3.1 也 是 第 一 套 Borland 免 费 送 我 的 软 件, 当 然 代 价 就 是 希 望 我 多 写 一 些 Borland 产 品 的 文 章 接 着 Borland 又 计 划 推 出 Windows 版 的 Borland Pascal 不 过 在 Borland 开 发 Pascal For Windows 时, 当 时 ( 现 在 也 还 是 ) 最 具 盛 名 的 Charles Petzold( 我 看 的 第 一 本 Windows 程 序 设 计 的 书 就 是 这 位 仁 兄 写 的, 相 信 许 多 人 也 是 看 他 的 书 一 路 学 来 的 ) 就 说 除 了 C/C++ 之 外,Borland 不 可 能 做 出 能 够 在 Windows 下 执 行 的 Borland Pascal 不 过 很 明 显 地, 即 使 是 Windows API 的 大 师 Charles 也 错 了,Borland 不 但 做 了 出 来, 而 且 Borland Pascal For Windows 还 非 常 的 畅 销, 当 然 Borland Pascal For Windows 也 是 后 来 Delphi 的 根 基 当 时 的 Borland 可 说 是 不 可 一 世, 不 但 产 品 大 卖, 而 且 日 进 斗 金 Borland 在 Scott Valley 豪 华 的 总 部 也 是 在 那 个 时 候 由 Philippe Kahn 大 手 笔 地 花 了 一 亿 多 美 金 搭 建 的 ( 想 想 10 年 前 的 60 多 亿 台 币 可 以 盖 什 么 样 的 房 子?) 不 过 也 许 是 Borland 太 成 功 了, 因 此 也 开 始 让 Philippe Kahn 渐 渐 地 养 成 了 好 大 喜 功 目 中 无 人 的 态 度, 这 也 种 下 了 Borland 开 始 走 向 衰 退 的 因 子 在 Borland 最 强 盛 的 时 期, 当 然 也 就 是 Microsoft 最 痛 恨 Borland 的 时 候, 发 生 了 一 个 著 名 的 事 件 和 一 个 著 名 的 虚 拟 人 物 由 于 当 时 Microsoft 的 开 发 工 具 一 直 打 不 过 Borland 的 产 品, 因 此 在 Microsoft 的 开 发 工 具 刊 物 上 便 出 现 了 一 个 作 者, 不 断 地 以 文 章 嘲 笑 Borland, 这 个 作 者 的 笔 名 是 Buck Forland 由 于 这 位 作 者 的 文 章 内 容 以 及 他 的 笔 名 引 起 了 当 时 Borland 的 不 满 以 及 大 量 Borland 使 用 者 的 强 烈 抗 议, 稍 后 这 位 作 者 突 然 消 失 因 此 有 许 多 人 推 测 这
7 个 作 者 应 该 是 Microsoft 的 某 位 工 程 师, 由 于 一 直 无 法 打 败 Borland 的 产 品, 恼 羞 成 怒, 因 此 才 会 以 这 个 笔 名 来 发 泄 如 果 各 位 读 者 到 现 在 还 摸 不 着 头 脑, 不 知 道 为 什 么 这 个 笔 名 会 引 起 轩 然 大 波, 那 么 请 试 着 把 Buck Foland 这 两 个 英 文 字 的 第 一 个 字 母 一 对 调 就 知 道 为 什 么 了 现 在 各 位 是 否 会 心 一 笑 了? 在 Borland C/C++3.1 大 获 成 功 之 后,Borland 却 开 始 松 懈 了, 并 且 开 始 走 下 坡 路 当 然 这 有 许 多 的 原 因, 我 所 知 的 其 中 最 重 要 的 原 因 有 数 项 :Philippe Kahn 和 当 时 Borland C/C++ 的 产 品 经 理 闹 翻 了 这 位 Borland C/C++ 的 产 品 经 理 的 名 字 是 Eugene Wang,Eugene 是 一 位 非 常 聪 明 的 越 南 人 他 一 手 把 Borland C/C++ 带 到 了 世 界 第 一 的 地 位, 并 且 在 Borland C/C++3.1 成 功 之 后 有 了 更 伟 大 的 想 法, 那 就 是 想 在 下 一 个 Borland C/C++ 版 本 中 完 整 地 以 OWL 封 装 所 有 的 Windows APl 因 为 OWL 1.0 虽 然 比 MFC 1.0 来 得 优 秀, 但 是 OWL 的 隐 忧 就 是 尚 未 完 整 封 装 所 有 Windows 的 APl 此 外 Eugene 还 计 划 以 OWL 为 核 心, 开 发 一 个 类 似 今 日 Borland C/C++ Builder 以 可 视 化 组 件 为 开 发 方 式 的 开 发 工 具 请 各 位 读 者 想 一 想, 如 果 在 当 时 Borland 能 够 开 发 出 这 种 C/C++ 开 发 工 具, 那 将 会 是 一 个 多 么 可 怕 的 产 品, 稍 后 Microsoft 的 Visual C/C++1.0 只 是 能 够 在 集 成 开 发 环 境 中 自 动 产 生 MFC 的 程 序 代 码 就 立 刻 轰 动 了 C/C++ 市 场, 造 成 了 大 量 程 序 员 转 入 Microsoft 的 阵 营 而 且, 即 使 是 目 前 的 Borland C/C++ Builder, 使 用 的 Framework 仍 然 是 以 Object Pascal 为 核 心 的 组 件 Framework, 而 不 是 纯 粹 的 C/C++ 程 序 代 码 如 果 当 时 Eugene 能 够 做 出 他 心 中 的 下 一 版 Borland C/C++, 那 么 我 想, 到 现 在 Borland C/C++ 可 能 还 是 市 场 中 第 一 的 C/C++ 开 发 工 具 不 过 很 不 幸 的 是,Eugene 稍 后 和 Philippe Kahn 发 生 了 激 烈 的 争 执 一 气 之 下,Eugene 离 开 了 Borland 而 Philippe Kahn 则 认 为 Borland C/C++ 的 地 位 已 不 可 动 摇, 因 此 也 没 有 想 立 刻 开 发 下 一 版 的 Borland C/C++ 这 样 一 拖 竟 然 浪 费 了 将 近 2 年 的 时 间, 更 大 的 麻 烦 是 Microsoft 可 没 有 白 白 浪 费 这 2 年 的 时 间 Microsoft Visual C/C++1.0 在 Borland C/C++3.1 发 布 两 年 之 后 推 出, 并 且 立 刻 获 得 市 场 好 评 Visual C/C++ 不 但 在 编 译 器 方 面 能 够 和 Borland C/C++3.1 相 抗 衡, 在 集 成 开 发 环 境 方 面 更 大 幅 领 先 了 Borland C/C++3.1, 还 能 够 自 动 产 生 MFC 的 程 序 代 码, 再 也 不 是 昔 日 的 吴 下 阿 蒙 直 到 此 时,Philippe Kahn 才 从 梦 中 惊 醒 而 急 于 开 发 下 一 代 的 Borland C/C++4.0 但 此 时 为 时 已 晚,C/C++ 的 开 发 工 具 已 经 发 生 了 剧 烈 的 变 化,Borland 的 C/C++ 开 发 工 具 市 场 从 此 就 开 始 逐 渐 地 被 Microsoft 蚕 食 了 Eugene 在 离 开 Borland 之 后, 立 刻 被 Symantec 所 网 罗, 稍 后 Eugene 也 在 非 常 短 的 时 间 之 内 为 Symantec 开 发 出 了 著 名 的 Symantec C/C++ Symantec C/C++ 在 当 时 被 所 有 的 技 术 刊 物 评 比 为 拥 有 最 棒 的 集 成 开 发 环 境 和 最 有 创 意 的 C/C++ 开 发 工 具, 由 此 可 见 Eugene 的 功 力 不 过 Symantec C/C++ 稍 后 也 终 究 不 敌 Microsoft Visual C/C++, 这 个 故 事 的 原 因 在 稍 后 " 四 大 C/C++ 编 译 器 之 争 " 的 章 节 中 再 详 细 地 说 明 最 后 听 说 Eugene 跑 去 做 生 意 了, 并 且 在 前 几 年 写 了 一 本 教 导 科 技 人 员 如 何 面 试 的 书 籍 一 直 很 痛 心 Borland 失 去 了 这 么 一 位 优 秀 的 人 材 我 常 常 想, 如 果 当 初 Eugene 没 有 离 开 Borland, 那 么 历 史 可 能 就 不 是 现 在 的 这 样 了, Sign!!! Philippe Kahn 大 手 笔 地 花 了 400 多 Million 美 金 买 下 了 Ashton-Tate 公 司 和 dbase 当 时 许 多 人 都 批 评 Philippe Kahn 做 了 不 值 当 的 事 情, 因 为 Ashton-Tate 不 值 这 么 多 钱 但 是 由 于 当 时 Borland 多 的 是 现 金, 因 此 Philippe Kahn 也 不 在 意 不 过 Borland 逐 渐 走 向 衰 败 的 主 因 并 不 在 此, 而 是 在 Borland 买 下 了 dbase 之 后, 并 没 有 立 刻 积 极 地 开 发 dbase For Windows, 反 而 把 dbase 丢 在 一 旁 Philippe Kahn 会 如 此 做 的 原 因 便 是 当 时 Borland 的 另 外 一 个 和 数 据
8 库 有 关 的 产 品 Paradox 卖 得 也 很 好, 因 此 Philippe Kahn 并 不 急 于 开 发 dbase For Windows 不 过 Philippe Kahn 忘 记 了 一 件 事 情, 那 就 是 当 时 市 场 上 拥 有 大 量 使 用 者 数 目 的 dbase 程 序 员 需 要 一 个 好 的 Windows 版 dbase, 但 是 Philippe Kahn 购 买 了 dbase 却 不 提 供 Windows 版 的 解 决 方 案, 因 此 当 稍 后 Microsoft 以 极 小 的 代 价 买 下 Fox 这 家 公 司, 并 且 在 数 年 之 后 推 出 FoxBASE For Windows, 吸 引 了 大 量 原 先 的 dbase 程 序 员 以 及 Paradox 的 程 序 员 之 后,Philippe Kahn 才 警 觉 事 情 不 对 而 匆 匆 忙 忙 地 开 发 dbase For Windows 但 是 当 dbase For Windows 推 出 之 后,Microsoft 早 已 推 出 了 两 个 FoxBASE For Windows 的 版 本, 占 据 了 大 部 分 的 市 场,dbase For Windows 其 势 已 不 可 为 了 Microsoft 开 始 向 Borland 挖 角 由 于 Microsoft 在 许 多 的 开 发 工 具 战 役 中 一 直 被 Borland 打 得 灰 头 土 脸, 更 何 况 Borland C/C++3.1 几 乎 抢 占 了 大 部 分 的 市 场, 因 此 Microsoft 便 开 始 准 备 好 好 地 对 付 Borland 但 是 由 于 其 时 Borland 在 编 译 器 的 技 术 领 域 领 先 了 Microsoft 数 年 之 久,Microsoft 无 法 在 短 时 间 之 内 赶 上 Borland, 所 以 Microsoft 决 定 使 用 最 有 效 的 方 法 立 刻 追 上 Borland 的 技 术, 那 就 是 直 接 从 Borland 挖 角 结 果, 后 来 Microsoft 的 Visual C/C++ 小 组 有 60% 的 成 员 是 从 Borland 挖 来 的, 这 个 举 动 不 但 立 刻 让 Borland 流 失 了 大 量 的 优 秀 技 术 人 才, 也 在 数 年 之 后 造 成 了 Borland 控 告 Microsoft 的 导 火 线 各 位 读 者 看 到 这 里 是 否 有 什 么 感 觉 呢? 不 过 我 总 觉 得 Microsoft 并 不 是 光 明 正 大 地 击 败 Borland, 而 是 使 用 了 不 公 平 的 竞 争 手 段 Philippe Kahn 在 这 段 时 间 不 但 让 Borland C/C++ 被 Microsoft Visual C/C++ 反 败 为 胜, 也 痛 失 了 几 乎 所 有 dbase 的 市 场, 更 浪 费 了 大 量 的 金 钱, 流 失 了 大 量 的 优 秀 人 员 在 这 些 重 要 的 因 素 之 下,Borland 已 经 不 可 避 免 地 开 始 走 下 坡 了 我 最 后 一 次 看 到 Philippe Kahn, 是 在 1994 年 末 于 亚 特 兰 大 (Atlanta) 参 加 国 际 Conference 时, 还 和 他 打 了 一 声 招 呼 后 来 Philippe Kahn 离 开 了 Borland, 另 外 创 立 了 StarFish 这 家 公 司, 稍 后 StarFish 也 被 Motorola 并 购 虽 然 Borland 由 于 Philippe Kahn 一 些 错 误 的 决 策 而 逐 渐 地 从 巅 峰 开 始 走 下 坡, 但 是 Philippe Kahn 也 不 愧 为 一 个 人 物 因 为 Philippe Kahn 能 够 和 Bill Gates 一 直 周 旋 数 年 之 久, 而 同 一 时 期 的 许 多 公 司 ( 例 如 Lotus) 都 一 一 被 Microsoft 所 击 败, 因 此 Philippe Kahn 还 是 有 一 套 的 此 外 Philippe Kahn 也 是 唯 一 一 个 拥 有 工 程 师 特 性 的 Borland CEO,Philippe Kahn 仍 然 重 视 技 术 产 品 和 技 术 人 员 但 是 Borland 随 后 的 CEO 几 乎 都 是 Marketing Finance 或 是 Sales 出 身 的 人, 这 真 让 我 怀 念 以 往 以 产 品 和 技 术 为 优 先 的 CEO 了 看 完 了 上 面 这 段 今 人 伤 心 的 历 史, 再 让 我 们 看 看 当 Borland 受 到 Microsoft Visual C/C++ 的 强 大 冲 击 之 后, 如 何 思 索 反 击 之 道 在 这 段 历 史 中 出 现 了 令 我 敬 佩 的 第 一 个 Borland 技 术 工 程 师 Carl Quinn Carl Quinn 在 Microsoft Visual C/C++1.0 推 出 之 后, 立 刻 奉 命 开 发 一 个 能 够 和 MFC 相 抗 衡 的 全 新 OWL, 而 Carl Quinn 也 是 数 年 后 JBuilder 的 JBCL Framework 的 灵 魂 开 发 人 物 Carl Quinn 不 但 负 责 开 发 OWL, 也 为 Borland 在 组 件 Framework 的 技 术 领 域 做 出 了 重 要 的 贡 献 由 于 Carl Quinn 的 投 入, 开 启 了 OWL 大 战 MFC Borland C/C++ 缠 斗 Visual C/C++ 数 年 精 彩 好 戏 的 序 幕 Carl Quinn 是 我 至 今 还 记 得 并 敬 佩 的 人 物, 让 我 再 一 次 的 向 他 致 敬, 并 且 介 绍 他 让 大 家
9 认 识 火 线 全 开 Borland 在 开 发 工 具 市 场 和 Microsoft 激 战 之 时,Microsoft 和 Lotus 也 正 在 电 子 表 格 工 具 以 及 文 字 处 理 工 具 市 场 进 行 大 战 这 时 Borland 不 思 好 好 地 集 中 资 源 开 发 新 的 开 发 工 具 和 数 据 库 工 具 ( 稍 后 本 书 会 详 细 说 明 Borland 在 数 据 库 市 场 的 战 役 ), 也 不 甘 寂 寞 地 投 入 了 大 量 的 资 源 进 入 这 个 惨 烈 的 市 场 也 许 是 当 时 Borland 太 有 钱 了, 或 者 是 Philippe Kahn 的 脑 袋 出 了 问 题, 居 然 决 定 进 入 这 个 Borland 陌 生 的 市 场, 更 何 况 在 Borland 投 入 时 Lotus 已 现 败 象, Office 市 场 已 经 慢 慢 地 被 Microsoft 所 一 步 一 步 地 掌 握 了 Borland 进 入 Office 市 场 的 第 一 个 产 品 是 著 名 的 Quattro Pro 电 子 表 格 虽 然 Quattro Pro 是 一 个 相 当 不 错 的 产 品, 而 且 当 时, 由 Borland C/C++ 编 译 器 所 开 发 的 Quattro Pro 在 执 行 效 率 上 几 乎 是 最 好 的, 但 是 Borland 没 有 想 到 使 用 电 子 表 格 的 使 用 者 是 一 般 的 办 公 室 人 员, 这 些 人 注 重 的 是 方 便 性 和 功 能 性, 而 不 是 执 行 速 度, 这 和 开 发 人 员 是 不 一 样 的 Borland 以 开 发 者 的 心 态 来 开 发 电 子 表 格 工 具 基 本 上 是 走 错 了 方 向 因 此 我 记 得 在 那 段 时 间 中, 杂 志 评 比 Microsoft 的 Excel Lotus 的 和 Borland 的 Quattro Pro 时, 在 功 能 方 面 领 先 的 都 是 Excel 和 Lotus, 在 执 行 效 率 方 面 领 先 的 则 是 Excel 和 Quattro Pro 到 了 电 子 表 格 热 战 的 末 期,1-2-3 甚 至 比 不 上 Quattro Pro, 因 此 Lotus 败 走 电 子 表 格 市 场 已 是 不 可 避 免 的 结 果 了 不 过 Borland 虽 然 赢 了 1-2-3, 但 是 和 Excel 仍 然 有 一 大 段 的 距 离,Microsoft 一 统 电 子 表 格 江 山 之 势 已 不 可 动 摇, 因 此 最 后 Borland 在 损 失 了 大 量 的 资 源 之 后,Quattro Pro 只 能 卖 给 Novell 除 了 Quattro Pro 之 外,Borland 也 投 入 了 很 多 的 资 源 秘 密 地 开 发 一 个 代 号 为 Spring 的 文 字 处 理 程 序 (Word Processor) 准 备 和 Microsoft 的 Word 以 及 WordPerfect 竞 争, 这 可 能 是 许 多 人 不 知 道 的 但 是 这 个 产 品 最 后 仍 然 无 法 问 市 而 胎 死 腹 中, 在 文 字 处 理 市 场 Borland 不 但 浪 费 了 时 间, 更 虚 掷 了 大 量 的 资 源 Philippe Kahn 在 Office 产 品 方 面 消 耗 了 Borland 大 量 的 金 钱 和 时 间, 却 落 得 铩 羽 而 归, 更 连 累 了 开 发 工 具 市 场 以 及 最 有 可 能 成 功 的 数 据 库 产 品 市 场 另 外 一 个 和 Borland 无 关 的 故 事 是 关 于 Microsoft Excel 是 如 何 兴 起 的 话 说 当 Lotus 最 盛 的 时 期,Microsoft 一 直 在 觊 觎 这 个 市 场, 但 是 苦 于 无 法 开 发 出 一 个 能 够 和 相 竞 争 的 产 品 有 一 次 Lotus 举 办 了 一 个 Lotus 的 技 术 研 讨 会, 由 当 时 Lotus 的 首 席 工 程 师 主 讲 Microsoft 知 道 了 这 个 技 术 研 讨 会 之 后, 立 刻 派 出 了 最 好 的 程 序 设 计 师, 现 场 询 问 Lotus 是 如 何 开 发 的, 并 且 趁 机 询 问 这 位 首 席 工 程 师 如 何 克 服 在 许 多 技 术 方 面 的 难 点, 而 这 些 困 难 处 正 是 Microsoft 的 工 程 师 无 法 克 服 的 当 时, 在 现 场 中 的 Lotus 首 席 工 程 师 虽 然 知 道 这 些 人 是 Microsoft 派 来 的, 而 且 询 问 的 问 题 正 是 许 多 关 键 的 技 术 点 但 是 这 位 首 席 工 程 师 凭 借 着 多 年 的 开 发 经 验, 认 为 Microsoft 不 可 能 在 短 期 之 内 追 上 1-2-3, 因 此 就 没 有 多 作 保 留 地 回 答 了 许 多 重 要 的 问 题 没 有 想 Microsoft 的 这 些 程 序 员 也 是 非 常 聪 明 的 人 才, 一 经 指 点 之 后, 立 刻 畅 然 全 通, 在 短 短
10 的 1 2 个 版 本 之 后 不 但 马 上 追 上 了 1-2-3, 许 多 功 能 方 面 更 是 青 出 于 蓝,1-2-3 便 逐 渐 失 去 优 势 了 我 想 这 位 的 首 席 工 程 师 一 定 很 后 悔 当 时 回 答 了 关 键 的 技 术 问 题 吧 结 论 : 千 万 不 要 小 看 Microsoft, 他 们 是 非 常 精 于 模 仿 的 也 永 远 不 要 小 看 你 的 竞 争 对 手 数 据 库 市 场 的 失 误 Borland 全 盛 的 时 期, 事 实 上 也 是 开 发 数 据 库 产 品 最 好 的 机 会 因 为 在 当 时 Borland 手 握 DOS 最 畅 销 的 Paradox, 并 购 了 Ashton-Tate 而 拥 有 世 界 大 部 分 dbase 的 市 场, 又 取 得 了 Ashton-Tate 从 HP 购 买 的 真 正 关 系 数 据 库 (RDBMS)--InterBase, 可 以 说 是 当 时 全 世 界 数 据 库 工 具 实 力 最 雄 厚 的 厂 商 当 时 的 Oracle 和 Borland 比 起 来, 简 直 是 小 巫 见 大 巫, 而 Sybase 更 不 知 道 在 哪 里 如 果 Borland 能 够 好 好 地 掌 握 这 个 机 会, 极 力 开 发 数 据 库 产 品, 那 么 现 在 Borland 就 算 不 是 世 界 第 一 的 软 件 公 司, 也 将 是 世 界 第 二 的 软 件 厂 商 可 惜 Philippe Kahn 并 没 有 看 到 这 个 从 80 年 代 末 到 90 年 代 成 长 最 快 速 的 产 品 市 场 说 句 笑 话, 如 果 当 时 Philippe Kahn 的 死 对 头 Bill Gates 早 一 点 说 出 "Information At Your Finger-Tip" 这 句 话, 点 醒 Philippe Kahn 数 据 库 市 场 的 重 要 性, 那 么 Borland 就 可 能 是 现 在 的 Oracle 了 说 到 数 据 库 市 场, 就 不 得 不 对 Microsoft 的 眼 光 佩 服, 也 不 得 不 佩 服 Microsoft 行 销 能 力 的 强 悍 当 Microsoft 以 FoxBASE For Windows 强 占 了 Windows 开 发 者 的 数 据 库 工 具 市 场 之 后, 又 了 解 到 一 般 计 算 机 使 用 者 也 需 要 使 用 简 易 好 用 的 数 据 库 管 理 工 具, 因 此 开 发 出 了 更 简 易 的 Access 但 是 当 时 在 类 似 的 市 场 中,Borland 的 Paradox 占 有 开 发 者 数 据 库 大 部 分 的 江 山, 而 一 般 使 用 者 的 数 据 库 管 理 工 具 市 场 则 由 Lotus 的 Approach 博 得 先 机 Microsoft 为 了 进 入 由 Lotus Approach 主 宰 的 市 场, 采 取 了 很 多 方 法 我 还 记 得 在 当 时 Visual Basic 3 的 软 件 包 中 Microsoft 附 了 一 张 优 惠 卷, 只 要 800 新 台 币 就 可 以 买 一 套 Access 这 简 直 就 是 流 血 大 拍 卖 不 过 它 的 目 标 很 明 显, 就 是 击 败 当 时 卖 1 万 多 元 的 Lotus Approach 果 然,Microsoft 此 招 一 出,Approach 便 被 Access 打 得 落 花 流 水, 很 快 失 去 了 市 场, 也 很 快 地 退 出 了 市 场 从 此 一 般 使 用 者 的 数 据 库 管 理 工 具 市 场 便 由 Access 所 独 占 但 是 Borland 并 没 有 警 觉 到 Access 会 继 续 往 开 发 者 市 场 进 攻, 因 此 仍 然 没 有 加 紧 在 Paradox 产 品 上 的 开 发 Borland 总 觉 得 Paradox 的 市 场 地 位 是 无 法 轻 易 撼 动 的, 而 且 Access 的 目 标 市 场 也 不 是 Paradox 的 市 场 但 是 Borland 忘 记 了 Microsoft 非 常 擅 长 模 仿 在 随 后 的 Access 版 本 中,Microsoft 不 断 地 加 入 可 程 序 设 计 的 功 能, 因 此 也 逐 渐 地 吸 引 了 一 些 Paradox 入 门 使 用 者 的 市 场 再 加 上 FoxPro For Windows 又 持 续 地 强 攻 开 发 者 数 据 库 市 场,Paradox 终 于 在 腹 背 受 敌 之 下 逐 渐 败 下 阵 来 虽 然 在 末 期 Philippe Kahn 对 Paradox 投 下 重 兵, 希 望 能 够 挽 回 劣 势 奈 何 时 不 我 予, Paradox 在 奋 斗 了 Paradox 6 和 Paradox 7 的 2 个 版 本 之 后, 终 究 难 逃 失 败 的 命 运 当 时 在 看 到 Microsoft 如 何 打 击 竞 争 对 手 时, 我 就 和 朋 友 开 玩 笑 说,Microsoft 有 天 下 无 敌 的 三 大 绝 招, 那 就 是 " 打 不 过 你 就 模 仿 你 ( 这 让 我 想 起 电 影 秘 密 客 ) 再 打 不 过 就 和 你 比 流
11 血, 看 谁 流 得 久 ( 这 让 我 想 起 吸 血 鬼 ) 最 后 如 果 再 不 行 的 话, 那 就 挖 光 你 的 人 ( 这 让 我 想 起 电 影 Other People's Money)" Lotus 就 在 Microsoft 的 前 两 个 绝 招 下 倒 地 不 起, 而 Borland 还 算 是 功 力 深 厚, 连 中 三 大 绝 招, 虽 然 不 像 Lotus 和 许 多 其 他 公 司 一 样 从 此 Bye-Bye, 但 也 是 受 伤 极 重 的 了 ODBC 和 IDAPI 之 争 当 Microsoft 逐 渐 地 击 败 竞 争 对 手 并 且 拥 有 了 大 部 分 PC 数 据 库 市 场 之 后, 便 慢 慢 地 了 解 到 掌 握 标 准 的 重 要 性 此 外,Microsoft 为 了 统 一 各 应 用 程 序 之 间 不 同 数 据 的 存 取, 开 始 制 定 存 取 数 据 的 统 一 标 准 --ODBC Microsoft 更 大 的 目 的 是 为 了 准 备 和 瞄 准 下 一 场 的 大 战, 那 就 是 PC 上 的 关 系 数 据 库 产 品 的 市 场 当 然,Microsoft 要 一 统 数 据 存 取 的 江 山, 除 了 Borland 不 会 同 意 之 外, 其 时 一 心 想 从 Microsoft 扳 回 一 城 的 IBM 也 不 同 意 而 Novell 更 是 害 怕, 因 为 Novell 怕 Microsoft 成 功 之 后,Netware 会 消 失 得 更 快 于 是 IBM Novell 和 Borland 以 及 一 些 其 他 的 小 厂 便 聚 集 在 一 起, 决 定 也 制 定 一 套 存 取 数 据 的 标 准 接 口 来 和 Microsoft 对 抗, 这 个 制 定 的 数 据 存 取 标 准 便 是 IDAPI 这 正 式 揭 开 了 ODBC 和 IDAPI 竞 争 的 序 幕 不 过 IBM Novell 和 Borland 的 结 合 很 快 就 被 证 明 是 失 败 的, 因 为 就 像 稍 后 说 明 的 一 样, IBM 在 PC 软 件 上 的 开 发 一 直 是 三 心 二 意, 反 反 复 复 因 此 当 IDAPI 1.0 的 规 格 出 来 之 后, IBM 这 位 老 兄 又 失 去 了 和 Microsoft 对 抗 的 兴 趣, 于 是 退 出 了 IDAPI 联 盟 至 于 Novell 就 更 不 用 说 了 Novell 对 于 和 Microsoft 竞 争 一 向 是 " 说 说 可 以, 真 打 不 行 ", 一 定 要 找 到 一 群 厂 商 才 敢 和 Microsoft 对 抗 Novell 眼 看 IBM 退 出 之 后, 也 马 上 不 战 而 降, 很 快 地 就 也 退 出 IDAPI 联 盟, 这 个 现 象 和 稍 后 Novell 对 于 和 Borland 秘 密 合 作 的 Appware/AppBuilder 计 划 如 出 一 辙, 都 是 虎 头 蛇 尾, 草 草 收 场 在 两 个 大 同 盟 临 阵 脱 逃 之 后,Philippe Kahn 仍 然 不 畏 惧 Microsoft 的 竞 争, 还 是 以 IDAPI 1.0 的 规 格 实 现 数 据 存 取 引 擎, 这 就 是 我 们 现 在 使 用 的 BDE/IDAPI 和 SQL Links 的 前 身 当 时 IDAPI 1.0 的 功 能 规 格 比 ODBC 1.0 好 得 多 了 我 记 得 Delphi 1.0 使 用 的 BDE/IDAPI 和 SQL Links 驱 动 程 序 也 比 当 时 慢 得 像 乌 龟 的 ODBC 快 得 太 多 了 只 可 惜 在 IBM 和 Novell 退 出 之 后, 其 他 的 小 厂 也 是 一 哄 而 散 因 此 Borland 只 能 靠 自 己 独 自 和 Microsoft 对 抗 Borland 能 够 以 少 量 的 资 源 一 直 对 抗 到 Delphi 3 的 BDE/IDAPI 才 逐 渐 地 被 ODBC 追 过, 也 算 是 非 战 之 罪 了, 怪 就 只 能 怪 Borland 意 志 不 坚 的 盟 友 们 当 然, 由 于 IBM 和 Novell 的 行 事 作 风 如 此, 所 以 在 稍 后 许 多 能 够 和 Microsoft 一 较 长 短 的 机 会 也 因 为 如 此 而 消 逝, 最 后 自 食 恶 果, 逐 渐 失 去 了 PC 的 软 件 市 场, 再 也 无 力 和 Microsoft 抗 衡 了
12 第 二 章 C/C++ 的 圣 战 " 在 惨 烈 的 大 规 模 的 C/C++ 战 役 中, 注 定 只 有 最 强 者 才 能 生 存 下 来!" Borland C/C++ 的 反 击 当 Visual C++1.0 在 C/C++ 开 发 工 具 市 场 获 得 空 前 的 成 功 之 后,Borland 才 从 Borland C/C++3.1 的 胜 利 梦 中 惊 醒, 思 考 如 何 面 对 Visual C++ 的 猛 烈 攻 势 事 实 上,Borland 如 果 脑 袋 清 醒 一 点, 好 好 看 清 当 时 C/C++ 开 发 工 具 的 市 场, 那 么 Borland 应 该 会 发 现 虽 然 Visual C++ 经 过 两 年 多 的 整 军 经 武, 实 力 已 经 大 胜 以 前 但 是,Borland C/C++3.1 在 许 多 方 面 仍 然 是 可 以 和 Visual C++ 一 争 长 短 的 首 先, 当 时 Visual C++ 的 最 佳 化 编 译 器 仍 然 落 后 Borland C/C++3.1; 第 二,MFC 仍 然 没 有 完 整 地 封 装 Windows API, 而 且 MFC 是 以 较 低 阶 的 方 式 封 装 Windows API 的, 面 向 对 象 做 得 并 不 好, 也 不 是 很 容 易 使 用 事 实 上 以 我 的 观 点 来 看, 正 是 因 为 MFC 不 好 用, 所 以 Visual C++ 才 需 要 在 集 成 开 发 环 境 中 提 供 以 可 视 化 方 式 产 生 MFC 程 序 代 码 的 功 能 第 三 是 Visual C++ 当 时 并 没 有 很 好 的 封 装 数 据 结 构 的 Container Class, 而 Borland C/C++ 却 有 非 常 好 用 的 BIDS 类 别 库 第 四, 也 是 最 重 要 的,Borland C/C++3.1 仍 然 拥 有 绝 大 多 数 的 市 场, 而 且 几 乎 所 有 的 外 围 公 用 程 序,Shareware 等 都 是 使 用 Borland C/C++3.1 开 发 的 因 此, 如 果 Borland 不 着 急, 好 好 地 开 发 下 一 代 的 C/C++ 开 发 工 具, 即 使 Microsoft Visual C++ 能 够 掠 夺 一 些 市 场 占 有 率, 但 是 如 果 下 一 代 的 Borland C/C++ 能 够 像 Borland C/C++3.0 一 样 立 刻 拉 开 和 Visual C/C++ 的 距 离, 那 么 Borland 在 C/C++ 市 场 仍 将 拥 有 王 者 的 地 位 可 惜 的 是, 也 许 是 Philippe Kahn 在 和 Microsoft 的 FoxPro For Windows 一 役 中 被 吓 着 了, 因 此 急 于 在 Visual C/C++1.0 之 后 立 刻 推 出 新 的 Borland C/C++ 以 扳 回 颜 面 但 是 Philippe Kahn 忘 了, 在 这 段 时 间 之 内 Borland 失 去 了 许 多 的 人 才,Eugene Wang 也 离 开 了 更 重 要 的 是 在 过 去 近 3 年 的 时 间 内,Borland 几 乎 没 有 持 续 地 开 发 下 一 代 的 Borland C/C++, 短 时 间 内 怎 么 能 够 仓 促 地 推 出 新 产 品 呢? 可 是 Philippe Kahn 管 不 了 这 么 多 了 他 急 忙 找 来 了 Carl Quinn 等 人 后 便 要 求 立 刻 开 发 出 下 一 代 的 Borland C/C++, 于 是 Borland C/C++4.0 就 在 这 鸭 子 赶 上 架 的 情 况 下 匆 忙 地 开 发 了 Borland 在 开 发 Borland C/C++4.0 时 犯 了 许 多 的 大 忌 首 先 在 这 么 短 的 时 间 内 Borland 决 定 全 新 升 级 集 成 开 发 环 境 ; 第 二 是 把 OWL 完 全 重 写 ; 第 三 是 大 幅 修 改 最 佳 化 编 译 器 ; 第 四 是 整 合 当 时 棘 手 的 VBX,Borland 居 然 让 16 位 和 32 位 的 Windows 程 序 同 时 使 用 16 位 的 丑 陋 的 VBX 上 面 所 说 的 每 一 项 都 是 大 工 程 Borland 早 应 该 在 Borland C/C++3.1 之 后 便 开 始 进 行 这 些 工 作, 现 在 要 在 短 短 的 一 年 多 时 间 内 重 新 开 发 这 么 复 杂 的 一 个 C/C++ 开 发 工 具, 几 乎 是 不 可 能 的 但 是 在 Philippe Kahn 的 强 力 要 求 下, 这 些 Borland 的 工 程 师 还 是 硬 着 头 皮 做 了 出 来 不 过 我 必 须 很 沉 痛 地 说, 当 时 在 Borland C/C++4.0 Beta 测 试 时, 我 便 和 台 湾 Borland 的 人 说, 如 果 Borland 仓 促 推 出 Borland C/C++4.0 的 话, 那 么 不 但 不 会 对 Visual C++ 产 生 任 何
13 的 影 响, 反 而 是 自 杀 的 行 为 因 为 臭 虫 实 在 太 多 了, 整 个 集 成 开 发 环 境 的 反 应 也 很 缓 慢, 它 的 最 佳 化 编 译 器 更 是 笑 话, 错 误 百 出, 真 像 当 时 恶 名 昭 彰 的 Microsoft C 4.0 一 样 我 还 开 玩 笑 地 说, 是 不 是 因 为 Microsoft 从 Borland 挖 了 大 量 的 Borland C/C++ 人 才, 因 此 好 胜 的 Philippe Kahn 也 还 以 颜 色, 从 Microsoft 反 挖 Microsoft C 的 人, 却 不 幸 地 挖 到 了 Microsoft C 4.0 的 人 但 是, 显 然 Borland 并 没 有 听 到 我 或 其 他 Beta 测 试 人 的 心 声 在 Visual C++1.0 推 出 后 的 1 年 多 推 出 Borland C/C++3.1 之 后 的 第 4 年,Borland 终 于 推 出 了 新 一 代 的 Borland C/C++ 4.0, 这 个 肩 负 和 Visual C++1.0 对 抗 的 新 一 代 C/C++ 开 发 工 具 在 Borland C/C++4.0 刚 推 出 之 际,Borland 确 实 为 4.0 做 了 极 大 的 造 势, 我 记 得 在 当 时 所 有 重 要 的 计 算 机 杂 志 中, 例 如 Byte PC Magazine Dr. Dobb's 等, 都 有 4.0 整 页 的 广 告 这 个 广 告 的 内 容 是 以 一 个 巨 大 的 猫 头 鹰 为 主, 再 搭 配 蓝 色 底 系 的 Borland C/C++4.0, 选 用 巨 大 的 猫 头 鹰 当 然 是 因 为 OWL 的 原 因, 只 可 惜 我 现 在 找 不 到 那 幅 广 告 的 画 面 了 当 时 Borland C/C++4.0 使 用 了 如 下 的 广 告 用 词 : Visual Is Only A Facial Facade 来 讽 刺 Visual C/C++ 只 提 供 了 产 生 MFC 程 序 代 码 的 基 本 精 灵, 而 Borland 除 了 提 供 相 对 应 的 AppExpert 精 灵 ( 能 够 提 供 类 似 的 功 能, 以 产 生 使 用 者 选 择 的 OWL 程 序 代 码 ) 之 外, Borland C/C++4.0 的 集 成 开 发 环 境 还 提 供 了 可 视 化 的 三 面 版 窗 口, 能 够 让 程 序 员 完 整 地 掌 握 整 个 项 目 的 情 形 下 图 便 是 当 初 令 人 眼 睛 为 之 一 亮 的 AppExpert: 下 图 则 是 当 时 Borland C/C++ 的 注 册 商 标, 三 面 版 窗 口 开 发 环 境 看 到 此 图 又 令 我 想 起 当 初 使 用 C/C++ 撰 写 程 序 的 日 子, 下 方 程 序 页 面 清 楚 地 显 示 了 我 1995 年 在 鼎 新 工 作 时 写 的 智 能 型 Windows 排 程 系 统, 时 间 过 得 真 快 啊 当 时 Borland C/C++4.0 的 三 面 版 集 成 开 发 环 境 真 正 开 创 了 一 个 新 的 局 面, 因 为 这 个 集 成 开 发 环 境 允 许 程 序 员 知 道 每 一 个 应 用 程 序 定 义 的 窗 口 信 息, 并 且 能 够 立 刻 把 它 显 示 在 下 方 的 程 序 代 码 窗 口 中, 的 确 是 非 常 的 方 便, 也 比 当 时 Visual C/C++ 的 集 成 开 发 环 境 来 得 先 进 再 加 上 Borland 较 为 先 进 的 编 译 器 技 术 和 架 构 更 好 的 C/C++ Framework-OWL, 照 理 说 Borland C/C++4.0 应 该 会 获 得 极 大 的 胜 利, 可 为 什 么 最 后 会 以 失 败 收 场 呢? 没 错, 在 Borland C/C++4.0 刚 推 出 之 际, 订 单 的 确 如 雪 片 般 飞 来, 销 售 情 形 非 常 好 这 毕 竟 是 Borland 在 久 违 了 数 年 之 后 的 大 作, 许 多 Borland 的 用 户 都 迫 不 及 待 地 升 级, 当 初 我 也 是 拼 命 地 要 求 台 湾 Borland 第 一 个 给 我 Borland C/C++4.0 但 是 在 推 出 一 段 时 间 之 后, 市 场 的 反 应 就 急 速 地 冷 却 下 来, 因 为 各 种 负 面 的 批 评 不 断 涌 现 这 主 要 的 原 因 当 然 是 因 为 Borland C/C++4.0 的 品 质 实 在 不 好, 就 像 前 面 我 在 Beta 测 试 时 说 的, 由 于 Borland 太 急 于 推 出 4.0, 因 此 并 没 有 在 最 后 阶 段 修 正 许 多 的 臭 虫, 又 没 有 经 过 最 后 系 统 微 调 的 工 作, 同 时 又 过 于 大 胆 地 加 入 太 多 先 进 的 技 术, 造 成 了 整 个 产 品 的 不 稳 定, 而 犯 下 了 大 错 下 面 几 点 应 该 是 造 成 当 初 Borland C/C++4.0 惨 遭 滑 铁 卢 的 主 要 原 因 :
14 集 成 开 发 环 境 方 面 : 臭 虫 太 多, 容 易 当 掉 而 且 反 应 速 度 缓 慢 编 译 器 方 面 : 最 佳 化 玩 得 过 火, 产 生 错 误 的 编 译 程 序 代 码 OWL 方 面 : 采 用 全 新 的 多 重 继 承 架 构, 虽 然 是 正 确 的 做 法, 却 和 Borland C/C++3.1 中 的 OWL 不 兼 容, 造 成 许 多 程 序 员 无 法 升 级 C/C++ 项 目 VBX 方 面 : 大 胆 的 采 用 在 16/32 位 都 能 使 用 VBX 的 技 术, 造 成 一 些 VBX 无 法 顺 利 地 在 Borland C/C++4.0 中 使 用 我 想 其 中 最 可 惜 的 就 是 OWL 了 OWL 2.0 在 各 方 面 都 有 一 流 的 表 现, 实 在 是 MFC 强 劲 的 竞 争 对 手, 获 得 了 各 方 一 致 的 肯 定 和 称 赞 无 奈 的 是, 由 于 OWL 2.0 做 了 基 本 架 构 的 改 变, 这 虽 然 是 为 了 解 决 当 初 OWL l.x 使 用 了 不 标 准 的 C/C++ 编 译 器 技 术 的 问 题, 但 是 这 造 成 了 原 来 Borland C/C++3.x 程 序 员 极 大 的 困 扰, 因 为 升 级 不 易 对 于 新 的 C/C++ 使 用 者 来 说, 又 因 为 Borland C/C++4.0 本 身 不 稳 定 的 因 素 而 却 步, 因 此 造 成 了 OWL 2.0 叫 好 不 叫 座 的 下 场, 真 是 可 惜 了 OWL 小 组 的 努 力 还 记 得 当 时 我 的 项 目 使 用 了 FarPoint 的 SpreadSheet VBX 组 件, 由 于 一 直 无 法 顺 利 地 在 Borland C/C++4.0 中 使 用, 并 且 会 造 成 应 用 程 序 的 当 机, 最 后 追 踪 执 行 程 序 代 码 却 发 现 应 该 是 Borland C/C++4.0 的 问 题, 因 此 最 后 只 好 在 咒 骂 中 放 弃 使 用 BorlandC/C++4.0, 而 回 到 Borland C/C++3.1 当 时 想, 对 于 我 这 个 长 期 使 用 Borland 产 品 的 人 都 无 法 忍 受 4.0 的 品 质, 其 他 的 程 序 员 又 怎 能 使 用 这 个 产 品 呢? 我 想 这 就 是 为 什 么 后 来 4.0 全 面 溃 败 的 原 因, 因 为 Borland 推 出 了 根 本 不 堪 使 用 的 产 品 我 在 Borland 工 作 时, 有 一 次 在 新 加 坡 和 现 任 Borland 开 发 者 关 系 部 门 副 总 裁 的 David Intersimone 谈 起 这 一 段 往 事,David 也 很 感 慨, 他 直 呼 "We screwed it up!( 我 们 把 事 情 搞 砸 了 )","It's a mess( 那 实 在 是 一 团 混 乱 )" David 还 说 当 时 整 个 Borland C/C++ 开 发 小 组 都 很 混 乱, 和 以 往 Borland C/C++3.0/3.1 的 开 发 小 组 比 起 来 实 在 是 差 太 多 了 除 了 因 为 一 些 重 要 的 人 物 相 继 离 开 Borland 以 及 Microsoft 也 挖 走 一 大 票 人 之 外, 与 Philippe Kahn 的 直 接 介 入, 造 成 人 事 不 和 也 有 很 大 的 原 因 在 Borland C/C++4.0 快 速 失 利 之 后,Borland 也 认 识 到 问 题 的 严 重 性, 因 此 立 刻 着 手 开 发 Borland C/C 的 Patch, 当 时 是 称 为 Service Pack 但 是 在 稍 后 的 4.01 版 中 并 没 有 完 全 解 决 问 题, 一 直 到 4.02 才 稍 微 解 决 一 些 严 重 的 问 题 无 奈 时 不 我 予, 拖 的 时 间 太 长, 市 场 已 经 起 了 巨 大 的 变 化 Borland C/C++4.0 失 败 之 后, 立 刻 造 成 了 严 重 的 后 果 首 先 是 Borland C/C++ 的 市 场 大 量 而 且 快 速 地 流 失, 使 得 Visual C/C++ 快 速 地 成 长 第 二 点 是 当 初 Borland C/C++3.1 在 公 用 程 序 市 场 打 下 的 江 山 也 拱 手 让 人, 原 本 许 多 使 用 Borland C/C++3.0/3.1 撰 写 驱 动 程 序 的 硬 件 厂 商 也 开 始 转 换 到 Visual C/C++ 而 更 严 重 的 是, 由 于 4.0 的 品 质 以 及 稍 后 OLE 的 关 系, 应 用 程 序 市 场 也 开 始 大 量 地 转 为 使 用 Visual C/C++ 来 编 写 应 用 程 序 此 时,Borland 在 三 个 主 要 的 应 用 市 场 接 连 败 退,C/C++ 的 江 山 注 定 将 易 主, 其 颓 势 已 不 可 挽 回
15 Borland C/C++ Visual C/C++ Watcom C/C++ 和 Symantec C/C++ 的 缠 斗 自 Borland C/C++4.0 一 役 大 败 之 后,Borland 在 C/C++ 市 场 上 建 筑 的 巨 大 堡 垒 似 乎 再 也 不 是 牢 不 可 破 了 Visual C/C++ 固 然 在 不 断 地 接 收 Borland C/C++ 失 去 的 市 场, 这 时 在 C/C++ 市 场 上 也 开 始 出 现 另 外 两 个 坚 强 的 对 手, 那 就 是 Symantec C/C++ 和 Watcom C/C++ Symantec C/C++ 的 发 展 史 Symantec C/C++ 和 Watcom C/C++ 这 两 个 对 手 的 来 头 都 不 小 先 说 Symantec C/C++ 吧, 它 的 Think C/C++ 在 Macintosh 上 便 是 非 常 有 名 的 编 译 器, 因 此 早 在 C/C++ 领 域 便 有 深 厚 的 基 础 在 Symantec 并 购 了 PC 上 第 一 个 C/C++ 编 译 器 Zortech C/C++ 之 后,Symantec 进 入 PC 的 开 发 工 具 市 场 也 是 箭 在 弦 上 了, 只 可 惜 的 是, 其 时 Symantec 还 未 找 到 一 个 在 PC 上 有 丰 富 经 验 的 开 发 工 具 领 导 者 也 许 是 上 天 注 定 要 引 起 稍 后 的 C/C++ 编 译 器 大 战 吧, 此 时 Borland C/C++3.1 的 幕 后 支 柱 Eugene Wang 刚 好 和 Philippe Kahn 闹 翻, 离 开 了 Borland Symantec 眼 见 机 不 可 失, 立 刻 重 金 招 揽 Eugene Wang 到 Symantec, 为 Symantec 推 出 第 一 个 Windows 上 的 C/C++ 开 发 工 具 1993 年 左 右, 在 Eugene Wang 的 掌 舵 之 下,Symantec 推 出 了 第 一 个 Symantec C/C++ 版 本, 立 刻 便 获 得 了 市 场 的 好 评 自 此 之 后 Symantec C/C++ 军 心 大 振, 不 断 地 继 续 改 善, 也 逐 渐 获 得 了 不 小 的 C/C++ 市 场, 俨 然 成 为 可 以 对 抗 Borland C/C++ Visual C/C++ 的 另 一 山 头 当 时 Symantec C/C++ 是 以 最 华 丽 先 进 的 集 成 开 发 环 境 获 得 了 市 场 的 高 度 认 同, 在 C/C++ 编 译 器 最 佳 化 方 面 的 表 现 也 不 输 给 其 他 的 编 译 器 当 时 我 正 为 RUN!PC 撰 写 有 关 C/C++ 的 文 章, 因 此 Symantec 台 湾 分 公 司 的 人 也 和 我 联 络 过, 并 且 送 给 我 一 套 最 高 档 的 Symantec C/C++ 版 本, 希 望 我 除 了 为 Borland 写 C/C++ 的 文 章 之 外, 也 能 够 为 Symantec C/C++ 写 一 些 东 西 我 还 记 得, 在 当 时 安 装 Symantec C/C++ 之 后, 我 的 确 被 它 的 集 成 开 发 环 境 吸 引 得 说 不 出 话 来, 因 为 实 在 是 太 棒 了 Borland C/C++ 和 Visual C/C++ 的 集 成 开 发 环 境 同 Symantec C/C++ 的 集 成 开 发 环 境 比 较 起 来, 立 刻 变 成 索 然 无 味 平 淡 无 奇 了 即 使 到 现 在, 我 仍 然 必 须 竖 起 大 拇 指 对 Symantec C/C++ 的 集 成 开 发 环 境 说 声 " 赞 " 我 想 Eugene Wang 在 这 么 短 的 时 间 内 把 Symantec C/C++ 打 造 得 如 此 之 好, 除 了 证 明 他 的 不 凡 功 力 之 外, 也 有 向 Philippe Kahn 示 威 证 明 Philippe Kahn 让 他 离 开 Borland 是 错 误 决 定 的 意 思 我 之 所 以 如 此 说, 是 因 为 其 时 Symantec C/C++ 最 喜 欢 点 名 挑 战 的 对 象 便 是 Borland C/C++ 就 我 的 感 觉 而 言,Symantec C/C++ 就 像 是 一 个 技 艺 精 良 又 装 备 华 丽 的 C/C++ 军 团 Watcom C/C++ 的 发 展 史 非 常 有 趣 的 是,Watcom C/C++ 走 的 路 子 和 Symantec C/C++ 几 乎 是 完 全 相 反 的 当 时 出
16 品 Watcom C/C++ 编 译 器 的 是 一 家 加 拿 大 的 小 公 司, 不 过 这 家 公 司 却 对 最 佳 化 编 译 器 有 深 入 的 研 究 当 时,Watcom C/C++ 是 以 在 DOS 下 能 够 产 生 最 好 的 最 佳 化 程 序 代 码 闻 名 于 世 的, 许 多 写 游 戏 和 DOS Extender 的 厂 商 都 指 名 要 使 用 Watcom C/C++, 因 为 不 论 是 Borland C/C++ 还 是 Visual C/C++, 它 们 产 生 的 最 佳 化 程 序 代 码 都 比 Watcom C/C++ 的 最 佳 化 程 序 代 码 差 上 一 截 再 加 上 当 时 最 有 名 的 DOS Extender 厂 商 PharLap 公 司 也 是 使 用 Watcom C/C++, 因 此 Watcom C/C++ 在 专 业 的 C/C++ 程 序 员 以 及 系 统 程 序 员 心 中 是 第 一 品 牌 的 C/C++ 开 发 工 具 不 知 道 还 有 多 少 读 者 记 得 PharLap 这 家 公 司, 或 是 有 没 有 读 者 记 得 Andrew Schulman 这 位 伟 大 的 软 件 技 术 人 员 当 时 Andrew Schulman 的 Undocumented Windows 一 书 红 遍 了 半 边 天, 也 惹 得 Microsoft 要 告 Andrew Schulman 而 Andrew Schulman 便 是 PharLap 公 司 的 首 席 工 程 师, 也 是 当 时 最 著 名 的 "The ANDREW SCHULMAN Programming Series" 的 总 监 而 PharLap 公 司 是 当 时 出 版 DOS Extender 软 件 最 成 功 的 软 件 公 司 当 时 由 Matt Pietrek 撰 写 的 Windows Internals 也 是 轰 动 一 时 的 巨 著 谈 到 Matt Pietrek, 熟 悉 Windows Programming 的 读 者 应 该 很 少 有 不 知 这 位 大 师 级 人 物 的 Matt 长 期 在 Microsoft System Journal 撰 写 Under The Hood 专 栏, 专 门 写 一 些 深 入 系 统 的 程 序 设 计 技 术, 在 数 年 前 便 和 Andrew Schulman David Maxey 成 为 Windows System Programming 的 三 大 巨 头 之 一 Matt 也 是 著 名 的 Windows 除 错 工 具 SoftIce BoundsChecker 的 主 要 研 发 工 程 师 Matt 本 身 是 从 Borland 出 道 的, 他 初 至 Borland 工 作 时 便 是 在 Turbo Debugger 小 组 中 研 发 除 错 工 具 当 时 Borland 的 Turbo Debugger 是 DOS 下 最 强 的 除 错 工 具, 即 使 是 Microsoft 也 无 法 推 出 能 够 和 Turbo Debugger 抗 衡 的 除 错 工 具 Matt 在 这 个 小 组 中 吸 收 了 大 量 的 知 识, 并 且 快 速 成 为 这 个 领 域 的 专 家 后 来 Turbo Debugger 小 组 的 部 分 成 员 被 Microsoft 挖 走, 让 Microsoft 掌 握 了 Borland 的 核 心 除 错 技 术, 以 致 后 来 也 能 够 推 出 不 错 的 除 错 工 具 而 Matt 也 出 走 到 NuMega 公 司, 成 为 开 发 SoftIce Bounds Checker 的 关 键 人 物 写 到 这 里 还 是 不 禁 要 佩 服 Borland, 因 为 当 今 许 多 名 满 天 下 的 重 量 级 软 件 工 程 师 都 是 由 Borland 培 养 出 来 的 Watcom C/C++ 在 DOS 市 场 站 稳 了 脚 跟 之 后, 由 于 Windows 已 经 逐 渐 成 为 市 场 的 主 流, DOS 势 必 将 被 逐 渐 淘 汰 出 局, 因 此,Watcom C/C++ 如 果 要 继 续 生 存 下 去, 也 就 - 定 要 推 出 Windows 平 台 的 C/C++ 开 发 工 具 大 约 是 在 年 左 右,Watcom 终 于 推 出 第 一 个 Windows 下 的 C/C++ 开 发 工 具 不 过, 当 时 Watcom C/C++ 在 Windows 推 出 的 C/C++ 开 发 工 具 实 在 是 平 淡 无 奇 其 集 成 开 发 环 境 和 另 外 三 个 对 手 比 较 起 来 简 直 像 是 远 古 的 产 品,- 点 特 色 都 没 有 不 过 Watcom C/C++ 仍 然 是 以 它 的 最 佳 化 编 译 器 作 为 号 召 因 此 当 时 发 生 了 一 个 非 常 有 趣 的 现 象, 那 就 是 许 多 软 件 公 司 会 同 时 买 Borland C/C++, 或 是 Visual C/C++,Symantec C/C++ 之 一, 再 搭 配 一 套 Watcom C/C++ 在 开 发 应 用 系 统 时 使 用 其 他 三 套 开 发 工 具 之 一, 最 后 要 出 货 时 再 使 用 Watcom C/C++ 来 编 译 以 产 生 最 佳 的 程 序 代 码 在 Watcom C/C++ 推 出 了 Windows 平 台 的 开 发 工 具 之 后, 也 吸 引 了 - 群 使 用 者 虽 然 Watcom C/C++ 的 市 场 比 起 其 他 的 三 家 来 说 是 最 小 的, 但 是 总 算 撑 起 了 一 片 天, 成 为 四 大 C/C++ 开 发 工 具 之 一 稍 后 Watcom C/C++ 被 Sybase 并 购, 成 为 Sybase Optima++ 的 前 身
17 对 我 的 感 觉 而 言,Watcom C/C++ 就 像 是 一 个 穿 着 朴 素 但 是 却 拥 有 最 佳 训 练 的 白 色 C/C++ 军 团 关 键 的 时 刻 --MFC Or Not 在 Symantec C/C++ 和 Watcom C/C++ 逐 渐 站 稳 了 脚 跟 之 后,C/C++ 四 大 编 译 器 决 战 的 时 刻 也 逐 渐 逼 近 了, 一 些 其 他 出 产 C/C++ 工 具 的 软 件 公 司 早 已 自 动 退 出 了 这 个 在 当 时 竞 争 最 为 激 烈 的 软 件 市 场 在 1994 年 末 的 决 战 之 前,Symantec 和 Watcom 同 时 面 对 了 一 个 非 常 严 厉 的 考 验, 那 就 是 C/C++ Framework 的 选 择 虽 然 Symantec 和 Watcom 都 以 各 自 的 特 色 占 得 了 一 定 的 市 场, 不 过 在 当 时 对 于 一 个 C/C++ 开 发 工 具 来 说, 最 重 要 的 功 能 之 一 就 是 C/C++ Framework 因 此 Symantec 和 Watcom 也 都 必 须 为 使 用 者 提 供 一 套 C/C++ Framework 不 过 这 对 于 Symantec 和 Watcom 来 说 都 是 一 个 难 以 解 决 的 问 题, 因 为 当 时 的 C/C++ Framework 已 由 Borland 的 OWL 和 Microsoft 的 MFC 所 占 领, 虽 然 市 场 上 也 存 在 一 些 跨 平 台 的 C/C++ Framework, 例 如 ZApp 和 Zinc 等, 但 是 这 些 C/C++ Framework 终 究 没 有 产 生 很 大 的 影 响 如 果 Symantec 和 Watcom 要 自 己 发 展 新 的 C/C++ Framework, 那 他 们 还 没 有 如 此 雄 厚 的 资 源, 也 无 法 在 短 时 间 之 内 完 成 因 此 Symantec 和 Watcom 必 须 决 定, 到 底 是 要 使 用 Microsoft 的 MFC 还 是 使 用 Borland 的 OWL 来 作 为 他 们 开 发 工 具 的 C/C++ Framework 1993 年 初,Symantec 和 Watcom 分 别 和 Microsoft 签 约 授 权 使 用 MFC 作 为 他 们 的 开 发 工 具 的 C/C++ Framework, 至 此 大 局 已 定, 在 C/C++ Framework 的 市 场 已 经 形 成 三 家 夹 击 一 家 的 形 势 当 时 许 多 人 便 预 测 Borland 会 成 为 输 家, 因 为 市 场 已 经 成 为 一 面 倒 的 现 象,MFC 看 起 来 已 经 是 胜 券 在 握 了 当 时,Borland 的 内 部 也 展 开 了 激 烈 的 辩 论, 讨 论 是 否 也 要 授 权 使 用 MFC 作 为 C/C++ 的 Framework, 停 止 继 续 开 发 OWL 不 过, 后 来 Borland 还 是 决 定 继 续 开 发 OWL, 而 不 使 用 MFC, 因 为 Borland 的 C/C++ 技 术 小 组 认 为 MFC 不 论 是 在 架 构 上 或 是 设 计 上 都 比 不 上 OWL 而 且, 由 于 当 时 Visual C/C++ 对 于 C/C++ 标 准 的 支 持 不 如 Borland C/C++, 所 以 在 MFC 内 部 使 用 了 大 量 的 Macro 以 及 不 标 准 的 语 法, 因 此 如 果 Borland C/C++ 要 使 用 MFC, 那 么 还 需 要 修 改 Borland 的 C/C++ 编 译 器 来 编 译 MFC 对 于 这 一 点, 我 认 为 Borland 是 做 了 一 个 正 确 的 决 定 因 为, 如 果 当 时 Borland 也 授 权 使 用 MFC, 那 么 不 但 在 气 势 上 输 了 一 截, 而 且, 由 于 MFC 的 发 展 完 全 掌 握 在 Microsoft 的 手 里, 采 用 MFC 就 等 于 脖 子 被 掐 在 别 人 的 手 里, 动 弹 不 得 可 惜 的 是 Symantec 和 Watcom 并 没 有 看 清 这 一 点, 以 为 有 了 和 Microsoft 一 样 的 Framework, 就 可 以 在 其 他 地 方 和 Microsoft 以 及 Borland 一 决 雌 雄,Symantec 和 Watcom 却 没 有 想 到, 就 是 这 一 点 决 定 让 自 己 在 后 来 的 决 战 中 一 败 涂 地, 最 终 完 全 退 出 了 PC 的 C/C++ 开 发 工 具 市 场 随 着 1994 年 末 的 到 来,C/C++ 开 发 工 具 的 四 大 天 王 决 战 的 日 子 也 终 于 愈 来 愈 近 了 OLE 的 搅 局 不 知 道 是 时 运 不 济, 还 是 Microsoft 刻 意 如 此, 在 1994 年 Borland C/C++ 和 Visual C/C++
18 决 战 的 前 夕,Microsoft 推 出 了 OLE(Object Linking And Embedding) 技 术 OLE 是 Microsoft 为 了 对 抗 Apple 的 文 件 技 术 以 及 IBM OS2 的 Workplace 和 文 件 技 术 应 运 而 生 的 OLE 可 以 让 Windows 平 台 的 文 件 内 嵌 在 不 同 的 应 用 程 序 中, 并 且 能 够 让 文 件 在 应 用 程 序 中 被 即 地 编 辑 (In Place Editing) 说 实 在 的,Microsoft 的 OLE 和 Apple 以 及 IBM 的 技 术 比 较 起 来 实 在 是 差 多 了, 在 稍 后 也 被 证 明 是 失 败 的 技 术 不 过,Microsoft 的 OLE 和 Apple/IBM 的 文 件 技 术 都 是 失 败 的 技 术, 都 没 有 造 成 巨 大 的 成 功 虽 然 这 些 文 件 技 术 都 没 有 成 功, 但 是 OLE 却 足 以 成 为 Borland Symantec 和 Watcom 失 败 的 重 要 因 素 我 记 得 当 时 OLE 似 乎 成 为 了 一 个 令 人 趋 之 若 鹜 的 时 髦 功 能 Word 的 文 件 能 够 内 嵌 在 Excel 之 中, 而 且 使 用 者 可 以 点 选 此 Word 文 件, 应 用 程 序 又 立 刻 成 为 Word 来 编 辑 它, 实 在 令 人 觉 得 非 常 的 神 奇 不 过, 在 其 时 所 有 的 软 件 厂 商 中, 只 有 Microsoft 的 应 用 程 序 有 如 此 的 功 能, 其 他 的 厂 商 例 如 Lotus WordPerfect 等 都 无 法 实 现 这 种 功 能 这 明 显 地 造 成 了 不 公 平 的 竞 争, 因 为 OLE 技 术 是 由 操 作 系 统 厂 商 Microsoft 推 出 的, 但 是 却 让 它 的 应 用 程 序 部 门 同 步 拥 有 这 种 技 术, 而 其 他 的 软 件 厂 商 都 无 法 获 得 第 一 手 的 OLE 技 术 来 编 写 应 用 程 序, 这 也 是 为 什 么 当 时 其 他 的 软 件 厂 商 如 此 火 大 的 原 因 虽 然 后 来 其 他 的 软 件 公 司 在 取 得 了 OLE 的 技 术 资 料 之 后, 也 推 出 了 具 备 OLE 功 能 的 应 用 程 序, 但 毕 竟 是 慢 了 Microsoft 许 久, 市 场 也 流 失 了 许 多 不 过, 我 觉 得 很 奇 怪 的 是, 在 当 时 内 建 OLE 功 能 的 应 用 程 序 之 中, 几 乎 所 有 软 件 厂 商 推 出 的 应 用 程 序 在 激 活 数 个 应 用 程 序 而 且 使 用 OLE 之 后, 就 非 常 容 易 死 机, 只 有 Microsoft 的 应 用 程 序 不 太 会 发 生 这 种 情 形, 因 此 许 多 人 便 认 为 Microsoft 隐 瞒 了 一 些 技 术 没 有 让 其 他 的 厂 商 知 道 由 于 OLE 是 如 此 的 复 杂, 因 此 Borland 无 法 立 刻 在 OWL 之 中 实 现 这 种 功 能, 于 是 就 造 成 厂 市 场 上 负 面 的 影 响 至 于 Symantec 和 Watcom 虽 然 授 权 使 用 MFC, 但 是 在 其 时 它 们 授 权 使 用 的 是 MFC 1.x 的 版 本,Microsoft 并 没 有 把 OLE 实 现 在 MFC 1.x 中, 而 是 实 现 在 MFC 2.0 之 中 在 MFC 2.0 推 出 时, 它 最 重 要 的 功 能 就 是 Microsoft 加 入 了 多 行 支 持 OLE 的 程 序 代 码, 但 是 MFC 2.0 仅 限 于 Visual C/C++ 使 用, 就 是 这 关 键 的 一 点 让 其 他 三 家 竞 争 厂 商 吃 了 大 亏 对 于 OLE 这 个 关 键 技 术 的 影 响,Borland 是 深 知 在 心 的, 因 此 计 划 在 Borland C/C++4.5 的 OWL2.5 中 支 持 OLE 当 时 Borland 推 出 的 对 应 解 决 方 案 便 是 OCF(Object Component Framework) Borland 当 初 在 设 计 OCF 时 有 几 个 重 大 的 目 标, 这 些 目 标 包 括 : 第 一 如 何 使 OLE 琐 碎 复 杂 的 接 口 单 纯 化 第 二 如 何 使 OLE 在 窗 口 环 境 下 写 程 序 的 思 考 方 式 一 致 化 -- 即 使 用 " 事 件 驱 动 " 的 方 式 来 开 发 第 三 如 何 在 微 软 占 尽 天 时 地 利 ( 但 未 必 人 和 ) 的 情 况 下 使 Borland 的 产 品 具 备 OLE 的 功 能 第 四 如 何 让 大 多 数 C/C++ 的 程 序 员 都 能 够 享 受 OLE 的 功 能 而 不 局 限 于 OWL 由 于 上 述 的 设 计 目 标, 从 而 造 就 了 典 雅 而 具 有 弹 性 的 OCF 由 于 OCF 本 身 是 一 完 整 而 独 立 的 Framework, 因 此 它 可 适 用 于 各 种 C/C++ Framework 之 中, 包 含 了 OWL MFC 以 及 ZApp/Zinc 等 Framework 不 知 道 各 位 使 用 过 Borland C/C++ 的 朋 友 们 是 否 还 依 稀 记 得 下 图 所 示 的 OCF 架 构 图 之 一, 以 及 下 面 的 OCF 范 例 程 序 代 码? 这 些 可 是 我 把 1994 年 写 的 文 章 挖 出 来 之 后 找 到 的, 真
19 是 令 我 感 慨, 不 禁 回 想 起 了 当 时 的 情 景, 在 此 也 让 各 位 回 忆 一 下 OWL 和 OCF 对 于 不 熟 悉 OWL 和 OCF 的 朋 友, 也 可 以 从 下 图 和 程 序 代 码 中 观 察 一 下 当 时 的 技 术 以 及 设 计 的 概 念 我 现 在 看 这 些 图 形 架 构, 会 发 现 基 本 上 它 们 并 没 有 落 后 现 在 太 多, 可 见 当 时 设 计 者 的 功 力 ( 当 然 又 是 Carl Quinn 定 义 的 佳 作 之 一 ) 程 序 1 OWL 的 TOleWindow 支 持 OLE 插 入 对 象 的 成 员 函 数 // // Insert an OLE object into the view // void TOleWindow::CmEditInsertObject() { 001 PRECONDITION(OcView); 002 TOcInitInfo initinfo(ocview); 003 if (OcApp->Browse(initInfo)){ 004 TRect rect; 005 GetInsertPosition(rect); 006 SetSelection(new TOcPart(*GetOcDoc(), initinfo, rect)); 007 OcView->Rename(); 008 InvalidatePart(invView); } } 程 序 2 OWL 的 TOleWindow 支 持 左 键 双 击 的 成 员 函 数 // // Handle left double-click message // void TOleWindow::EvLButtonDblClk(uint modkeys, TPoint& point) { PRECONDITION(GetOcDoc() && GetOcView()); TOleClientDC dc(*this); dc.dptolp(&point); TOcPart* p = GetOcDoc()->GetParts().Locate(point); if (modkeys& MK_CONTROL) { if (p) p->open(true); //Ctrl key forces open editing } else {
20 SetSelection(p); If (p && p == GetOcView()->GetActivePart()){ //resync the active flag p->activate(false); } } GetOcView()->ActivatePart(p); //In-place activation 虽 然 Borland 及 时 地 在 OWL2.5 中 加 入 了 OLE 的 支 持, 无 奈 Microsoft 随 后 又 在 OLE 中 加 入 了 许 多 其 他 的 功 能 因 此 让 OCF 还 是 无 法 完 整 地 支 持 OLE 所 有 的 功 能,Borland 又 无 法 不 延 后 Borland C/C++ 的 推 出, 因 此 直 到 l994 年 末,Borland 才 终 于 推 出 了 决 战 性 的 Borland C/C++4.5 版 本 C/C++ 开 发 工 具 的 最 后 圣 战 " 虽 然 已 经 过 去 了 许 久, 但 是 我 仍 然 忘 不 了 那 场 最 惨 烈 的 战 役!" 在 1994 年 末 1995 初,Borland 痛 定 思 痛, 终 于 清 除 了 Borland C/C++4.0 中 所 有 的 问 题, 也 开 发 出 了 自 Borland C/C++3.1 以 来 最 稳 定 最 快 速 的 Borland C/C++4.5, 准 备 和 Microsoft 决 一 死 战 我 记 得 当 时 许 多 有 关 Borland C/C++ 和 Microsoft C/C++ 的 书 籍 都 是 使 用 十 字 军 的 封 面 不 同 的 是 Borland C/C++ 的 系 列 丛 书 都 是 以 蓝 色 为 色 系, 而 Microsoft 的 则 是 以 红 色 为 色 系, 仿 佛 两 大 军 团 终 将 决 战 似 的 不 过, 这 次 的 战 役 不 仅 仅 是 Borland 的 蓝 军 和 Microsoft 的 红 军 相 对 抗 在 Symantec 的 华 丽 军 团 经 过 了 整 军 经 武,Watcom 的 白 色 劲 旅 枕 戈 待 旦, 而 且 都 从 Microsoft 授 权 使 用 了 MFC 之 后, 蓝 红 花 白 四 大 军 团 决 战 的 日 子 终 于 来 临 首 先, 当 Symantec 和 Watcom 分 别 取 得 了 MFC 之 后,Symantec 便 推 出 了 C/C++ 7.x 的 版 本, 和 Watcom C/C++ 混 战 了 起 来 两 个 使 用 系 出 同 门 的 C/C++ Framework 产 品 战 得 不 亦 乐 乎, 随 后 Borland C/C 和 Visual C/C++ 的 新 版 本 也 加 入 了 这 场 最 重 要 的 决 战 但 是, 让 Symantec 和 Watcom C/C++ 大 吃 一 惊 的 是 Microsoft 使 用 的 MFC 居 然 比 他 们 使 用 的 MFC 高 出 了 一 个 版 本 (1.x 对 2.x), 而 且 新 版 本 的 MFC 包 含 了 完 整 的 OLE 支 持 能 力 而 Borland 虽 然 也 有 OCF 这 张 王 牌, 但 是 仍 然 不 敌 新 版 MFC 中 的 OLE 能 力 由 于 当 时 几 乎 所 有 的 应 用 程 序 都 需 要 支 持 OLE, 但 是 却 只 有 使 用 Visual C/C++ 最 新 的 版 本 才 能 够 开 发 完 整 OLE 能 力 的 应 用 程 序, 所 以 不 管 OLE 到 底 有 没 有 用, 反 正 先 加 入 再 说 因 此 市 场 上 的 形 势 很 快 就 发 生 了 巨 大 的 变 化, 因 为 OLE 的 原 因, 几 乎 大 部 分 的 应 用 程 序 开 发 者 都 选 择 使 用 Visual C/C++,Symantec 和 Watcom 军 团 很 快 就 败 下 阵 来 至 于 Borland C/C++4.5, 虽 然 它 是 一 流 的 产 品, 如 果 没 有 OLE 的 因 素,Visual C/C++ 新 版 本 真 的 并 不 比 Borland C/C++4.5 好 : 虽 然 4.5 也 有 OCF, 但 是 在 市 场 上 只 有 Borland 和 Novell WordPerfect 选 择 使 用 OCF 在 和 Microsoft 的 Visual C/C++ 经 过 将 近 一 年 的 缠 斗 之
21 后, 其 他 大 部 分 的 厂 商 都 选 择 了 Microsoft 的 MFC 2.x 版, 真 是 形 势 比 人 强 OCF 的 架 构 真 是 个 好 东 西, 但 却 无 法 完 整 地 支 持 OLE, 因 为 OLE 的 发 展 是 掌 握 在 Microsoft 手 中 的, 因 此 虽 然 OCF 的 架 构 良 好, 终 究 在 功 能 上 不 及 对 手 Microsoft 结 合 操 作 系 统 开 发 工 具 和 应 用 程 序 的 手 段 真 是 无 往 而 不 胜 击 败 Lotus Borland 是 如 此, 歼 灭 Netscape 亦 是 如 此 对 于 Symantec 和 Watcom 来 说, 这 场 战 役 就 如 同 " 长 平 之 战 " 秦 军 坑 杀 40 多 万 赵 军 一 样 杀 得 Symantec 和 Watcom 全 军 覆 没, 大 败 而 归 至 此 Symantec 弃 守 PC 的 C/C++ 开 发 工 具 市 场, 转 而 开 始 研 发 Java 开 发 工 具, 进 而 在 稍 后 推 出 了 著 名 的 Visual Cafe 至 于 Eugene Wang, 则 离 开 了 Symantec, 也 离 开 了 PC 开 发 工 具 的 领 域 而 Watcom 则 更 为 凄 惨 整 个 公 司 在 DOS 的 市 场 逐 渐 式 微, 而 Windows 平 台 的 开 发 工 具 又 大 败 而 归, 两 头 落 空 不 久 之 后,Watcom 便 被 新 兴 而 起 的 Sybase 并 购, 从 此 在 竞 争 激 烈 的 开 发 工 具 市 场 中 消 失 了 归 纳 Symantec 和 Watcom 失 败 的 原 因, 是 因 为 C/C++ 的 Framework MFC 掌 握 在 Microsoft 手 中, 在 决 战 时 刻 Microsoft 居 然 手 握 比 Symantec 和 Watcom 更 新 的 MFC 利 器, 而 且 在 Visual C/C++ 精 进 最 佳 化 编 译 器 技 术 并 且 改 善 集 成 开 发 环 境 之 后,Symantec 和 Watcom 诉 求 的 重 点 功 能 完 全 被 Microsoft 封 死 因 此 在 产 品 技 术 市 场 和 气 势 上 完 全 不 如 对 手 的 情 形 下, 自 然 只 能 任 人 宰 割 了 对 于 Borland, 虽 然 没 有 像 Symantec 和 Watcom 那 么 溃 不 成 军, 但 也 再 次 败 下 阵 来 虽 然 平 心 而 论 Borland C/C++4.5 的 确 是 一 个 非 常 好 的 产 品, 无 论 在 OWL 最 佳 化 编 译 器 集 成 开 发 环 境 方 面 都 有 一 流 的 表 现 和 Borland C/C++4.0 比 较 起 来 简 直 犹 如 脱 胎 换 骨 一 般, 到 现 在 Borland C/C++4.5 仍 然 是 我 最 喜 欢 的 版 本 之 一 但 是 无 奈 当 初 Borland C/C++4.0 给 人 挥 之 不 去 的 负 面 印 象, 以 及 无 法 完 整 支 持 当 时 如 火 如 荼 的 OLE 技 术, 因 此 还 是 在 决 战 之 中 败 了 下 来 好 在 蓝 色 的 Borland 大 军 毕 竟 是 训 练 有 素, 虽 然 自 此 让 Microsoft 占 据 了 超 过 50% 的 市 场, 成 为 C/C++ 开 发 工 具 的 老 大, 但 是 Borland 仍 然 掌 握 了 超 过 30% 的 市 场, 稍 做 喘 息, 并 且 支 撑 Borland 在 各 重 要 战 役 失 败 之 后 维 持 公 司 的 运 作, 等 待 Delphi 的 浴 火 重 生, 再 重 新 出 发 经 过 这 关 键 的 一 役 之 后,Microsoft 终 于 清 除 了 大 部 分 的 对 手 对 于 Microsoft, 程 序 语 言 开 发 工 具 的 战 争 已 经 结 束, 这 个 市 场 注 定 将 被 Microsoft 占 据 大 部 分 的 市 场 在 Microsoft 手 握 操 作 系 统 Office 软 件 和 开 发 工 具 三 大 获 利 市 场 之 后,Microsoft 也 开 始 将 矛 头 对 准 下 两 个 竞 争 目 标 : 关 系 数 据 库 以 及 主 从 架 构 开 发 工 具 在 Microsoft 正 式 进 军 这 两 个 市 场 之 后, 当 然 也 展 开 了 连 番 的 好 戏, 尤 其 是 在 主 从 架 构 开 发 工 具 方 面 又 开 启 了 VB PowerBuilder Gupta/Centura 和 Delphi 的 惊 天 动 地 大 会 战 另 外 一 个 意 外 开 启 的 战 争 则 是 Microsoft 在 1995 年 和 Netscape 的 浏 览 器 大 战 在 C/C++ 最 后 一 役 之 后, 我 认 为 开 发 工 具 的 圣 战 已 然 结 束,Borland 也 正 式 开 始 走 下 坡 路 更 严 重 的 是 我 认 为 自 此 之 后 Borland 不 但 丧 失 了 C/C++ 的 江 山, 也 失 去 了 对 于 C/C++ 开 发 工 具 的 创 意, 这 是 我 感 到 最 遗 憾 的 地 方, 到 现 在 为 止 我 仍 然 认 为 Borland 尚 未 重 拾 当 初 在 Borland C/C++3.0/3.1 时 代 独 领 C/C++ 创 意 风 骚 的 精 神 也 许, 也 许, 要 看 看 C/C++ For Kylix 或 是 C++Builder 的 后 继 产 品 是 否 能 够 重 新 找 回 这 个 失 去 已 久 的 精 神, 不 再 让 大 家 失 望 了
22 永 不 成 气 候 的 C/C++ 开 发 工 具 :IBM VisualAge C/C++ IBM 在 C/C++ 开 发 工 具 市 场 扮 演 的 角 色 一 直 令 人 啼 笑 皆 非, 因 为 在 C/C++ 编 译 器 战 争 最 激 烈 的 时 刻,IBM 这 个 全 球 信 息 大 厂 却 一 直 是 缺 席 的 一 直 到 了 1995 年 之 后,C/C++ 编 译 器 市 场 大 势 已 定 后 才 慢 慢 地 加 入 战 局, 推 出 VisualAge C/C++ 3.0, 企 图 进 攻 此 市 场 但 是 此 时 市 场 早 已 由 Microsoft 的 Visual C/C++ 称 雄 IBM 的 VisualAge 虽 然 能 够 以 创 新 的 可 视 化 设 计 家 定 义 对 象 之 间 的 关 系, 但 是 在 其 他 方 面 却 乏 善 可 陈, 整 个 集 成 开 发 环 境 也 缓 慢 如 蜗 牛, 需 要 非 常 高 的 硬 件 配 置 才 能 够 顺 利 运 行, 和 Visual C/C++ 以 及 Borland C/C++ 等 工 具 比 较 起 来 就 像 是 恐 龙 一 般, 因 此 几 乎 没 有 在 市 场 上 引 起 任 何 的 反 应 在 推 出 的 VisualAge C/C++3.0 并 没 有 在 PC 的 C/C++ 开 发 工 具 市 场 获 得 任 何 的 明 显 成 果 之 后,IBM 又 再 次 集 中 许 多 资 源, 开 发 下 一 代 3.5 版 本, 希 望 能 够 在 此 市 场 占 有 一 定 的 比 率 我 知 道 IBM 在 VisualAge 投 注 了 大 量 的 资 源, 因 为 从 Beta 版 开 始 台 湾 的 IBM 便 有 人 和 我 接 触, 希 望 我 也 在 RUN!PC 上 为 VisualAge C/C++3.5 写 些 文 章 因 此 在 1996 年 的 6 月 我 写 了 一 篇 C/C++ 编 译 器 的 比 较 文 章, 下 面 的 资 料 便 是 数 年 前 当 时 还 是 Beta 版 的 VisualAge 3.5 和 其 他 编 译 器 的 比 较 结 果 ( 见 下 页 ) 从 图 中 的 数 据 可 以 看 到, 其 实 VisualAge C/C++3.5 的 表 现 还 不 错, 只 是 对 于 当 时 还 在 使 用 AMD DX4-100/32M RAM 机 器 的 我 来 说, 实 在 是 跑 不 动 后 来 台 湾 IBM 负 责 VisualAge 的 产 品 经 理 请 我 吃 饭, 在 此 饭 局 中 这 位 李 经 理 同 时 请 了 贺 元 ( 后 来 成 为 资 迅 人 的 总 裁 ) 薛 晓 岚 ( 后 来 成 为 资 迅 人 的 副 总 裁 ) 以 及 其 他 两 位 作 者, 希 望 大 家 在 计 算 机 杂 志 中 继 续 为 VisualAge C/C++3.5 写 写 东 西, 一 起 Promote 此 产 品 在 这 个 饭 局 中 我 是 第 一 次 和 贺 元 薛 晓 岚 见 面, 当 时 贺 元 在 中 文 PC Magazine 有 一 技 术 专 栏 记 得 当 我 向 这 位 李 经 理 提 起 我 的 机 器 几 乎 无 法 跑 得 动 VisualAge C/C++3.5 时, 他 还 立 刻 一 口 答 应 借 我 一 台 当 时 IBM 最 高 档 的 PC 同 时 每 写 一 篇 VisualAge C/C++3.5 的 文 章, 除 了 RUN!PC 原 本 的 稿 费 之 外,IBM 会 再 付 一 字 2.5 元 的 稿 费 乖 乖,IBM 真 是 大 手 笔 我 算 算 当 时 我 的 产 能, 写 一 篇 文 章 就 能 够 赚 2 到 3 万, 又 有 免 费 的 最 高 档 机 器 可 用, 真 是 太 好 了 不 过 后 来 我 还 是 觉 得 IBM 在 此 市 场 可 能 不 会 深 耕 在 不 愿 意 违 背 自 己 写 作 习 惯 和 得 罪 Borland 的 顾 虑 下, 最 后 还 是 没 有 答 应 现 在 想 想 当 时 真 是 太 笨 了, 放 着 好 赚 的 稿 费 不 赚, 嘻 IBM 的 C/C++ 开 发 工 具 之 所 以 在 市 场 无 法 成 功, 是 因 为 IBM 并 不 了 解 在 此 竞 争 激 烈 的 市 场 中 使 用 者 到 底 要 什 么 另 外 一 个 原 因 则 是 IBM 并 不 以 PC 上 的 开 发 工 具 软 件 为 重 要 的 事 业 即 使 无 法 竞 争 和 获 利, 对 于 IBM 来 说 也 没 有 什 么 影 响, 因 为 IBM 主 要 是 靠 硬 件 和 大 型 软 件 为 主, 不 像 Borland 这 可 是 生 命 之 争 因 此 IBM 只 是 兴 起 玩 玩, 随 即 放 下 所 以 我 觉 得 在 PC 平 台 使 用 IBM 的 工 具 是 很 危 险 的, 因 为 IBM 随 时 都 可 能 会 放 弃 这 个 市 场 不 知 道 现 在 VisualAge C/C++ 到 底 下 场 如 何? 是 不 是 还 在 3.5 或 是 4.0 版?IBM 已 经 数 年 没 有 任 何 的 维 护 和 改 善 了 快 速 殒 落 的 潜 力 之 星 :Sybase 的 C/C++RAD 工 具 Optima 年 左 右,Sybase 并 购 了 Watcom 之 后 终 于 推 出 了 石 破 天 惊 的 C/C++ 开 发 工 具 : Optima++ Optima++ 是 当 初 结 合 了 Watcom 的 最 佳 化 编 译 器 以 及 类 似 Delphi 的 组 件 拖 曳 开
23 发 环 境 的 第 一 个 RAD C/C++ 开 发 工 具 更 棒 的 是 Optima++ 的 组 件 架 构 ( 类 似 Delphi 的 VCL) 完 全 是 以 纯 正 的 C/C++ 程 序 代 码 撰 写 的 这 可 不 得 了, 因 为 这 代 表 Optima++ 是 一 个 融 合 了 Visual C/C++ 和 Delphi 两 大 王 者 开 发 工 具 为 一 身 的 超 级 赛 亚 人 工 具 在 我 知 道 这 个 工 具 并 且 尝 试 实 际 使 用 之 后, 极 为 震 惊 因 为 对 于 我 这 个 使 用 了 C/C 年 的 人 来 说, 它 比 Delphi 更 具 有 吸 引 力 因 此 我 立 刻 在 RUN!PC 上 介 绍 了 这 个 不 可 置 信 的 工 具 果 然,Optima++ 很 快 开 始 风 卷 市 场, 虽 然 没 有 立 刻 占 据 很 大 的 市 场 份 额, 但 是 已 经 造 成 了 一 股 气 势, 开 始 为 Visual C/C++ 和 Delphi 带 来 压 力 我 记 得 当 时 台 湾 Sybase 办 的 产 品 发 表 会 也 吸 引 了 数 百 人 与 会, 不 可 一 世 我 的 文 章 在 RUN!PC 6 上 发 表 之 后, 台 湾 的 Sybase 立 刻 和 我 联 络, 由 当 时 的 余 协 理 和 我 见 面, 也 是 希 望 我 继 续 为 Optima++ 写 文 章, 台 湾 Sybase 也 提 供 额 外 一 字 加 2 元 稿 费 的 待 遇 但 是 我 告 诉 余 协 理,Optima++1.0 虽 然 很 棒, 但 是 仍 然 有 一 些 臭 虫, 而 且 和 中 文 环 境 相 冲 突, 无 法 处 理 中 文, 需 要 立 刻 解 决 这 个 问 题 才 能 够 在 台 湾 的 市 场 成 功 她 答 应 我 立 刻 向 总 公 司 反 应 我 也 老 实 地 告 诉 她, 在 问 题 没 有 解 决 之 前, 我 无 法 写 一 些 不 确 实 的 东 西 后 来 台 湾 Borland 的 总 经 理 方 先 生 也 找 我 去 询 问 有 关 Optima++ 的 事 情, 我 告 诉 他 Optima++ 是 好 东 西, 但 是 中 文 有 问 题 如 果 中 文 问 题 能 够 解 决, 那 么 将 对 Borland 和 Microsoft 的 产 品 有 很 大 的 影 响, 当 时 我 还 不 知 道 Borland 由 于 Optima++ 的 影 响, 已 经 开 始 准 备 开 发 C++Builder 在 1996 年 底 左 右 吧,Optima++1.5 终 于 进 入 Beta 的 阶 段 但 是 在 我 拿 到 Beta 版 时 非 常 失 望, 因 为 中 文 的 问 题 仍 然 没 有 解 决 后 来 台 湾 Sybase 又 找 我 去, 这 次 和 我 见 面 的 是 台 湾 Sybase 总 经 理 郭 俊 男 先 生, 以 及 Sybase 的 新 加 坡 技 术 总 裁, 不 过 我 忘 记 这 位 先 生 的 名 字 了 见 了 面 之 后, 我 立 刻 把 Optima++1.5 中 文 的 问 题 以 及 许 多 的 臭 虫 告 诉 他 们, 希 望 他 们 能 够 解 决, 如 此 Optima++1.5 才 能 够 在 中 文 市 场 成 功 可 是 出 乎 我 意 料 之 外 的 是, 他 们 似 乎 并 不 着 急 这 些 问 题, 反 而 询 问 我 是 否 有 意 愿 为 Sybase 工 作, 做 PowerBuilder 的 产 品 经 理 也 许 是 因 为 我 为 Delphi 写 了 太 多 的 东 西, 让 PowerBuilder 在 台 湾 受 了 很 大 的 影 响, 因 此 他 们 希 望 我 到 Sybase 工 作, 以 打 击 Delphi 并 且 Promote PowerBuilder 当 时 他 们 提 出 的 待 遇 条 件 实 在 是 非 常 非 常 的 诱 人, 比 我 当 时 的 薪 水 高 出 一 倍 左 右 ( 我 当 时 在 资 策 会 工 作 ) 不 过 由 于 我 对 PowerBuilder 实 在 没 有 什 么 兴 趣, 因 此 我 告 诉 他 们, 如 果 是 做 Optima++ 的 产 品 经 理, 那 么 我 将 会 考 虑 并 且 接 受 没 有 想 到,Sybase 的 新 加 坡 技 术 总 裁 告 诉 我 Optima++ 在 1.5 推 出 之 后 就 可 能 会 停 止, 因 为 Sybase 要 把 资 源 移 去 为 当 时 愈 来 愈 红 的 Java 研 发 一 个 新 的 Java RAD 开 发 工 具, 那 就 是 后 来 的 PowerJ 于 是 他 询 问 我 如 果 不 愿 意 做 PowerBuilder 的 产 品 经 理, 那 么 是 不 是 愿 意 做 PowerJ 的 产 品 经 理? 由 于 当 时 我 已 经 知 道 Borland 开 始 了 Open JBuilder 的 研 发, 而 我 对 Open JBuilder 的 兴 趣 远 大 于 PowerJ, 因 此 没 有 答 应 Sybase 果 然, 在 Optima++1.5 推 出 之 后, 不 但 中 文 的 问 题 没 有 解 决,Sybase 之 后 也 没 有 继 续 对 Optima++ 研 发 下 去 Optima++ 一 个 如 此 有 潜 力 的 产 品 就 这 样 消 失 了, 真 是 令 人 遗 憾 Optima++ 应 该 有 很 好 的 机 会 可 以 成 功 的 我 相 信, 如 果 当 时 Sybase 知 道 C++Builder 后 来 的 成 果, 可 能 就 不 会 放 弃 Optima++ 了, 而 C/C++ 的 RAD 工 具 一 直 要 到 后 来 的 C++Builder 来 完 成 这 个 梦 C/C++ 的 开 发 工 具 之 争 到 此 算 是 告 一 段 落 了, 虽 然 后 来 Borland 继 续 推 出 了 Borland
24 C/C++5.0, 但 是 品 质 仍 然 不 够 好, 市 场 反 应 也 不 佳 后 来 Borland 终 于 在 Borland C/C 之 后 宣 布 停 止 此 条 产 品 线 的 开 发,Borland C/C++ 的 光 荣 历 史 也 就 从 此 打 住, 真 是 令 人 不 胜 感 叹, 而 Visual C/C++ 从 此 在 C/C++ 开 发 工 具 市 场 中 再 也 没 有 对 手 不 过 没 有 竞 争 的 市 场 的 确 会 让 人 松 懈, 后 来 的 Visual C/C++ 进 步 的 幅 度 愈 来 愈 小,MFC 也 数 年 没 有 什 么 大 进 步, 不 像 当 时 和 Borland C/C++ 竞 争 时 每 一 个 版 本 都 有 大 幅 的 改 善 看 来 寡 占 的 市 场 的 确 是 不 好 的 第 三 章 传 奇 的 开 始 --Delphi " 是 惊 世 之 作 的 Delphi 让 Borland 重 新 站 了 起 来, 没 有 当 初 的 Delphi, 就 没 有 今 日 的 Borland!" " 是 Turbo Pascal 诞 生 了 Borland, 但 却 是 Object Pascal 给 予 了 Borland 重 生 的 机 会!" 创 造 传 奇 故 事 的 主 角 --Delphi 没 有 人 会 知 道 在 两 年 后 Borland C/C++ 会 遭 遇 到 这 么 大 的 失 败, 也 没 有 人 会 预 料 到 Borland 又 会 再 次 因 为 Pascal 而 东 山 再 起 Borland 奋 斗 史 精 彩 的 地 方 就 在 于 每 当 似 乎 要 不 支 倒 地 之 际,Borland 的 R&D 人 员 就 会 创 造 出 一 个 明 星 级 的 产 品 来 拯 救 Borland 在 其 他 和 Microsoft 对 抗 的 软 件 公 司 纷 纷 消 失 的 时 候,Borland 却 一 次 又 一 次 地 站 了 起 来 " 打 不 死 的 勇 者 " 这 句 话 贴 切 地 形 容 了 Borland 的 韧 性 Borland 靠 Pascal 起 家, 通 过 C/C++ 绽 放 光 芒, 进 而 达 到 了 巅 峰 的 状 态, 随 后 又 再 次 靠 着 Pascal 浴 火 重 生 Borland 这 个 从 C/C++ 跌 倒, 再 通 过 明 星 工 具 Delphi 重 回 战 场 的 过 程 可 以 说 是 惊 心 动 魄, 其 中 更 牵 涉 到 了 Borland 两 位 创 始 人 Philippe Kahn 以 及 Anders Hejlsberg 相 继 离 开 Borland 的 密 闻, 也 激 活 了 Borland 逐 渐 转 型 的 历 史 轮 轴 对 于 Borland 来 说, 这 段 发 展 史 可 以 算 是 非 常 关 键 的 里 程 碑, 更 重 要 的 是, Delphi 的 崛 起 也 在 软 件 工 具 业 界 产 生 了 巨 大 的 影 响 Delphi 不 但 激 活 了 Windows 平 台 上 RAD 战 争 的 序 幕, 开 启 了 Windows 平 台 主 从 架 构 的 改 变, 同 时 也 对 组 件 技 术 做 出 了 巨 大 的 贡 献 直 到 现 在,Delphi 创 造 的 组 件 技 术 仍 然 深 深 地 影 响 了 JavaBeans 以 及.NET 的 组 件 思 想 和 技 术, 这 在 稍 后 的 内 文 中 读 者 可 以 逐 渐 地 了 解 而 故 事 的 起 源 便 在 1993 年 左 右 Delphi 的 发 展 起 源 当 Borland 以 Turbo Pascal 获 得 了 成 功, 并 且 令 Charles Petzold 等 人 跌 破 眼 镜 之 后, 到 了 1992/1993 年 的 Borland Pascal 7.x,Borland 似 乎 已 经 把 传 统 的 Pascal 开 发 工 具 发 展 到 了 极 限, 再 往 下 还 能 做 什 么 呢?Borland Pascal 在 销 售 了 数 百 万 套 之 后, 程 序 语 言 的 焦 点 已 经 从 Pascal 转 移 到 了 C/C++,Borland Pascal 无 法 继 续 快 速 成 长, 进 而 转 入 了 递 减 的 状 况,Borland 必 须 做 些 新 的 东 西 才 能 够 延 续 这 条 产 品 线
25 当 时 Borland Pascal 产 品 的 Architect, 即 Anders Hejlsberg, 眼 看 Microsoft Visual Basic 的 成 功, 觉 得 当 时 Visual Basic 是 比 较 初 级 的 开 发 工 具, 是 一 个 学 习 Windows 程 序 设 计 的 好 工 具, 但 是 尚 无 开 发 真 正 应 用 系 统 的 能 力 因 此,Anders 和 Borland Pascal 的 小 组 决 定 展 开 一 个 规 模 前 所 未 有 的 项 目 计 划, 这 个 开 发 工 具 项 目 在 一 开 始 便 设 定 了 数 个 目 标, 希 望 能 够 达 成 并 且 超 越 Visual Basic 这 些 初 始 的 目 标 是 : 延 续 Borland Pascal 的 传 统, 提 供 一 个 快 速 编 译 的 开 发 环 境 Borland/Turbo Pascal 的 高 明 之 处 便 是 由 Anders 使 用 汇 编 语 言 撰 写 的 Pascal 编 译 器 不 但 编 译 快 速, 而 且 能 够 产 出 极 为 有 效 率 的 机 器 码 当 时 的 Visual Basic 只 是 解 译 器 (Interpreter), 无 法 产 生 真 正 的 执 行 机 器 码, 因 此 在 这 一 方 面 Borland 决 定 要 远 远 地 超 过 VB, 但 是 Borland 的 挑 战 是 要 开 发 出 一 个 编 译 速 度 能 够 媲 美 解 译 器 速 度 的 新 一 代 编 译 器 Anders 另 外 一 个 重 要 的 决 定 便 是 改 善 Borland Pascal 程 序 语 言, 让 这 个 新 的 开 发 工 具 程 序 语 言 具 备 面 向 对 象 的 功 能 这 在 当 时 是 非 常 重 要 的 决 定, 因 为 不 但 需 要 大 幅 修 改 编 译 器, 也 正 式 将 Borland Pascal 超 越 Pascal 之 父 对 Pascal 定 义 的 结 构, 让 Pascal 拥 有 现 代 语 言 最 新 的 功 能 虽 然 这 个 决 定 有 很 大 的 因 素 是 因 为 Borland 决 定 通 过 面 向 对 象 的 方 式 建 立 新 一 代 的 Framework 和 组 件 架 构, 因 此 需 要 程 序 语 言 方 面 的 支 持 不 过, 这 在 当 时 整 个 信 息 界 对 于 面 向 对 象 技 术 还 很 陌 生 的 阶 段, 的 确 是 一 个 很 大 胆 的 决 策 这 个 程 序 语 言 的 决 策 虽 然 可 以 吸 引 专 业 人 士 的 激 赏, 不 过 也 可 能 会 让 许 多 程 序 员 无 法 跨 越 这 个 障 碍 后 来 的 发 展 也 证 明 了 这 一 点 建 立 一 个 新 的 Windows Framework 组 件 架 构 当 时 VB 使 用 的 组 件 是 VBX 不 过 VBX 架 构 非 常 的 复 杂, 只 能 使 用 在 16 位 的 环 境, 并 且 在 可 视 化 拖 曳 设 计 方 面 又 不 是 很 方 便 因 此 Borland 希 望 在 OWL 之 后 建 立 一 个 全 新 的 Framework, 这 个 Framework 能 够 让 程 序 员 快 速 开 发 Windows 应 用 程 序, 并 且 完 整 地 封 装 Windows 操 作 系 统 中 的 对 象 此 外,Borland 也 希 望 定 义 一 个 标 准 的 组 件 架 构, 让 使 用 这 个 开 发 工 具 的 程 序 员 能 够 通 过 Framework 和 组 件 架 构 来 开 发 各 种 组 件, 包 括 可 视 化 和 非 可 视 化 组 件 这 个 Framework 就 是 后 来 的 VCL(Visual Component Library) 在 这 方 面,Borland 做 得 非 常 成 功 如 果 各 位 读 者 有 VBX 的 经 验, 就 会 知 道 当 时,Microsoft 定 义 的 VBX 规 格 简 直 是 一 团 混 乱, 根 本 像 是 拼 凑 出 来 的 东 西 在 当 时 开 发 VBX 组 件 痛 苦 不 堪, 后 来 Microsoft 也 彻 底 放 弃 了 VBX 拖 曳 可 视 化 的 开 发 环 境 Borland 的 想 法 是 开 发 一 个 全 新 的 集 成 开 发 环 境, 在 这 个 开 发 环 境 中 程 序 员 可 以 使 用 可 视 化 的 方 法 拖 曳 Framework 的 组 件 来 设 计 图 形 界 面, 再 在 其 中 的 编 辑 器 中 使 用 面 向 对 象 程 序 语 言 来 撰 写 应 用 程 序 这 个 开 发 工 具 项 目 的 名 称 就 是 :Delphi! Delphi 的 核 心 成 员 在 Delphi 决 定 开 工 之 后,Philippe Kahn 还 不 放 心 动 用 太 多 的 资 源 来 开 发 这 个 产 品, 因 为 当 时 Borland 正 集 中 所 有 的 资 源, 希 望 能 够 打 赢 C/C++ 开 发 工 具 一 役 因 此 Philippe Kahn
26 一 开 始 只 答 应 拨 给 Anders 四 个 开 发 人 员, 先 进 行 产 品 雏 型 的 开 发 工 作 因 此,Delphi 在 当 时 被 笑 称 为 像 Apple 计 算 机 一 样, 是 在 地 下 室 开 发 的 当 时 加 入 Delphi 开 发 小 组 的 当 然 就 包 含 了 Anders, 第 二 人 是 Chuck Jazdzewski 其 中 Anders 负 责 撰 写 新 的 Object Pascal 编 译 器 以 及 核 心 程 序, 而 Chuck 则 负 责 设 计 Delphi 使 用 的 组 件 Framework, 即 VCL 在 经 过 了 6 个 月 的 初 始 雏 型 阶 段 之 后, 当 Anders 把 开 发 的 结 果 呈 现 给 Philippe Kahn 看 时,Philippe 立 刻 被 它 所 吸 引 因 为 当 时 在 Borland 内 部 也 希 望 为 Borland C/C++ 开 发 一 个 类 似 这 样 能 够 以 可 视 化 拖 曳 方 式 开 发 应 用 系 统 的 C/C++ 开 发 工 具 没 有 想 到 在 短 短 不 到 一 年 的 时 间 内,Anders 已 经 从 基 本 的 构 想 开 发 出 了 雏 型 产 品 于 是 Philippe 马 上 批 准 了 这 个 产 品 的 开 发 计 划, 并 且 投 入 研 发 资 源 许 多 后 来 举 足 轻 重 的 人 才 便 是 从 开 发 Delphi 项 目 培 养 出 来 的 当 时 在 这 个 项 目 中, 各 个 重 要 的 部 分 分 别 由 下 面 的 重 要 人 员 负 责 : Anders Hejlsberg: 编 译 器,Object Pascal 程 序 语 言, 产 品 架 构 Chuck Jazdzewski:Framework, 组 件 架 构 设 计 / 实 现 Allen Bauer: 集 成 开 发 环 境 的 开 发 工 具,Open Tools API Danny Thorpe:RTL (Run-Time Library) Zack Urlocker: 产 品 开 发 方 向, 产 品 规 划 有 兴 趣 的 读 者 可 以 打 开 下 面 的 链 接, 这 篇 文 章 是 由 Danny Thorpe( 现 在 是 Borland.NET 的 Architect) 撰 写 的, 详 细 地 说 明 了 Delphi 这 个 名 称 的 由 来 以 及 开 发 的 缘 由 而 批 准 Delphi 的 开 发, 则 是 Philippe Kahn 在 因 为 Borland 营 运 不 佳 而 辞 去 Borland CEO 之 前 做 出 的 最 重 要 而 且 正 确 的 决 策 没 有 Philippe Kahn 的 同 意, 便 不 会 有 两 三 年 后 浴 火 重 生 的 Borland 大 规 模 的 开 发 行 动 和 Philippe Kahn 的 下 台 在 Borland 如 火 如 荼 地 进 行 C/C++ 最 后 决 战 的 同 时,Delphi 也 在 快 速 的 开 发 之 中 1994 下 半 年,Delphi 1.0 几 乎 已 经 开 发 完 毕, 最 后 剩 下 的 工 作 就 是 Beta 测 试 的 阶 段 同 年,Borland 决 定 为 Delphi 展 开 一 项 从 未 进 行 的 尝 试 计 划, 因 为 Borland 对 于 Delphi 信 心 满 满 这 个 计 划 就 是 为 Delphi 进 行 前 所 未 有 的 大 规 模 测 试, 以 确 保 Delphi 的 品 质, 避 免 重 蹈 Borland C/C++ 发 生 的 覆 辙 Borland 为 Delphi 发 出 了 成 千 上 万 的 测 试 版 本, 邀 请 了 广 大 的 程 序 员 为 Delphi 进 行 长 期 的 测 试 这 可 是 空 前 绝 后 的, 因 为 自 Delphi 1.0 之 后 Borland 再 也 没 有 任 何 的 产 品 能 够 拥 有 这 种 气 魄 和 规 模 我 记 得 在 1994 年 底 左 右, 收 到 了 来 自 当 时 Borland 台 湾 产 品 经 理 张 书 良 先 生 寄 来 的 神 秘 圣 诞 节 礼 物 当 时 打 开 包 裹 一 看, 是 六 七 片 磁 盘, 没 有 任 何 的 文 件 和 说 明 张 书 良 先 生 请 我 安 装 看 看 这 个 " 东 西 ", 并 且 请 提 供 一 点 意 见 在 安 装 了 这 些 " 磁 盘 " 之 后, 映 入 眼 帘 的 是 一 个 陌 生 的 软 件 " 这 是 什 么 啊?" 这 是 我 当 时 的 第 一 个 想 法 后 来 玩 玩 此 软 件, 发 现 乖 乖 不 得 了 不 但 大 部 分 的 Windows 对 象 都 可 以 拉 拉 就 产 生 程 序 代 码, 更 绝 的 是 编 译 应 用 程 序 的 速 度 比 使 用 Borland C/C++ 的 编 译 器 快 了 数 十
27 倍, 而 且 产 生 的 是 一 个 体 积 不 大 的 原 生 EXE 文 件, 执 行 速 度 更 是 媲 美 C/C++ 的 程 序 代 码 这 让 我 这 个 惯 用 C/C++ 的 程 序 员 当 场 傻 眼 " 这 怎 么 可 能?" 在 我 发 出 呓 语 般 的 声 音 之 后, 旁 边 的 同 事 也 觉 得 怪 怪 的, 于 是 一 个 一 个 地 跑 到 我 的 计 算 机 旁, 看 看 我 到 底 在 做 什 么? 其 中 当 然 包 括 了 Delphi 学 习 手 册 的 作 者 也 是 笔 者 的 好 友 李 增 坤 先 生 在 大 家 玩 了 之 后, 每 个 人 都 急 着 拷 贝 我 的 Delphi Beta 版 以 便 回 家 继 续 玩 后 来 李 增 坤 先 生 更 是 玩 得 出 神 入 化, 还 能 够 让 Delphi 连 接 到 当 时 相 当 封 闭 的 Informix 数 据 库 ( 因 为 他 们 的 开 发 小 组 是 使 用 Informix 的 ), 真 是 厉 害 他 是 我 所 知 的 第 一 个 Delphi 好 手 " 这 绝 对 是 一 个 Super Star!", 当 时 我 这 样 对 张 书 良 先 生 说 " 真 的? 那 么 你 可 不 可 以 在 杂 志 上 帮 Borland 写 一 些 介 绍 它 的 文 章?" 张 书 良 先 生 对 我 这 么 说 就 是 因 为 这 段 对 话, 让 我 开 始 和 Delphi 结 下 了 不 解 之 缘 至 于 我 开 始 写 Delphi 书 籍 的 缘 由 也 是 无 心 插 柳 造 成 的 在 台 湾 Borland 准 备 力 推 Delphi 1.0 之 际, 张 书 良 先 生 准 备 亲 自 下 海, 也 亲 自 出 面 找 到 了 旗 标 出 版 社 合 作 出 书, 以 推 广 Delphi 后 来 由 于 张 先 生 工 作 太 忙, 因 此 又 找 了 我 和 李 增 坤 先 生 帮 忙 本 来 的 约 定 是 我 和 李 增 坤 先 生 只 负 责 一 小 部 分, 其 他 的 部 分 都 由 张 先 生 完 成 没 有 想 到, 签 约 之 后 张 书 良 先 生 完 全 没 有 时 间 投 入, 因 此 只 好 由 我 和 李 增 坤 先 生 完 成 Delphi 1.0 学 习 手 册 由 于 我 和 李 增 坤 先 生 以 前 没 有 写 书 的 经 验, 投 入 撰 写 书 籍 的 时 间 也 不 多, 因 此 Delphi 1.0 学 习 手 册 是 台 湾 所 有 有 关 Delphi 1.0 书 籍 中 最 晚 出 的 一 本 书, 远 远 超 过 当 时 我 们 规 划 的 时 程 好 在 当 时 Delphi 1.0 的 气 势 简 直 如 星 火 燎 原 般 的 炙 手 可 热, 因 此 这 本 书 还 是 卖 得 不 错 的 1995 年 对 于 Borland 来 说 是 悲 喜 交 加 的 一 年 1995 年 1 月 11 日,Philippe Kahn 正 式 因 为 经 营 不 善 而 辞 去 Borland CEO 的 职 位, 不 过 Philippe Kahn 仍 然 是 Borland 董 事 会 的 成 员 之 一 接 任 的 Gary Wetsel 的 任 务 是 大 幅 删 减 Borland 的 员 工 数, 开 始 进 行 瘦 身 计 划 因 为 当 时 Borland 的 员 工 数 是 为 营 收 500M 美 金 的 Borland 所 打 造 的, 但 是 在 1995 年 Borland 的 营 收 已 经 下 滑 为 不 及 200M 美 金 的 公 司, 而 且 一 直 在 亏 损 之 中, 当 时 许 多 业 界 人 土 都 认 为 Borland 已 经 撑 不 过 1995 年 不 过 1995 年 2 月 14 日 的 情 人 节 似 乎 一 夜 之 间 改 变 了 Borland 的 命 运 一 炮 而 红 的 Delphi 年 2 月 14 日, 是 Borland 永 远 会 记 得 的 日 子, 因 为 这 一 天 是 Delphi 正 式 诞 生 的 日 子, 也 是 Borland 扭 转 命 运 的 转 折 点 由 于 Delphi 先 前 大 规 模 的 Beta 测 试 计 划 已 经 在 全 球 吸 引 了 极 大 的 兴 趣 和 好 评, 信 息 业 界 也 知 道 了 Borland 正 准 备 推 出 一 个 跨 时 代 的 新 开 发 工 具 产 品 当 然, 更 重 要 的 是 全 信 息 界 也 都 在 静 观, 这 个 产 品 是 否 真 的 好 到 能 够 拯 救 Borland 免 于 破 产 或 是 被 并 购 的 命 运 决 定 生 与 死 的 日 子 终 于 在 这 一 天 揭 晓 1995 年 2 月 14 日, 也 就 是 Borland 在 全 球 发 表 Delphi 1.0 当 天, 我 在 Scott Valley 会 见 了 当 时 的 Delphi 主 舵 手, 产 品 经 理 Lance Devin 先 生 Lance 是 一 位 非 常 亲 切 有 活 力 的 人 Delphi 在 他 的 主 掌 之 下, 立 刻 在 全 球 吸 引 了 所 有 的 焦 点, 当 时 媒 体 甚 至 称 Delphi l.0 是 VBK(Visual Basic Killer)
28 Delphi 1.0 发 表 之 后, 立 刻 造 成 了 全 球 的 狂 卖 由 于 Borland 并 没 有 预 料 到 Delphi 的 反 应 会 如 此 的 好, 因 此 一 时 造 成 了 Delphi 的 全 球 大 缺 货 Borland 从 Borland C/C++3.1 之 后 已 经 很 久 没 有 享 受 过 这 么 美 好 的 滋 味 了 在 台 湾, 由 于 早 已 预 料 到 Delphi 将 会 是 一 个 成 功 的 产 品, 因 此, 台 湾 几 乎 和 美 国 同 一 时 间 发 表 了 Delphi 1.0 而 且 台 湾 Borland 不 惜 血 本, 直 接 从 美 国 空 运 了 少 数 的 Delphi, 而 台 湾 能 够 取 得 的 Delphi 的 数 量 也 只 是 从 美 国 抢 破 头 才 拿 到 的 少 量 货 台 湾 Borland 是 在 信 义 路 的 震 旦 行 2 楼 会 议 室 发 布 Delphi 的 当 天 整 个 会 议 室 几 乎 被 塞 爆 了, 因 为 有 太 多 急 于 想 一 睹 Delphi 庐 山 真 面 目 的 软 件 人 员 我 还 清 楚 地 记 得 在 发 布 会 结 束 之 后, 会 议 室 的 门 口 排 满 了 抢 购 Delphi 的 人 潮 很 快, 所 有 的 Delphi 都 被 抢 光 了 记 得 当 时 李 匡 正 先 生 没 有 抢 到 Delphi 1.0, 一 直 到 2 个 多 礼 拜 之 后 才 取 得 而 我 呢? 很 幸 运 的 是 在 Delphi 1.0 发 表 之 前, 张 书 良 先 生 就 已 经 送 了 一 套 正 式 的 Delphi 1.0 Client/Server 版 让 我 玩 当 然 我 也 迫 不 及 待 地 把 Delphi 介 绍 给 我 当 时 的 老 板, 希 望 我 们 的 软 件 包 能 够 赶 快 使 用 Delphi 来 写 Windows 的 版 本, 但 是 我 的 老 板 还 是 坚 持 使 用 Visual Basic 来 写 后 来 我 就 离 开 这 家 公 司, 找 寻 愿 意 使 用 Delphi 开 发 的 软 件 公 司 当 时 Delphi 在 台 湾 书 市 造 成 的 旋 风 真 可 用 " 洛 阳 纸 贵 " 来 形 容, 任 何 和 Delphi 1.0 有 关 的 书 籍 都 立 刻 大 卖, 看 得 每 一 个 出 版 社 都 眼 红 不 已 我 也 还 记 得 当 时 第 一 本 Delphi 1.0 的 书 是 由 波 全 出 版 社 推 出 的 根 据 台 湾 最 有 名 的 天 珑 书 局 老 板 彭 先 生 说, 最 热 门 的 时 候 一 天 几 乎 可 卖 500 本 的 数 量 我 想 这 一 本 Delphi 书 籍 应 该 是 台 湾 有 史 以 来 销 量 最 好 的 Delphi 书 了, 估 计 当 时 这 本 波 全 的 书 有 数 万 本 的 销 量 更 夸 张 的 是 后 来 我 居 然 在 天 珑 书 局 看 到 由 2 本 影 印 的 合 集 Delphi 书 籍, 由 塑 料 套 包 起 来, 要 价 是 "1500" 块 台 币, 居 然 也 很 快 卖 完, 真 是 令 人 不 可 思 议 这 即 使 不 是 绝 后, 也 绝 对 是 空 前 的 Delphi 1.0 的 成 功 也 许 早 在 信 心 满 满 的 Anders 的 预 料 之 中, 看 看 下 面 在 Delphi 1.0 中 秘 密 内 藏 的 Easter Egg 中,Anders 笑 得 如 此 的 灿 烂 似 乎 就 已 经 预 见 了 Delphi 光 明 的 未 来 Delphi 1.0 有 多 成 功 呢? 根 据 非 正 式 的 统 计,Delphi 1.0 当 时 在 全 球 狂 卖 了 50 多 万 套, 这 实 在 是 一 个 惊 人 的 数 字 读 者 如 果 没 有 什 么 概 念 的 话, 那 么 我 可 以 举 一 些 例 子 来 比 较 一 下 Borland 最 成 功 的 Borland/Turbo C/C++ 系 列 卖 到 了 3.1 最 巅 峰 的 时 候, 全 球 的 销 量 才 超 过 100 多 万 套, 这 可 是 累 积 了 数 年 数 个 版 本 后 才 达 到 的 套 数 而 Delphi 一 个 版 本 就 到 达 了 C/C++ 几 乎 一 半 的 销 量, 从 这 就 可 以 知 道 当 时 Delphi 有 多 成 功 了 Delphi 1.0 的 大 卖, 立 刻 拯 救 了 财 务 困 难 的 Borland Delphi 的 收 入 不 但 让 Borland 立 刻 再 投 入 更 多 的 资 源 到 Delphi 开 发 小 组, 以 准 备 下 一 个 版 本 的 开 发, 也 让 当 时 Borland 内 部 的 Latte( 就 是 后 来 的 JBuilder) 小 组 获 得 了 更 多 的 研 发 资 源, 成 就 了 数 年 后 JBuilder 再 次 接 棒 ; 把 Borland 推 向 另 一 个 高 峰 再 见 了,Borland 创 始 人,Philippe Kahn 1995 下 半 年,Borland 发 生 了 一 件 重 大 的 事 情, 那 就 是 Philippe Kahn 正 式 被 逐 出 他 一 手 创 建 的 Borland 这 真 是 令 人 震 惊 又 难 过 的 事 情, 相 信 许 多 关 心 Borland 的 读 者 都 知 道 这 件 事 情 但 是 为 什 么 Philippe Kahn 会 被 踢 出 Borland 董 事 会 又 离 开 Borland 呢? 这 可 是 一 个
29 秘 密 事 情 都 是 从 Philippe Kahn 辞 下 Borland 的 CEO 后 开 始 发 生 的 在 Philippe Kahn 被 逼 下 CEO 之 后, 他 觉 得 Borland 的 一 些 开 发 方 向 他 并 不 是 很 认 同, 因 此 在 外 面 又 开 了 一 家 新 的 公 司 StarFish, 从 Borland 买 走 了 SideKick DashBoard 等 产 品, 并 且 开 始 研 发 移 动 和 无 线 等 方 面 的 软 件 1995 年 Java 兴 起 之 后,Philippe Kahn 觉 得 Java 很 有 前 途, 并 且 希 望 结 合 Java 以 及 移 动 和 无 线 软 件 技 术 其 时 Borland 内 部 也 在 开 始 研 发 Java 的 产 品, 包 含 了 代 号 是 Latte 的 Java 开 发 工 具 以 及 Java 的 JIT 编 译 器 等 技 术 而 Borland 没 有 预 料 到, 由 于 Java 的 萌 萌 芽 竟 会 造 成 Philippe Kahn 和 Anders 的 离 开 以 及 Borland Visual dbase 小 组 的 解 体 话 说 在 Borland 于 Java 方 面 逐 渐 有 了 成 果 之 后,Philippe Kahn 的 StarFish 公 司 也 开 始 步 上 轨 道 1995 年,Philippe Kahn 眼 看 Borland 内 部 Java 的 人 才 素 质 精 良, 于 是 就 开 始 想 挖 一 些 好 手 到 自 己 的 StarFish 公 司 在 Philippe Kahn 的 挖 角 动 作 愈 来 愈 大 之 后,Borland 的 董 事 会 终 于 无 法 忍 受 Philippe Kahn 这 种 挖 Borland 墙 角 的 做 法 于 是,Borland 的 董 事 会 成 员 一 致 投 票 决 定, 将 Philippe Kahn 逐 出 Borland 的 董 事 会 和 Borland 这 对 于 Philippe Kahn 是 一 个 极 为 重 大 的 打 击,Philippe Kahn 被 迫 离 开 了 他 一 手 创 办 和 心 爱 的 Borland 即 使 后 来 Philippe Kahn 的 StarFish 经 营 得 不 错, 以 致 后 来 由 Motorola 以 数 千 万 美 金 并 购 了 StarFish, 让 Philippe Kahn 大 大 地 赚 了 一 笔, 但 是 他 仍 然 无 法 释 怀, 也 永 远 无 法 忘 记 Borland 给 他 的 成 功 光 荣 骄 傲 和 屈 辱 虽 然 Philippe Kahn 一 直 想 像 苹 果 计 算 机 的 Steve Jobs 一 样 有 朝 一 日 能 够 重 返 Borland, 但 是, 很 显 然 Philippe Kahn 没 有 Steve Jobs 那 样 的 运 气,Philippe Kahn 一 直 无 法 完 成 这 个 愿 望 Anders 的 计 划 以 及 Zack 的 想 法 在 Delphi 1.0 大 获 成 功 如 日 中 天 之 后, 雄 心 勃 勃 的 Anders 立 刻 开 始 了 下 一 版 Delphi 的 开 发 计 划 此 时 Delphi 研 发 小 组 的 资 源 更 多, 因 此 可 以 做 更 多 的 东 西 不 过, 在 1995 年 Delphi 1.0 推 出 之 后, 信 息 业 界 有 了 几 项 重 要 的 改 变, 那 就 是 随 着 Microsoft Windows 95 的 成 功, 企 业 使 用 Windows 平 台 开 发 应 用 系 统 已 经 成 为 既 定 的 趋 势, 再 加 上 当 时 数 据 库 市 场 的 快 速 发 展, 因 此 许 多 企 业 开 始 在 Windows 平 台 寻 找 Client/Server 的 解 决 方 案 正 由 于 这 些 需 求 快 速 而 大 量 的 兴 起, 造 成 了 当 时 PowerBuilder 和 Gupta 这 两 个 主 从 架 构 开 发 工 具 的 盛 行 当 时,PowerBuilder 是 Window 平 台 下 占 有 率 超 过 50% 的 主 从 架 构 开 发 工 具, 而 Gupta 则 拥 有 超 过 30% 的 市 场 这 真 是 可 怕, 因 为 光 是 两 个 工 具 就 占 据 了 80% 多 的 市 场 由 于 当 时 主 从 架 构 几 乎 由 这 两 个 工 具 所 寡 占, 因 此,PowerBuilder 和 Gupta 的 价 格 相 当 昂 贵, 我 记 得 当 时 一 套 PowerBuilder 要 价 40 几 万 新 台 币, 而 Gupta 也 要 30 几 万, 真 是 令 人 无 法 相 信 在 Microsoft 方 面, 由 于 Delphi 1.0 的 成 功, 给 了 VB 相 当 大 的 压 力 因 此 Microsoft 在 Delphi 1.0 推 出 之 后 立 刻 也 推 出 VB 4.0 正 面 迎 战 VB 4.0 强 调 的 重 点 是 VB 应 用 程 序 也 可 以 编 译 成 可 执 行 文 件, 不 过, 由 于 VB 4.0 的 编 译 器 品 质 尚 不 成 熟, 编 译 出 来 的 效 果 并 不 好 再 加 上 它 的 臭 虫 非 常 多, 因 此 VB4.0 算 是 一 个 相 当 不 成 功 的 产 品 正 由 于 这 些 因 素, 在 当 时 也 传 出 了 VB 双 数 版 本 品 质 不 如 奇 数 版 好 的 传 闻 不 过, 在 当 时 由 于 PowerBuilder 和 Gupta 的 获 利 非 常 丰 富, 而 Microsoft 也 看 到 了 主 从 架 构 将 会 是 未 来 数 年 重 要 的 信 息 架 构, 因 此 VB
30 4.0 开 始,Microsoft 也 开 始 逐 渐 为 VB 加 入 更 多 开 发 数 据 库 以 及 主 从 架 构 的 能 力, 并 且 搭 配 Microsoft 的 ODBC 规 格 向 主 从 架 构 市 场 进 攻 Anders 在 Delphi 1.0 成 功 之 后, 曾 经 接 受 媒 体 的 访 问, 叙 述 他 心 中 的 Delphi 2.0 想 做 的 功 能 当 时 Anders 就 说 他 希 望 为 Delphi 加 入 Garbage Collection 的 功 能, 因 为 Object Pascal 在 建 立 对 象 方 面 是 使 用 Heap-Based 的 方 式, 因 此 为 了 减 少 Delphi 程 序 员 可 能 发 生 的 错 误 并 简 化 Delphi 程 序 代 码 的 撰 写, 他 希 望 加 入 Garbage Collection 现 在 的 Microsoft 的.NET 就 内 建 了 Garbage Collection 的 功 能, 而 这 个 想 法 在 7 年 前 便 已 经 存 在 于 Anders 的 脑 中 了 除 了 Garbage Collection 之 外,Anders 也 想 为 Delphi 加 入 更 多 Stack-Based 的 能 力 ( 是 巧 合 吗?.NET 的 IL 也 是 Stack-Based 的 语 言 ), 并 且 持 续 地 改 善 Delphi 的 编 译 器, 加 入 更 多 的 编 译 器 最 佳 化 功 能, 让 Delphi 的 程 序 代 码 执 行 速 度 能 够 超 越 C/C++ 从 Anders 的 想 法 中, 读 者 应 该 可 以 感 觉 到 Anders 想 做 的 都 是 属 于 比 较 语 言 系 统 和 低 阶 方 面 影 响 层 面 较 大 的 功 能 但 是, 由 于 信 息 市 场 是 逐 渐 走 向 主 从 架 构, 因 此 Zack Urlocker 等 人 则 希 望 Delphi 2.0 能 够 在 主 从 架 构 方 面 进 行 大 幅 的 强 化, 再 搭 配 Borland 力 倡 的 BDE/IDAPI 技 术, 以 便 和 PowerBuilder/Gupta 等 竞 争, 进 入 获 利 较 为 丰 富 的 工 具 市 场, 这 是 第 一 次 Anders 和 Zack 意 见 分 歧 的 时 间 点 后 来 Delphi 研 发 小 组 达 成 了 共 识, 那 就 是 下 一 个 版 本 的 Delphi 将 由 Anders 在 编 译 器 方 面 主 导, 为 Delphi 开 发 一 个 真 正 的 32 位 编 译 器, 而 且 具 备 最 佳 化 的 功 能 ( 因 为 Delphi 1.0 是 16 位 的 开 发 工 具 ) 但 是 Delphi 2.0 也 将 大 幅 加 入 主 从 架 构 的 功 能, 并 且 通 过 BDE/IDAPI 提 供 连 接 各 种 RDBMS 的 驱 动 程 序, 再 由 Chuck 改 善 VCL 架 构, 提 供 更 为 强 劲 的 数 据 感 知 组 件 能 力, 让 Delphi 2.0 正 式 具 备 和 PowerBuilder/Gupta 竞 争 的 本 钱 这 也 埋 下 了 日 后 PowerBuilder/Gupta 这 两 个 工 具 备 受 VB 和 Delphi 强 大 的 压 力 终 至 快 速 衰 退 的 命 运 由 于 Delphi 2.0 开 始 确 定 走 向 主 从 架 构 和 具 备 开 发 大 型 系 统 能 力 的 方 向, 因 此 Anders 没 有 多 余 的 资 源 可 以 实 现 他 的 理 想, 再 加 上 和 Zack 在 产 品 发 展 方 面 日 渐 出 现 歧 见, 这 些 都 是 间 接 造 成 日 后 Anders 离 开 Borland 的 因 素 Delphi 2.0, 进 入 32 位 世 界 的 开 发 工 具 在 Anders 完 成 了 Delphi 32 位 的 编 译 器 而 且 BDE/IDAPI 小 组 也 实 现 更 多 连 接 RDBMS 的 驱 动 程 序 之 后,Delphi 2.0 便 已 经 准 备 好 出 征 了 Delphi 2.0 在 推 出 之 后 果 然 也 非 常 成 功, Anders 亲 手 打 造 的 32 位 编 译 器 不 但 编 译 速 度 奇 快, 编 译 出 的 应 用 程 序 品 质 更 是 无 话 可 说 在 当 时,Delphi 2.0 产 生 的 执 行 程 序 代 码 屡 获 专 业 媒 体 和 实 验 室 的 评 比 大 奖, 尤 其 在 整 数 运 算 方 面, 更 是 比 VC++ 执 行 得 还 好 在 一 般 应 用 程 序 方 面, 也 和 VC++ 的 程 序 代 码 不 相 上 下 整 体 来 说, 只 有 在 浮 点 数 方 面 落 后 VC++ 这 也 是 后 来 Borland 编 译 器 小 组 和 Anders 激 活 Borland 下 一 代 编 译 器 项 目 的 原 因 之 一, 目 的 是 为 C++Builder 和 Delphi 开 发 一 个 共 享 的 后 端 最 佳 化 编 译 器 不 过 很 可 惜 的 是,Anders 稍 后 离 开 了 Borland, 没 有 参 与 完 成 这 个 最 佳 化 编 译 器, 否 则 Borland 的 编 译 器 应 该 会 比 现 在 更 具 威 力 Delphi 2.0 如 同 Delphi l.0 一 样 大 获 成 功, 因 为 当 时 许 多 想 在 Windows NT 下 开 发 纯 32
31 位 应 用 系 统 的 程 序 员 都 愿 意 使 用 Delphi 2.0, 更 不 用 说 一 些 企 业 的 开 发 者, 在 不 愿 意 忍 受 PowerBuilder/Gupta 等 使 用 脚 本 语 言 执 行 应 用 程 序 的 缓 慢 情 形 下, 许 多 PowerBuilder/Gupta 使 用 者 都 转 而 使 用 Borland 的 Delphi, 这 是 Borland 继 当 初 Borland C/C++3.1 之 后 再 次 打 入 企 业 市 场 Delphi 2.0 和 Delphi 1.0 的 总 销 量 也 超 过 了 一 百 万 套 在 全 球 的 市 场 中,Delphi 在 欧 洲 亚 洲 和 中 南 美 洲 都 非 常 的 成 功, 反 而 在 北 美 的 市 场 表 现 平 平 由 于 Delphi 表 现 得 非 常 抢 眼, 给 予 了 VB 和 PowerBuilder 巨 大 的 压 力, 因 此 Microsoft 和 Sybase 在 Delphi 2.0 推 出 之 后, 也 纷 纷 地 准 备 推 出 VB 5.0 和 PowerBuilder 6.0, 正 式 揭 开 了 RAD 工 具 最 后 的 生 死 战 在 Delphi 2.0 顺 利 推 出 之 后, 很 不 幸 的 是 Lance 也 离 开 了 Borland 接 手 Delphi 产 品 经 理 的 是 Ben Riga 要 怎 么 说 这 位 加 拿 大 的 仁 兄 呢?Ben Riga 也 是 很 亲 切 的 人, 但 是 我 当 时 向 他 建 议 的 许 多 Delphi 发 展 方 向, 这 位 仁 兄 都 没 有 反 映 在 Delphi 的 产 品 中 例 如 我 在 3.0 时 便 强 烈 建 议 Delphi 应 该 在 Web 方 面 投 入 更 多 的 努 力, 在 Delphi 中 实 现 类 似 当 时 IntraBuilder 的 能 力, 提 供 可 视 化 的 方 式 开 发 Web 应 用 系 统, 也 就 是 像 现 今 的 Developer Express 的 ExpressWeb Objects 组 件 组, 或 是 IntraWeb 组 件 组 如 果 在 当 时 的 Delphi 3 或 是 Delphi 4 便 能 够 有 这 种 组 件 组, 那 么 Delphi 的 Web 能 力 将 是 No.1, 更 不 用 说 对 于 Delphi 的 销 量 会 有 多 大 的 帮 助 可 惜 笔 者 人 微 言 轻,Ben 并 没 有 把 这 个 重 要 的 功 能 放 人 Delphi 的 产 品 开 发 规 格 中 一 直 到 现 在,Delphi 6/7 才 认 真 地 考 虑 这 个 需 要, 虽 然 时 间 已 经 晚 了, 但 是 如 果 真 的 做 得 好 的 话, 也 比 没 有 好 RAD 殊 死 战 在 Delphi 和 VB 相 继 进 入 主 从 架 构 的 世 界 之 后, 便 和 PowerBuilder 有 了 更 激 烈 的 竞 争 在 Delphi 2.0 出 版 之 后,PowerBuilder 面 临 了 更 大 的 挑 战 因 为 VB 在 易 于 使 用 和 Microsoft 的 努 力 之 下 仍 然 呈 现 成 长 的 趋 势, 但 是 PowerBuilder 在 许 多 场 合 却 是 直 接 和 Delphi 竞 争 在 Delphi 2.0 推 出 之 后,Borland 也 很 快 查 觉 到 许 多 Delphi 的 使 用 者 是 从 PowerBuilder 转 来 的, 于 是 当 时 Borland 内 部 便 拟 定 了 置 换 PowerBuilder 计 划, 希 望 能 够 持 续 从 PowerBuilder 手 中 抢 得 更 多 的 市 场 占 有 率 Delphi 2.0 的 纯 32 位 编 译 器 以 及 执 行 速 度 一 直 是 许 多 人 喜 欢 的, 这 也 对 PowerBuilder 带 来 了 压 力, 因 为 许 多 PowerBuilder 的 使 用 者, 特 别 是 软 件 公 司 对 于 PowerBuilder 使 用 的 语 言 PowerScript 执 行 缓 慢 而 不 悦, 但 是 却 喜 欢 PowerBuilder 的 DataWindow 因 此 在 当 时 Sybase 便 宣 告 将 为 PowerBuilder 开 发 一 个 编 译 器, 以 增 加 PowerBuilder 应 用 程 序 的 执 行 速 度 不 过 Sybase 并 没 有 在 Delphi 2.0 之 后 的 PowerBuilder 5.0 实 现 出 来, 一 直 要 到 PowerBuilder 6.0 才 推 出 PowerBuilder 编 译 器, 不 过 问 题 仍 然 多 多 当 时 我 曾 经 仔 细 地 观 察 台 湾 参 加 Delphi 发 布 会 的 使 用 者 以 及 参 加 PowerBuilder 的 使 用 者, 发 现 了 一 个 很 有 趣 的 现 象, 那 就 是 一 开 始 参 加 Delphi(1.0/2.0) 的 使 用 者 几 乎 都 是 工 程 师, 很 少 有 DB Center 的 信 息 人 员 或 是 信 息 经 理 而 去 PowerBuilder 的 使 用 者 则 甚 少 工 程 师, 大 部 分 都 是 穿 着 体 面 的 DB Center 的 信 息 人 员 或 是 信 息 经 理 不 过 这 个 情 形 在 Delphi 2.0 之 后 逐 渐 改 变, 因 为 当 Delphi 慢 慢 地 被 企 业 接 受 成 为 开 发 工 具 之 后, 也 有 愈 来 愈 多 的 信 息 主 管 人 员 出 现 在 Delphi 的 发 布 会 中
32 下 图 是 我 早 在 1999 年 便 绘 制 的 资 料, 从 这 个 Slide 中 读 者 可 以 发 现 Delphi VB 和 PowerBuilder 的 竞 争 是 一 个 版 本 对 应 一 个 版 本 的 每 当 竞 争 对 手 推 新 的 版 本 之 后, 另 外 的 竞 争 对 手 都 会 立 刻 推 出 相 对 应 的 竞 争 版 本 但 是 在 Delphi 2.0 之 后,PowerBuilder 便 开 始 逐 渐 无 法 同 步 跟 上 Delphi 和 VB 的 竞 争 脚 步, 差 距 也 愈 拉 愈 大 基 本 上 Delphi VB 和 PowerBuilder 的 竞 争 在 Delphi 2.0 时 期 是 最 为 激 烈 的, 在 Delphi 3.0 和 VB 5.0 之 后 大 势 已 定 PowerBuilder 已 经 定 位 成 数 据 库 开 发 工 具, 无 法 像 Delphi 和 VB 一 样 成 为 Windows 平 台 中 通 用 的 开 发 工 具 因 此 PowerBuilder 的 使 用 者 群 组 便 逐 渐 缩 减 到 DB Center 或 是 信 息 室 的 使 用 者 这 个 现 象 当 时 在 台 湾 非 常 的 明 显, 因 为 大 多 数 的 软 件 开 发 厂 商 软 件 包 厂 商 或 是 项 目 厂 商 逐 渐 地 舍 弃 PowerBuilder, 不 是 选 择 使 用 VB 就 是 选 择 使 用 Delphi 在 Delphi 3.0 之 后,Windows 平 台 的 主 从 架 构 开 发 工 具 市 场 已 经 是 VB 第 1,Delphi 第 2, 而 PowerBuilder 退 到 第 3, 并 且 和 Delphi/VB 的 差 距 愈 来 愈 大 经 过 了 3 年 的 激 斗, 传 统 主 从 架 构 开 发 工 具 PowerBuilder 和 Gupta 仍 然 不 是 Microsoft 和 Borland 的 对 手, 即 使 PowerBuilder 曾 经 拥 有 超 过 世 界 50% 的 占 有 率 当 初 Sybase 也 没 有 预 料 到 在 并 购 了 PowerBuilder 之 后, 这 么 快 就 损 失 了 大 片 的 江 山 不 过 比 起 Oracle 和 Informix 来 说,Sybase 下 的 本 钱 还 是 比 较 划 算 的, 因 为 同 时 竞 争 的 Oracle Developer 2000 早 已 只 能 送 给 Oracle 数 据 库 的 使 用 者 而 Informix 的 主 从 架 构 开 发 工 具 Neon 更 是 凄 惨, 在 出 了 一 个 版 本 之 后, 由 于 体 积 庞 大, 执 行 缓 慢, 又 臭 虫 成 堆, 还 没 上 场 竞 争, 就 被 丢 人 垃 圾 桶 了 这 对 当 时 所 有 投 入 大 量 资 源 开 发 主 从 架 构 开 发 工 具 的 软 件 厂 商 来 说, 都 是 受 伤 不 轻, 当 然 除 了 Borland 和 Microsoft 之 外 PowerBuilder 和 Gupta 数 年 辛 辛 苦 苦 建 立 起 来 的 主 从 架 构 王 国, 只 经 过 短 短 的 1 2 年 就 被 VB 和 Delphi 所 鲸 吞 蚕 食 是 有 许 多 原 因 的 PowerBuilder 和 Gupta 着 重 在 高 价 专 有 的 主 从 架 构 市 场, 却 不 知 主 从 架 构 已 经 逐 渐 成 为 一 般 信 息 架 构 应 用 主 流, 大 量 的 程 序 员 需 要 的 是 价 格 合 理 功 能 齐 全 的 开 发 工 具 PowerBuilder 和 Gupta 价 格 的 奇 高 和 功 能 的 缺 失, 在 VB 和 Delphi 加 强 主 从 架 构 的 功 能 之 后 便 逐 渐 地 浮 现 出 来 此 外 PowerBuilder 和 Gupta 当 初 风 行 的 一 个 重 要 因 素 是 提 供 了 连 接 到 各 种 RDBMS 的 驱 动 程 序, 以 提 供 开 发 数 据 库 和 主 从 架 构 应 用 系 统 的 能 力 但 是 当 VB 和 Delphi 都 分 别 提 供 了 ODBC 和 BDE/IDAPI 技 术 连 接 更 多 的 数 据 库 服 务 器 之 后,PowerBuilder 和 Gupta 的 优 势 也 就 不 再 了 另 外 一 个 关 键 性 的 因 素 是 PowerBuilder 和 Gupta 一 直 无 法 成 为 大 众 化 的 开 发 工 具 除 了 DB Center 和 企 业 之 外, PowerBuilder 和 Gupta 无 法 被 大 量 的 ISV 商 业 软 件 包 厂 商 一 般 工 程 师 甚 至 是 学 生 使 用 来 开 发 各 种 不 同 的 应 用 系 统 因 此 PowerBuilder 和 Gupta 只 能 在 特 定 的 软 件 族 群 中 使 用, 限 制 了 可 能 成 长 的 潜 力 市 场 最 后 我 认 为 最 重 要 的 原 因 是 Sybase 和 Gupta 在 面 对 Microsoft 和 Borland 这 两 个 非 常 精 于 实 现 开 发 工 具 的 厂 商 时 过 于 轻 心, 反 应 的 速 度 太 过 于 缓 慢, 以 致 PowerBuilder 和 Gupta 除 了 在 数 据 库 和 主 从 架 构 功 能 之 外, 其 他 的 功 能 都 太 过 阳 春 特 别 是 在 Java 逐 渐 兴 起 之 后, PowerBuilder 和 Gupta 最 后 跨 平 台 的 诉 求 也 在 瞬 间 瓦 解, 因 此 失 去 市 场 也 是 不 可 挽 回 的 命 运 了 Borland C++Builder 的 诞 生 在 Delphi l.0/2.0 大 获 成 功 并 且 对 Borland 产 生 了 巨 大 的 收 益 之 后, 来 自 Borland C/C++
33 使 用 者 的 需 求, 即 要 求 Borland 也 推 出 一 个 C/C++ 版 本 的 呼 声 也 愈 来 愈 强 烈, 到 了 Borland 无 法 忽 视 的 地 步 不 过 这 对 Borland 来 说, 却 是 一 个 相 当 伤 脑 筋 的 事, 因 为 Delphi 是 用 Object Pascal 写 的, 如 何 转 成 C/C++? 如 果 要 开 发 C/C++ 版 的 Delphi, 那 么 Borland C/C++ 的 产 品 线 要 如 何 处 理? 因 此 这 也 在 Borland 内 部 起 了 极 大 的 争 议, 这 又 是 另 外 一 个 故 事 了 不 过 不 可 否 认 的 是,Delphi 1.0/2.0 的 成 功 正 是 促 成 了 Borland C++Builder 面 世 的 主 要 动 力 争 执 的 开 始 Delphi 2.0 的 再 次 重 大 成 功 仿 佛 为 Delphi 研 发 小 组 注 入 了 一 支 巨 大 的 强 心 剂 Delphi 研 发 小 组 迫 不 及 待 地 要 开 发 Delphi3.0, 以 便 趁 胜 追 击, 进 一 步 的 拉 近 和 VB 的 距 离, 并 且 再 次 给 予 PowerBuilder/Gupta 重 击, 以 便 从 PowerBuilder/Gupta 取 得 更 多 的 市 场 在 Delphi 2.0 推 出 之 后, 根 据 当 时 Gartner Group 的 调 查, 主 从 架 构 开 发 工 具 的 第 一 名 仍 然 是 PowerBuilder, 第 二 名 是 VB, 而 第 三 名 则 是 Delphi Gupta 的 市 场 占 有 率 快 速 地 下 滑, 已 经 无 法 进 入 前 三 名 的 占 有 率 了 不 久 之 后 Gupta 改 名 为 Centura, 希 望 力 挽 狂 澜, 但 是 仍 然 无 法 改 变 市 场 的 现 实, 并 且 逐 渐 淡 出 主 从 架 构 的 开 发 工 具 市 场 这 对 于 VB 和 Delphi 来 说 都 是 重 大 的 胜 利, 因 为 VB 和 Delphi 在 短 短 的 一 两 年 之 内 就 几 乎 瓦 解 了 PowerBuilder/Gupta 在 主 从 架 构 市 场 数 年 经 营 的 优 势 虽 然 PowerBuilder 还 暂 时 维 持 第 一 的 占 有 率, 但 是 已 经 从 50% 几 萎 缩 到 了 40%, 而 且 还 在 不 断 的 下 滑 之 中 PowerBuilder 在 VB 和 Delphi 的 强 烈 进 攻 下 岌 岌 可 危, 产 品 价 格 也 在 快 速 地 滑 落 之 中 不 过 在 Delphi 3.0 的 功 能 会 议 中,Anders 和 Zack 却 再 次 发 生 了 强 烈 的 争 执, 因 为 这 两 个 Delphi 的 灵 魂 人 物 对 于 Delphi 3.0 的 走 向 出 现 了 不 同 的 看 法 其 时 由 于 Microsoft 的 COM/DCOM 等 技 术 逐 渐 成 熟 和 受 到 愈 来 愈 多 的 使 用, 因 此 Anders 希 望 Delphi 3 能 够 充 分 地 支 持 开 发 COM/DCOM 的 技 术, 并 且 提 供 比 VB 更 方 便 比 VC 更 强 大 的 能 力 为 了 实 现 这 个 想 法,Anders 力 邀 Alain Lino Tadros 加 入 Delphi 的 研 发 小 组 为 什 么 Anders 会 找 上 Alain 呢? 这 是 因 为 Alain 曾 在 1996 年 BorCon 的 研 讨 会 上 以 惊 人 的 技 术 写 了 5000 多 行 的 程 序 代 码, 把 VCL 组 件 直 接 变 成 COM 对 象 Anders 在 BorCon 上 知 道 之 后, 立 刻 有 一 个 想 法, 那 就 是 如 何 能 够 延 伸 Alian 的 技 术, 如 果 通 过 一 种 方 法 便 能 够 把 所 有 或 是 大 部 分 的 VCL 组 件 变 成 COM 对 象 以 及 COM Container 的 话, 那 将 是 多 奇 妙 的 事 情 如 此 一 来 Delphi 的 研 发 小 组 也 不 需 要 为 实 现 COM/DCOM 的 功 能 而 大 费 周 折 了 而 Anders 的 这 个 想 法 也 促 成 了 后 来 Delphi 3 中 IVCLComObject 接 口 和 技 术 的 诞 生, 直 接 把 VCL 转 换 为 COM 对 象 的 神 奇 功 能 除 了 邀 请 Alian 之 外,Anders 也 计 划 直 接 修 改 Delphi 的 编 译 器, 让 编 译 器 能 够 直 接 处 理 COM 的 参 考 计 数 值 (Reference Count), 免 除 Delphi 程 序 员 的 麻 烦, 并 且 提 供 有 效 的 执 行 码 如 果 依 照 当 时 Anders 的 想 法 并 且 把 Delphi 3 依 此 实 现 出 来 的 话, 那 么 Delphi 将 会 是 一 个 比 Microsoft 工 具 更 好 的 COM 开 发 工 具 不 过 Zack 却 不 认 为 Delphi 3 应 该 把 这 么 多 的 资 源 花 在 支 持 COM/DCOM 上 虽 然 Zack 同 意 Delphi 3 必 须 对 COM/DCOM 有 好 的 支 持, 但 是 他 认 为 Delphi 3 应 该 在 Delphi 2 的 主 从 架 构 获 得 了 胜 利 之 后, 继 续 往 更 高 阶 的 方 向 努 力, 那 就 是 分 布 式 架 构, 以 便 把 Delphi 塑 造 成 能 够 开 发 大 型 企 业 的 开 发 工 具, 把 Delphi 打 入 获 利 丰 富 的 企 业 市 场 因 此 Zack 和 当 时 Borland 开 发 工 具 部 门 的 负 责 人 Paul Gross 激 活 了 所 谓 的 Golden Gate 计 划, 希 望 提 供 Delphi 强 大 的 中 介 引 擎 功 能, 因 此 Borland 并 购 了 出 版 Entera 中 间 件 的 公 司, 让 Delphi 能 够 通 过
34 Entera 连 接 到 后 端 大 型 的 系 统, 希 望 大 型 企 业 能 够 使 用 Delphi 开 发 客 户 端 的 应 用 程 序 由 于 Golden Gate 计 划 得 到 了 Borland 高 层 的 支 持, 因 此 Delphi 3 的 发 展 方 向 很 快 便 朝 向 分 布 式 技 术 前 进 虽 然 COM/DCOM 的 支 持 也 在 产 品 的 计 划 之 中, 但 是 并 无 法 做 到 像 Anders 所 想 要 的 境 界 由 于 Anders 的 理 想 无 法 被 接 受, 因 此 在 Delphi 3 的 发 展 中 后 期 阶 段, Anders 并 没 有 介 入 太 多 Delphi 3 的 开 发 工 作 在 Delphi 3 正 式 发 表 之 际,Delphi 的 研 发 小 组 很 巧 妙 地 平 衡 了 COM/DCOM 和 分 布 式 技 术 的 功 能, 也 让 Delphi 3 成 为 Windows 平 台 中 第 一 个 提 供 分 布 式 开 发 的 开 发 工 具 而 Delphi 3 当 时 使 用 的 Marketing Slogan 以 及 产 品 诉 求 的 重 点 也 是 "Component Foundry", 意 谓 Delphi 3 可 以 轻 易 地 建 立 VCL 组 件 以 及 COM/DCOM/ActiveX 组 件 Delphi 3 推 出 之 后,Delphi 应 该 算 是 到 达 了 巅 峰 的 状 态, 销 售 数 字 也 非 常 的 亮 丽, 已 经 超 过 了 Borland C/C++3.1 的 销 量, 而 Borland 也 有 了 稳 定 的 收 入 但 是 人 无 远 忧 必 有 近 虑, 后 来 发 生 的 数 件 大 事 几 乎 让 Delphi 重 演 当 初 Borland C/C++4.0 的 历 史 覆 辙 不 知 道 读 者 看 到 这 里 有 什 么 想 法? 我 认 为 COM/DCOM 和 分 布 式 技 术 都 是 重 要 的, 后 来 的 事 实 也 证 明 分 布 式 技 术 是 Delphi 的 强 项 之 一, 而 应 用 系 统 架 构 也 逐 渐 走 向 分 布 式 多 层 不 过 没 有 像 Anders 的 想 法 把 Delphi 塑 造 成 无 敌 的 COM/DCOM 组 件 开 发 工 具 相 信 也 是 许 多 人 的 遗 憾 在 Anders 逐 渐 不 介 入 Delphi 3 的 开 发 之 后, 随 后 发 生 的 两 件 关 键 的 事 情 便 注 定 了 Anders Hejlsberg 继 Philippe Kahn 离 开 Borland 的 命 运 天 才 的 损 失 和 新 英 雄 的 接 棒 在 Anders 和 Zack 对 于 Delphi 的 走 向 逐 渐 出 现 了 歧 见 之 后,Anders 便 没 有 再 主 导 Delphi 3.0 的 开 发, 反 之 Zack 在 Delphi 开 发 小 组 中 的 角 色 却 日 益 重 要, 后 来 几 乎 是 Delphi 3 和 Delphi 4 的 主 要 领 导 人 为 什 么 Delphi 的 Architect Anders 会 慢 慢 地 淡 出 Delphi 的 核 心 呢? 这 和 Philippe Kahn 离 开 Borland 也 有 重 要 的 关 系 英 雄 落 难 Philippe Kahn 和 Anders 共 同 创 造 了 传 奇 的 Borland, 两 人 之 间 有 着 浓 厚 的 感 情 在 Borland 工 作 时, 对 于 Anders 任 何 的 想 法 和 计 划,Philippe Kahn 都 是 不 遗 余 力 地 支 持 也 正 是 这 个 重 要 的 支 持 力 量, 才 有 随 后 极 为 成 功 的 Borland Pascal 以 及 Delphi 的 问 世 但 是 在 Philippe Kahn 离 开 Borland 之 后,Anders 再 也 没 有 了 这 股 来 自 最 亲 密 战 友 的 强 力 支 援 1997 年,Borland 新 的 CEO Delbert Yocam 在 掌 握 了 大 权 之 后,Borland 整 个 公 司 开 始 走 向 第 二 个 重 要 的 转 变,Delbert 对 于 Borland 产 品 的 开 发 和 趋 势 也 有 了 不 同 于 Philippe Kahn 的 看 法 当 Java 在 1996 年 逐 渐 快 速 发 展 之 后, 睿 智 的 Anders 也 看 到 了 Java 成 功 的 未 来 因 此 在 Anders 不 再 积 极 参 与 Delphi 2/3 的 开 发 工 作 之 后, 他 非 常 希 望 能 够 主 导 Borland
35 Java 开 发 工 具 的 开 发, 期 望 能 够 像 当 初 的 Delphi 1.0 一 样, 为 Borland 再 次 开 发 出 全 世 界 一 级 的 Java 开 发 工 具 不 过, 由 于 当 时 Delphi 是 Borland 最 重 要 的 收 入 来 源, 高 层 仍 然 希 望 Anders 继 续 在 Delphi 产 品 线 上 投 入 全 力, 因 此 当 时 的 Borland CEO Delbert Yocam 并 没 有 批 准 Anders 的 请 求 Borland 的 下 一 个 重 要 的 开 发 工 具 JBuilder, 当 时 的 产 品 开 发 名 称 为 Latte, 仍 然 交 由 其 他 小 组 负 责 依 据 我 的 推 想, 由 于 当 时 Anders 对 于 Java 已 经 有 许 多 的 想 法, 因 此 才 会 有 后 来 的 VJ++ 以 及 C#, 这 些 产 品 和 程 序 语 言 的 许 多 特 性 想 必 已 经 在 Anders 的 脑 中 存 在 了 一 段 时 间 了 Delbert 没 有 允 许 Anders 带 领 Latte 开 发 小 组, 但 Anders 仍 然 没 有 放 弃 他 的 新 计 划 也 许 是 Anders 注 定 和 Borland 的 缘 分 已 经 到 了 尽 头, 这 个 时 候 正 好 Microsoft 展 开 了 有 史 以 来 对 Borland 最 大 的 挖 角 行 动 在 Anders 无 法 在 Borland 取 得 满 意 的 支 持 之 后,Microsoft 提 供 的 优 厚 条 件 顿 时 对 Anders 产 生 了 致 命 的 吸 引 力, 从 而 造 成 了 Borland 无 法 挽 回 的 遗 憾 虽 然 Anders 没 有 显 赫 的 学 历, 无 法 获 得 Turning Awards( 即 图 灵 奖, 信 息 科 学 界 最 高 荣 誉 的 奖 项, 等 同 于 诺 贝 尔 奖 ) 但 是 我 认 为 Anders 的 实 力 和 贡 献 绝 不 输 于 任 何 一 位 Turning Awards 的 得 奖 人 Anders 是 最 好 的 信 息 实 践 型 人 物, 在 2001 年, 他 终 于 获 得 了 信 息 界 最 具 权 威 的 信 息 刊 物 Dr. Dobbs' Journal 颁 发 的 Excellent Programming Awards, 以 表 彰 Anders 为 信 息 界 做 出 的 卓 越 贡 献 我 想 Anders 应 该 是 许 多 本 身 没 有 高 学 历 或 不 是 计 算 机 信 息 科 系 出 身 的 优 秀 程 序 员 最 好 的 效 仿 对 象 Anders Hejlsberg 这 位 不 世 出 的 软 件 天 才, 是 目 前 全 世 界 最 顶 尖 的 软 件 技 术 人 员 之 一 论 实 现 技 术,Anders 可 能 是 目 前 的 第 一 高 手, 因 为 他 精 通 程 序 语 言 编 译 器 技 术 开 发 工 具 Framework 以 及 系 统 架 构 我 虽 然 知 道 许 多 软 件 界 重 要 的 人 物 和 好 手, 但 是 尚 不 知 有 任 何 人 能 像 Anders 一 样 在 这 么 多 领 域 都 能 成 为 大 家 下 面 是 笔 者 整 理 出 Anders Hejlsberg 到 目 前 为 止 重 要 的 功 绩 贡 献 以 及 获 颁 的 重 要 大 奖 : 和 Philippe Kahn 共 同 创 办 Borland 开 发 出 Turbo Pascal, 当 时 首 创 的 In-Memory Compiler 震 惊 了 全 世 界 开 发 出 全 世 界 最 畅 销 的 Pascal 产 品,Turbo Pascal( 这 是 许 多 信 息 人 员 学 习 Pascal 和 Data Structure 使 用 的 经 典 产 品 ) 以 及 Borland Pascal Turbo/Borland Pascal 合 计 销 售 超 过 了 数 百 万 套 Dr. N. Wirth(Pascal 语 言 的 创 始 人 员 ) 也 应 该 向 Anders 致 敬, 表 达 Anders 对 于 Pascal 语 言 的 贡 献 Anders 使 用 汇 编 语 言 撰 写 编 译 器, 其 功 力 无 人 能 出 其 右 创 造 出 了 全 世 界 速 度 最 快 品 质 也 是 一 流 的 Pascal 编 译 器 在 Anders 离 开 了 Borland 之 后, 几 乎 没 有 人 能 够 修 改 Anders 的 编 译 器 开 发 出 影 响 深 远 的 Delphi 这 个 伟 大 的 RAD 工 具 开 发 出 VJ++ 语 言 Microsoft.NET 的 Architect Microsoft 颁 授 Microsoft Distinguish Engineer 大 奖 发 明 C# 这 个 又 将 造 成 重 大 影 响 的 语 言 获 颁 2001 年 Dr. Dobbs' Journal 的 Excellence In Programming 大 奖
36 一 个 人 一 生 能 够 做 出 几 件 让 全 世 界 都 津 津 乐 道 的 事 业 呢?Anders 却 成 就 了 无 数 PC 界 伟 大 的 功 绩, 并 且 在 程 序 语 言 编 译 器 开 发 工 具 以 及 Framework 方 面 都 有 重 要 的 贡 献 PC 软 件 界 因 为 有 了 Anders 而 精 彩 丰 富 了 许 多, 也 创 造 了 许 多 令 人 惊 叹 的 故 事 更 棒 的 是 Anders 现 在 仍 然 在 继 续 贡 献 他 惊 人 的 天 分, 就 让 我 们 拭 目 以 待, 看 看 Anders 还 能 创 造 什 么 功 迹 吧 不 过, 不 管 以 后 如 何, 相 信 Anders 应 该 是 大 部 分 软 件 人 员 希 望 学 习 的 目 标 Anders 的 功 力 也 是 大 部 分 软 件 人 员 一 生 企 望 能 够 达 到 的 境 界 在 2002 年 Borland Developers' Conference 中,Anders Hejlsberg 是 排 名 第 一 的 Keynote Speaker, 尚 在 Java 的 创 始 人 James Gosling 之 前 根 据 现 场 同 时 聆 听 这 两 场 Keynote Speech 的 听 众 报 道,Anders 的 Keynote Speech 是 非 常 精 彩 的, 而 James 的 Keynote Speech 则 相 对 的 枯 燥, 许 多 人 因 此 而 提 前 离 席 而 且 Anders 在 开 始 进 行 Keynote Speech 之 时, 便 获 得 了 现 场 所 有 听 众 起 立 鼓 掌 致 敬, 看 来, 在 大 多 数 Borland 开 发 工 具 使 用 者 的 心 中,Anders Hejlsberg 是 永 远 的 巨 星 Microsoft 的 挖 角 和 Anders 的 离 开 Anders 在 不 介 入 Delphi 的 开 发 并 且 无 法 主 导 Borland Java 开 发 工 具 开 发 的 情 况 下 充 满 了 挫 折 感 没 有 了 Philippe Kahn 的 强 力 支 援,Anders 虽 然 是 Borland 最 顶 尖 的 技 术 人 才, 却 也 无 法 对 抗 Borland 管 理 阶 层 的 力 量 当 然 这 也 是 从 Philippe Kahn 离 开 了 Borland 之 后 Bodand 开 始 转 型 有 关, 这 在 稍 后 Borland 的 转 变 一 文 中, 我 会 作 详 细 的 说 明 虽 然 Anders 在 Borland 遇 到 了 挫 折, 但 是 对 于 Microsoft 来 说 这 却 是 千 载 难 逢 的 好 机 会, 在 此 时 Microsoft 展 开 了 大 规 模 的 挖 角 行 动, 而 且 是 明 目 张 胆 地 进 行, 正 是 由 于 Microsoft 如 此 大 胆 的 行 动, 因 此 也 造 成 了 不 久 之 后 Borland 对 于 Microsoft 的 法 律 控 诉 这 次 的 挖 角 行 动 中,Microsoft 同 时 锁 定 了 数 个 Borland 最 杰 出 或 是 重 要 的 人 物, 当 然 Anders 是 名 列 第 一 的 挖 角 对 象 时 值 1996 年,Microsoft 终 于 展 开 了 行 动, 使 用 的 方 式 是 最 直 接 的 攻 击 Microsoft 直 接 派 遣 加 长 型 的 大 轿 车 到 Borland 大 门 口 找 Anders 吃 饭, 第 一 次 Microsoft 开 出 了 年 薪 百 万 美 元 以 上 的 条 件 不 过 在 Borland 知 道 了 这 件 事 情 之 后, 也 很 快 进 行 了 加 码 的 动 作, 因 此 Anders 并 没 有 对 Microsoft 进 行 响 应 Microsoft 在 苦 等 无 应 按 捺 不 住 之 下, 很 快 就 再 次 用 大 轿 车 找 Anders 这 次 Microsoft 提 出 了 两 百 万 美 元 以 上 的 条 件, 希 望 Anders 能 够 首 肯 对 于 这 次 的 喊 价,Borland 可 有 点 为 难 了, 因 为 两 百 万 美 元 不 是 笔 小 数 目, 这 已 经 比 当 时 Borland 许 多 副 总 裁 的 年 薪 还 高 此 外, 如 果 Borland 答 应 也 加 到 两 百 万 以 上, 那 么 是 不 是 Chuck 也 要 如 此 加 码? 其 他 的 Delphi R&D 小 组 要 如 何 调 整? 这 些 都 是 非 常 棘 手 的 问 题 不 过 Borland 很 快 找 到 了 解 决 的 方 案, 那 就 是 允 许 Anders 从 每 一 套 卖 出 的 Delphi 版 本 中 抽 取 一 定 数 量 的 版 权 费 如 此 一 来 Delphi 卖 得 愈 好,Anders 便 能 取 得 愈 多 的 回 馈 不 过 就 我 的 了 解,Anders 注 重 的 并 不 是 金 钱 上 的 问 题, 因 为 在 Borland 创 立 的 初 期, 由 于 Turbo Pascal 的 编 译 器 都 是 Anders 撰 写 的, 因 此 当 时 Anders 也 是 卖 一 套 Turbo Pascal 就 可 以 抽 取 版 税 的 依 照 Turbo/Borland Pascal 全 世 界 销 售 数 百 万 套 来 算,Anders 早 就 是 富 翁 了 薪 水 多 一 点, 少 一 点 并 无 所 谓,Anders 心 中 想 的 是 自 由 发 展 的 空 间 在 Borland 提 出 了 Delphi 的 随 版 抽 税, 再 加 上 Microsoft 并 不 知 道 Anders 真 正 想 要 的 东 西, 因 此 Anders 仍 然 没 有 响
37 应 Microsoft 提 出 的 优 厚 条 件 不 过,Anders 实 在 是 太 重 要 的 人 物, 而 且 Microsoft 在 面 对 Java 与 日 俱 增 的 威 胁 下, 非 常 渴 望 能 够 有 像 Anders 这 样 的 人 才 带 领 Microsoft 开 发 下 一 代 的 开 发 工 具, 这 当 然 也 是 由 于 Microsoft 以 前 向 Borland 挖 来 的 人 都 做 出 了 不 小 的 贡 献 所 致 Microsoft 食 髓 知 味, 当 然 希 望 能 够 得 到 Borland 的 镇 山 之 宝 在 Anders 两 次 不 为 所 动 之 后,Microsoft 决 定 祭 出 最 后 的 王 牌, 由 Bill Gates 亲 自 找 Anders 吃 饭, 进 行 最 终 的 挖 角 行 动 不 管 读 者 喜 不 喜 欢 Bill Gates, 不 可 否 认 的 是 Bill 也 是 一 个 天 才 自 古 英 雄 惜 英 雄, 在 Anders 和 Bill 相 谈 甚 欢 的 情 形 下,Microsoft 开 出 了 年 薪 三 百 万 以 上 数 万 股 的 Microsoft 股 票 这 个 超 高 的 条 件, 再 以 当 时 Microsoft 高 贵 的 股 价 来 计 算, 真 是 一 笔 庞 大 的 数 字, 也 许 对 于 搞 软 件 技 术 的 人 来 说, 这 已 经 是 不 可 能 的 天 文 数 字 了 不 过 这 些 条 件 并 不 是 打 动 Anders 的 主 要 原 因,Bill 最 后 提 出 的 条 件 是 " 答 应 给 Anders 一 个 小 组 和 极 多 的 资 源, 让 Anders 尽 情 地 发 挥 " 这 个 条 件 可 说 是 打 到 了 Anders 的 心 底, 因 为 Anders 正 渴 望 有 人 能 够 支 持 他 完 成 新 的 计 划 和 想 法 我 想, 在 软 件 产 业 中 大 概 也 只 有 Microsoft 能 够 拥 有 这 种 雄 厚 的 资 源 可 以 挖 角 任 何 人 吧 在 Bill Gates 提 了 这 样 的 条 件 之 后,Borland 再 也 没 有 本 钱 能 够 和 Microsoft 进 行 比 价 了, 只 好 眼 睁 睁 地 看 着 Anders 离 开 Borland 前 往 Microsoft 再 开 创 下 一 个 人 生 的 高 峰 在 Anders 到 了 Microsoft 之 后,Bill Gates 果 然 重 用 Anders, 也 立 刻 让 Anders 负 责 激 活 Microsoft 的 下 一 拨 开 发 工 具 计 划, 当 然 这 个 计 划 也 是 Microsoft 对 抗 SUN/Java 的 整 体 计 划 之 一 Anders 到 了 Microsoft 之 后 立 刻 展 现 了 实 力, 让 Microsoft 的 编 译 器 技 术 又 精 进 不 少, 最 明 显 的 例 子 就 是 Microsoft 后 期 的 Java Virtual Machine 是 PC 上 执 行 效 率 最 好 的, 而 且 在 2 3 年 后,VJ++ 编 译 出 来 的 虚 拟 机 械 码 的 执 行 效 率 不 但 比 任 何 的 Java 开 发 工 具 还 快, 在 某 些 方 面 甚 至 比 原 生 的 Windows 开 发 工 具, 例 如 Delphi VB 甚 至 是 VC++ 还 有 效 率 这 真 是 令 人 震 撼, 当 然 Anders 为 VJ++ 打 下 的 基 础 现 在 也 展 现 在.NET 的 C# 编 译 器 以 及.NET 的 JIT(Just In Time) 编 译 器 之 上,.NET 的 JIT 在 许 多 程 序 代 码 最 佳 化 方 面 比 Delphi 还 先 进 因 此 在 2 3 年 前 当 VJ++ 即 将 推 出 之 际, 在 Borland 内 部 也 引 起 了 非 常 大 的 骚 动, 并 且 严 阵 以 待, 当 然 这 又 是 另 外 一 个 故 事 了 对 于 Anders 来 说, 到 了 Microsoft 之 后 不 久 又 再 次 登 上 了 生 涯 的 另 一 个 巅 峰 因 为 当 初 Anders 在 Borland 之 时, 就 有 如 孙 子 兵 法 中 叙 述 的 " 藏 于 九 地 之 下 ", 虽 然 是 不 世 出 的 天 才, 但 是 仅 为 少 数 的 人 所 知, 即 使 是 使 用 Borland 产 品 的 人 在 当 时 可 能 也 不 知 道 Anders 这 号 人 物 因 为 Anders 和 Borland 的 作 风 很 像, 都 是 行 事 低 调, 不 到 最 后 绝 不 随 意 出 手 但 是 Anders 被 挖 角 到 Microsoft 之 后, 由 于 Microsoft 的 企 业 文 化 向 来 是 前 进 积 极 的 侵 略 性 方 式, 因 此 Anders 也 就 转 变 为 " 动 于 九 天 之 上 ", 负 责 Microsoft 开 发 工 具 大 军 的 核 心 大 将, 不 但 广 为 人 知, 成 为 许 多 软 件 人 员 效 法 的 对 象, 而 且 屡 获 大 奖 他 不 但 获 得 了 信 息 软 件 业 界 的 推 崇, 最 后 也 终 于 获 得 了 信 息 学 术 界 的 认 可, 可 说 是 实 至 名 归 Anders 的 离 开 对 于 Borland 来 说 是 一 个 很 大 的 损 失, 不 过 对 于 Delphi R&D 小 组 来 说 却 是 有 好 有 坏, 因 为 Delphi 开 发 小 组 虽 然 失 去 了 最 重 要 的 支 柱, 但 是 也 给 Danny Thorpe 一 个 快 速 崛 起 的 机 会, 在 1 年 后,Danny 果 然 立 刻 成 为 了 Delphi/C++Builder/Kylix 中 最 杰 出 的 人 物 之 一 ( 另 外 一 个 当 然 就 是 Anders 的 老 搭 挡 Chuck Jazdzewski 了 ),Danny 也 是 我 认 为 目 前 在 Borland RAD( 注 ) 部 门 中 功 力 最 厉 害 的 人 物 在 稍 后 的 内 文 中 我 会 对 Danny 进 行 比 较 详 细 的
38 说 明 注 :Borland RAD 部 门 是 指 Borland 的 Rapid Application Development 部 门,RAD 负 责 的 产 品 包 含 了 C++Builder Delphi Kylix 以 及 未 来 的.NET 以 及 Mobile 的 新 产 品 巅 峰 之 作 和 最 后 的 胜 利 者 在 Zack 于 Delphi 3 开 发 的 后 期 和 Paul Gross 逐 渐 取 得 了 主 控 权 之 后,Delphi 的 发 展 方 向 也 偏 向 了 Zack 希 望 的 Multi-Tier 的 技 术 以 及 由 Paul Gross 稍 后 主 导 的 Borland Golden Gate 计 划 1997 年,Delphi 还 是 像 Delphi 1/2 一 样 以 强 劲 的 生 命 力, 以 一 年 一 个 大 版 本 的 速 度 准 时 推 出 了 当 时 Delphi 3 也 称 为 Delphi 97 Delphi 97 和 Delphi l/2 一 样 有 一 个 最 重 要 的 战 略 目 标 以 及 主 要 的 革 新 技 术, 那 就 是 Multi-Tier 和 COM/DCOM 的 支 持 因 此, 当 时 97 推 出 之 际 使 用 的 行 销 术 语 是 "Component Foundry", 意 指 Delphi 97 能 够 开 发 任 何 的 软 件 组 件 ( 事 实 上 是 指 VCL COM/DCOM 以 及 ActiveX 组 件 ), 而 且 使 用 组 件 来 开 发 Multi-Tier 的 应 用 系 统 Delphi 97 无 论 是 在 品 质 功 能 或 是 市 场 和 销 售 上 都 是 非 常 成 功 的 也 许 是 为 了 证 明 即 使 是 没 有 了 Anders,Borland 的 Delphi R&D 小 组 仍 然 有 实 力 开 发 出 优 秀 的 Delphi 产 品, 因 此 Delphi 3 一 推 出 的 品 质 就 在 高 水 平 的 地 步, 后 来 Delphi 97 销 售 的 结 果 也 证 明 了 它 没 有 令 人 失 望,Delphi 3 的 推 出 让 Delphi 一 举 突 破 了 150 万 套 的 销 售 大 关, 也 几 乎 成 为 Borland 有 史 以 来 最 畅 销 的 单 一 系 列 开 发 工 具, 我 也 认 为 Delphi 3 是 Delphi 所 有 版 本 中 最 好 的 一 个 不 过,Delphi 97 在 即 将 推 出 之 时 也 令 一 些 人 感 到 忧 虑, 因 为 在 当 时 几 乎 没 有 任 何 开 发 工 具 强 调 Multi-Tier 的 开 发, 大 多 数 的 开 发 工 具 仍 然 着 重 在 Client/Server 的 功 能 Delphi 97 将 许 多 新 功 能 集 中 在 Multi-Tier 的 开 发 的 确 是 一 个 不 小 的 冒 险, 因 为 在 当 时 Multi-Tier 的 观 念 还 非 常 的 新 颖, 许 多 人 对 于 Multi-Tier 是 什 么? 能 够 用 来 开 发 什 么? 为 什 么 要 使 用 Multi-Tier 等 等 问 题 都 不 是 很 清 楚 更 重 要 的 是, 在 那 个 时 候 Multi-Tier 的 基 础 工 程 都 尚 未 完 全 准 备 好, 使 用 者 要 如 何 使 用 Multi-Tier 技 术 来 开 发 应 用 系 统 甚 至 是 学 习 Multi-Tier 的 技 术 呢? 我 所 谓 的 "Multi-Tier 的 基 础 工 程 都 尚 未 完 全 准 备 好 ", 是 指 在 那 个 时 候 Microsoft 的 DCOM 技 术 都 还 没 有 推 出 那 么,Borland 该 如 何 在 Windows 平 台 上 提 供 Multi-Tier 应 用 系 统 需 要 的 分 布 式 技 术 呢? 说 到 这 里, 我 们 也 不 得 不 佩 服 当 时 Borland 这 些 Delphi R&D 小 组 的 眼 光, 他 们 几 乎 已 经 精 确 地 看 到 了 未 来 的 软 件 计 算 世 界 将 会 由 网 络 和 分 布 式 技 术 主 导, 因 此, 即 使 是 在 操 作 系 统 平 台 尚 未 准 备 好 的 情 形 下,Borland 也 决 定 快 速 向 前 出 发 另 外 一 个 驱 使 Delphi 97 走 向 Multi-Tier 的 重 要 原 因 便 是 当 时 Borland 已 经 准 备 走 向 组 件 技 术 的 领 域, 准 备 在 中 间 件 (Middle-Tier Software) 中 成 为 一 个 关 键 的 软 件 开 发 厂 商, 这 就 是 Paul Gross 和 Zack Urlocker 激 活 的 Golden Gate Strategy 而 Paul Gross 也 就 是 由 于 Golden Gate 计 划 扬 名 立 万 进 而 成 为 当 时 Borland 整 个 研 发 部 门 的 副 总 裁 (Vice President), 后 来 又 成 为 Microsoft 下 一 个 挖 角 的 对 象 为 了 配 合 Golden Gate 计 划 并 且 成 为 分 布 式 技 术 的 领 导 厂 商,Borland 由 Paul Gross 主 导 并 购 了 Boston 一 家 有 名 的 顾 问 公 司, 这 家 顾 问 公 司 拥 有 一 个 颇 为 知 名 的 中 间 件 "Entera"
39 Entera 是 一 个 以 RPC(Remote Procedure Call) 通 信 协 议 为 骨 干 的 中 间 件,Borland 希 望 通 过 Entera 快 速 进 入 中 间 件 的 市 场 由 于 Entera 的 客 户 端 能 够 执 行 在 Windows 的 操 作 系 统 中, 因 此,Entera 在 Windows 平 台 上 拥 有 基 础 的 分 布 式 技 术 支 持 能 力, 这 刚 好 提 供 了 Delphi 97 需 要 的 技 术, 所 以 Delphi 的 R&D 小 组 立 刻 使 用 VCL 封 装 了 Entcra 的 底 层 API, 提 供 了 一 个 称 为 OleEnterpriseConnection 的 VCL 组 件, 让 Delphi 97 能 够 和 以 RPC 为 基 础 的 中 间 件 连 接 因 此 在 Delphi 97 中 Borland 提 供 了 三 种 分 布 式 连 接 组 件, 分 别 是 使 用 DCOM 技 术 的 DCOMConnection 使 用 TCP/IP 技 术 的 SocketConnection 以 及 OleEnterpriseConnection 在 那 个 时 候 最 成 熟 的 技 术 应 该 是 OleEnterpriseConnection, 而 使 用 DCOM 技 术 的 DCOMConnection 在 Microsoft 本 身 DCOM 尚 不 成 熟 的 背 景 之 下, 表 现 得 并 不 好 至 于 SocketConnection, 我 认 为 Borland 一 直 没 有 很 认 真 地 地 实 现 SocketConnection, 因 此 最 好 只 可 以 用 来 作 为 学 习 的 对 象, 尚 未 到 达 可 以 真 正 应 用 的 水 准 不 过 稍 后 随 着 时 间 和 技 术 的 进 步, OleEnterpriseConnection 逐 渐 没 落, 而 DCOMConnection 则 反 而 因 为 Microsoft 的 DCOM 的 慢 慢 改 善 而 成 为 比 较 实 际 的 应 用 对 象 当 然, 这 些 又 属 于 Delphi 4 的 开 发 故 事 了 虽 然 Delphi 97 采 取 了 比 较 冒 险 的 做 法, 但 是 由 于 其 品 质 良 好, 又 支 持 COM/VCL 组 件 的 开 发, 因 此 也 很 快 征 服 了 Delphi 使 用 者 的 心 而 大 获 成 功 当 时 许 多 Delphi 的 使 用 者 仍 然 是 以 开 发 Client/Server 应 用 系 统 为 主, 不 过 由 于 Delphi 97 好 用 的 COM 技 术 以 及 应 用 Web 的 WebBroker 技 术, 再 加 上 Multi-Tier 的 功 能, 都 让 使 用 者 大 呼 过 瘾, 把 Delphi 作 为 学 习 这 些 先 进 技 术 的 好 工 具, 因 此 Delphi 97 在 当 时 到 达 了 巅 峰 的 地 步 而 Delphi/VB 和 PowerBuilder/Gupta 缠 斗 的 情 形 也 逐 渐 明 朗 Delphi/VB 的 销 售 量 和 市 场 占 有 率 已 经 远 超 过 PowerBuilder/Gupta 了,PowerBuilder/Gupta 也 注 定 将 从 通 用 开 发 工 具 以 及 主 从 架 构 开 发 工 具 市 场 中 让 出 绝 大 的 市 场 份 额 其 时 PowerBuilder 仍 然 不 肯 服 输, 并 且 坚 称 PowerBuilder 在 总 收 入 方 面 仍 然 是 第 一 这 是 因 为 PowerBuilder 在 当 时 仍 然 非 常 的 昂 贵, 比 Delphi/VB 至 少 贵 了 两 三 倍 以 上 但 是 在 不 断 地 快 速 流 失 市 场 的 情 况 下 PowerBuilder 的 售 价 很 快 就 出 现 了 大 幅 的 下 降, 至 此 Delphi 和 VB 终 于 获 得 了 全 面 的 胜 利 ;Client/Server 开 发 工 具 的 战 争 已 止, 但 是 接 下 又 上 演 了 另 一 出 精 彩 的 Java 开 发 工 具 大 战 危 机 的 开 始 在 Delphi 3 再 次 获 得 了 胜 利 之 后,Delphi 4 决 战 的 目 标 已 经 从 Delphi VB PowerBuilder 和 Gupta 混 战 的 形 势 转 变 为 和 VB 对 战 的 局 势 原 本 Delphi 有 继 续 进 击 的 机 会, 因 为 在 当 时 Delphi 3 的 功 能 的 确 强 劲, 而 且 许 多 功 能 都 领 先 业 界 至 少 半 年 以 上 的 时 间, 不 过 可 惜 的 是, 在 1996 年 Borland 担 任 CEO 的 Delbert Yocam 先 生 正 好 在 这 个 时 候 开 始 了 改 造 Borland 的 计 划, 几 乎 造 成 了 对 Delphi 不 可 挽 回 的 错 误, 这 要 从 Zack Urlocker 被 Delbert Yocam 拔 擢 成 Borland Marketing 的 副 总 裁 开 始 说 起 1996 年 11 月,Borland 邀 请 了 Del Yocam 入 主 Borland 成 为 新 的 CEO, 希 望 通 过 Delbert Yocam 在 管 理 方 面 丰 富 的 经 验 改 善 Borland 长 久 以 来 在 公 司 管 理 方 面 的 积 弱 不 振 Delbert Yocam 原 本 是 Apple 计 算 机 公 司 的 副 总 裁, 应 该 是 拥 有 丰 富 的 管 理 经 验, 不 过 不 知 道 Delbert
40 是 不 是 在 大 型 计 算 机 公 司 呆 惯 了, 因 此 花 钱 花 得 特 别 凶 Delbert 在 一 进 入 Borland 之 后 立 刻 花 了 大 钱 更 换 总 裁 办 公 室 里 所 有 的 家 俱 和 装 潢, 其 后 到 各 地 出 差 时 又 要 求 头 等 舱 以 及 总 统 套 房, 花 钱 像 流 水 一 样 当 时 我 便 对 这 位 新 的 CEO 没 有 什 么 好 印 象 Delbert 在 进 入 Borland 之 后 一 直 想 改 造 Borland 在 Delphi 3 大 获 成 功 之 后,Delbert 便 把 重 点 集 中 在 Delphi 的 身 上 Delbert 认 为 Delphi 非 常 成 功, 是 Borland 的 摇 钱 树, 因 此 一 直 想 从 这 个 产 品 线 获 得 更 多 的 收 入 好 大 喜 功 的 Delbert 觉 得 Delphi 的 根 基 已 经 很 稳 固, 因 此 可 以 更 快 速 地 从 Delphi 身 上 取 得 资 源 这 让 Delbert 在 1998 年 下 了 一 个 严 重 的 错 误 决 策, 几 乎 折 损 了 Delphi 的 大 好 基 业 Borland 和 Microsoft 的 法 律 大 战 在 Microsoft 不 断 地 挖 角, 甚 至 把 Anders 也 挖 走 之 后,Borland 已 经 到 了 " 士 可 忍, 孰 不 可 忍 " 的 地 步 Microsoft 挖 角 的 动 作 愈 来 愈 像 是 恶 意 挖 角, 似 乎 是 想 把 Borland 搞 垮 Borland 无 法 忍 受 的 是 Microsoft 不 但 在 操 作 系 统 和 开 发 工 具 上 进 行 不 公 平 的 竞 争, 现 在 甚 至 进 行 人 事 上 的 不 公 平 竞 争 Microsoft 不 思 在 产 品 上 和 Borland 一 决 雌 雄, 反 而 进 行 挖 墙 角 的 破 坏, Borland 实 在 是 忍 无 可 忍 了 1997 年 5 月,Delbert Yocam 终 于 向 美 国 法 院 提 出 了 对 于 Microsoft 的 控 告 当 时 Borland 提 出 的 控 诉 理 由 是 "Microsoft 对 于 Borland 进 行 Brain Drain" 的 行 动 Microsoft 在 30 个 月 内 从 Borland 挖 角 了 34 名 Borland 关 键 的 开 发 者, 而 且 每 一 名 被 挖 角 的 人 到 了 Microsoft 之 后 都 担 任 和 在 Borland 类 似 的 角 色, 这 摆 明 了 就 是 要 利 用 这 些 人 在 Borland 的 知 识 快 速 地 帮 助 Microsoft 提 升 和 Borland 的 差 距, 并 且 了 解 Borland 内 部 的 产 品 和 技 术 的 开 发 状 况 这 种 不 公 平 的 竞 争 应 该 是 没 有 任 何 一 家 公 司 能 够 容 忍 的 在 Borland 正 式 提 出 了 诉 讼 之 后, 具 备 侵 略 性 企 业 文 化 的 Microsoft 当 然 就 立 刻 反 击, 和 Borland 对 簿 公 堂 Borland 和 Microsoft 从 开 发 工 具 战 场 一 直 斗 争 到 法 律 战 场, 互 不 相 让 的 情 形 让 许 多 看 客 大 呼 过 瘾 Borland 对 于 Microsoft 来 说 似 乎 就 是 打 不 倒 的 勇 者, 不 管 情 势 再 艰 辛, 仍 然 能 对 抗 到 底, 因 为 Borland 知 道, 对 于 Microsoft 一 旦 让 步, 以 后 就 永 远 没 有 机 会 了 当 时, 业 界 许 多 人 都 已 经 预 测 Borland 迟 早 会 采 取 行 动, 但 是 没 有 想 到 这 么 快 就 勇 敢 地 响 应 Borland 当 时 的 行 动 引 起 了 许 多 信 息 业 界 的 尊 敬 和 支 持 这 场 官 司 的 进 行 很 快 就 有 了 初 步 的 迹 象, 所 有 的 证 据 都 对 Microsoft 不 利 Microsoft 一 看 情 势 不 对, 又 不 想 让 Borland 真 的 消 失, 以 避 免 吃 上 在 开 发 工 具 市 场 垄 断 的 官 司, 所 以 立 刻 表 达 愿 意 和 Borland 在 庭 外 和 解 正 是 由 于 这 个 原 因, 才 有 后 来 1999 年 时 Microsoft 对 于 Borland 的 投 资,Microsoft 这 项 投 资 正 是 这 次 庭 外 和 解 的 条 件 之 一 不 过 Delbert 的 运 气 并 不 好, 虽 然 Microsoft 愿 意 和 Borland 进 行 庭 外 和 解, 但 真 正 和 解 的 动 作 以 及 Microsoft 对 于 Borland 的 赔 偿 事 项 却 是 发 生 在 Delbert 之 后 的 Borland 下 一 任 CEO, 即 Dale Fuller 身 上, Delbert 种 下 的 稻 穗 却 是 由 Dale Fuller 来 收 割 接 二 连 三 的 错 误 决 策
41 1998 年,Delbert Yocam 再 次 展 现 了 好 大 喜 功 的 本 性, 在 没 有 充 分 地 讨 论 以 及 共 识 之 下, Delbert Yocam 决 定 把 公 司 名 称 从 众 所 周 知 的 Borland 改 为 Inprise Delbert 决 定 如 此 做 有 数 个 原 因 : 由 于 Paul Gross 和 Zack Uplocker 的 Golden Gate 计 划 让 Borland 进 入 中 间 件 市 场, 因 为 Borland 在 企 业 市 场 以 往 没 有 很 强 的 知 名 度, 许 多 人 认 为 Borland 只 是 开 发 工 具 厂 商, 因 此 Delbert 为 了 解 决 这 个 问 题 决 为 Borland 取 一 个 新 的 名 称 使 用 Inprise 的 意 思 是 指 Borland 可 以 Integrating The Enterprise 为 提 供 企 业 整 体 解 决 方 案 的 软 件 公 司 基 本 上 Delbert Yocam 在 进 入 Borland 之 后 已 经 开 始 改 变 Borland, 悄 悄 地 进 行 第 二 次 Borland 改 造 的 行 动 这 就 是 以 行 销 为 主 的 Borland, 有 别 于 以 往 Philippe Kahn 所 领 导 的 以 产 品 / 技 术 为 主 的 Borland 为 了 代 表 Delbert 的 决 心 并 且 重 新 出 发, Delbert 认 为 公 司 该 使 用 一 个 新 的 名 称 1998 年 4 月, 在 Delbert 的 主 导 之 下,Borland 花 费 了 数 百 万 美 元 之 后 终 于 改 名 成 为 Inprise 公 司 不 过 Delbert 原 本 是 想 在 更 改 公 司 名 称 之 后 可 以 重 新 出 发, 但 是 没 有 想 到, 在 Borland 改 名 为 Inprise 之 后, 各 种 负 面 的 效 果 却 接 踵 而 来 首 先, 传 统 的 Borland 使 用 者 都 强 烈 反 对 Inprise 这 个 名 称, 这 些 Borland 使 用 者 都 喜 欢 原 来 的 Borland 第 二 个 问 题, 是 许 多 新 的 使 用 者 都 听 过 Borland, 但 是 在 改 名 之 后 这 些 新 的 使 用 者 找 不 到 Borland, 以 为 Borland 已 经 不 见 了, 又 从 未 听 过 Inprise 这 家 公 司 第 三, 则 是 竞 争 对 手 刻 意 放 出 的 讯 息, 故 意 散 布 Borland 已 经 被 一 家 叫 做 Inprise 的 公 司 并 购 了, 因 此 希 望 原 先 的 Bor]and 用 户 能 够 放 弃 使 用 Borland 的 产 品 Delbert 万 万 没 有 想 到, 在 花 了 大 钱 更 改 公 司 名 称 之 后,Inprise(Borland) 却 开 始 得 疲 于 奔 命 地 应 付 各 种 不 利 的 后 果 结 果 是 赔 了 夫 人 又 折 兵, 不 但 浪 费 了 资 源 却 无 法 在 企 业 市 场 闯 出 名 号, 又 折 损 了 Borland 的 金 字 招 牌 另 外 一 个 有 问 题 的 决 策 是 把 Zack Urlocker 拔 擢 成 Borland 行 销 部 门 的 副 总 裁 由 于 Zack 在 Delphi 3 出 色 的 表 现, 以 及 和 Paul Gross 激 活 的 Golden Gate Strategy 让 Delbert 心 动, 并 且 Delbert 认 为 通 过 Golden Gate Strategy 可 以 让 Borland 打 入 企 业 市 场, 因 此 Delbert 对 Paul Gross 和 Zack Urlocker 都 印 象 深 刻 不 久 之 后,Delbert 分 别 提 拔 了 Paul Gross 为 Borland 开 发 工 具 部 门 的 副 总 裁 Zack Urlocker 为 行 销 部 门 的 副 总 裁 本 质 上 Zack 是 一 个 非 常 好 的 开 发 者, 对 于 产 品 也 有 很 敏 锐 的 感 触, 应 该 是 非 常 理 想 的 产 品 线 管 理 人 物,Borland 应 该 让 Zack 好 好 地 呆 在 R&D 部 门, 为 Borland 的 产 品 线 运 筹 帷 幄, 好 好 地 开 发 Borland 以 后 的 产 品 只 可 惜 的 是 " 水 往 低 处 流, 人 往 高 处 走 ", 副 总 裁 的 位 置 放 在 面 前,Zack 当 然 想 升 官 发 财 ( 谁 不 是 呢?) 不 过 Zack 并 没 有 想 到 自 己 的 优 缺 点 他 固 然 是 出 色 的 开 发 人 员 和 产 品 开 发 人 员, 但 是 对 于 行 销 却 是 门 外 汉 在 Zack 做 了 行 销 副 总 裁 之 后,Borland 的 R&D 小 组 不 但 失 去 了 一 员 大 将, 更 糟 糕 的 是 Zack 似 乎 也 开 始 向 Delbert 学 习, 慢 慢 有 了 好 大 喜 功 的 做 事 方 式 首 先,Zack 扩 充 Borland 行 销 人 员 到 达 了 100 多 人 的 数 目 可 是, 当 时 全 世 界 Borland 的 员 工 才 将 近 1000 多 人, 行 销 的 人 员 居 然 超 过 九 分 之 一 的 比 重, 实 在 是 太 夸 张 了 不 过,
42 这 么 多 人 的 部 门 在 当 时 仍 然 没 有 做 出 什 么 好 的 行 销 工 作, 仍 然 被 Borland 的 使 用 者 抱 怨 我 还 记 得 当 时 我 曾 向 行 销 部 门 要 求 所 有 开 发 工 具 的 市 场 竞 争 资 料, 结 果 行 销 部 门 只 说 没 有 这 种 资 料, 当 时 我 还 很 生 气, 这 么 庞 大 的 部 门 居 然 连 这 么 基 本 的 竞 争 信 息 都 没 有 事 实 上, 当 时 Delbert Yocam 同 意 让 Zack 的 行 销 部 门 招 聘 这 么 多 人, 除 了 是 因 为 Zack 很 红 之 外, 和 Delbert 想 改 善 以 往 Borland 做 得 很 烂 的 Marketing 工 作 也 有 很 大 的 关 系 Delbert 认 为 Zack 在 产 品 线 方 面 表 现 得 很 出 色, 因 此 也 希 望 通 过 Zack 的 能 力 来 进 行 Delbert 对 于 Borland 行 销 方 面 的 改 善 工 作 可 惜 的 是 Zack 上 任 之 后 表 现 得 不 如 预 期, 大 家 对 于 Zack 的 表 现 也 是 贬 多 于 褒 很 快, Zack 就 失 去 了 以 往 在 R&D 小 组 时 的 自 信 满 满, 开 始 逐 渐 消 沉, 最 后 终 于 离 开 了 Inprise (Borland) Zack 从 因 为 Borland C/C++3.0 时 的 OWL framework 快 速 窜 起, 在 Delphi 3 时 达 到 生 涯 的 高 峰, 一 直 到 以 行 销 副 总 裁 之 尊 黯 然 离 开 Borland, 真 是 令 人 感 慨 如 果 Zack 能 够 清 楚 了 解 自 己 的 优 缺 点, 不 要 去 接 行 销 的 工 作, 而 继 续 在 R&D 部 门 发 展, 也 许 他 会 有 更 好 的 成 果 从 Zack 的 奋 斗 过 程, 我 认 为 程 序 员 也 许 应 该 想 想 自 己 未 来 的 发 展 方 向, 好 的 技 术 人 员 一 定 是 好 的 管 理 或 是 行 销 人 才 吗? 一 开 始 我 知 道 Zack Urlocker 这 号 人 物, 是 在 数 年 前 我 还 在 Georgia Institute of Technology 念 书 时 从 那 时 著 名 的 "Windows Tech Journal (WTJ)" 得 知 的 当 时 Zack 在 WTJ 上 一 直 有 Object Pascal 的 专 栏, 写 的 内 容 都 非 常 好, 深 深 地 吸 引 了 我 因 此 当 时 每 个 月 初 都 开 车 大 约 半 小 时 到 最 近 的 计 算 机 商 店 购 买 当 期 的 WTJ, 目 的 就 是 为 了 阅 读 Zack 的 文 章, 在 那 个 时 候 我 就 认 为 这 个 家 伙 真 是 厉 害 据 我 所 知,Zack 在 1999 年 离 开 了 Borland 之 后, 加 入 了 Active Software 以 及 数 个 其 他 的 软 件 公 司, 大 都 是 担 任 行 销 方 面 的 高 阶 主 管 Zack 在 其 后 的 数 个 职 位 上 表 现 得 不 错, 不 晓 得 是 不 是 因 为 在 Borland 时 缴 了 大 量 学 费 而 学 习 到 的 知 识 不 过 不 管 如 何, 我 仍 然 认 为 Zack Urlocker 是 一 位 值 得 尊 敬 的 人 物, 因 为 他 至 少 在 一 生 中 开 发 了 2 个 重 要 而 且 成 功 的 产 品 "Borland C/C++ 和 Delphi", 本 身 的 技 术 水 准 也 很 高 相 信 Zack 也 将 永 远 记 得 Borland C/C++ 和 Delphi, 这 两 个 产 品 是 Zack 一 生 的 成 就 和 骄 傲 再 见 了 Zack Urlocker, 相 信 许 多 的 Borland C/C++ 和 Delphi 的 使 用 者 都 会 记 得 你 的 自 巅 峰 而 下 --Delphi 4 中 国 人 一 直 不 喜 欢 "4" 这 个 数 字, 认 为 它 不 吉 利 难 道 说 "4" 对 于 Borland 来 说 也 是 一 个 挥 之 不 去 的 噩 梦 吗? 当 初 的 Borland C/C++4.0 对 Borland 来 说 是 永 难 忘 怀 的 噩 梦, 到 了 Delphi 4, 难 道 Borland 又 要 重 蹈 覆 辙 吗? 时 值 1998 年, 是 下 一 个 Delphi 版 本 应 该 要 推 出 的 年 份, 也 是 Delbert Yocam 进 入 Borland 当 CEO 的 第 2 年 对 于 美 国 企 业 的 CEO 来 说, 第 2 年 是 CEO 向 董 事 会 显 示 经 营 绩 效 以 及 缴 出 成 绩 单 的 时 候 了 Delbert 为 了 能 够 缴 出 靓 丽 的 成 绩 单, 因 此 在 1998 年 决 定 必 须 拉 高 Borland 的 营 收, 以 冲 高 Borland 的 股 票 价 格 但 是, 当 时 的 Borland 才 刚 进 入 组 件 和 中 间 件 的 市 场, 尚 未 在 企 业 市 场 占 稳 脚 跟, 因 此 Delbert 决 定 在 Borland 的 开 发 工 具 产 品 线 中 动 脑 筋 Delbert 做 的 决 定 就 是 强 迫 规 定 从 1998 年 起, 在 每 一 个 Quarter( 也 就 是 每 3 个 月 ), 每 一 个 Borland 产 品 开 发 部 门 都 必 须 推 出 一 个 新 产 品, 让 Borland 每 一 个 Quarter 都 有 新 产 品 可 以
43 销 售, 以 便 增 加 Borland 的 营 收 不 过,DelbeN 这 个 决 定 却 相 当 的 糟 糕, 这 让 Borland 每 一 个 产 品 部 门 的 主 管 都 面 临 了 强 大 的 压 力, 因 为 即 使 是 产 品 还 没 有 准 备 好 推 出, 但 是 时 间 一 到, 不 管 产 品 品 质 如 何, 都 一 定 要 出 货 Delbert 这 个 错 误 的 决 定 让 1998 年 又 成 为 Borland 的 噩 梦 年 Delphi 1 2 和 3 的 时 间 间 隔 都 是 1 年 多 一 点, 展 现 了 Delphi 强 劲 的 生 命 力 依 照 原 本 的 计 划,Delphi 4 也 应 该 是 在 1998 年 推 出 的 但 是 1998 年 Borland 在 内 部 开 始 研 发 数 项 新 的 科 技 和 产 品, 加 上 Microsoft 不 断 的 挖 角 行 动, 都 让 Delphi 4 的 研 发 工 作 受 到 了 延 迟 依 照 当 时 Delphi 4 的 研 发 时 程,Delphi 4 最 早 应 该 在 1998 年 的 第 4 季 才 能 够 推 出 但 是 很 不 幸 的 是, 为 了 达 成 Delbert Yocam 的 要 求,Delphi 4 在 1998 年 的 第 三 季 就 必 须 出 货 在 接 近 1998 年 的 第 3 季 之 时, 虽 然 Delphi 的 R&D 小 组 仍 然 无 法 完 成 Delphi 4, 并 且 极 力 抗 拒 出 货, 无 奈 在 CEO 强 大 的 压 力 下,Delphi 4 仍 然 必 须 在 第 3 季 准 时 出 货 从 我 个 人 的 角 度 来 看, 当 时 Delphi 4 的 产 品 品 质 应 该 只 到 Beta 2 的 阶 段, 离 真 正 能 出 货 尚 有 一 段 不 小 的 距 离 Delbert 强 迫 Delphi 4 推 出, 不 但 打 击 了 Delphi R&D 小 组 的 土 气, 如 此 乱 搞 产 品 线, 以 外 行 领 导 内 行 的 结 果 只 是 让 Delphi 砸 坏 了 自 己 的 招 牌 不 过 站 在 Delbert 的 角 度 则 又 不 一 样 了, 因 为 对 Delbert 来 说, 如 果 在 1998 还 无 法 冲 高 Borland 的 营 收, 那 么 Delbert 肯 定 是 要 下 台 的, 因 此 Delbert 只 有 孤 注 一 掷 了 1998 年 的 第 3 季,Delphi 4 果 然 被 强 迫 推 出 了 虽 然 Delphi 4 的 新 功 能 仍 然 亮 眼, 但 是 品 质 不 稳 的 恶 名 也 很 快 地 出 现 在 使 用 者 的 抱 怨 之 中 随 后, 使 用 者 的 不 满 愈 来 愈 强 烈, Borland 面 对 四 面 八 方 的 反 弹 不 得 不 快 速 地 做 出 响 应, 立 刻 开 始 着 手 Delphi 4 Patch 的 开 发, 以 期 快 速 修 正 Delphi 4 的 臭 虫 依 我 的 看 法,Delphi 4 一 直 要 到 Patch 2 才 应 该 是 当 初 Delphi 4 出 货 时 的 品 质 由 于 Delphi 4 的 反 应 不 佳, 因 此 未 能 再 次 把 Delphi 的 销 售 量 拉 上 新 高, Delphi 原 本 锐 不 可 当 的 气 势 也 为 之 一 挫 对 于 Borland 来 说,Delphi 4 的 销 售 并 没 有 增 加 太 多 的 收 入,Delbert 打 的 如 意 算 盘 当 然 也 落 空 了 Delphi 4 的 失 败 也 严 重 地 影 响 了 C++Builder 的 品 质 和 销 售,Delbert 恶 搞 产 品 的 开 发 之 后 不 但 又 让 Borland 开 始 赔 钱, 终 于 也 自 尝 恶 果, 在 1999 年 被 Borland 的 董 事 会 开 除 不 过 无 论 如 何,Delbert 的 决 策 已 经 对 产 品 造 成 了 巨 大 的 伤 害 虽 然 Delphi 4 的 诞 生 过 程 充 满 了 困 难, 命 运 也 很 坎 坷, 不 若 它 的 兄 弟 般 好 命 但 是 Delphi 4 却 意 外 地 向 全 世 界 揭 露 了 Delphi 另 外 一 个 Architect 的 庐 山 真 面 目, 那 就 是 Chuck Jazdzewski 在 Delphi 4 中, 使 用 者 只 要 开 启 About 对 话 盒, 并 且 按 下 "Alt+chuck", 那 么 就 可 以 看 到 下 图 的 画 面 这 个 简 短 的 画 面 是 Delphi R&D 成 员 之 一 偷 偷 使 用 V8 录 下 来 并 且 放 入 Delphi 4 中 的, 这 也 是 第 一 次 Chuck 露 脸 于 全 世 界 Chuck 事 先 并 不 知 情, 而 在 以 往 的 Delphi 1/2/3 中 放 的 人 物 图 片 则 一 直 是 Anders 这 些 隐 藏 的 有 趣 图 片 以 及 Delphi R&D 开 发 小 组 的 名 单 在 Delphi 中 称 为 "Eastern Eggs" 直 到 1999 年, 在 费 城 举 行 Borland Conference 时, 我 才 真 正 有 机 会 见 到 Chuck, 并 且 和 Chuck 当 面 讨 论 一 些 事 情 Delphi 4 的 失 利 让 Delphi 从 巅 峰 的 态 势 往 下 沉 沦, 要 等 到 Danny Thorpe 继 Zack 之 后 掌 握 Delphi 的 研 发 大 权 后 才 能 再 次 向 前 挺 进 Delbert 最 后 的 挣 扎
44 由 于 Delbert 错 误 的 决 策 先 后 让 Delphi 4 和 C++Builder 4 失 利,Borland 每 季 又 开 始 亏 损 了 显 然,Delbert 自 己 也 心 知 肚 明, 如 果 再 没 有 任 何 建 树 的 话, 他 很 快 就 要 下 台 了 为 了 做 最 后 的 挣 扎,Delbert 决 定 和 其 他 公 司 合 作 1998 年 正 是 Java 快 速 兴 起 的 年 份,SUN 在 JavaWorkshop 失 利 之 后, 便 一 直 想 找 一 个 好 的 Java 开 发 工 具 而 当 时 Borland 发 表 了 JBuilder 2, 虽 然 JBuilder 还 不 是 Java 市 场 上 最 受 欢 迎 的 Java 开 发 工 具, 但 是 JBuilder 是 最 快 速 成 长 以 及 最 受 好 评 的 Java 开 发 工 具 SUN 看 到 了 JBuilder 的 潜 力, 因 此 对 于 JBuilder 拥 有 强 烈 的 兴 趣 SUN 显 示 了 对 JBuilder 的 兴 趣, 无 疑 给 了 Delbert Yocam 打 了 一 针 强 心 剂, 几 乎 在 绝 望 中 的 Delbert 似 乎 看 到 了 一 丝 曙 光 Delbert 很 快 便 和 SUN 接 触, 看 看 SUN 能 够 提 出 什 么 条 件 Delbert 的 如 意 算 盘 是 让 SUN 花 大 钱 并 购 Borland, 如 此 一 来,JBuilder 不 就 自 然 成 了 SUN 的 产 品 了 吗? 由 于 在 那 个 时 候 Borland 的 股 价 已 经 跌 到 了 3 到 4 美 金 之 间, 而 SUN 的 股 价 却 高 高 在 上, 大 概 是 在 80 多 美 金 因 此, 如 果 Delbert 能 够 促 成 合 并, 那 么 Delbert Yocam 便 可 以 大 捞 一 票, 甚 至 在 并 购 之 后,Delbert 还 有 可 能 成 为 SUN 的 副 总 裁, 继 续 位 居 要 津 不 过 世 事 不 能 尽 如 入 意 SUN 只 对 JBuilder 有 胃 口, 对 Borland 其 他 的 产 品 却 没 有 多 大 的 兴 趣, 因 为 Delphi/C++Builder 等 都 不 属 于 Java 系 列 的 产 品 而 且 Delbert Yocam 又 狮 子 大 开 口, 希 望 SUN 以 每 股 20 几 美 元 的 代 价 收 购 Borland 的 股 票, 当 场 吓 得 SUN 退 避 三 舍, 这 件 事 情 后 来 也 就 不 了 了 之 了 当 然,Delbert Yocam 很 不 甘 心, 因 为 促 不 成 这 宗 合 并 案 子, 再 加 上 Borland 被 Delbert 搞 得 乌 烟 瘴 气, 下 台 的 命 运 也 就 不 可 避 免 了 也 许 是 " 天 将 降 大 任 于 斯 人 也, 必 先 苦 其 心 志, 空 乏 其 身 " 吧,Borland 在 Philippe Kahn 离 开 之 后, 历 经 了 数 任 CEO, 但 是 一 直 没 有 找 到 真 正 好 的 CEO, 能 够 适 当 地 带 领 Borland 走 向 光 明 不 过 Delbert Yocam 似 乎 是 黎 明 前 的 黑 暗, 在 Delbert 不 名 誉 地 离 开 Borland 之 后, Borland 也 即 将 看 到 未 来 之 光 Danny 的 接 棒 和 决 心 Delphi 4 的 仓 促 推 出 果 然 在 市 场 上 反 应 很 差, 销 量 上 也 一 落 千 丈 原 本 寄 望 能 够 再 次 获 得 好 成 绩 让 Delphi 的 总 销 售 量 再 次 冲 上 新 高, 并 且 为 Borland 带 来 更 多 的 营 收 但 这 一 切 都 很 快 地 幻 灭 了, 品 质 不 好 的 产 品 仍 然 得 面 对 市 场 严 厉 的 考 验 在 Delphi 4 遭 受 了 前 所 未 有 的 失 败 接 着 C++Builder 4 也 铩 羽 而 归 之 后,Borland 又 开 始 走 下 坡 路 了 Borland 好 不 容 易 通 过 Delphi 带 来 的 希 望 却 在 错 误 的 决 策 下 被 牺 牲 了 在 1999 年 4 月 Delbert 终 于 被 Borland 的 董 事 会 扫 地 出 门, 结 束 了 在 Borland 的 日 子 我 认 为,Delbert 在 Borland 将 近 3 年 的 时 间 里, 对 Bodand 造 成 了 许 多 的 伤 害, 其 好 大 喜 功 的 管 理 方 式 对 Borland 的 产 品 线 更 几 乎 造 成 了 无 法 弥 补 的 伤 害, 是 我 所 认 为 的 最 糟 糕 的 Borland CEO 更 离 谱 的 是 在 Borland 的 董 事 会 开 除 Delbert 后, 他 居 然 还 以 合 约 未 满 为 由, 要 求 Borland 支 付 额 外 的 谴 散 费, 大 捞 了 一 票, 真 是 人 心 不 古, 工 作 做 得 如 此 差 却 还 有 脸 提 这 种 要 求, 在 最 后 一 刻 仍 然 压 榨 Borland 在 Delphi 4 的 伤 害 造 成 之 后,Delphi R&D 小 组 要 面 对 的 是 如 何 收 拾 残 局, 并 且 想 办 法 解 决 造 成 的 问 题 在 这 个 时 候 Chuck 由 于 把 精 力 放 在 Borland 另 外 秘 密 的 产 品 和 技 术 的 研 发 上, 因 此 无 法 花 太 多 的 时 间 在 Delphi 5 的 研 发 上 此 时, 在 Delphi 上 一 向 表 现 良 好 的 Danny Thorpe 便 逐 渐 挑 起 了 Delphi 的 重 负 大 任
45 Danny 在 Delphi 2 之 后 便 有 大 将 之 风, 开 始 负 责 Delphi 最 低 阶 的 编 译 器 以 及 RTL(Run-Time Library) 的 工 作 Danny 是 美 国 San Diego 大 学 毕 业 的, 主 修 就 是 编 译 器 技 术 在 Delphi 4 之 后,Danny 几 乎 成 了 RAD 部 门 主 要 的 Architect, 负 责 了 RAD 大 部 分 产 品 的 研 发 工 作, 甚 至 又 成 为 Microsoft 再 次 挖 角 的 对 象 对 于 Danny 来 说, 如 何 重 塑 Delphi 5 让 Delphi 从 失 利 中 重 新 站 起 找 回 昔 日 的 光 荣 便 是 一 个 非 常 重 要 的 工 作 在 Delbert Yocam 于 1999 年 离 开 Borland 之 后 不 久, 现 任 的 Borland CEO Dale Fuller 先 生 便 被 Borland 邀 请 加 入 成 为 Borland 的 代 理 CEO, 希 望 能 够 通 过 Dale Fuller 的 经 验 挽 救 沉 沦 中 的 Borland 在 Dale 入 主 Borland 之 后, 首 先 展 开 的 工 作 除 了 整 顿 Delbert 在 位 时 形 成 的 庞 大 无 用 的 行 销 部 门 之 外, 在 产 品 线 方 面 则 是 看 好 Linux 的 未 来, 要 求 Borland 的 RAD 部 门 必 须 开 发 出 Linux 下 的 RAD 工 具 在 Danny 接 掌 了 Delphi 主 要 的 开 发 责 任 之 后, 又 和 Chuck 一 起 再 次 形 成 中 坚 的 RAD 精 英 份 子 Chuck 主 要 负 责 新 技 术 和 新 构 想 的 实 验 作 品, 而 Danny 则 是 负 责 困 难 的 编 译 技 术 以 及 RTL 由 于 Turbo/Borland Pascal 以 及 Delphi 的 最 佳 化 编 译 器 都 是 Anders Hejlsberg 撰 写 的, 因 此 当 Anders 离 开 Borland 之 后 几 乎 没 有 人 能 够 维 护 编 译 器 程 序 代 码 Anders 都 是 使 用 汇 编 语 言 (Assembly) 撰 写 复 杂 的 编 译 器 程 序 代 码, 而 且 其 品 质 是 如 此 之 好, 不 但 连 Chuck Jazdzewski 都 赞 不 绝 口, 更 麻 烦 的 是 当 时 Borland 几 乎 没 有 工 程 师 敢 随 便 更 动 这 些 程 序 代 码 因 此 在 Anders Hejlsberg 于 Delphi 2 离 开 了 Borland 之 后,Borland 立 刻 采 取 了 数 项 行 动 希 望 能 够 解 决 这 个 " 烫 手 山 芋 " Borland 决 定 的 第 一 件 事 情 是 从 Delphi 的 编 译 器 抽 离 大 部 分 最 佳 化 的 工 作 因 为 要 在 Anders 的 程 序 代 码 再 继 续 加 入 最 佳 化 程 序 代 码 是 Borland 当 时 没 有 把 握 的 事 情 另 外, 由 于 当 时 Borland 已 经 决 定 开 发 C++Builder, 而 C++Builder 也 需 要 一 个 最 佳 化 的 编 译 器, 因 此,Borland 认 为 如 果 能 够 提 供 一 个 共 同 的 后 端 最 佳 化 编 译 器, 那 么 Delphi 和 C++Builder 不 仅 都 可 以 使 用, 还 能 够 解 决 没 有 人 敢 修 改 Delphi 编 译 器 的 问 题 这 个 决 定 就 是 后 来 Delphi 3 以 及 C++Builder 2 推 出 之 后 Borland 宣 称 的 "Delphi 和 C++Builder 可 使 用 共 同 的 后 端 最 佳 化 编 译 器 ", 这 个 工 作 当 时 是 交 由 Borland 的 编 译 器 小 组 Lee 他 们 负 责 的 不 过 共 同 的 最 佳 化 编 译 器 只 解 决 了 一 半 的 问 题, 对 于 Object Pascal 语 言 本 身 的 改 善 仍 然 需 要 能 够 修 改 Anders 撰 写 的 编 译 器, 那 么 到 底 谁 能 够 进 行 这 个 工 作 呢? 答 案 当 然 就 是 另 外 一 个 软 件 天 才 --Danny Thorpe 了 Danny 在 接 手 Delphi 的 开 发 大 任 之 后, 就 开 始 为 已 经 停 止 开 发 一 段 时 间 的 Object Pascal 语 言 本 身 进 行 演 进 的 工 作 此 外,Danny 也 开 始 为 Delphi 底 层 的 RTL 进 行 改 造, 并 且 为 Delphi 的 编 译 器 加 入 更 多 最 佳 化 的 功 能 Danny 之 所 以 同 时 在 ObjectPascal 程 序 语 言 Delphi RTL 以 及 Delphi 编 译 器 进 行 渐 进 的 改 善 工 作, 是 有 许 多 因 素 影 响 的 首 先, 当 然 是 为 了 接 下 Anders 留 下 的 工 作, 另 外 一 个 原 因 是 在 Delphi 3 之 后, 必 须 再 次 对 于 COM 的 支 持 进 行 强 化 最 后, 是 为 下 在 Delphi 4 之 后, 准 备 把 Delphi 移 植 到 Linux 上 事 实 上,Borland 在 Delphi 的 R&D 小 组 中 曾 经 一 度 准 备 把 Delphi 和 C++Builder 移 植 到 SUN 的 作 业 平 台 上, 这 是 为 了 因 应 Delbert 和 SUN 合 并 时 进 行 的 准 备 工 作 甚 至 Delphi 的 R&D 小 组 认 为, 既 然 要 开 发 跨 平 台 的 Delphi 和 C++Builder, 那 么 不 如 把 Apple 的 Macintosh 操 作 系 统 也 纳 入 考 虑 Delphi 的 R&D 小 组 在 当 时 甚 至 已 经 列 出 了 开 发 SUN 和 Macintosh 平 台 的 时 间 表, 但 是 稍 后 随 着 和 SUN 合 并 计 划 的 破 灭 以 及
46 Delbert 的 下 台, 这 个 跨 平 台 的 Delphi 计 划 也 就 暂 停 了 一 直 等 到 Dale Fuller 上 台 强 力 要 求 开 发 Linux 平 台 的 RAD 工 具 之 后,Delphi 的 R&D 小 组 才 再 次 激 活 跨 平 台 的 计 划 为 了 支 持 更 好 的 COM 开 发 能 力,Danny 修 改 了 Delphi 的 编 译 器, 直 接 支 持 COM 接 口 的 参 考 计 数 值 (Reference Count) 的 维 护 工 作, 以 免 除 开 发 者 繁 杂 的 程 序 代 码, 提 供 了 类 似 Visual Basic 的 能 力 同 时 Danny 也 在 Object Pascal 程 序 语 言 本 身 中 加 入 接 口 (Interface) 的 机 制, 让 Object Pascal 和 Java 一 样 对 接 口 程 序 设 计 都 提 供 First Class 的 支 持 Danny 并 且 更 进 一 步, 巧 妙 地 结 合 COM 的 接 口 以 及 Object Pascal 程 序 语 言 的 接 口, 让 Delphi 的 程 序 员 更 方 便 地 使 用 和 处 理 COM 接 口 Danny 的 这 些 努 力, 就 是 Delphi 的 使 用 者 在 Delphi 3 之 后 逐 渐 在 Object Pascal 中 看 到 的 Interface 机 制 对 于 非 常 熟 悉 Delphi 的 读 者 来 说, 应 该 可 以 发 现 Delphi 1/2 中 Object Pascal 变 化 的 部 分 很 少, 但 是 从 Delphi 3 之 后, 每 一 新 版 的 Delphi 在 Object Pascal 程 序 语 言 本 身 都 有 进 步, 这 些 都 是 Danny 所 做 的 努 力 在 RTL 方 面,Danny 更 是 投 注 了 大 量 的 心 血,Danny 的 第 一 步 是 去 芜 存 菁 Delphi 经 过 了 三 四 年 的 发 展, 许 多 RTL 中 的 程 序 代 码 不 是 过 时, 就 是 需 要 进 行 最 佳 化 的 调 整 因 此 从 Delphi 4 开 始,Danny 便 逐 渐 整 理 和 改 善 Delphi 的 RTL, 这 方 面 的 成 果 从 Delphi 5 之 后 便 逐 渐 显 露 出 来,Delphi 的 RTL 不 但 在 效 率 方 面 有 了 进 步, 更 提 供 了 愈 来 愈 多 以 前 版 本 的 Delphi 所 没 有 的 功 能 当 然,Danny 在 Delphi RTL 方 面 最 大 的 贡 献 是 改 善 RTL 成 为 跨 平 台 的 基 础 Danny 维 护 后 的 Delphi RTL 最 后 也 成 功 地 移 植 到 了 Linux 平 台 上, 并 且 克 服 了 许 多 Windows 以 及 Linux 平 台 差 异 处 的 困 难 当 然,Danny Thorpe 和 Chuck Jazdzewski 是 Kylix 得 以 推 出 的 最 重 要 的 功 臣 之 一 为 了 解 决 Kylix 在 Linux 平 台 上 许 多 的 技 术 问 题, 后 来 还 引 起 了 Linux 开 发 者 社 群 围 攻 Danny Thorpe 的 精 彩 大 戏, 最 后 导 致 Danny Thorpe 不 再 管 Kylix 的 开 发 而 全 力 投 入.NET 的 阵 营, 这 当 然 又 是 另 外 一 个 极 为 精 彩 的 故 事 了 对 于 Danny 来 说, 只 有 一 个 最 重 要 的 目 标, 那 就 是 再 次 擦 亮 Delphi 的 光 芒, 让 Delphi 4 的 失 败 能 够 在 下 一 个 版 本 中 一 雪 前 耻, 并 且 把 Delphi 开 发 成 最 棒 的 RAD 开 发 工 具 Danny 的 决 心 也 让 Delphi R&D 小 组 再 次 安 定 了 军 心, 在 历 经 了 Delbert 错 误 的 决 策 Microsoft 大 幅 的 挖 角 Delphi 4 的 失 利 之 后,Danny 带 领 了 一 些 新 的 Borland 工 程 师 展 开 了 艰 苦 的 工 作 Danny 的 杰 出 表 现 早 已 深 获 许 多 人 的 赞 扬 和 肯 定, 也 充 分 地 展 现 了 继 Anders Hejlsberg 之 后,Borland 另 外 视 为 宝 贝 的 天 才 的 风 采 现 在,Danny 不 但 早 已 独 当 一 面, 更 成 为 了 Borland.NET 的 Architect, 负 责 综 合 整 理 Borland 未 来 在.NET 上 的 开 发 工 具 在 2002 年 Borland 的 Conference 上,Danny 正 式 由 Borland 的 CEO Dale Fuller 先 生 颁 发 Borland President Awards 大 奖, 这 是 继 Chuck Jazdzewski Blake Stone 之 后,Borland 第 3 个 获 得 最 高 殊 荣 的 R&D 人 员 在 Danny 接 受 大 奖 之 时, 现 场 所 有 的 BorCon 参 加 人 员 都 起 立 热 烈 鼓 掌, 看 来, 即 使 在 Borland 没 有 颁 发 这 奖 项 之 前,Danny 早 已 被 所 有 了 解 他 的 贡 献 的 人 所 肯 定 和 钦 佩, 这 只 是 一 个 迟 来 的 奖 项 而 已 我 曾 在 1999 年 费 城 的 BorCon 见 到 了 Danny, 并 且 在 澳 洲 举 行 的 BorCon 和 他 有 简 短 的 对 话 Danny 的 身 材 不 算 高 大, 瘦 瘦 的, 但 是 非 常 的 温 文 尔 雅 和 Danny 讲 话 是 一 件 很 舒 服 的 事 情, 因 为 你 可 以 问 他 许 多 技 术 的 问 题, 只 要 Danny 有 时 间, 他 会 很 乐 意 和 你 讨 论 的 恭 喜 Danny!Borland 又 为 PC 软 件 界 培 养 了 一 个 天 才 和 明 星 我 相 信 Danny Thorpe 也 将 成 为 许 多 开 发 者 学 习 的 对 象, 当 然 也 包 括 我 在 内
47 和 对 Anders Hejlsberg 一 样, 最 后 再 让 我 整 理 一 下 Danny Thorpe 对 于 Borland 和 产 品 线 重 要 贡 献 和 获 得 的 殊 荣, 让 读 者 也 能 对 这 位 值 得 尊 敬 的 软 件 开 发 人 员 致 敬 : 负 责 开 发 Delphi RTL/ 编 译 器 困 难 的 工 作 改 善 Object Pascal 程 序 语 言, 加 入 现 代 语 言 元 素 --Interface 开 发 出 Kylix 并 且 解 决 Linux 平 台 的 臭 虫 1999 年 被 Borland 内 部 评 选 为 全 Borland 最 重 要 的 50 人 之 一, 是 Borland 不 可 放 弃 的 人 才 2001 年 荣 升 Borland.NET Architect 负 责 开 发 Borland.NET 下 一 代 整 合 开 发 工 具 --Galileo 和 Chuck Jazdzewski 共 同 开 发 代 号 为 Charlotte 的 下 一 代 Web Service 程 序 语 言 2002 年 于 BorCon 获 Borland President's Awards 大 奖 殊 荣 对 于 我 来 说,Borland 孕 育 了 无 数 的 伟 大 软 件 工 程 师, 当 然 有 一 些 人 我 无 缘 认 识, 因 此 对 于 这 些 人, 我 只 能 说 是 " 久 仰 大 名 ", 例 如 Windows 平 台 的 系 统 和 除 错 大 师 Matt Pietrek 但 是 有 一 些 人 却 是 我 认 识 甚 至 有 过 对 话 的 这 些 人 每 一 个 都 令 我 折 服, 也 让 我 向 往 这 些 伟 大 软 件 工 程 师 到 达 的 境 界, 他 们 是 : Borland C/C++ dbuilder 的 Framework 大 将 Carl Quinn 不 世 出 的 软 件 天 才 Anders Hejlsberg Borland 首 席 科 学 家 Chuck Jazdzewski Borland RAD 核 心 支 柱 Danny Thorpe 当 然, 还 有 本 书 稍 后 会 叙 及 的 Java 天 才,Mr. Blake Stone 重 回 基 本 的 精 致 之 作 --Delphi 年 8 月, 距 离 Delphi 4 推 出 将 近 一 年 之 后, 由 Danny 领 军 的 Delphi 5 终 于 准 备 推 出 了, 这 次 没 有 CEO 不 合 理 的 要 求,Borland 又 投 入 了 适 当 的 资 源, 再 加 上 Danny 和 Delphi R&D 小 组 的 全 心 开 发,Delphi 的 开 发 步 调 又 回 到 了 以 往 的 轨 道 在 Danny Thorpe 的 细 心 和 坚 持 之 下,Delphi 5 在 推 出 时 的 完 成 度 是 非 常 高 的 注 :Borland 的 每 一 个 产 品 在 推 出 之 前 都 会 进 行 完 成 度 测 试 和 评 估, 这 和 其 他 的 软 件 是 一 样 的 每 一 个 产 品 在 完 成 度 到 达 多 少 才 推 出 是 不 一 定 的, 一 般 来 说 在 85% 以 上 就 是 不 错 的 产 品, 低 于 80% 就 推 出 的 产 品 则 等 于 是 推 出 Beta 版 的 软 件, 品 质 一 定 不 好 当 Delphi 5 推 出 到 市 场 之 后, 其 品 质 果 然 又 受 到 了 Delphi 使 用 者 的 喜 爱, 销 售 数 字 也 证 明 Delphi 5 已 经 成 功 地 扫 除 了 Delphi 4 时 埋 下 的 阴 影 再 加 上 当 年 的 JBuilder 3 又 迈 入 了 一 个 全 新 里 程, 打 造 成 了 一 个 完 全 由 Java 撰 写 的 Java 开 发 工 具, 因 而 大 获 市 场 肯 定, 进 而 正 式 为 Borland 在 Java 市 场 带 来 了 空 前 的 胜 利 和 大 量 的 收 入 Borland 又 开 始 产 生 盈 余 了, Delphi 和 JBuilder 从 1999 年 开 始 也 正 式 成 为 了 Borland 的 两 大 摇 钱 树
48 不 过 Delphi 5 虽 然 成 功, 但 是 从 销 售 数 字 来 看,Delphi 的 销 售 几 乎 已 经 到 了 顶 峰, 不 易 再 高 度 成 长 并 且 带 来 更 多 的 收 入, 这 从 其 他 Windows 传 统 开 发 工 具 的 情 形 也 可 以 看 得 出 来 所 以 对 于 Borland 来 说, 应 该 要 开 始 为 Delphi 准 备 下 一 代 的 功 能 和 平 台 了, 重 新 设 计 Delphi 的 所 有 功 能 和 GUI 接 口, 再 次 地 演 进 Delphi 的 风 貌 即 使 Delphi 也 和 Visual Basic PowerBuilder 一 样 即 将 走 入 下 一 代 的 开 发 环 境, 但 是 Borland 仍 然 有 责 任 在 世 代 交 替 之 间 提 供 Delphi 使 用 者 顺 利 的 移 植 方 案 可 以 很 明 显 地 看 到,Delphi 6 提 供 了 Web Service 功 能 让 以 前 和 未 来 的 应 用 程 序 能 够 相 互 整 合,Delphi 7 则 将 提 供 Microsoft.NET 平 台 开 发 的 功 能 Delphi 6 和 Delphi 7 即 是 为 Delphi 的 开 发 者 走 向 未 来 提 供 的 垫 脚 石 Delphi 5 应 该 是 Delphi 3 之 后 最 好 的 一 个 Delphi 版 本, 称 为 Windows 平 台 下 最 好 的 RAD 开 发 工 具 是 当 之 无 愧 的 虽 然 Borland RAD 小 组 持 续 的 开 发 最 好 的 Windows 开 发 工 具, 但 是 在 Windows 平 台 上 的 开 发 模 式 却 已 经 悄 悄 地 进 行 了 自 DOS 以 来 最 大 的 改 变, 那 就 是 Microsoft 为 了 因 应 Java 的 攻 势 而 展 开 的.NET 计 划 Windows 平 台 上 的 开 发 概 念 开 发 工 具 和 开 发 技 术 即 将 揭 开 新 的 序 幕,Microsoft 也 准 备 逐 步 淘 汰 原 生 的 Windows 开 发 工 具 PC 平 台 上 的 开 发 工 具 从 DOS Windows 到 未 来 的.NET, 一 共 历 经 了 数 个 阶 段 在 每 一 个 阶 段, 开 发 工 具 的 市 场 都 有 着 群 雄 逐 鹿 竞 争 惨 烈 的 战 况 开 发 工 具 市 场 几 乎 是 所 有 软 件 中 竞 争 最 激 烈 的 从 DOS 时 代 PC 的 开 发 工 具 市 场 有 着 数 10 家 软 件 厂 商 竞 争, 到 了 Windows 平 台 只 剩 下 10 几 家 最 著 名 的 也 就 不 过 五 六 家, 再 延 续 到 未 来.NET 的 平 台, 举 是 轻 重 的 开 发 工 具 开 发 商 可 能 会 只 剩 下 Microsoft 和 Borland 上 面 的 表 格 是 我 整 理 从 DOS Windows 第 1 个 阶 段 Windows 第 2 个 阶 段 以 及 未 来.NET 平 台 下 的 开 发 工 具 竞 争 情 势 从 上 表 中, 读 者 可 以 看 到 不 同 的 阶 段 主 宰 流 行 的 程 序 语 言 以 及 最 后 在 开 发 工 具 市 场 胜 出 的 厂 商 开 发 工 具 情 势 的 演 变 是 Microsoft 和 Borland 仍 然 将 主 宰 这 个 市 场, 其 他 的 厂 商 只 能 占 有 极 小 的 市 场 和 影 响 力 Borland 也 证 明 了 只 有 她 能 够 和 Microsoft 抗 衡, 也 是 在 Windows 平 台 下, 除 了 Microsoft 之 外 唯 一 的 独 立 开 发 厂 商 我 相 信 Microsoft 和 Borland 仍 然 将 在.NET 平 台 的 开 发 工 具 领 域 中 缠 斗 下 去, 虽 然 Microsoft 已 经 率 先 推 出 了 Microsoft Visual Studio, 但 是 2003 年 第 2 季 Borland 也 将 推 出 全 新 的 集 成 开 发 环 境 -- 代 号 为 Galileo 的 产 品 作 为 响 应, 一 场 精 彩 的 龙 争 虎 斗 又 将 在 2003 年 展 开 序 幕 具 有 讽 刺 意 味 的 是, 数 年 前 许 多 人 质 疑 Borland 是 否 能 够 活 下 去, 许 多 人 也 因 为 担 心 Borland 的 未 来 而 不 敢 使 用 Delphi 但 是 现 在 证 明,Borland 不 但 成 长 得 愈 来 愈 好,Delphi 还 继 续 推 出 了 新 版 本 Delphi 7,Delph 8 也 在 Borland 的 计 划 之 列 Delphi 7 将 是 Windows 平 台 下 最 好 的 原 生 Windows 开 发 工 具, 也 是 撑 到 最 后 一 个 的 RAD 开 发 工 具, 连 Microsoft 都 没 有 做 到 Delphi 7 不 但 延 续 了 原 生 Windows 应 用 系 统 开 发 的 生 命, 也 为 未 来.NET 平 台 的 开 发 做 了 铺 路 和 转 移 的 准 备 Delphi VB PowerBuidler 和 Gupta 经 过 了 数 年 的 大 战 之 后, 结 果 证 明,Delphi 才 是 撑 到 最 后 的 英 雄
49 第 四 章 未 完 之 传 奇 " 成 功 产 品 的 背 后 有 着 更 多 不 为 人 知 的 秘 密!" Chuck 的 秘 密 计 划 Chuck 像 个 藏 镜 人 虽 然 他 始 终 是 Delphi 最 重 要 的 三 个 人 物 之 一, 但 是 却 一 直 不 愿 意 站 在 最 前 线 面 对 大 众, 而 宁 愿 躲 在 幕 后 进 行 令 人 惊 讶 的 软 件 革 新 工 程 Chuck 进 行 的 许 多 开 发 和 研 究 并 不 广 为 人 知 当 Anders 离 开 了 Borland 之 后,Chuck 短 暂 地 成 为 Delphi 的 总 Architect 不 过,Chuck 负 责 Delphi 的 开 发 工 作 后 不 久, 就 把 Delphi Architect 以 及 重 要 的 工 作 交 由 Danny 来 负 责, 因 为 Danny 早 已 显 示 了 大 将 之 风, 成 为 Chuck 最 为 信 任 的 软 件 专 家 而 Chuck 呢? 虽 然 他 仍 然 负 责 Delphi 中 许 多 重 要 的 工 作, 但 是 后 来 大 部 分 的 时 间 是 花 在 新 技 术 和 新 产 品 的 秘 密 研 究 之 中 对 于 一 些 Delphi 例 行 性 的 工 作,Chuck 并 不 会 花 费 太 多 时 间 在 Delphi 3 的 研 发 阶 段,Chuck 的 主 要 精 力 并 不 是 在 Delphi 3 上, 因 为 Danny 和 Zack 负 责 得 很 好 Chuck 当 时 主 要 是 进 行 两 件 重 要 的 研 发 工 作, 即 Delphi 的 Java 编 译 器 以 及 Apollo 计 划 原 来, 在 开 发 Delphi 3 时,Anders 和 Chuck 都 已 经 预 知 了 Java 将 来 必 会 成 功, 成 为 重 要 的 语 言 和 软 件 技 术 因 此 Anders 和 Chuck 都 知 道 必 须 在 Java 方 面 进 行 一 些 因 应 之 道, 以 未 雨 绸 缪 保 持 Delphi 的 竞 争 力 后 来 Anders 离 开 了 Borland, 而 Chuck 则 选 择 了 投 入 资 源 研 究 Delphi 和 Java 的 整 合 技 术 当 时 Chuck 的 想 法 是 为 什 么 不 能 够 开 发 一 个 类 似 Java 的 JVM, 直 接 把 Delphi 的 程 序 代 码 转 换 为 Java 的 ByteCode, 让 Delphi 的 应 用 程 序 直 接 在 JVM 中 执 行 呢? 甚 至, 当 时 Chuck 还 想, 为 什 么 Borland 自 己 不 开 发 一 个 Delphi JVM, 让 Delphi 也 可 以 执 行 在 Windows Linux Solaris 和 Mac OS 之 中 呢? 有 了 这 个 疯 狂 的 想 法 之 后,Chuck 立 刻 要 求 Borland 的 高 层 批 准 这 个 研 究 计 划, 让 他 能 够 有 资 源 进 行 研 究 工 作 由 于 当 时 正 值 Anders 因 为 不 满 在 Borland 没 有 足 够 的 研 究 资 源 而 离 开 了 Borland, 进 入 Microsoft 一 展 心 中 的 鸿 图 因 此,Borland 高 层 当 然 不 愿 得 罪 Chuck, 以 免 他 也 离 开 Borland 由 于 当 时 Delphi 3 的 进 度 在 掌 握 之 中, 而 且 Delphi 为 Borland 带 来 了 大 量 的 资 源, 因 此 Borland 高 层 批 准 了 Chuck 的 这 个 不 可 思 议 的 计 划, 让 Chuck 开 始 了 研 究 之 路 Chuck 有 了 资 源 之 后, 就 立 刻 投 入 研 究 的 领 域, 在 Delphi 3 的 开 发 末 期 也 没 有 花 太 多 的 时 间 在 Delphi 上, 反 而 加 速 地 和 Borland 的 编 译 器 小 组 为 Delphi For Java 编 译 器 进 行 研 发 工 作 在 1997 年 中 左 右,Chuck 有 了 初 步 的 成 果, 已 经 能 够 把 一 些 简 单 的 Object Pascal 程 序 直 接 编 译 成 Java 的 ByteCode 并 且 执 行 在 JVM 之 中 这 实 在 是 一 个 不 小 的 突 破, 因 此 在 当 年 的 BorCon 1997 中,Borland 和 Chuck 正 式 对 外 公 开 了 这 个 技 术, 立 刻 引 起 了 Delphi 使 用 者 强 烈 的 兴 趣, 因 为 这 代 表 一 旦 这 个 编 译 器 研 发 出 来, 那 么 Object Pascal 便 立 刻 成 为 一 个 像
50 Java 一 样 的 跨 平 台 程 序 语 言, 而 且, 如 果 Borland 能 够 继 续 把 VCL 和 RTL 移 植 进 来, 那 么, Windows 平 台 的 Delphi 程 序 员 可 以 通 过 这 个 技 术 同 时 开 发 多 个 平 台 的 应 用 程 序, 这 实 在 是 太 美 妙 了 当 BorCon 公 开 了 这 个 技 术 之 后,Borland 立 刻 面 临 了 愈 来 愈 多 的 Delphi 使 用 者 的 询 问 以 及 要 求 Borland 尽 早 推 出 这 个 技 术 的 压 力 当 然,Chuck 以 及 Delphi 研 发 小 组 也 非 常 兴 奋, 因 为 这 代 表 Delphi 又 将 有 新 的 市 场 以 及 新 的 成 长 动 力, 所 以 Chuck 立 刻 要 求 Borland 投 入 更 多 的 资 源, 以 加 速 研 究 这 个 Delphi For Java 编 译 器 以 及 相 关 的 研 究 工 作 不 过, 此 时 却 发 生 了 两 件 事 情, 最 终 让 Chuck 放 弃 了 继 续 开 发 Delphi For Java 编 译 器 的 意 图 首 先,Chuck 和 Borland 的 编 译 器 开 发 小 组 发 现 JVM 似 乎 和 Java 语 言 系 结 得 太 紧 密, 以 致 JVM 的 许 多 伪 指 令 都 和 Java 语 言 的 架 构 系 结 在 一 起, 无 法 轻 易 地 由 其 他 语 言 来 提 供 类 似 Java 语 言 的 架 构, 除 非 修 改 这 些 语 言 架 构 来 仿 真 Java 语 言 的 架 构 这 个 原 因 造 成 了 当 Chuck 想 把 Object Pascal 一 些 复 杂 的 数 据 类 型 和 语 言 架 构 编 译 成 Java ByteCode 时 发 生 了 极 大 的 困 难 第 二 个 决 定 性 的 原 因 是, 由 于 当 时 JBuilder 已 经 表 现 得 愈 来 愈 好,Borland 希 望 投 入 更 多 的 资 源 到 JBuilder 小 组, 而 且 不 希 望 有 其 他 的 产 品 或 是 技 术 影 响 JBuilder 的 成 长, 因 此, Borland 高 层 对 于 Delphi For Java 编 译 技 术 的 开 发 也 没 有 很 大 的 兴 趣, 再 也 没 有 批 准 更 多 的 资 源 给 Chuck 最 后,Chuck 的 这 个 Delphi For Java 编 译 计 划 便 宣 告 终 结 了 这 实 在 是 件 可 惜 的 事 情, 不 过, 当 时 Chuck 研 究 的 东 西 并 没 有 白 费, 因 为 现 在 Delphi 小 组 也 根 据 当 时 Chuck 研 究 的 成 果 来 开 发.NET 上 的 编 译 器, 希 望 通 过 以 前 投 入 的 资 源 和 经 验 来 开 发 更 好 的 Delphi For.NET 编 译 器 另 外 一 个 Chuck 在 Delphi 3 开 发 阶 段 秘 密 进 行 的 研 究 计 划 则 更 为 重 要 了 当 时 我 更 期 望 这 个 技 术 能 够 出 现 在 市 场 之 上, 不 过 可 惜 的 是, 最 后 也 由 于 Borland 高 层 要 求 Chuck 投 入 Kylix 的 研 发 工 作 而 一 直 拖 延 到 今 日 都 还 在 软 件 实 验 室 中, 这 就 是 属 于 Data Component 技 术 的 Apollo 计 划 Apollo 项 目 的 缘 由 要 从 Delphi 2 开 始 说 起 在 Delphi 2 开 发 时,Anders 一 直 想 在 Delphi 中 建 立 一 个 Garbage Collection 的 功 能, 而 Chuck 则 希 望 继 续 扩 充 VCL 的 功 能 为 VCL 加 入 Data Component 的 能 力 由 于 VCL 使 用 的 组 件 架 构 在 连 接 数 据 时 是 使 用 数 据 感 知 组 件 (Data Aware) 技 术, 但 是 许 多 真 正 使 用 面 向 对 象 技 术 的 程 序 员 反 而 对 使 用 数 据 感 知 组 件 相 当 地 反 感, 而 且 在 大 型 面 向 对 象 项 目 中, 数 据 感 知 组 件 也 被 证 明 是 不 适 当 的 因 此 Chuck 为 了 赋 予 VCL 开 发 大 型 面 向 对 象 项 目 的 能 力, 决 定 加 入 Data Component 技 术 所 谓 Data Component 技 术, 是 指 VCL 架 构 可 以 代 表 实 际 世 界 中 的 domain 对 象, 这 些 domain 对 象 可 通 过 VCL 的 技 术 直 接 储 存 在 数 据 库 之 中, 或 是 从 数 据 库 中 取 出, 类 似 EJB 中 的 OR Mapping(Object-Relational Mapping) 技 术 如 此 一 来,Delphi 的 程 序 员 可 以 在 Delphi 中 直 接 使 用 VCL 组 件 来 代 表 如 员 工 和 公 司 等 实 例 (instance), 而 且 可 以 随 时 把 员 工 和 公 司 实 例 储 存 到 数 据 库 中, 再 从 数 据 库 中 取 出 员 工 和 公 司 成 为 对 象, 而 不 需 要 使 用 数 据 存 取 对 象 直 接 处 理 数 据 库 中 的 数 据 Chuck 早 在 五 六 年 前 就 想 在 Delphi 中 实 现 目 前 Bold 等 公 司 提 供 的 Object Instance 技 术
51 没 有 想 到, 就 在 Chuck 进 行 Apollo 项 目 到 了 一 半 的 时 候, 由 于 当 时 Borland 的 CEO Dale Fuller 先 生 看 好 Linux 的 发 展, 因 此 下 令 所 有 Delphi 小 组 的 成 员 都 必 须 投 入 到 Linux 开 发 工 具 的 研 发 工 作, 全 力 为 Kylix 催 生, 于 是 连 Chuck 也 被 要 求 先 暂 缓 所 有 的 研 究 计 划, 投 入 Kylix 的 开 发 工 作 其 实, 当 时 我 就 非 常 反 对 像 Chuck 这 样 的 顶 尖 人 才 进 入 Kylix 小 组 撰 写 程 序 代 码, 因 为 这 实 在 是 非 常 浪 费 的 事 情 Chuck 应 该 进 行 更 为 重 要 的 研 究 计 划, 而 不 是 只 开 发 一 般 的 工 具 而 已 但 是, 当 时 Borland 高 层 认 为 Linux 将 可 带 领 Borland 一 飞 冲 天, 因 此 仍 然 坚 持 所 有 的 人 力 都 必 须 投 入 不 过, 市 场 就 是 变 化 得 这 么 快, 在 Chuck 和 Danny 都 投 入 到 Kylix 的 开 发 之 后, 虽 然 Delphi 小 组 几 乎 以 创 记 录 的 时 程 在 1 年 半 左 右 就 在 一 个 新 的 平 台 开 发 了 一 个 新 的 产 品 线, 但 是 在 Kylix 推 出 之 后,Linux 平 台 的 疯 狂 热 潮 却 开 始 快 速 消 退 所 有 投 入 Linux 的 厂 商 再 也 无 法 仅 以 沾 上 Linux 的 名 称 就 可 以 让 股 票 日 创 新 高, 市 场 终 究 是 要 回 到 基 本 点, 只 有 真 正 获 利 的 公 司 才 能 够 在 市 场 成 为 赢 家 在 Chuck 被 Kylix 开 发 工 作 延 误 了 近 2 年 的 时 间 后,Apollo 再 也 不 像 当 初 那 么 吸 引 人 了, 因 为 市 场 已 经 出 现 了 类 似 的 科 技, 例 如 EJB 的 OR Mapping 技 术 和 Bold 等 公 司 的 产 品 如 果 Borland 当 初 能 够 让 Chuck 全 力 发 展 Apollo 计 划 并 且 在 其 他 公 司 之 前 推 出 Apollo 的 成 果, 那 么 Delphi 将 可 以 在 OR Mapping 方 面 占 有 领 导 的 地 位,Borland 研 究 的 OR Mapping 技 术 说 不 定 还 可 以 被 SUN 授 权 使 用, 就 像 Oracle 花 了 大 钱 从 WebGain 购 买 类 似 的 技 术 一 样 Anders 和 Chuck 这 两 位 拥 有 一 流 技 术 和 眼 光 的 技 术 人 物, 或 多 或 少 地 被 许 多 平 凡 的 管 理 人 物 糟 蹋 了 好 几 次 Chuck 本 身 是 一 位 非 常 和 蔼 可 亲 的 人 物, 我 曾 经 多 次 和 Chuck 交 谈, 每 次 谈 话 时 Chuck 总 是 笑 嘻 嘻 的, 似 乎 没 有 事 情 可 以 让 他 感 到 忧 虑 如 果 不 知 道 Chuck 的 人 和 Chuck 交 谈, 那 么 可 能 没 有 人 会 相 信, 这 位 看 起 来 像 是 好 好 先 生 的 人 在 软 件 方 面 有 这 么 惊 人 的 成 就 和 高 深 的 造 诣, 而 Chuck 一 头 接 近 红 色 的 头 发 也 让 我 第 一 次 见 到 他 时 被 吓 了 一 跳 当 Chuck 和 Danny 被 征 召 开 发 Kylix 时, 其 实 也 不 是 非 常 顺 遂 的 在 Kylix 激 活 之 后, 照 例 是 由 Danny 负 责 Linux 上 编 译 器 和 RTL 的 研 发 工 作, 而 Chuck 则 负 责 VCL 和 CLX 方 面 的 工 作 由 于 要 在 Linux 上 开 发 集 成 开 发 环 境, 必 须 先 在 Danny 负 责 的 底 层 RTL 和 编 译 器 完 成 之 后 才 能 够 开 始 设 计 但 是,Danny 在 把 Delphi 的 RTL 和 编 译 器 移 植 到 Linux 的 过 程 中 发 现 了 一 些 Linux 的 臭 虫, 因 此, 当 时 Danny 在 Linux 的 论 坛 上 公 布 了 他 发 现 的 臭 虫, 并 且 希 望 Linux 的 社 群 能 够 修 改 这 些 问 题, 如 此 一 来 Borland 才 能 够 继 续 研 发 Kylix 不 过, 也 许 是 Linux 的 社 群 拥 有 排 外 的 情 绪, 一 直 认 为 Borland 不 是 正 统 的 Linux 软 件 厂 商, 因 此 对 于 Danny 指 出 的 Linux 臭 虫 也 嗤 之 以 鼻, 认 为 Danny 什 么 都 不 懂 就 来 说 是 Linux 的 臭 虫 由 于 Linux 论 坛 上 的 人 非 常 的 不 友 善, 而 且 坚 决 不 承 认 Danny 提 出 的 是 臭 虫, 因 此 也 惹 得 Danny 非 常 不 高 兴, 认 为 做 软 件 的 技 术 人 员 为 何 不 能 就 事 论 事, 明 明 有 问 题 却 死 不 承 认 于 是 Danny 便 在 Linux 论 坛 上 和 这 些 人 发 动 了 笔 战, 愈 吵 愈 轰 动, 最 后 演 变 成 了 两 派 人 马 互 相 批 评 我 在 当 时 也 想 不 通, 为 什 么 明 明 Danny 已 经 指 出 了 Linux 有 问 题 的 地 方, 而 这 些 也 是 搞 软 件 的 人 却 有 如 此 的 反 应? 这 些 人 是 不 是 太 小 心 眼 了 呢? 以 Danny 如 此 功 力 深 厚 的 人 反 而 被 这 些 Linux 的 人 说 成 是 不 懂 软 件 开 发 真 是 笑 掉 人 的 大 牙, 这 些 人 应 该 看 看 Danny 做 出 了 什 么 东 西, 看 看 他 们 能 不 能 做 得 出 来 再 说 由 于 Danny 无 法 在 Linux 论 坛 上 得 到 结 果 和 支 持, 因 此 一 怒 之 下 干 脆 自 己 来 修 改 Linux 的 臭 虫, 好 让 Kylix 能 够 继 续 开 发 下 去, 不 再 需 要 这 些 Linux 社 群 的 帮 忙 这 也 是 为 什 么 在
52 安 装 Kylix 时,Kylix 不 但 会 检 查 使 用 者 Linux 使 用 的 版 本, 并 且 会 安 装 Patch 档 案 以 修 改 Linux 操 作 系 统 的 问 题 Danny 选 择 了 安 装 额 外 的 Patch 档 案 的 方 式 来 解 决 Linux 的 臭 虫, 而 不 是 直 接 修 改 Linux 的 核 心, 再 由 Borland 分 发 Linux Distribution 当 时, 在 Danny 解 决 了 Linux 执 行 时 期 函 数 库 的 一 些 臭 虫 之 后,Kylix 才 能 够 顺 利 地 开 发 下 去 后 来, 在 Kylix 小 组 开 发 Kylix 的 集 成 开 发 环 境 时 也 发 现 了 一 些 XWindow 的 臭 虫,Danny 也 是 选 择 由 Borland 自 己 来 修 改 加 以 解 决, 而 不 需 要 Linux 社 群 的 帮 忙 当 然, 由 于 Danny 和 Linux 社 群 之 间 的 大 战 也 让 Danny 憋 了 一 肚 子 气, 在 Kylix 推 出 之 后, 就 把 随 后 相 关 的 开 发 工 作 交 给 Kylix 小 组 来 负 责,Danny 则 专 心 到.NET 研 发 小 组 为 Borland 开 发.NET 上 的 下 一 代 开 发 工 具 了 Danny 离 开 Linux 是 Linux 的 损 失, 这 些 和 Danny 争 吵 的 Linux 程 序 员 不 知 道 他 们 在 Linux 上 损 失 了 一 个 天 才 型 的 软 件 人 员 有 时 我 想, 一 些 庸 才 不 就 是 不 断 地 攻 击 天 才 吗? 难 怪 古 人 说 " 不 招 人 忌 是 庸 才 " 了 看 了 Danny 大 战 Linux 论 坛 这 一 幕, 我 也 只 能 在 旁 摇 头 叹 息, 不 过 我 个 人 倒 是 很 高 兴 Danny 和 Chuck 全 力 开 发.NET 产 品, 因 为 我 一 直 想 使 用 Borland 的 开 发 工 具 学 习 和 开 发.NET 应 用 程 序 呢 目 前,Chuck 在 Borland 进 行 的 工 作 是 在.NET 上 研 究 先 进 的 技 术, 包 含 了 在 2002 年 BorCon 上 Chuck 公 开 展 示 的 新 语 言 --Charlotte Charlotte 主 要 是 提 供 Web Service 的 First-Class 语 言, 是 由 Chuck 定 义 Charlotte 的 语 法 功 能, 并 且 实 现 Charlotte 编 译 器 的 我 实 在 佩 服 像 Chuck 以 及 Anders Danny 这 些 人 物, 因 为 这 些 人 几 乎 都 可 以 独 自 开 发 和 实 现 新 的 程 序 语 言, 其 功 力 的 确 是 一 般 软 件 人 员 难 以 想 象 的 在 BorCon 上,Chuck 已 经 展 示 了 Charlotte 的 语 法 以 及 初 步 的 编 译 器, 目 前, 在 Borland.NET 内 部,Charlotte 使 用 了 另 外 一 个 比 较 正 式 的 名 称, 到 了 2003 年 或 许 我 们 就 可 以 看 到 Chuck 和 Danny 在 2002 年 一 整 年 努 力 的 成 果 了 回 到 未 来 2002 年,Borland 推 出 了 Delphi 7 虽 然 此 时 Microsoft 已 经 信 誓 旦 旦 地 表 明,.NET 才 是 Windows 的 未 来, 不 过 现 在 Windows 应 用 程 序 的 开 发 仍 然 是 主 流 但 是 未 来 呢?Delphi 的 未 来 是 什 么 呢? Borland 已 经 对 全 世 界 宣 布 了 2003 年 即 将 推 出.NET 上 的 开 发 工 具, 首 先 支 持 的 语 言 将 会 是 C# 和 Object Pascal, 而 且 在.NET 上,Delphi 已 经 成 为 Object Pascal 的 代 名 词, 这 意 味 着 未 来 在.NET 上,Delphi 已 经 是 一 个 语 言 名 称 了,Delphi 的 使 用 者 将 使 用 Delphi 语 言 在.NET 上 开 发 新 一 代 的.NET 应 用 系 统 那 么 在 Windows 平 台 呢?Delphi 7 会 是 最 后 一 个 版 本 吗? 当 然 不, 虽 然 根 据 各 种 信 息 调 查 的 结 果 显 示, 从 2003 年 开 始,.NET 将 进 入 起 飞 的 阶 段, 但 是 原 生 Windows 程 序 的 开 发 仍 然 拥 有 三 四 年 的 需 求 既 然 如 此, 那 么 一 定 还 有 许 多 的 使 用 者 仍 然 需 要 原 生 的 Windows 程 序 开 发 工 具,Borland 不 会 放 弃 这 些 使 用 者 和 这 么 大 的 市 场, 因 此 Borland 也 一 定 会 继 续 推 出 新 的 Delphi 版 本 供 使 用 者 使 用 更 何 况, 即 使 是 对 于 想 要 开 发.NET 的 使 用 者 来 说, 可 能 有 极 大 部 分 的 人 也 同 时 需 要 开 发 原 生 窗 口 应 用 程 序 那 么, 为 什 么 软 件 厂 商 不 提 供 一 个 开 发 工 具 能 够 让 使 用 者 在 同 一 个 集
53 成 开 发 环 境 下 同 时 开 发 原 生 窗 口 应 用 程 序 以 及.NET 应 用 程 序 呢? 这 个 需 求 就 是 Delphi 的 优 势 和 机 会 看 看 现 在 Delphi 7 提 供 的 功 能, 我 们 会 很 惊 讶 地 发 现, 其 实 Borland 已 经 偷 偷 地 在 进 行 一 些 革 新 的 做 法 如 果 读 者 在 Delphi 7 的 集 成 开 发 环 境 中 安 装 了 Delphi for.net command-line complier IDE integration, 那 么 就 可 以 如 下 图 般 在 Delphi 7 的 集 成 开 发 环 境 中 激 活 Delphi For.NET 编 译 器, 以 便 在 Delphi 7 中 开 始 撰 写.NET 应 用 程 序 在 2002 年 11 月,Borland 又 公 开 了 Beta 版 本 的 VCL.NET 供 Delphi 7 使 用 者 下 载, 以 便 在.NET 中 使 用 VCL 组 件 不 过, 许 多 人 会 觉 得 光 是 拥 有 Delphi For.NET 编 译 器 以 及 VCL.NET 并 不 够 用 如 果 要 开 发.NET 的 WinForm 应 用 程 序, 那 么 Delphi 7 目 前 并 没 有 提 供 类 似 Delphi 的 Form Designer, 因 此 仍 然 非 常 不 方 便,Delphi 的 使 用 者 仍 然 需 要 一 个 解 决 方 案 让 我 们 想 想, 虽 然 目 前 Delphi For.NET 没 有 像 Delphi 的 Form Designer, 但 是 如 果 我 们 能 够 使 用 Delphi 本 身 的 Form Designer 作 为.NET WinForm 的 开 发 接 口, 然 后, 如 果 能 够 再 通 过 一 个 工 具 把 Delphi 的 TForm 和 VCL 转 换 为.NET 的 WinForm 以 及 VCL.NET 不 就 可 以 了 吗? 如 此 一 来,Delphi 的 使 用 者 几 乎 可 以 在 不 花 费 时 间 成 本 之 下 立 刻 在 Delphi 中 开 发.NET 可 视 化 WinForm 应 用 程 序, 这 不 是 一 举 数 得 吗? 没 错, 其 实 Borland 也 早 就 想 到 了, 因 此 Borland 也 正 想 开 发 一 个 Delphi 转 换 到.NET 程 序 的 转 换 器 让 Delphi 的 程 序 员 使 用 这 样 Delphi 的 程 序 员 就 可 以 直 接 使 用 Delphi 的 Form Designer 来 设 计.NET WinForm 的 接 口, 最 后 再 通 过 转 换 器 自 动 地 转 换 为.NET 的 WinForm 应 用 程 序 如 果 读 者 使 用 过 Delphi 7 的 Delphi For.NET 编 译 器, 那 在 其 中 的 文 件 以 及 Delphi 的 论 坛 中 就 可 以 看 到 "Morpheus'' 这 个 名 称 其 实,Morpheus 正 是 Delphi For.NET 编 译 器 的 研 发 计 划 的 代 号 [ 在 电 影 The Matrix 中,Morpheus 是 救 世 主 (The One) 基 努 李 维 尚 未 出 现 之 前 的 领 导 者,Morpheus 的 任 务 就 是 寻 找 救 世 主 以 拯 救 末 世 ] 因 此 Delphi 的 研 发 小 组 很 有 创 意 地 把 Delphi For.NET 编 译 器 命 名 为 Morpheus, 以 代 表 Delphi For.NET 编 译 器 是 未 来 Borland 推 出 纯.NET 开 发 工 具 之 前 的 救 世 主, 负 责 带 领 Delphi 程 序 员 走 向 未 来.NET 的 救 赎 之 道 而 Morpheus 计 划 的 任 务 就 是 为 Galileo 打 下 成 功 基 础 虽 然 我 们 对 Delphi 8 可 能 提 供 的 功 能 现 在 还 不 清 楚, 但 通 过 使 用 者 的 需 求 以 及 市 场 的 现 况, 可 以 推 算 出 如 下 轮 廓 : 新 的 集 成 开 发 环 境 : 这 是 为 了 让 Delphi 能 够 同 时 在 集 成 开 发 环 境 中 开 发 原 生 窗 口 应 用 程 序.NET 应 用 程 序 以 及 Kylix 应 用 程 序 新 的 VCL 和 CLX: 可 以 让 VCL 同 时 使 用 在 原 生 窗 口 和.NET 之 中 此 外 Borland 也 将 再 次 修 改 VCL/CLX 以 增 加 Framework 在 三 个 平 台 的 兼 容 性 新 的 Delphi/Kylix 和 Delphi.NET 编 译 器 : 可 以 在 Object Pascal 语 言 上 提 供 更 为 兼 容 的 效 果 这 是 因 为 在 Delphi For.NET 中,Borland 已 经 为 Object Pascal 加 入 了 许 多 新 的 语 言 元 素 和 功 能,Borland 可 能 也 将 为 Windows 和 Linux 平 台 上 的 编 译 器 加 入 这 些 功 能 更 多 的 辅 助 工 具 : 帮 助 程 序 员 同 时 开 发 三 个 不 同 的 应 用 系 统 当 然 Delphi 8 还 将 有 其 他 许 多 未 知 的 功 能, 不 过 上 面 所 列 的 几 项 应 该 是 Delphi 8 肯 定 具
54 备 的 如 果 Delphi 8 真 能 提 供 上 述 功 能, 那 我 相 信 它 将 是 使 用 率 最 高 的 窗 口 开 发 工 具, 因 为 除 了 程 序 员 完 全 是 开 发.NET 应 用 程 序 之 外,Delphi 8 可 以 提 供 最 齐 全 的 开 发 能 力 Delphi 8 将 是 Delphi 最 后 的 一 个 版 本 吗? 这 我 也 不 知 道, 唯 一 可 以 用 来 判 断 的 标 准 是.NET 多 久 能 够 完 全 占 据 窗 口 开 发 的 应 用 如 果 真 有 那 一 天, 那 也 就 是 所 有 原 生 窗 口 退 出 市 场 主 流 的 时 候, 就 像 数 年 前 的 DOS 开 发 工 具 一 样 届 时 也 请 读 者 把 Delphi 的 最 后 一 个 版 本 保 留 起 来, 以 作 为 我 们 一 起 经 历 过 原 生 窗 口 开 发 的 见 证, 同 时, 也 作 为 这 个 曾 经 是 最 棒 的 原 生 窗 口 开 发 工 具 的 纪 念 Delphi 风 云 榜 Delphi 的 开 发 过 程 创 建 了 许 多 记 录, 并 且 也 造 就 了 许 多 有 名 的 人 物 Delphi 创 建 的 记 录 是 许 多 开 发 工 具 无 法 企 及 的, 而 围 绕 在 Delphi 外 围 的 杰 出 开 发 者 也 各 领 风 骚, 为 Delphi 的 传 奇 添 加 了 更 多 精 彩 的 故 事 这 些 Delphi 记 录 和 杰 出 的 Delphi 开 发 者 故 事 值 得 读 者 们 一 一 品 味, 特 别 是 Delphi 使 用 者 们 熟 悉 或 听 闻 过 的 人 们 他 们 虽 然 不 像 Delphi 的 灵 魂 人 员 Anders Chuck 或 Danny 那 样, 广 为 人 知 受 人 尊 敬, 但 对 Delphi 的 发 展, 他 们 也 具 有 不 可 磨 灭 的 贡 献, 这 里 我 们 也 来 看 看 他 们 的 " 庐 山 真 面 目 " Delphi 集 成 开 发 环 境 之 父 相 信 每 一 个 Delphi/C++Builder 的 使 用 者 每 日 都 花 许 多 时 间 在 Delphi/C++Builder 的 集 成 开 发 环 境 中, 既 然 如 此, 那 除 了 Anders Chuck 和 Danny 之 外, 大 家 一 定 要 认 识 一 下 负 责 开 发 Delphi/C++Builder 集 成 开 发 环 境 的 主 要 领 导 人 Allen Bauer Allen Bauer 是 Borland 的 资 深 工 程 师, 已 经 在 Borland 工 作 了 相 当 长 的 时 间 Allen 除 了 从 Delphi 1 开 始 便 负 责 集 成 开 发 环 境 的 研 发 工 作 外, 还 不 断 地 翻 新 集 成 开 发 环 境 改 善 Delphi/C++Builder 集 成 开 发 环 境 的 公 开 标 准 :Open Tools API 的 架 构 我 曾 经 在 费 城 旅 馆 的 电 梯 中 和 Allen 交 谈 过,Allen 讲 话 非 常 轻 声 细 语, 给 人 一 种 翩 翩 君 子 的 感 觉 Allen 的 这 张 照 片 应 该 是 最 近 的, 因 为 相 片 中 的 Allen 比 1999 年 我 在 费 城 时 看 到 的 样 子 老 了 许 多, 看 来 最 近 几 年 Allen 为 Delphi/C++Builder 的 集 成 开 发 环 境 投 入 了 不 少 的 心 力 目 前 Allen 正 在 为 Galileo 全 力 开 发 新 的 集 成 开 发 环 境, 据 说 Allen 将 在 新 的 集 成 开 发 环 境 中 加 入 许 多 更 强 劲 的 功 能,2003 年 我 们 继 续 关 注 Allen 的 下 一 个 力 作 吧 Borland RAD 工 具 的 推 广 大 使 我 非 常 怀 念 Charlie Calvert, 因 为 在 所 有 Delphi R&D 小 组 中, 我 和 Charlie Calvert 有 过 最 多 共 事 的 经 验 Charlie Calvert 属 于 Borland Developer Relationship 小 组 中 的 资 深 经 理, 主 要 工 作 是 负 责 开 发 全 世 界 Borland RAD 工 具 并 协 调 其 与 使 用 者 之 间 的 关 系 Calvert 不 但 是 著 名 的 Delphi/C++Builder Unleashed 书 籍 的 作 者, 前 段 时 间 还 撰 写 了 JBuilder 7 的 书 籍
55 Charlie Calvert 本 人 是 一 位 素 食 者, 为 人 非 常 的 热 情 和 蔼 他 在 Borland 工 作 的 后 期 也 参 与 了 小 部 分 Delphi 和 C++Builder 研 发 的 工 作 Charlie Calvert 曾 说 当 Borland 不 再 开 发 全 世 界 最 好 的 工 具 时 就 是 他 离 开 Borland 之 际 两 年 前 Charlie Calvert 终 于 离 开 了, 这 让 我 非 常 难 过, 我 认 为 他 的 离 开 是 Borland 的 损 失 我 曾 经 问 过 Charlie Calvert, 为 什 么 要 离 开 Borland? 他 回 答 说 是 因 为 不 习 惯 当 时 Borland 的 转 变 (Delbert 乱 搞 开 发 工 具 的 时 期 ) 而 打 算 自 己 创 业 不 过 令 人 高 兴 的 是, 在 Charlie Calvert 离 开 Borland 之 后, 他 仍 然 在 从 事 Borland 相 关 工 具 的 训 练 工 作, 看 来 Charlie Calvert 仍 然 对 Borland 的 工 具 有 着 一 份 强 烈 的 爱 意 Delphi 的 强 中 手 除 了 Delphi R&D 小 组 之 外, 我 认 为 最 强 的 Delphi 高 手 应 该 是 Ray Lischner 了 Ray Lischner 博 土 从 Delphi 1 开 始 就 积 极 参 与 Delphi 的 相 关 工 作, 稍 后 更 撰 写 了 名 震 Delphi 圈 的 数 本 书 籍, 包 括 Secrets Of Delphi 2 Hidden Paths Of Delphi 3 以 及 Delphi In a Nutshell 等 好 书, 其 深 厚 的 Delphi 功 力 也 是 Delphi R&D 小 组 所 公 认 的 由 于 Ray 的 书 籍 一 向 令 我 折 服, 因 此 在 Delphi 3 时 还 特 别 要 求 台 湾 出 版 商 引 入 Hidden Paths Of Delphi 3, 并 且 为 Hidden Paths Of Delphi 3 进 行 中 文 书 籍 的 翻 译 工 作 除 了 撰 写 书 籍 外, 每 一 个 Delphi 的 新 版 本,Ray 都 参 加 Beta 测 试 Ray 是 一 个 非 常 直 率 的 人, 一 旦 遇 到 臭 虫 或 是 Borland 没 有 做 好 的 地 方, 他 都 会 毫 不 留 情 地 要 求 Borland 更 正 或 是 批 评 Borland 没 有 尽 力 我 曾 经 在 Borland 内 部 的 Delphi 论 坛 中 看 到 Ray 精 彩 绝 伦 地 痛 批 Borland 没 有 把 产 品 做 好 尤 其 在 Delphi 4 时 更 是 不 惧 高 层 权 势 痛 骂 Borland 乱 搞 Delphi, 看 得 我 大 呼 过 瘾 虽 然 我 身 为 Borland 的 人, 不 敢 骂 Borland 高 层 的 人, 但 是 心 中 所 想 是 和 Ray 一 样 的, 而 由 Ray 这 位 具 有 身 份 地 位 的 人 口 中 骂 出, 实 在 令 我 觉 得 爽 快, 当 然 Ray 如 此 做 也 是 " 爱 之 深, 责 之 切 " 的 缘 故 因 此 直 到 现 在, 在 参 加 RAD 工 具 Beta 测 试 时, 我 还 是 最 喜 欢 看 Ray 的 评 论, 因 为 Ray 的 评 论 不 但 有 深 度, 更 敢 直 言, 通 常 是 最 有 帮 助 的 论 坛 讨 论 内 容 Delphi 双 响 炮 说 起 Steve Teixeira 和 Xavier Pacheco 这 两 位 仁 兄, 相 信 也 是 许 多 Delphi 程 序 员 耳 熟 能 详 的 大 人 物, 因 为 他 们 两 位 正 是 Delphi Developer's Guide 这 本 好 书 的 作 者 Steve Teixeira 和 Xavier Pacheco 都 曾 是 Delphi R&D 小 组 的 成 员, 不 过 这 两 位 仁 兄 目 前 都 离 开 了 Borland, 各 自 创 业 去 了, 毕 竟 自 己 当 老 板 更 有 赚 头 说 起 Steve Teixeira 和 Xavier Pacheco, 令 人 好 笑 的 是 他 们 两 人 的 身 材 实 在 是 很 强 烈 的 对 比,Steve Teixeira 年 轻 高 大, 而 Xavier Pacheco 则 极 为 瘦 小, 因 此 当 Xavier Pacheco 站 在 Steve Teixeira 旁 边 时,Xavier Pacheco 就 像 一 个 小 孩 一 样 我 和 Steve Teixeira 比 较 熟 悉, 因 为 曾 经 和 他 在 费 城 一 起 开 过 会, 也 有 过 交 谈 Steve Teixeira 在 Delphi R&D 小 组 中 负 责 比 较 低 阶 核 心 的 除 错 功 能,Steve Teixeira 让 我 想 起 当 初 Matt Pietrek 在 Borland 的 成 长 过 程 由 于 Steve Teixeira 和 Xavier Pacheco 都 是 Delphi R&D 小 组 的 成 员, 因 此 他 们 自 然 能 够 取 得 最 新 最 深 入 的 信 息 来 写 书
56 Delphi COM 高 手 说 到 使 用 Delphi 来 学 习 COM 方 面 的 知 识 时, 就 不 能 不 提 Binn Ly 这 位 大 名 鼎 鼎 的 人 物, Binn Ly 也 算 是 华 人 在 Delphi 圈 中 之 光 荣 话 说 在 Delphi 3 推 出 之 时 就 以 多 层 架 构 为 重 点 功 能, 强 调 Delphi 能 够 撰 写 多 任 务 的 中 间 件 服 务 器 不 过 了 解 内 部 技 术 的 Delphi 程 序 员 都 知 道, 其 实 Delphi 3 中 的 中 间 件 服 务 器 只 能 开 发 Single Threaded 型 态 的 COM 服 务 器, 还 不 能 开 发 真 正 的 STA 和 MTA 型 态 的 COM 服 务 器, 这 也 是 为 什 么 Delphi 3 的 MIDAS 服 务 器 在 客 户 端 使 用 者 人 数 较 多 时 执 行 效 率 就 不 甚 理 想 的 原 因 当 时 Binn Ly 先 生 就 指 出 了 Delphi 3 的 问 题, 并 且 决 定 自 己 开 发 一 个 真 正 的 Delphi 封 装 COM 技 术 的 framework, 并 且 提 供 真 正 的 STA Apartment 和 MTA 的 解 决 方 案 这 在 当 时 是 一 项 非 常 惊 人 的 工 程, 因 为 除 了 Microsoft 的 ATL 之 外 连 Delphi 都 还 没 有 提 供, 而 Binn Ly 先 生 却 决 定 完 全 使 用 Object Pascal 来 开 发 一 个 如 此 复 杂 的 framework 后 来 Binn Ly 先 生 不 但 成 功 地 开 发 出 来, 还 在 自 己 的 网 站 上 公 开 了 framework 的 原 始 程 序 代 码, 而 且 还 写 了 许 多 COM 和 Delphi 方 面 深 入 的 技 术 文 章 虽 然 在 Delphi 4 之 后 Borland 也 终 于 慢 慢 地 提 供 了 比 较 完 整 的 COM 封 装 技 术, 但 是 Binn Ly 先 生 在 Delphi 和 COM 方 面 权 威 的 形 象 已 经 深 入 Delphi 程 序 员 的 心 中, 他 本 人 也 成 为 日 后 Borland 邀 请 在 BorCon 主 讲 COM/COM+ 讲 座 的 台 柱 之 一 VCL.NET Architect Eddie Churchill 是 在 Delphi 3 之 后 才 加 入 Delphi R&D 研 发 小 组 的, 不 过 Eddie 在 Delphi R&D 研 发 小 组 中 却 上 升 得 很 快 Eddie 在 加 入 Delphi R&D 小 组 之 后, 便 开 始 了 Delphi 中 Diagram Designer 的 研 发 工 作, 原 本 Eddie 的 工 作 是 准 备 在 Delphi 中 开 发 出 UML 的 功 能, 以 便 为 Delphi/C++Builder 提 供 完 整 的 OOA/OOD 的 功 能 不 过 由 于 后 来 Borland 高 层 决 定 和 Rational 合 作, 而 且 Eddie 小 组 需 要 极 大 的 资 源 来 开 发, 因 此 Borland 的 RAD 部 门 便 在 Diagram Designer 实 现 之 后 决 定 暂 停 这 方 面 的 研 发 工 作 其 实 在 Delphi 3 时, 当 时 的 Delphi 产 品 经 理 Ben Riga 就 想 为 Delphi 加 入 UML 的 功 能, 只 是 一 直 无 法 拥 有 足 够 的 资 源 来 投 入 这 方 面 的 研 发 工 作, 一 直 到 Delphi 5 之 后 才 逐 渐 在 Delphi/C++Builder 看 到 这 方 面 的 初 步 成 果 现 在 Eddie Churchill 和 Danny 等 人 投 入 开 发 Borland.NET 方 面 的 产 品, 并 且 是 VCL.NET 的 Architect, 负 责 把 VCL 移 植 到.NET 中, 在 2002 年 的 BorCon 中,Eddie Churchill 就 说 明 了 把 VCL 移 植 到.NET 之 上 的 困 难 和 挑 战, 目 前 在 Delphi 使 用 可 下 载 的 Delphi For.NET Preview 中 已 经 可 以 看 到 Eddie Churchill 在 VCL.NET 方 面 的 初 步 成 果 了 WebSnap 始 祖
57 Jim Tierry 是 在 Eddie Churchill 之 后 不 久 加 入 Delphi R&D 研 发 小 组 的, 他 的 第 一 个 工 作 就 是 接 手 Delphi 的 WebBroker 技 术, 以 开 始 打 造 Delphi/C++Builder 的 下 一 代 Web 技 术, 初 步 的 成 果 就 是 Delphi 5 的 InternetExpress 不 过 在 InternetExpress 推 出 之 后,Jim 自 己 并 不 满 意, 因 此 立 刻 开 始 进 行 InternetExpress 下 一 代 的 开 发 工 作, 那 当 然 就 是 WebSnap 了 由 Jim 带 领 的 WebSnap 开 发 小 组 终 于 在 Delphi 6 中 推 出 WebSnap 技 术 不 过 也 是 由 于 资 源 的 限 制, 因 此 在 Delphi 7 中,Borland 决 定 使 用 更 为 完 整 的 IntraWeb 作 为 Delphi 在 Web 方 面 的 主 力 目 前 Jim Tierry 应 该 是 在 开 发.NET 下 Web 方 面 的 技 术 和 产 品, 我 也 希 望 在 2003 年 能 够 有 机 会 和 Jim 见 上 一 面, 让 他 谈 谈 目 前 工 作 的 方 向 Delphi Plug-In 第 一 把 交 椅 我 在 日 常 使 用 Delphi 时, 一 个 少 不 了 的 工 具 就 是 Eagle Software 出 品 的 CodeRush, 虽 然 有 些 人 认 为 CodeRush 有 点 不 稳 定, 但 我 认 为 CodeRush 是 一 个 非 常 好 用 的 工 具, 当 然 这 也 是 为 什 么 CodeRush 几 乎 在 每 一 年 Delphi Magazine 的 年 度 产 品 评 比 中 都 是 第 一 的 Delphi Plug-In 工 具 CodeRush 是 由 著 名 的 Delphi 高 手 Mark Miller 先 生 开 发 的,Mark 不 但 是 多 个 产 品 的 作 者, 更 是 BorCon 中 经 常 受 邀 的 主 讲 者 我 曾 经 在 许 多 地 方 和 Mark 有 着 交 往, 在 2000 年 澳 洲 的 BorCon 时 我 还 曾 经 告 诉 Mark 当 时 的 CodeRush 在 中 文 Windows 2000 中 有 臭 虫, 因 为 当 我 使 用 CodeRush 的 快 捷 键 时,CodeRush 会 送 出 重 复 的 字 符 Mark 当 场 便 拿 出 NoteBook 查 询 CodeRush 的 程 序 代 码, 并 且 要 求 我 也 打 开 我 的 NoteBook 展 示 CodeRush 的 臭 虫 给 Mark 看 在 Mark 了 解 了 问 题 之 后 便 询 问 我 的 旅 馆 房 号, 这 才 发 现 我 们 是 住 在 同 一 个 旅 馆 没 有 想 到 的 是, 当 晚 Mark 便 打 电 话 到 我 的 房 间 请 我 过 去 再 次 追 踪 这 个 问 题 后 来 Mark 确 定 CodeRush 没 有 问 题, 应 该 是 中 文 Windows 2000 在 某 些 地 方 处 理 的 方 式 和 英 文 Windows 稍 有 不 同, 这 应 该 是 IME 方 面 的 原 因, 不 过 Mark 答 应 我 将 会 提 供 walk-around 的 方 式 来 克 服 这 个 问 题 我 回 国 后 不 久, 就 收 到 Mark 寄 来 的 一 个 Patch 档 案 修 正 了 这 个 问 题, 其 工 作 效 率 真 是 令 人 惊 讶 如 果 读 者 也 在 使 用 CodeRush 这 个 产 品, 那 可 以 经 常 到 CodeRush 的 论 坛 看 看 Mark 的 发 言, 许 多 时 候 Mark 的 信 件 都 是 深 夜 二 三 点 寄 出 的,Mark 工 作 的 狂 热 的 确 令 人 吃 惊, 不 过 在 Mark 有 了 Baby 之 后 这 个 现 象 就 比 较 少 发 生 了 MIDAS/DataSnap 的 掌 舵 手 Borland 在 Delphi 3 便 推 出 了 MIDAS, 一 直 开 发 到 现 在 的 DataSnap 其 实 Borland 一 开 始 时 就 对 MIDAS 有 非 常 大 的 野 心, 准 备 把 MIDAS 开 发 成 中 间 件 的 标 准 技 术 不 过 随 着 中 间 件 从 以 RPC 为 主 变 化 成 CORBA COM/COM+ 以 及 EJB,Borland 也 很 快 地 放 弃 了 这 个 想 法, 因 为 Borland 不 可 能 单 独 推 出 中 间 件 技 术 来 对 抗 业 界 的 标 准 因 此 在 Delphi 4 之 后,Borland 便 开 始 转 变 MIDAS 的 角 色, 把 MIDAS 定 位 成 一 个 通 用 的 数 据 存 取 处 理 层 技 术, 让 MIDAS 能 够 使 用 在 CORBA COM/COM+ 之 中 提 供 方 便 有 效 率 的 封 装 数 据 存 取 功 能, 以 弥 补 这 些 组 件 技 术 在 存 取 数 据 方 面 的 不 便 -- 必 须 使 用 一 笔 一 笔 数 据
58 的 方 式 来 处 理 数 据 MIDAS 这 样 的 转 变 是 非 常 正 确 的, 因 为 在 CORBA COM/COM+ 中 要 存 取 数 据 实 在 是 非 常 的 不 便, 经 常 必 须 在 对 象 接 口 中 提 供 特 定 的 方 法 让 客 户 端 存 取 特 定 的 数 据, 并 且 在 移 动 数 据 时 也 非 常 的 麻 烦, 而 MIDAS 却 提 供 了 完 整 的 解 决 方 案 正 是 由 于 MIDAS 的 方 便 好 用, 因 此 Microsoft 也 仿 照 在 ADO 中 开 始 模 仿 MIDAS 的 功 能, 在 ADO.NET 中 更 是 全 面 使 用 MIDAS 的 观 念 来 处 理 数 据 的 存 取 Borland 也 曾 经 把 MIDAS 移 植 到 Java 中 成 为 JMIDAS, 可 是 由 于 Java 世 界 非 常 强 调 标 准, 所 有 的 标 准 都 必 须 由 SUN 来 制 定, 而 SUN 又 使 用 JDBC Entity Bean 以 及 现 在 的 JDO 来 处 理 数 据, 因 此 JMIDAS 之 后 就 停 止 了 开 发 Delphi 3 Delphi 4 中 的 MIDAS 都 由 不 同 的 工 程 师 负 责 在 Delphi 4 中 是 由 Josh 负 责 的, 在 这 期 间 Josh 和 Dan Miser 合 作 提 供 MIDAS 的 技 术 和 解 决 方 案, 当 时 的 Dan Miser 并 不 是 Borland 的 员 工, 而 只 是 MIDAS 的 爱 好 者 后 来 由 于 Josh 离 开 了 Borland,Borland 就 把 MIDAS 的 维 护 和 新 版 本 开 发 工 作 contract 给 Dan Miser, 因 此 在 Delphi 6 之 后 的 DataSnap 是 由 Dan Miser 开 发 的, 而 Dan 也 成 为 了 DataSnap 的 头 领 由 于 Dan Miser 非 常 喜 欢 DataSnap, 愿 意 为 Borland 工 作, 因 此 现 在 Dan 已 经 到 Borland 应 征, 准 备 正 式 成 为 Bodand 的 员 工, 继 续 把 DataSnap 移 植 到.NET 上, 并 同 时 开 发 新 的 DataSnap 功 能 Delphi Spirit Marco Cantu 这 位 意 大 利 的 仁 兄, 应 该 是 许 多 Delphi 初 学 者 都 知 道 的 人 物, 因 为 Marco Cantu 的 Mastering Delphi 一 直 是 Delphi 书 籍 中 的 长 青 树, 深 受 初 学 Delphi 的 人 所 喜 好 Marco Cantu 也 经 常 是 BorCon 的 讲 座 主 讲 人 以 及 Delphi 相 关 杂 志 的 专 栏 作 家, 不 过 我 一 直 无 缘 聆 听 Marco Cantu 先 生 的 讲 座, 因 为 每 次 我 都 选 择 了 同 时 进 行 的 其 他 讲 座, 真 是 令 人 遗 憾 元 老 重 臣 最 后 一 个 我 想 介 绍 的 人 物 可 能 许 多 人 并 不 熟 悉, 但 是 这 位 仁 兄 却 一 直 是 Borland 开 发 工 具 中 的 要 角 之 一, 那 就 是 Bruneau Babet 先 生 Bruneau Babet 很 少 公 开 露 面, 除 非 在 BorCon 中 读 者 才 有 可 能 见 到 他 Bruneau Babet 从 Borland C/C++ 产 品 开 始 就 是 Borland 的 研 发 人 员, 在 Borland C/C++ 结 束 之 后 也 转 入 Delphi R&D 小 组 开 发 Delphi, 而 Bruneau Babet 工 作 的 重 点 一 直 是 以 COM 方 面 的 技 术 为 主 Bruneau Babet 除 了 进 行 Delphi 的 研 发 之 外, 主 要 的 时 间 是 负 责 C++Builder 的 开 发 工 作, 因 此 他 也 从 事 C++Builder 中 融 合 ATL 方 面 的 工 作, 在 BorCon 中,Bruneau Babet 演 讲 的 主 题 主 要 是 Borland 开 发 工 具 在 COM/COM+ 的 技 术 支 持
59 在 这 里, 我 无 法 介 绍 完 所 有 相 关 的 重 要 人 物, 除 了 上 述 几 位 外, 许 多 大 家 熟 悉 的 人 物, 包 括 Dr. Bob John Kaster 等, 我 都 没 有 介 绍 到 这 是 因 为 Dr. Bob 和 John Kaster 是 许 多 人 非 常 熟 悉 的, 他 们 的 照 片 在 网 站 上 可 以 经 常 看 到, 因 此 就 不 再 列 为 重 点, 这 里 是 以 读 者 不 太 熟 悉 的 人 物 为 主, 让 喜 欢 Delphi/C++Builder 的 读 者 能 够 看 看 这 些 杰 出 软 件 人 员 的 长 相 了 解 他 们 的 个 人 资 料, 让 许 多 " 久 闻 其 名 " 的 人 物 真 实 地 呈 现 在 我 们 面 前, 作 为 我 们 学 习 的 借 鉴 第 五 章 逆 转 的 奇 迹 --Borland JBuilder 的 战 斗 发 展 史 " 没 有 JBuilder,Borland 就 不 可 能 拥 有 今 日 的 荣 景!" Java 的 快 速 兴 起 和 成 功 是 谁 也 没 有 预 料 到 的, 即 便 对 于 SUN 自 己 似 乎 也 是 一 个 极 大 的 意 外, 但 是 成 功 者 一 定 是 果 断 而 且 行 动 迅 速 的 当 SUN 察 觉 到 Java 的 光 明 未 来 之 后, 便 立 刻 开 始 大 力 推 销 Java SUN 的 总 裁 McNealy 先 生 数 年 来 苦 于 没 有 直 接 和 Microsoft 对 抗 的 机 会, 这 下 在 Java 的 身 上 似 乎 找 到 了 契 机, 当 然 更 重 要 的 是 SUN 接 下 来 的 一 连 串 行 动 都 被 证 明 是 正 确 而 成 功 的 这 些 行 动 包 括 和 各 种 厂 商 合 作 ; 与 Addison-Wesley 公 司 合 作 出 版 一 系 列 畅 销 且 成 功 的 Java 书 籍 ; 在 各 大 媒 体 占 据 版 面 发 表 所 有 与 Java 相 关 的 文 章 专 栏 等 ; 快 速 培 养 Java 使 用 者 的 基 础, 吸 引 大 众 对 于 Java 的 兴 趣 这 完 全 是 Microsoft 一 向 无 往 不 胜 攻 无 不 克 的 手 法,SUN 也 发 挥 得 淋 漓 尽 致, 并 且 " 以 彼 之 道 还 施 彼 身 " 更 重 要 的 是 McNealy 立 刻 果 断 地 投 入 大 量 的 研 发 资 源, 不 断 地 改 善 Java, 终 于 使 Java 从 1995 年 开 始 展 露 锋 芒, 并 且 快 速 地 成 为 业 界 焦 点, 自 此 展 开 了 PC 发 展 史 上 最 大 规 模 对 抗 Microsoft 的 争 霸 战, 也 改 变 了 许 多 软 件 开 发 的 习 惯 和 方 向 当 然 对 于 Borland 来 说,Java 的 发 展 史 也 是 一 场 惊 涛 骇 浪 的 生 死 之 战, 是 Borland 从 未 经 历 过 的 大 规 模 集 团 军 混 战 对 于 Borland 来 说, 事 情 并 没 有 那 么 顺 利 1995 年, 当 Java 开 始 起 飞 时,Borland 并 没 有 预 料 到 Java 成 长 的 速 度 会 如 此 之 快 Borland 一 开 始 只 是 把 Java 当 成 C/C++ 的 延 伸, 因 此 只 在 Borland C/C++5.0 中 加 入 了 支 持 Java 的 P1ug-In 不 过 Borland 很 快 就 发 现 事 情 并 不 是 如 此 简 单, 因 为 除 了 Java 的 Plug-In 反 应 并 不 好 之 外, 也 发 现 Symantec 很 快 在 Java 开 发 工 具 找 到 了 新 舞 台, 而 且 发 展 得 相 当 快 速 在 Microsoft 对 Java 的 态 度 未 明 之 前, 无 疑 Symantec 占 据 了 先 机,Borland 这 才 警 觉 到 自 己 的 失 策,Java 大 会 战 一 开 始 Borland 就 已 经 落 后 了 Borland 如 何 才 能 在 下 一 场 最 重 要 的 开 发 工 具 大 战 中 进 行 反 攻 呢? Java 开 发 工 具 初 期 的 争 战 当 Symantec 从 C/C++ 开 发 工 具 市 场 大 撤 退 之 后,Eugene Wang 不 愧 是 相 当 高 明 的 开 发 工 具 好 手, 立 刻 察 觉 到 尽 管 在 C/C++ 市 场 遭 遇 失 败, 但 利 用 原 有 力 量 却 可 以 在 即 将 茁 壮 成 长
60 的 Java 市 场 上 扳 回 一 城, 因 此 立 刻 率 领 原 先 Symantec C/C++ 的 开 发 团 队 快 速 进 入 Java 开 发 工 具 的 领 域 Eugene 很 快 以 当 初 Symantec C/C++ 的 集 成 开 发 环 境 作 为 基 础, 开 始 开 发 Java 开 发 工 具, 这 就 是 后 来 著 名 的 Visual Café Symantec 几 乎 是 第 一 个 介 入 Java 开 发 工 具 的 软 件 公 司, 又 利 用 了 Symantec C/C++ 的 基 础, 因 此 在 1995 年, 当 Java 获 得 愈 来 愈 多 人 的 注 意 之 后,Symantec 也 准 备 好 了 她 的 第 一 个 Java 开 发 工 具 --Visual Café 1996 年 10 月,Symantec 赶 在 JDK 1.1 之 前 正 式 推 出 了 Visual Café 虽 然 当 时 许 多 人 批 评 Symantec 为 什 么 不 等 到 JDK 1.1 之 后 再 推 出, 以 支 持 最 新 的 JDK 标 准 ( 因 为 当 时 的 JDK 1.0x 版 本 有 许 多 的 问 题 ), 不 过 这 些 批 评 并 没 有 妨 碍 Visual Café 的 成 功 由 于 当 时 许 多 软 件 人 员 急 于 投 入 Java 的 学 习 行 列, 因 此 当 Symantec 推 出 了 Visual Café 之 后, 立 刻 在 市 场 获 得 了 极 大 的 成 功 特 别 是 在 Java 学 习 市 场 和 教 育 市 场,Visual Café 几 乎 是 以 席 卷 市 场 的 姿 势 迅 速 占 据 了 Java 开 发 工 具 第 一 名 的 地 位, 成 为 炙 手 可 热 的 产 品, 而 Symantec 公 司 也 一 扫 在 C/C++ 开 发 工 具 被 挫 败 的 怨 气, 再 次 成 为 开 发 工 具 市 场 的 领 导 厂 商 由 于 当 时 Microsoft 对 于 Java 采 取 敌 视 的 态 度, 因 此 几 乎 不 可 能 推 出 Java 开 发 工 具, 而 Borland 也 还 正 陷 于 C/C++ 的 苦 战 之 中, 尚 未 查 觉 到 Java 的 潜 力 至 于 另 外 一 个 死 对 头 Watcom 则 已 被 Sybase 并 购, 无 法 在 开 发 工 具 市 场 再 成 气 候 这 对 于 Symantec 来 说 简 直 是 天 赐 良 机, 一 个 可 以 独 打 Java 开 发 工 具 市 场 的 绝 佳 机 会 剩 下 唯 一 的 威 胁 是 SUN 要 推 出 的 Java 开 发 工 具 但 是 Symantec 已 经 抢 得 市 场 先 机, 而 且 已 经 成 为 领 先 者, 只 要 好 好 的 把 握, 就 能 够 以 逸 待 劳 和 SUN 对 战 在 这 个 Java 开 发 工 具 萌 芽 的 阶 段,Symantec 似 乎 是 占 了 绝 对 的 优 势, 不 过 很 可 惜 的 是 接 下 来 Symantec 也 接 连 犯 了 几 个 错 误, 逐 渐 失 去 了 取 得 的 优 势 首 先 是 当 Visual Café 推 出 之 后,Eugene Wang 便 离 开 了 Symantec 自 己 开 公 司 做 生 意 去 了 这 对 于 Visual Café 有 着 相 当 大 的 影 响, 因 为 Symantec 靠 着 Eugene Wang 的 技 术 能 力 和 眼 光, 才 能 够 和 Microsoft Borland 和 Watcom 在 C/C++ 开 发 工 具 市 场 对 抗 ;Eugene Wang 又 独 具 慧 眼 打 造 了 第 一 个 Java 开 发 工 具 Visual Café Symantec 应 该 在 Visual Café 获 得 初 期 的 胜 利 之 后 再 次 借 重 Eugene Wang 的 功 力 继 续 攻 城 掠 地, 但 是 Symantec 居 然 让 Eugene Wang 离 开, 立 刻 少 了 开 发 工 具 掌 舵 的 大 将 第 二 个 错 误 是 Symantec 当 初 为 了 尽 快 推 出 Visual Café 以 抢 占 市 场 先 机, 因 此 集 成 开 发 环 境 是 使 用 C/C++ 语 言 撰 写 的 这 造 成 了 数 项 缺 点, 其 一 是 由 于 使 用 了 C/C++ 来 撰 写 可 视 化 窗 体 设 计 家 (Visual Form Designer), 因 此 程 序 员 在 设 计 时 看 到 的 可 视 化 效 果 和 真 正 Java 程 序 执 行 时 的 效 果 是 有 一 些 差 异 的 ; 其 二 是 为 了 维 护 Java 的 控 制 组 件 程 序 代 码 和 以 C/C++ 撰 写 的 可 视 化 窗 体 设 计 家 保 持 同 步 的 状 态, 在 可 视 化 窗 体 设 计 家 产 生 的 原 始 程 序 代 码 中 内 嵌 了 一 些 Visual Café 控 制 卷 标 (Control Tag) 这 些 控 制 卷 标 并 不 是 Java 的 程 序 代 码, 只 是 为 了 可 视 化 窗 体 设 计 家 使 用 如 果 程 序 员 不 小 心 修 改 或 是 删 除 了 这 些 控 制 卷 标, 就 会 造 成 Visual Café 的 可 视 化 窗 体 设 计 家 的 失 效 这 是 非 常 严 重 的 缺 点,Symantec 应 该 在 Visual Café 1.0 之 后 立 刻 改 善 这 些 问 题, 然 而 Symantec 却 似 乎 一 直 无 法 有 效 地 加 以 改 善 当 然, 问 题 的 根 源 在 于 Visual Café 的 集 成 开 发 环 境 是 使 用 C/C++ 语 言 撰 写 的, 要 完 全 改 善 这 个 问 题,Symantec 必 须 使 用 Java 语 言 重 新 改 写 集 成 开 发 环 境, 这 正 是 Borland 后 来 采 取 的 策 略 不 过 使 用 Java 撰 写 集 成 开 发 环 境 也 是 非 常 冒 险 的 行 动,Borland 后 来 因 此 付 出 了 沉 重 的 代 价 Symantec 之 所 以 没 有 如 此 做, 大 概 也 是 因 为 当 时 的 Java 并 没 有 成 熟 到 可 以 如 此 做 的 地 步 不 过 SUN 显
61 然 不 这 么 认 为, 其 对 Java 信 心 百 倍, 不 久 就 推 出 了 SUN 的 Java 开 发 工 具,Java Workshop 当 Java 成 功 地 掳 获 了 开 发 者 的 心 之 后, 对 于 Java 开 发 工 具 的 要 求 便 与 日 俱 增 虽 然 Symantec 已 经 推 出 了 Visual Café, 但 是 许 多 人 仍 然 希 望 Java 的 正 宗 厂 商 SUN 能 够 推 出 Java 开 发 工 具, 让 所 有 想 要 学 习 使 用 Java 的 开 发 人 员 能 够 使 用 最 标 准 的 Java 开 发 工 具 当 然, 许 多 人 也 希 望 SUN 能 够 使 用 Java 撰 写 Java 开 发 工 具 来 向 世 人 证 明 Java 的 能 耐, 让 质 疑 Java 能 力 的 人 以 及 Microsoft 闭 嘴 当 然,SUN 在 Java 成 功 之 后 也 信 心 满 满 地 宣 布 了 SUN 的 开 发 工 具 计 划, 以 满 足 广 大 开 发 人 员 的 需 求 McNealy 多 年 来 进 攻 Microsoft 地 盘 的 希 望 似 乎 即 将 出 现 光 明 的 未 来 之 后 不 久, 在 万 方 期 待 之 下,SUN 终 于 推 出 了 Java 开 发 工 具 SUN Workshop 在 Java Workshop 即 将 推 出 之 前,Symantec 非 常 地 紧 张, 因 为 这 关 系 到 Symantec 是 否 能 够 在 Java 开 发 工 具 市 场 站 稳 脚 跟 我 记 得 在 Java Workshop 推 出 之 际, 所 有 的 媒 体 杂 志 都 大 幅 报 道 Java Workshop,SUN 也 大 力 地 宣 传 和 促 销 Java Workshop 从 当 时 的 气 势 来 看,Java Workshop 颇 有 " 千 秋 万 世, 一 统 江 湖 " 的 味 道 我 所 认 识 的 许 多 朋 友 不 管 是 用 买 的 借 的 下 载 等 和 -- 嗯 -- 那 个 的 各 种 手 段, 都 热 切 地 想 取 得 一 套 Java Workshop 来 玩 玩 不 过 丑 媳 妇 总 要 见 公 婆 的, 在 许 多 人 使 用 了 Java Workshop 之 后, 才 发 现 它 不 但 执 行 缓 慢 得 像 乌 龟 一 样, 而 且 问 题 多 多, 和 一 般 的 PC 开 发 工 具 水 准 比 起 来 简 直 是 差 了 十 万 八 千 里 看 来 Java Workshop 只 适 合 使 用 在 昂 贵 的 SUN 工 作 站 计 算 机 上, 而 在 当 时 大 多 数 人 使 用 的 PC 上 则 根 本 跑 不 动, 除 非 是 拥 有 异 于 常 人 的 耐 性 Java Workshop 雷 声 大 雨 点 小, 不 久 之 后 就 人 气 溃 散 了 许 多 原 来 对 Java 有 信 心 的 人 在 用 了 Java Workshop 之 后, 也 开 始 质 疑 Java 是 否 适 合 使 用 来 开 发 复 杂 的 应 用 程 序? 是 不 是 只 适 合 用 来 撰 写 Applet? 是 不 是 只 适 合 使 用 在 SUN 的 工 作 站 和 计 算 机 之 上? 虽 然 之 后 SUN 仍 然 很 努 力 地 推 出 Java Workshop 2.x 的 版 本, 希 望 一 洗 Java Workshop 1.x 的 恶 名, 但 是 仍 然 无 法 挽 回 Java 开 发 人 员 的 信 心 至 于 其 他 仍 然 对 Java 有 兴 趣 的 人 则 转 而 使 用 Symantec 的 Visual Café, 让 Visual Café 进 一 步 地 扩 大 了 市 场 占 有 率, 也 让 Symantec 吃 了 一 颗 定 心 丸 当 然 也 有 许 多 Borland 的 支 持 者 开 始 强 烈 地 期 望 和 要 求 Borland 能 够 推 出 最 好 的 Java 开 发 工 具 SUN 在 Java 开 发 工 具 市 场 大 溃 败 之 后, 才 了 解 到 PC 开 发 工 具 市 场 和 Solaris 开 发 工 具 市 场 不 一 样 在 Solaris 上 SUN 是 一 家 独 大, 但 是 在 PC 市 场 上 可 是 百 家 争 鸣, 竞 争 对 手 一 个 比 一 个 强 悍 SUN 不 了 解 PC 开 发 工 具 市 场 的 特 性, 以 为 靠 着 Java 正 宗 的 招 牌 就 可 以 通 行 无 阻 却 是 大 错 特 错, 并 且 在 当 时 被 Microsoft 讥 笑 不 懂 得 开 发 软 件, 这 也 是 因 为 SUN 经 常 讥 笑 Microsoft 不 懂 得 开 发 操 作 系 统, 看 来 在 当 时 SUN 也 不 必 五 十 步 笑 百 步 SUN 在 Java 开 发 工 具 市 场 弄 得 灰 头 土 脸 之 后, 不 得 不 专 心 开 发 Java 语 言 和 JDK 函 数 库, 并 且 在 Java 语 言 更 为 成 熟 之 后 开 始 想 要 开 发 Java 的 组 件 技 术, 因 此 开 启 了 稍 后 和 Borland 合 作 共 同 开 发 Java Bean 的 功 能 规 格, 再 进 而 和 Borland 共 同 研 发 JDK 的 规 格, 最 后 更 对 Borland 的 JBuilder 发 生 了 强 烈 的 兴 趣, 甚 至 想 并 购 Borland 当 然 这 都 是 因 为 后 来 Borland 展 现 在 了 Java 方 面 高 度 的 技 术, 让 SUN 从 肯 定 到 折 服 的 原 因 所 致 Borland 的 Java 艰 辛 奋 斗
62 " 事 情 并 没 有 这 么 顺 利 ",Borland 当 时 的 R&D 主 管 这 么 说, 并 且 充 满 了 焦 虑 当 Borland 警 觉 到 Java 的 潜 力 之 后,Visual Café 早 已 成 功 地 上 市,SUN 也 准 备 推 出 Java 的 开 发 工 具 当 时 Borland 正 逐 渐 从 C/C++ 市 场 失 去 王 者 的 地 位, 财 务 上 也 开 始 出 现 经 营 赤 字, 整 个 公 司 正 陷 于 一 团 混 乱 的 情 形 中, 似 乎 已 经 没 有 额 外 的 资 源 可 以 投 入 Java 的 研 发 在 起 步 落 后, 又 缺 兵 少 粮 的 情 形 下,Borland 似 乎 即 将 失 去 进 入 Java 市 场 的 希 望 好 在 稍 后 的 Delphi 一 炮 而 红, 让 Borland 大 赚 了 一 票, 也 稳 定 了 军 心 Delphi 为 Borland 注 入 的 资 源 也 很 快 让 Borland 激 活 了 Java 研 发 小 组 虽 然 Borland 已 经 落 后 许 多, 但 是 Borland 知 道 绝 不 可 以 失 去 这 个 市 场, 因 为 Java 的 市 场 没 有 Microsoft 式 的 寡 占,Borland 有 希 望 在 Java 市 场 比 Borland C/C++ Delphi 等 更 成 功 此 外,Borland 更 需 要 在 Delphi 这 条 产 品 线 之 外 开 拓 其 他 的 收 入 来 源, 否 则 只 靠 Delphi 产 品, 公 司 仍 然 无 法 成 长 得 更 为 茁 壮, 以 和 其 他 的 软 件 公 司 竞 争 在 年 间,Borland 正 式 成 立 了 Java 研 究 小 组, 开 始 研 发 Java 的 技 术, 准 备 开 发 Java 开 发 工 具 这 个 Java 开 发 工 具 的 内 部 研 发 名 称 便 是 Latté 一 开 始 Latté 小 组 的 研 发 资 源 并 不 够 多, 因 为 当 时 的 Borland 是 在 风 雨 飘 摇 之 中, 无 法 注 入 足 够 的 资 源 到 Latté 小 组 因 此 在 Latté 开 始 开 发 的 初 期 进 展 得 并 不 顺 利, 进 度 很 缓 慢 一 直 到 了 Borland 靠 Delphi 浴 火 重 生 之 后 Latté 小 组 才 有 了 足 够 资 源, 研 发 的 进 度 才 开 始 加 速 不 过 与 竞 争 对 手 们 比 起 来,Borland 在 Java 方 面 的 确 是 相 当 落 后 的, 几 乎 是 跑 在 最 后 的 参 赛 者 不 过 幸 运 的 是 Java 开 发 工 具 之 战 似 乎 是 一 场 漫 长 的 马 拉 松 比 赛, 除 了 一 开 始 的 表 现 之 外, 更 重 要 的 是 比 谁 能 够 撑 得 比 较 久 事 实 上 看 Borland 如 何 在 Java 竞 赛 场 上 反 败 为 胜 一 一 打 败 强 者, 进 而 成 为 Java 开 发 工 具 王 者 的 过 程 是 相 当 精 彩 的, 而 JBuilder 小 组 使 用 的 竞 争 策 略 更 值 得 我 们 玩 味 和 学 习 依 我 个 人 的 眼 光 来 看, 在 Borland 开 发 Java 开 发 工 具 的 过 程 中 经 历 了 数 个 不 同 的 阶 段, 每 一 个 阶 段 都 有 着 非 常 激 烈 的 竞 争, 有 着 成 功 者 和 失 败 者 只 是 有 的 失 败 者 仍 然 坚 持 竞 争 下 去, 有 的 却 随 风 消 散 JBuilder 最 终 能 够 成 为 王 者, 除 了 是 因 为 愈 挫 愈 勇 Borland 没 有 退 出 Java 市 场 之 外, 还 在 于 Borland 在 开 发 JBuilder 3 时 下 了 一 个 关 键 性 的 决 定, 以 及 在 JBuilder 3 之 后 每 一 个 版 本 都 有 明 确 的 目 标, 终 于 在 JBuilder 4 之 后 慢 慢 成 为 市 场 第 一 的 领 导 者 当 然 这 长 达 数 年 的 争 战 过 程 是 非 常 艰 辛 的, 不 过 这 段 历 程 正 是 整 个 Java 开 发 工 具 逐 鹿 中 原 的 写 照 史 第 1 阶 段 --Java JIT 编 译 器 的 战 争 Borland 也 许 不 是 最 晚 开 始 研 发 Java 技 术 的 厂 商, 但 是 明 显 地 落 后 于 其 他 竞 争 对 手 则 是 不 争 的 事 实 Borland 在 Latté 万 事 尚 未 具 备 的 情 形 下, 展 开 Java 竞 赛 的 第 一 步 便 是 从 Borland 传 统 的 拿 手 绝 活 开 始, 那 就 是 从 Java JIT 编 译 器 开 始 出 发 不 过 由 于 Borland 当 时 对 于 Java 技 术 尚 未 拥 有 良 好 的 掌 握, 因 此 一 开 始 是 和 Pascal 的 祖 师 爷 Dr. Niklaus Worth 合 作, 由 Dr. Niklaus Worth 以 及 他 的 学 生 们 为 Borland 研 发 Java JIT 编 译 器, 而 Borland 本 身 的 Latté 小 组 则 平 行 地 开 发 Latté 其 他 的 功 能 由 于 当 时 Java 已 经 逐 渐 在 校 园 流 行, 而 且 吸 引 了 许 多 学 术 研 究 的 兴 趣,Dr. Niklaus Worth 以 及 他 的 学 生 们 很 早 便 开 始 投 入 Java 相 关 的 研 究 因 此 当 Borland 找 上 门 之 后, 自 然 便 一 拍 即 合 Borland 缩 短 了 开 发 时 程, 而 Dr. Niklaus Worth 研 究 小 组 则 乐 得 有 人 赞 助 研 发 费 用
63 Dr. Niklaus Worth 研 究 小 组 的 第 一 个 作 品 就 是 在 1997 年 初 左 右 推 出 的 Java JIT 编 译 器, 这 个 由 Dr. Niklaus Worth 研 究 小 组 研 发 的 JIT 编 译 器 可 以 让 编 译 后 的 Java ByteCode 执 行 速 度 比 当 时 SUN 的 Java 编 译 器 以 及 Symantec 的 JIT 编 译 器 快 了 数 倍 Borland 宣 布 此 JIT 编 译 器 之 后 立 刻 震 惊 了 Java 界, 因 为 当 时 缓 慢 的 Java 执 行 速 度 是 所 有 使 用 Java 的 人 都 希 望 能 够 立 刻 大 幅 改 善 的 而 Borland 推 出 的 Java JIT 编 译 器 似 乎 给 所 有 Java 开 发 人 员 看 到 了 未 来 的 希 望 虽 然 严 格 地 说 当 时 即 使 是 使 用 Borland 最 新 的 JIT 编 译 器 编 译 Java 程 序, 其 执 行 速 度 仍 然 是 很 " 龟 速 " 的, 但 是 对 于 使 用 Java 来 学 习 程 序 设 计 或 是 撰 写 执 行 一 些 小 的 Applet 来 说 仍 然 是 很 好 用 的 因 此 当 Borland 一 推 出 此 JIT 编 译 器 之 后, 便 立 刻 打 响 了 Borland 在 Java 界 的 知 名 度, 所 有 Java 开 发 厂 商 也 开 始 视 Borland 为 认 真 的 竞 争 对 手 否 则 以 当 时 Borland 的 气 势 来 看, 除 了 Delphi 之 外,Borland 几 乎 已 经 一 无 所 有 了 Borland 在 Java 的 处 女 作 Java JIT 编 译 器 一 炮 而 红, 立 刻 吸 引 了 当 时 浏 览 器 霸 主 Netscape 的 注 意 由 于 当 时 Netscape 大 力 支 持 Java 以 便 和 Microsoft 竞 争, 因 此 非 常 需 要 有 品 质 精 良 的 Java JIT 编 译 器 内 建 在 Netscape 之 中, 以 顺 利 且 快 速 地 执 行 Java Applet, 增 加 Netscape 的 竞 争 力 和 吸 引 力, 突 显 与 Microsoft IE 的 不 同 不 久 之 后 Netscape 便 找 上 了 Borland, 希 望 能 够 在 Netscape 中 附 带 Borland 的 Java JIT 编 译 器 对 于 Borland 来 说, 这 又 是 一 个 千 载 难 逢 的 机 会 因 为 这 不 但 证 明 了 Borland 在 Java 技 术 的 努 力 成 果, 更 重 要 的 是 Netscape 在 当 时 是 不 可 一 世 的 软 件 公 司, 全 世 界 有 数 百 万 的 使 用 者 这 意 味 着 一 旦 Netscape 内 建 Borland 的 Java JIT 编 译 器,Borland 在 全 世 界 将 立 刻 拥 有 数 百 万 的 Latté 潜 在 使 用 者, 对 于 Borland 来 说 是 好 得 不 能 再 好 的 条 件 了 因 此 Borland 立 刻 答 应 了 Netscape 的 提 议, 让 Netscape 搭 配 Borland 的 Java JIT 编 译 器 但 是 这 一 举 动 也 立 刻 牵 一 发 而 动 全 身, 进 而 导 致 了 Java JIT 编 译 器 的 大 混 战 在 Netscape 和 Borland 达 成 了 协 议 并 且 开 始 出 货 之 后, 却 引 起 了 Symantec 的 忧 虑 和 不 满 因 为 当 时 Symantec 是 Java 开 发 工 具 的 老 大, 而 Borland 连 个 Java 开 发 工 具 都 尚 未 推 出, 可 是 Netscape 却 跑 去 使 用 Borland 的 Java JIT 编 译 器, 这 不 是 让 全 世 界 都 知 道 Borland 的 实 力 并 且 让 Symantec 脸 上 无 光 吗? 为 了 颜 面 以 及 避 免 失 去 Java 开 发 工 具 的 市 场, 很 快 Symantec 便 决 定 开 始 反 击 Symantec 立 刻 也 集 中 资 源 投 入 Java JIT 编 译 器 的 研 发, 开 发 出 比 Borland Java JIT 编 译 器 更 快 的 Symantec JIT 编 译 器, 并 且 准 备 开 发 一 个 直 接 把 Java ByteCode 编 译 成 原 生 Windows 程 序 代 码 的 Java 编 译 器 就 在 Borland Java JIT 编 译 器 风 光 不 久 之 后,Symantec 也 宣 布 了 新 的 Java JIT 编 译 器 Symantec 的 Java JIT 编 译 器 比 Borland Java JIT 编 译 器 更 有 效 率, 编 译 后 的 Java ByteCode 执 行 效 率 比 Borland 的 快 了 2~3 倍 在 Symantec Java JIT 编 译 器 宣 布 之 后, 又 轮 到.Borland 脸 上 无 光 了 才 刚 和 Netscape 谈 好 合 作 条 件, 没 有 想 到 效 率 王 位 还 没 坐 热 就 立 刻 被 Symantec 踢 了 下 来, 这 如 何 向 Netscape 交 待? 因 此 Borland 立 刻 进 行 改 善 JIT 编 译 器 的 研 发 工 作, 力 图 再 次 超 越 Symantec 果 然 Borland 的 努 力 没 有 白 费, 不 久 之 后 Borland 的 JIT 编 译 器 又 打 破 了 Symantec JIT 编 译 器 创 下 的 效 率 纪 录 自 此 Borland 和 Symantec 便 展 开 了 Java JIT 编 译 器 的 " 竞 速 " 比 赛, 不 断 地 试 图 打 败 对 方 也 由 于 Borland 和 Symantec 的 JIT 竞 赛, 当 然 更 重 要 的 原 因 是 Java 的 执 行 速 度 在 当 时 实 在 是 太 过 缓 慢, 引 起 了 IBM Microsoft 以 及 SUN 在 Java 编 译 器 方 面 的 研 究 Symantec 在 当 时 不 愧 是 Java 开 发 工 具 的 王 者, 在 和 Borland 几 次 的 JIT 编 译 器 交 手 之 后,
64 便 开 始 逐 渐 地 占 了 上 风 由 Dr. Niklaus Worth 研 究 小 组 研 发 的 Java JIT 编 译 器 也 逐 渐 不 再 是 Symantec 的 对 手 至 此 Borland 决 定 收 回 Java 编 译 器 的 技 术, 开 始 自 行 研 发 Borland 发 觉 光 是 和 Symantec 在 Java JIT 编 译 器 竞 争 没 有 多 大 用 处, 当 务 之 急 是 赶 快 推 出 自 己 的 Java 开 发 工 具 因 此 Borland 开 始 退 出 和 Symantec 在 Java JIT 编 译 器 的 竞 赛, 以 求 全 速 催 生 Latté 当 然 Borland 退 出 JIT 编 译 器 的 第 一 阶 段 战 争 之 后 的 影 响 是 不 久 之 后 Netscape 便 不 再 使 用 Borland 的 Java JIT 编 译 器, 改 为 使 用 Symantec 的 Java JIT 编 译 器 至 此 Symantec 终 于 获 得 了 JIT 编 译 器 第 一 阶 段 的 战 争 胜 利, 保 住 了 Java 开 发 工 具 第 一 厂 商 的 颜 面 但 是 Symantec 真 的 获 胜 了 吗? 那 可 不 能 断 言, 因 为 JIT 编 译 器 战 争 才 刚 开 始 在 Symantec 的 Java JIT 编 译 器 打 败 了 Borland 的 JIT 编 译 器 之 后,Symantec 便 把 脑 筋 动 到 了 SUN 的 身 上, 希 望 SUN 也 能 够 使 用 Symantec 的 Java JIT 编 译 器, 把 Symantec 推 向 Java 核 心 技 术 的 领 导 厂 商 宝 座 不 过 Symantec 的 盘 算 显 然 是 落 空 了, 因 为 SUN 已 经 决 定 收 购 一 家 专 门 研 发 Java 编 译 器 技 术 的 软 件 公 司, 并 且 准 备 开 发 自 己 的 JIT 编 译 器, 那 就 是 后 来 的 SUN HotSpot 编 译 器 技 术 另 外 Microsoft 和 IBM 也 开 始 加 入 了 Java JIT 编 译 器 的 竞 赛 之 列 IBM 为 了 和 SUN 争 夺 Java 领 导 者 的 地 位, 不 但 自 己 研 发 IBM 的 JDK, 甚 至 也 研 发 IBM 的 Java JIT 编 译 器 严 格 地 说, 当 时 IBM 的 Java JIT 编 译 器 品 质 比 SUN 提 供 的 好 多 了, 不 但 稳 定 而 且 执 行 速 度 比 SUN 的 快 了 许 多, 让 SUN 也 颜 面 无 光, 很 不 是 滋 味 甚 至 可 以 说 IBM 的 Java JIT 编 译 器 品 质 不 会 比 Symantec 的 Java JIT 编 译 器 差 到 哪 里 更 麻 烦 的 是 Microsoft 为 了 让 IE 能 够 和 Netscape 竞 争, 也 可 以 执 行 Applet, 因 此 也 开 始 研 发 精 良 的 Java JIT 编 译 器 特 别 是 当 Microsoft 得 到 了 Anders Hejlsberg 之 后, 在 编 译 器 技 术 方 面 有 了 重 大 的 突 破 虽 然 Microsoft 的 JIT 编 译 器 一 直 不 像 其 他 厂 商 的 Java JIT 编 译 器 那 么 符 合 标 准, 但 是 其 品 质 却 是 相 当 的 精 良 在 Microsoft 不 断 地 改 善 之 下, 依 我 当 时 的 测 试, 经 其 编 译 后 的 Java ByteCode 执 行 的 速 度 是 最 快 的, 连 IBM 和 Symantec 的 JIT 编 译 器 都 不 是 对 手 因 此 从 我 的 观 点 来 看, 在 这 个 Java JIT 编 译 器 的 阶 段, 应 该 是 Microsoft 获 了 冠 军 要 不 是 Microsoft 没 有 持 续 支 持 最 新 的 JDK 标 准, 又 混 杂 了 一 些 Microsoft 自 己 的 东 西, 到 最 后 很 可 能 使 用 最 为 广 泛 的 Java JIT 编 译 器 反 而 就 是 Microsoft 的 JIT 编 译 器 至 于 Symantec, 在 取 得 了 JIT 编 译 器 表 面 上 的 优 势 之 后, 立 刻 又 把 重 点 放 在 了 开 发 直 接 把 Java ByteCode 编 译 成 原 生 应 用 程 序 的 原 生 Java 编 译 器 稍 后 Symantec 成 功 地 开 发 出 了 这 种 编 译 器, 让 Borland 大 为 紧 张, 并 且 准 备 跟 进 而 Symantec 也 把 这 个 原 生 Java 编 译 器 加 入 到 Visual Café 中, 成 为 一 项 吸 引 人 的 功 能 不 过 很 快 地 这 个 功 能 却 引 起 了 许 多 Java 使 用 者 的 批 评, 因 为 他 们 认 为 这 违 反 了 Java"Write Once,Run Everywhere" 的 精 神, 如 此 一 来 厂 商 必 须 为 每 一 个 不 同 的 平 台 开 发 原 生 Java 编 译 器, 这 会 造 成 Java 应 用 程 序 在 不 同 的 平 台 执 行 的 反 应 不 一 致 的 现 象, 又 陷 入 C/C++ 语 言 开 发 的 应 用 程 序 在 不 同 的 平 台 表 现 不 一 的 相 同 问 题 后 来 连 SUN 也 不 赞 成 这 种 做 法, 当 然 这 是 因 为 SUN 想 力 推 自 己 的 HotSpot 编 译 器 技 术 因 此 原 生 Java 编 译 器 在 风 行 了 一 阵 短 暂 的 时 间 之 后 就 不 再 吸 引 人 注 意 了, 而 Borland 原 本 为 JBuilder 开 发 原 生 Java 编 译 器 的 计 划 也 因 此 而 打 住 Microsoft VJ++ 的 威 胁 1996 年,Anders Hejlsberg 来 到 Microsoft 之 后 的 第 一 个 作 品 即 将 推 出, 那 就 是 Microsoft VJ++ VJ++ 的 即 将 推 出, 对 于 许 多 软 件 公 司 而 言 都 是 一 个 很 大 的 震 撼 对 于 SUN 来 说, 这
65 是 Microsoft 在 Java 领 域 的 挑 战 在 SUN 自 己 的 Java 开 发 工 具 不 争 气 的 窘 境 之 下, 又 得 面 对 擅 长 开 发 工 具 的 Microsoft, 特 别 是 由 Anders 领 军 开 发 的 精 品 对 于 其 他 的 Java 开 发 工 具 厂 商 来 说, 也 是 提 心 吊 胆 Visual Café 在 JBuilder Visual Age For Java 陆 续 推 出 之 后 市 场 占 有 率 已 经 慢 慢 地 被 瓜 分, 现 在 又 得 再 次 面 对 Microsoft 的 竞 争, 昔 日 Symantec C/C++ 失 败 的 阴 影 又 缠 上 了 心 头 而 Microsoft 的 死 对 头 IBM 更 是 在 VisualAge For C/C++ VisualAge For BASIC 连 番 失 败 之 后, 好 不 容 易 推 出 了 VisualAge For Java, 准 备 在 Java 开 发 工 具 市 场 打 一 场 好 球 赛, 没 有 想 到 现 在 Microsoft 又 来 搅 局 对 于 Borland 来 说, 这 个 消 息 更 是 令 人 不 安, 因 为 Borland 本 身 的 Java 开 发 工 具 仍 然 处 于 研 发 阶 段, 还 没 有 推 出, 而 且 看 样 子 将 会 是 市 场 上 最 后 一 个 推 出 的 Java 开 发 工 具, 落 后 主 要 竞 争 对 手 已 经 很 多 了 现 在 Microsoft 居 然 更 早 一 步 推 出 Java 开 发 工 具, 而 且 是 由 Anders Hejlsberg 主 持 开 发 的 Borland 当 然 知 道 Anders Hejlsberg 的 实 力, 自 然 不 敢 轻 视 VJ++ 的 影 响 力 更 麻 烦 的 是 在 VJ++ 推 出 之 前,Microsoft 一 直 对 VJ++ 保 持 模 糊 的 态 度, 不 愿 意 表 明 VJ++ 是 否 是 一 个 纯 正 Java 开 发 工 具 更 让 Borland 惊 讶 的 是,Borland 内 部 对 于 VJ++ Beta 的 测 试 表 明 VJ++ 编 译 出 来 的 程 序 代 码 在 某 些 方 面 居 然 比 Delphi 等 原 生 的 Windows 开 发 工 具 执 行 得 还 快 速 这 意 味 着 VJ++ 不 但 对 于 Java 开 发 工 具 可 能 会 有 严 重 的 影 响, 甚 至 对 于 一 般 的 Windows 开 发 工 具 都 有 可 能 造 成 威 胁 不 过 Borland 分 析 如 果 VJ++ 真 的 开 始 对 Windows 开 发 工 具 产 生 威 胁, 那 么 VB 将 会 是 受 到 影 响 最 大 的 开 发 工 具 但 Borland 仍 然 感 到 忧 心, 因 为 VJ++ 仍 然 可 能 对 于 Delphi 和 C++Builder 产 生 一 定 的 影 响, 这 是 Borland 不 乐 意 见 到 的 当 然 这 也 加 速 了 Borland 研 发 Latté 的 决 心, 因 为 已 经 不 能 再 拖 了 记 得 当 时 我 还 和 Borland 在 亚 洲 新 加 坡 R&D 总 部 的 Mr. Inn Nam Yong 谈 过 VJ++ 的 表 现 以 及 对 于 VJ++ 可 能 产 生 影 响 的 忧 虑 Mr. Yong 也 说 VJ++ 的 表 现 令 他 们 吃 惊 看 来 Anders Hejlsberg 在 VJ++ 的 编 译 器 技 术 上 下 了 苦 功, 其 表 现 早 已 超 过 了 当 时 一 般 的 Java 编 译 器 技 术, 的 确 是 令 人 刮 目 相 看, 更 麻 烦 的 是 从 VJ++ 的 身 上 依 稀 可 以 看 到 Delphi 的 身 影 Borland 的 R&D 已 经 了 解 了 这 个 情 形,Borland 的 编 译 器 小 组 也 在 研 究 相 关 问 题 的 技 术 由 此 可 见 当 时 Borland 已 经 如 临 大 敌, 开 始 准 备 相 关 的 技 术, 并 且 已 经 掌 握 了 初 期 的 状 况 Microsoft VJ++ 在 1996 年 11 月 终 于 正 式 推 出 了, 全 世 界 也 都 屏 息 以 待, 准 备 看 着 VJ++ 会 产 生 多 少 的 毁 灭 力 量, 而 SUN 更 准 备 看 看 Microsoft 是 否 会 违 反 任 何 SUN 和 Microsoft 之 间 的 Java 协 议 当 然 SUN 是 担 心 Microsoft 想 破 坏 Java 的 开 发 VJ++ 在 一 开 始 果 然 获 得 了 一 些 回 响, 毕 竟 这 是 Microsoft 推 出 的 Java 工 具, 使 用 Microsoft 开 发 工 具 的 软 件 人 员 当 然 会 考 虑 VJ++ 同 时 VJ++ 也 吸 引 了 一 些 想 使 用 Java 语 言 但 是 仍 打 算 呆 在 Windows 平 台 的 开 发 人 员 不 过 VJ++ 推 出 之 后 也 很 快 受 到 了 所 有 Java 开 发 工 具 以 及 支 持 Java 平 台 厂 商 的 全 面 围 剿 他 们 害 怕 Microsoft 对 Java 市 场 的 入 侵, 会 让 其 他 厂 商 再 次 无 法 生 存 之 后 连 SUN 也 开 始 领 军 围 攻 Microsoft, 因 为 SUN 除 了 害 怕 Microsoft 会 慢 慢 地 主 宰 Java 平 台 和 标 准 之 外, 还 发 现 Microsoft 正 在 很 有 技 巧 地 逐 步 破 坏 Java 语 言 和 标 准, 例 如 VJ++ 便 提 供 了 许 多 非 标 准 的 Java 用 法 并 且 很 明 显 地 把 VJ++ 绑 死 在 Windows 平 台, 破 坏 Java 的 "Write Once,Run Everywhere" 的 美 梦 而 且,Java 开 发 人 员 如 果 大 量 使 用 VJ++, 那 么 便 再 也 离 不 开 Windows 平 台 Microsoft 计 划 通 过 提 供 一 流 的 " 类 Java 开 发 工 具 " 来 限 制 开 发 人 员 的 自 由 选 择 权 的 企 图 是 昭 然 若 揭 了
66 由 于 SUN 的 带 头 批 判, 想 使 用 Java 的 开 发 人 员 和 企 业 很 快 地 发 现 VJ++ 并 不 是 标 准 的 Java 开 发 工 具, 因 此 对 于 VJ++ 的 热 情 很 快 消 退 了 下 来 而 VJ++ 对 于 Java 以 及 Windows 开 发 工 具 的 威 胁 也 很 快 地 解 除 了 VJ++ 对 于 Microsoft 来 说 很 可 能 是 自 DOS 版 的 Microsoft Pascal 之 后 第 2 次 在 开 发 工 具 的 大 失 败 不 过 依 我 的 观 点 来 看,VJ++ 在 本 质 上 是 一 个 优 秀 的 产 品, 不 论 是 编 译 器 Framework 和 集 成 开 发 环 境 都 有 高 水 平 之 作 VJ++ 之 所 以 败 阵 下 来 实 在 是 因 为 形 势 比 人 强,Java 平 台 也 是 第 一 次 不 是 由 Microsoft 所 主 宰 的 市 场 在 Java 联 军 的 合 攻 之 下, 即 使 是 软 件 巨 人 也 得 回 避 三 分 因 为 第 一 次 在 Java 出 击 就 弄 得 灰 头 土 脸, 并 且 SUN 摆 明 了 不 会 允 许 Microsoft 在 Java 平 台 成 气 候, 使 得 Microsoft 下 定 了 和 SUN 正 面 开 战 在 Java 市 场 上 全 面 开 火 的 决 心, 进 而 造 成 了 SUN 控 告 Microsoft 违 反 Java 合 约 的 规 定 的 结 果, 而 Microsoft 稍 后 则 干 脆 把 Java 支 持 从 操 作 系 统 中 移 除 当 然, 这 是 Microsoft 和 SUN 之 间 的 Java 平 台 之 战, 已 超 出 本 书 讨 论 的 范 围, 也 许 应 该 由 Microsoft 或 是 SUN 的 人 来 说 明 这 整 个 过 程 虽 然 事 后 证 明 VJ++ 在 Java 开 发 工 具 是 失 败 了, 但 是 Anders Hejlsberg 在 VJ++ 中 花 费 的 心 力 却 没 有 白 费, 因 为 VJ++ 的 编 译 器 技 术 以 及 Framework 和 集 成 开 发 环 境 的 技 术 都 在 稍 后 融 入 Microsoft.NET 计 划 的 基 础 核 心 技 术 之 中 例 如 C# 的 语 言 和 Java 很 相 像,C# 的 编 译 器 技 术 想 必 也 借 重 了 许 多 当 初 VJ++ 优 秀 编 译 器 的 技 术, 因 此 C# 编 译 器 的 最 佳 化 结 果 也 在 一 些 方 面 胜 过 了 现 在 许 多 原 生 Windows 开 发 工 具 的 编 译 器 水 准 Anders Hejlsberg 的 努 力 正 激 活 了 Java 和.NET 的 正 面 决 战 IBM VisualAge For Java 的 推 出 IBM 在 PC 开 发 工 具 市 场 的 表 现 一 直 令 人 摇 头, 因 为 其 " 玩 玩 便 跑 " 的 作 风 总 是 让 人 无 法 放 心 使 用 它 的 开 发 工 具 但 是 也 许 是 IBM 的 招 牌 太 大, 再 加 上 它 会 免 费 向 购 买 IBM 机 器 或 是 软 件 的 客 户 奉 送 IBM 开 发 工 具, 因 此 也 总 是 有 人 会 去 使 用 IBM 的 开 发 工 具 我 个 人 在 受 了 IBM VisualAge For C/C++ 的 教 训 之 后, 便 对 IBM 的 开 发 工 具 敬 谢 不 敏 了 IBM 当 然 不 会 放 弃 Java 这 个 潜 力 无 穷 的 市 场, 因 为 对 于 IBM 来 说,Java 不 光 是 语 言 和 开 发 工 具 而 已 ; 更 重 要 的 是 Java 平 台 牵 涉 到 IBM 和 SUN 在 庞 大 商 机 的 硬 件 和 大 客 户 之 间 的 竞 争 IBM 不 光 是 要 支 持 Java, 更 想 从 SUN 手 中 取 得 Java 的 主 控 权, 因 此 对 于 重 要 的 Java 开 发 工 具 市 场,IBM 自 是 不 会 缺 席 IBM 很 快 采 用 了 许 多 当 初 在 VisualAge For C/C++ 中 相 当 受 欢 迎 的 元 素 作 为 开 发 VisualAge For Java 的 基 础 例 如 VisualAge For C/C++ 的 项 目 管 理 功 能 组 件 设 计 家 等 等 事 实 上 使 用 过 VisualAge For C/C++ 的 读 者 会 发 现 VisualAge For Java 非 常 的 具 有 亲 切 感 不 但 所 有 的 按 钮 都 是 采 用 圆 形 造 型, 甚 至 连 激 活 时 缓 慢 的 感 觉 整 个 集 成 开 发 环 境 温 温 吞 吞 的 表 现 也 非 常 相 似 由 于 采 用 了 VisualAge For C/C++ 的 部 分 观 念 和 程 序 代 码, 再 加 上 IBM 拥 有 最 丰 富 的 资 源, 因 此 VisualAge For Java 进 展 得 很 快 1997 年 9 月,IBM 终 于 推 出 了 VisualAge For Java, 开 始 直 接 和 SUN Symantec 竞 争 在 IBM 推 出 了 VisualAge For Java 之 后,Borland 注 定 成 为 最 后 一 个 推 出 重 量 级 Java 开 发 工 具 的 厂 商 不 过 IBM 的 竞 争 目 标 明 显 不 是 Symantec 和 Borland 等 纯 粹 以 Java 开 发 工 具 为 目 标 的 厂 商, 而 是 SUN 和 Microsoft IBM 在 Java 技 术 方 面 采 取 了 数 个 平 行 的 战 略, 希 望 能 够 在 Java 世 界 中 取 得 龙 头 地 位, 因 为 这 关 系 到 IBM 最 大 业 务 -- 硬 件 销 售 服 务 提 供 以 及 IBM
67 操 作 系 统 销 售 的 收 入 如 果 IBM 能 够 在 Java 世 界 取 得 决 定 性 的 地 位, 那 么 就 可 以 侵 蚀 SUN 的 市 场, 最 不 济 的 情 形 则 是 不 希 望 客 户 因 为 想 要 使 用 Java 技 术 而 自 然 地 想 到 SUN 至 于 另 外 一 个 锁 定 目 标 Microsoft,IBM 则 是 打 算 通 过 Java 日 益 扩 大 的 声 势 来 打 击 或 是 抑 制 之 因 此 IBM 一 方 面 和 SUN 签 订 Java 合 约, 取 得 Java 使 用 的 合 法 授 权, 另 一 方 面 又 投 入 大 量 的 研 发 资 源 开 发 自 己 的 JDK 版 本 以 方 便 移 植 到 IBM 其 他 的 专 属 平 台, 而 且 做 得 比 SUN 的 JDK 还 要 稳 定 和 有 效 率, 随 后 让 SUN 和 IBM 之 间 一 直 有 不 和 的 争 执 接 着 IBM 推 出 了 Java 开 发 工 具, 再 次 和 SUN 的 Java Workshop 竞 争 不 过 从 特 性 上 来 看,VisualAge For Java 锁 定 的 客 户 群 应 该 是 IBM 的 客 户 大 型 企 业 客 户 以 及 其 他 直 接 竞 争 对 手 的 客 户, 例 如 SUN 的 客 户 以 及 HP 的 客 户 VisualAge For Java 需 要 比 较 强 劲 的 机 器 来 执 行, 此 外 一 开 始 的 版 本 就 非 常 注 重 团 队 开 发 的 支 持, 不 像 其 他 的 Java 开 发 工 具 一 开 始 都 是 注 重 在 方 便 实 用 的 功 能, 稍 后 才 逐 渐 强 化 团 队 开 发 的 功 能, 这 些 差 异 都 是 IBM 想 争 抢 较 大 型 客 户 的 证 明 这 也 可 以 从 后 来 许 多 专 业 媒 体 和 杂 志 在 进 行 Java 开 发 工 具 评 比 时 VisualAge For Java 几 乎 都 在 团 队 开 发 功 能 方 面 获 得 了 最 高 的 评 价 得 知 由 于 VisualAge For Java 一 开 始 锁 定 的 客 户 群 和 Visual Café 以 及 JBuilder 锁 定 的 客 户 群 不 同, 因 此 在 Java 开 发 工 具 的 竞 争 初 期 并 没 有 发 生 严 重 的 竞 争 冲 突 但 是 随 着 Visual Café 和 JBuilder 逐 渐 往 上 仰 攻 企 业 市 场, 而 VisualAge For Java 为 了 扩 大 市 场 而 开 始 降 价 进 入 一 般 Java 大 众 市 场 之 后, 稍 后 的 Java 开 发 工 具 恶 战 也 不 可 避 免 了 第 2 阶 段 --Java 集 成 开 发 环 境 的 战 争 Borland 在 初 期 以 开 发 Java JIT 编 译 器 练 兵 之 后, 已 经 逐 渐 对 于 Java 的 技 术 有 了 掌 握 在 Java Workshop VJ++ 和 VisualAge For Java 陆 续 推 出 之 后,Borland 知 道 再 也 不 能 够 延 迟 JBuilder 的 推 出 时 间 了, 否 则 就 注 定 要 退 出 Java 开 发 工 具 的 市 场 因 此 Borland 对 JBuilder 的 研 发 小 组 下 了 最 后 的 通 牒, 一 定 要 在 1997 年 推 出 JBuilder JBuilder 小 组 在 竞 争 的 第 一 阶 段 掌 握 了 Java 的 JIT 技 术 之 后, 立 刻 兵 分 多 路 展 开 了 整 个 JBuilder 的 开 发 工 作 虽 然 Java 是 一 种 全 新 的 语 言 以 及 革 命 性 的 平 台, 但 是 开 发 工 具 总 不 外 乎 编 译 器 集 成 开 发 环 境 数 据 库 存 取 能 力 Framework 以 及 其 他 的 工 具 和 Plug-In 等 当 时 的 Latté 小 组 有 许 多 成 员 是 从 以 前 的 Borland C/C++ 转 进 来 的, 另 外 的 一 些 成 员 则 包 括 了 Borland 原 本 的 软 件 研 究 成 员 Paradox 成 员 Visual dbase 成 员 以 及 从 Borland 外 部 找 进 来 的 新 工 程 师 在 Borland 开 发 JBuilder 之 时, 由 于 Java 尚 没 有 完 整 的 组 件 架 构, 也 没 有 数 据 感 知 组 件 标 准 以 方 便 地 开 发 Java 数 据 库 应 用 程 序, 更 加 没 有 完 整 的 Java 可 视 化 组 件, 因 此 Borland 决 定 先 自 行 开 发 一 套 组 件 组 以 便 让 JBuilder 拥 有 最 好 的 组 件 开 发 能 力 这 刚 好 又 是 Borland 擅 长 的 技 术, 因 为 Borland 要 为 Java 开 发 一 套 Java Framework, 这 就 是 JBCL(JavaBeans Component Library) 的 由 来, 而 JBCL 的 架 构 稍 后 也 成 为 SUN 制 定 JavaBean 的 基 础 技 术 当 时 负 责 JBCL 架 构 的 Architect 是 Joe Nunoll 先 生 这 位 帅 哥 原 本 属 于 Paradox 小 组, 在 Borland 逐 渐 失 利 于 桌 上 型 数 据 库 战 场 之 后, 便 转 到 Latté 小 组 专 门 负 责 设 计 Latté 的 组 件 架 构
68 而 JBCL 的 主 要 实 现 工 程 师 则 是 当 初 设 计 和 实 现 Borland C/C++ Framework-OWL 的 总 工 程 师 Carl Quinn Carl Quinn 在 组 件 设 计 和 Framework 方 面 都 有 丰 富 的 经 验,OWL 就 技 术 而 言 也 算 是 精 品 因 此 在 Borland C/C++ 产 品 线 停 止 之 后,Carl Quinn 由 C/C++ 转 换 到 Java 跑 道 是 很 自 然 的 事 情, 毕 竟 C/C++ 和 Java 是 很 类 似 的 Carl 拥 有 丰 富 的 经 验, 由 他 来 带 领 开 发 Latté 的 组 件 Framework 是 再 适 合 不 过 了 由 于 Carl 在 JBCL 的 努 力 和 成 果, 稍 后 又 负 责 了 Borland 的 Java 组 件 模 型 Baja 的 开 发 之 后 Carl 凭 借 着 对 于 JBCL 和 设 计 Baja 的 经 验, 在 SUN 采 用 Baja 做 为 JavaBean 的 核 心 基 础 技 术 之 后 便 自 然 地 受 邀 于 JavaBean 的 开 发 小 组 由 于 Borland 在 Java 组 件 方 面 卓 越 的 表 现, 因 此 也 开 启 了 SUN 和 Borland 逐 渐 密 切 的 合 作 Borland 虽 然 在 Java 方 面 投 入 的 时 程 稍 晚, 但 是 却 凭 借 着 扎 实 的 技 术 而 慢 慢 迎 头 赶 上 Latté 的 Framework 开 发 在 Joe Nunoll 和 Carl Quinn 的 带 领 之 下 有 了 稳 定 的 发 展 事 实 上 JBCL 的 表 现 一 直 是 非 常 优 秀 的 当 Latté 随 后 正 式 推 出 时,JBCL 也 是 让 Latté 得 以 脱 颖 而 出 的 重 要 功 能 之 一 Joe Nunoll 和 Carl Quinn 的 功 劳 可 谓 不 小, 而 我 钦 佩 的 Carl Quinn 又 再 次 在 Java 方 面 证 明 了 他 坚 实 的 技 术 和 在 Framework 方 面 丰 富 的 设 计 和 实 现 经 验 Java Framework 虽 然 重 要, 但 也 只 是 整 个 完 整 开 发 工 具 的 支 柱 之 一 Latté 要 推 出 仍 然 需 要 编 译 器 和 集 成 开 发 环 境 的 功 能 在 Java 编 译 器 方 面,Borland 和 结 束 委 托 Dr. Niklaus Worth 研 究 小 组 开 发 Java JIT 编 译 器 之 后,Latté 开 发 小 组 便 开 始 展 开 研 究 的 工 作 当 时 JIT 编 译 器 已 经 全 面 开 战, 而 Borland 在 Latté 尚 未 推 出 还 没 有 足 够 资 源 的 情 形 下 如 果 再 介 入 JIT 的 战 争, 那 么 不 但 胜 算 不 大, 而 且 可 能 会 严 重 影 响 Latté 的 推 出 时 程 因 此 Latté 小 组 决 定 先 专 心 开 发 一 个 编 译 品 质 良 好, 而 且 能 够 和 Latté 完 美 搭 配 的 Java 编 译 器, 而 不 再 强 求 效 率 至 上 从 现 在 的 观 点 来 看, 当 时 Latté 小 组 的 决 定 是 非 常 正 确 的 因 为 : 第 一, 当 时 Borland 的 确 没 有 太 多 的 子 弹 ; 第 二,Latté 的 时 程 再 也 不 能 拖 延 ; 第 三, 也 是 最 重 要 的 是 稍 后 SUN 宣 布 了 开 发 Hotspot 编 译 器 技 术 的 计 划, 顿 时 之 间 所 有 Java JIT 编 译 器 的 风 头 都 被 SUN 抢 走 了 特 别 是 在 稍 后 SUN 决 定 将 Hotspot 内 建 在 JDK 中 之 后, 争 夺 Java JIT 编 译 器 不 但 变 得 没 有 意 义, 而 且 对 于 Java 开 发 工 具 而 言 也 没 有 什 么 附 加 价 值 了 因 此 在 SUN 的 Hotspot 编 译 技 术 揭 露 之 后,Symantec 很 快 就 在 Java JIT 编 译 器 市 场 上 销 声 匿 迹 了 Latté 小 组 确 定 了 Java 编 译 器 的 策 略 之 后, 立 刻 便 接 手 Dr. Niklaus Worth 研 究 小 组 的 后 续 开 发 工 作, 同 时 开 发 Latté 的 编 译 器 Latté 的 Plug-In 以 整 合 Java 编 译 器 到 Latté 的 集 成 开 发 环 境 中, 并 且 也 进 行 Java 编 译 器 最 佳 化 的 研 究 工 作 当 时 这 个 Java 编 译 器 开 发 小 组 由 Carl Fravel 等 人 带 领, 同 时 也 包 括 了 Borland 的 编 译 器 小 组 Carl Fravel 主 要 负 责 Latté 的 编 译 器 以 及 编 译 器 的 Plug-In 软 件, 此 外 他 也 参 与 了 Latté 数 据 库 方 面 的 开 发 当 时 Java 在 数 据 库 存 取 方 面 仍 然 相 当 弱 势,Borland 为 了 加 强 Latté 这 方 面 的 功 能, 决 定 先 借 重 Delphi 在 数 据 库 方 面 的 成 绩, 即 通 过 JDBC 标 准 接 口 封 装 Delphi 已 经 有 的 各 种 数 据 库 驱 动 程 序, 让 Latté 能 够 立 刻 连 接 到 最 多 的 数 据 库, 这 就 是 后 来 JBuilder 的 DataGayteway 除 了 Carl 之 外 ( 嗯,Latté 开 发 小 组 有 两 个 Carl),Sergio Cardoso 也 是 Latté 编 译 器 最 佳 化 的 成 员 Sergio 原 本 是 Borland C/C 十 + 的 开 发 者 之 一, 专 门 研 究 C/C++ 最 佳 化 的 技 术, 他 和 Carl Quinn 等 人 一 样 转 移 到 Java 的 产 品 线 Sergio 和 Carl Fravel 合 作, 负 责 打 造 Latté 的
69 核 心 引 擎 在 Latté 上 市 之 后, 事 实 上 每 一 版 的 JBuilder 的 编 译 器 都 有 进 步 就 现 在 来 说, 在 JBuilder 7/8 中 编 译 Java 应 用 程 序 相 当 的 快 速 这 说 明 JBuilder 和 当 初 Borland C/C++ 一 样, 都 是 在 初 期 版 本 快 速 地 强 化 引 擎 不 断 地 提 升 速 度 当 时 的 Latté 并 没 有 一 个 真 正 的 总 Architect, 只 有 不 同 技 术 领 域 的 Architect, 例 如 Joe Nunoll 因 此 Latté 当 时 主 要 的 舵 手 应 该 是 产 品 经 理 以 及 Borland 的 Java 资 深 研 究 员 了 而 产 品 经 理 以 及 Java 资 深 研 究 员 再 和 所 有 的 各 领 域 Architect 讨 论 Latté 的 开 发 方 向 因 此 在 Latté 的 初 期 开 发 阶 段, 其 模 式 就 像 罗 马 时 期 的 合 议 制 当 时 的 Latte 产 品 经 理 是 Klaus Krull(K. K.) 这 位 仁 兄 长 得 又 高 又 大, 也 是 一 位 相 当 热 心 的 人 K. K. 原 本 是 Paradox 和 dbase 小 组 的 成 员, 负 责 Paradox/dBase 的 产 品 线 在 Latté 小 组 成 立 之 后 K. K. 立 刻 跳 槽 到 Java 产 品 线 来 事 实 上 许 多 Paradox/dBase 的 工 程 师 也 都 希 望 转 换 到 Java 产 品 来, 因 此 当 时 在 Borland 内 部 掀 起 了 很 大 的 风 浪, 也 造 成 了 许 多 人 离 职 这 段 故 事 在 稍 后 的 dbase 相 关 章 节 中 将 详 细 说 明 K. K. 加 入 了 Latté 小 组 之 后, 便 积 极 地 带 领 Latté 小 组 往 前 冲 也 许 是 因 为 K.K. 在 Paradox 和 dbase 时 表 现 得 并 不 好, 因 此 想 借 着 Latté 证 明 自 己 的 实 力 不 过 K. K. 人 也 许 很 好, 可 是 管 理 方 面 似 乎 仍 然 不 甚 灵 光,Latté 初 期 的 进 度 仍 然 稍 嫌 缓 慢 在 IBM VisualAge For Java 于 1997 年 推 出 之 后,Borland 高 层 下 令 K. K. 绝 对 不 可 以 再 度 延 迟 进 度, 一 定 也 要 在 1997 年 推 出 第 一 个 Latté 版 本 好 在 当 时 Delphi 3 大 获 全 胜, 而 K. K. 又 是 当 时 Delphi 产 品 经 理 Ben Riga 的 好 哥 们, 因 此 由 Delphi 转 入 Latté 的 资 源 也 就 源 源 不 绝, 让 Latté 的 进 度 慢 慢 地 赶 上 了 至 于 当 时 Latté 架 构 的 主 要 人 物 并 不 是 稍 后 众 人 皆 知 的 Blake Stone, 因 为 Blake Stone 是 在 Latté 推 出 之 后 才 加 入 Borland 的 Latté 初 期 的 架 构 负 责 人 应 该 是 Steve Shaughnessy Steve 是 Borland 的 资 深 研 究 人 员, 也 是 当 初 Borland 最 早 投 入 Java 技 术 研 究 领 域 的 人 物 之 一 不 过 资 深 研 究 人 员 的 缺 点 之 一 是 喜 欢 不 断 地 想 象 以 及 研 究 软 件 技 术, 但 是 对 于 产 品 进 度 的 掌 握 却 不 是 他 们 的 专 长, 也 不 是 他 们 最 关 心 的 事 情 这 就 是 为 什 么 Latté 一 开 始 的 开 发 进 度 非 常 缓 慢 的 原 因 直 到 最 后 K. K. 加 入 并 且 面 临 了 Borland 高 层 和 市 场 巨 大 的 压 力 之 后 才 匆 匆 地 集 中 所 有 的 资 源 和 时 间 想 要 追 上 进 度 当 Latté 小 组 开 发 JBuilder 的 第 一 个 版 本 时, 就 想 学 习 使 用 Delphi 成 功 的 Open Tools API 特 性, 为 JBuilder 定 义 完 整 而 且 极 具 弹 性 的 开 放 式 集 成 开 发 环 境 不 过 由 于 当 时 Delphi 的 Open Tools API 仍 然 没 有 大 量 的 采 用 接 口 程 序 设 计 的 架 构, 考 虑 到 Java 拥 有 定 义 良 好 的 接 口 机 制, 无 法 完 全 采 用 Delphi 的 Open Tools API 的 设 计, 所 以 一 开 始 JBuilder 集 成 开 发 环 境 的 Add-ins 功 能 开 发 得 很 缓 慢 当 时 负 责 JBuilder 集 成 开 发 环 境 中 Add-ins 功 能 的 工 程 师 除 了 Carl Fravel 之 外, 另 外 一 位 主 要 的 工 程 师 则 是 Greg Cole 当 Carl Fravel 和 Greg Cole 了 解 到 无 法 直 接 借 用 Delphi 的 Open Tools API 来 设 计 JBuilder 的 Add-ins 架 构 之 后, 就 决 定 开 始 研 发 JBuilder 本 身 的 集 成 开 发 环 境 开 放 架 构, 并 且 直 接 使 用 接 口 程 序 设 计 的 机 制 来 设 计 JBuilder 的 开 放 架 构, 这 是 和 当 时 的 Delphi 不 一 样 的 地 方 而 一 直 要 到 Danny Thorpe 为 Object Pascal 程 序 语 言 加 入 了 接 口 机 制 之 后,Delphi 的 Open Tools API 才 展 开 了 第 2 波 的 大 改 版, 使 用 接 口 机 制 来 重 新 设 计, 也 就 是 后 来 Delphi 著 名 的 OTA 架 构 (Open Tools Architecture)
70 1997 年 11 月,Latté 终 于 完 成 并 且 推 出 市 场 正 式 的 产 品 名 称 被 定 为 Open JBuilder, 这 是 为 了 强 调 Borland 的 Java 开 发 工 具 就 像 Java 本 身 一 样 是 使 用 开 放 的 架 构 在 Open JBuilder 1.0 推 出 之 后,Java 开 发 工 具 市 场 总 算 是 竞 争 者 齐 聚 一 堂 了, 每 一 家 厂 商 终 于 一 一 地 使 出 了 真 本 领 来 竞 逐 Java 开 发 工 具 的 市 场 龙 头 Open JBuilder 1.0 推 出 之 后 不 久, 几 乎 所 有 的 信 息 媒 体 以 及 Java 的 专 业 杂 志 都 进 行 了 Java 开 发 工 具 的 评 比, 想 要 比 较 所 有 Java 开 发 工 具 的 优 / 缺 点, 并 且 让 Java 的 使 用 者 了 解 当 时 市 场 的 老 大 Visual Café 是 否 能 够 面 对 新 兴 势 力 的 挑 战, 保 住 市 场 第 一 的 地 位 当 时 大 多 数 杂 志 评 比 的 目 标 包 括 了 Symantec 的 Visual Café SUN 的 Java Workshop IBM 的 VisualAge For Java 以 及 Borland 的 Open JBuilder 1.0 对 于 Symantec 来 说, 第 一 次 的 Java 开 发 工 具 大 会 战 是 处 于 以 逸 待 劳 的 情 势, 而 且 Visual Café 也 是 4 个 Java 开 发 工 具 中 唯 一 完 全 使 用 C/C++ 语 言 撰 写 的, 因 此 面 对 当 时 Java 编 译 器 还 不 够 好 JVM 品 质 也 未 若 今 日 精 良 的 情 形 下,Visual Café 的 执 行 速 度 占 了 非 常 明 显 的 优 势, 在 功 能 方 面 当 然 也 胜 出 其 他 竞 争 对 手 一 截 Symantec 的 Visual Café 唯 一 的 缺 点 就 是 在 Java 程 序 代 码 中 加 入 了 开 发 工 具 特 有 的 程 序 代 码 卷 标, 造 成 使 用 Visual Café 撰 写 的 Java 程 序 代 码 不 易 使 用 在 其 他 开 发 工 具 中 的 后 果 而 且 Visual Café 在 Render Java 图 形 使 用 者 接 口 时 仍 然 拥 有 不 十 分 精 确 的 问 题 当 时 对 SUN 的 Java Workshop 的 评 比 是 比 较 保 守 的 毕 竟 Java Workshop 是 Java 正 宗 厂 商 SUN 推 出 的 产 品 虽 然 它 不 论 在 功 能 执 行 效 率 方 面 都 比 不 上 竞 争 对 手, 而 且 小 问 题 一 大 堆, 但 是 为 了 给 SUN 面 子, 媒 体 仍 然 没 有 给 予 太 多 的 苛 责 甚 至 有 一 些 媒 体 还 称 赞 SUN 有 勇 气 开 发 一 个 完 全 使 用 Java 语 言 撰 写 的 Java 开 发 工 具, 向 全 世 界 证 明 Java 是 能 够 用 来 开 发 大 型 应 用 程 序 的 不 过 虽 然 媒 体 和 杂 志 很 给 SUN 面 子, 但 Java Workshop 终 究 逃 不 过 市 场 的 考 验, 从 此 慢 慢 地 退 出 了 Java 开 发 工 具 的 市 场 在 当 时 的 评 比 中 IBM 的 VisualAge For Java 虽 然 是 执 行 最 为 缓 慢 的 Java 开 发 工 具, 但 是 在 高 阶 功 能 方 面 的 表 现 却 是 遥 遥 领 先 所 有 的 竞 争 对 手 VisualAge For Java 的 团 队 开 发 功 能 项 目 管 理 功 能 以 及 可 视 化 设 计 家 都 大 幅 超 越 了 其 他 的 Java 开 发 工 具 不 过 VisualAge For Java 使 用 了 专 属 的 格 式, 因 此 其 程 序 代 码 不 容 易 使 用 在 其 他 的 工 具 中, 而 且 VisualAge For Java 的 项 目 在 进 入 了 Repository 之 后 也 发 生 过 整 个 Repository 毁 损 的 情 形, 因 此 当 时 VisualAge For Java 在 易 用 性 方 面 的 分 数 是 比 不 上 其 他 竞 争 对 手 的 对 于 Borland 的 Open JBuilder 1.0 来 说, 这 个 最 晚 进 入 竞 争 市 场 的 工 具 在 第 1 次 的 集 体 评 比 中 最 后 的 结 果 不 如 人 意 原 本 Java 的 使 用 者 以 及 专 业 媒 体 对 于 Borland 的 产 品 有 着 高 度 的 期 待 因 为 以 Borland 一 向 精 于 开 发 工 具, 而 且 是 最 后 才 推 出 Java 开 发 工 具 的 情 形 来 推 断, 大 多 数 人 都 认 为 Open JBuilder 应 该 是 准 备 最 充 分 的, 但 是 评 比 之 后 的 结 果 却 不 是 如 此 首 先 Open JBuilder 并 不 是 纯 粹 使 用 Java 撰 写 的 开 发 工 具, 而 是 混 合 了 Java 和 Delphi 的 程 序 代 码 不 过 最 后 的 执 行 效 率 不 但 比 不 上 Visual Café, 也 不 比 纯 粹 的 Java Workshop 快 上 多 少 此 外 Open JBuilder 在 功 能 方 面 比 不 上 Visual Café, 在 可 视 化 设 计 家 和 高 阶 功 能 方 面 又 不 是 VisualAge For Java 的 对 手 在 比 上 不 足, 比 下 只 有 险 胜 的 情 形 下 Open JBuilder 让
71 当 时 许 多 人 大 失 所 望, 当 然 也 包 括 了 我 在 内 因 此 在 大 多 数 的 评 比 中,Open JBuilder 只 得 到 中 等 的 评 价 当 然 这 样 的 结 果 也 反 映 在 Open JBuilder 的 市 场 表 现 之 上 Hotspot 编 译 技 术 是 个 笑 话 吗? 1997 年 市 场 上 逐 渐 出 现 愈 来 愈 多 的 Java 开 发 工 具, 愈 来 愈 多 的 人 开 始 尝 试 使 用 Java, 却 也 有 愈 来 愈 多 的 人 抱 怨 Java 的 执 行 效 率 当 时 的 PC 不 像 今 日 动 不 动 就 拥 有 1GHz 的 执 行 效 率 以 及 512MB RAM 的 内 存, 以 当 时 的 机 器 来 执 行 Java 是 很 痛 苦 的 事 情 还 记 得 当 时 我 还 没 有 动 力 足 够 的 机 器 来 跑 Open JBuilder, 每 一 次 执 行 Open JBuilder 时 就 觉 得 受 不 了 当 时 我 还 开 玩 笑 地 说, 机 器 从 执 行 Open JBuilder 到 进 入 Open JBuilder 的 集 成 开 发 环 境 这 段 时 间, 早 就 够 我 使 用 Delphi 写 完 一 支 程 序 了 造 成 Java 执 行 效 率 缓 慢 的 主 要 原 因 当 然 是 Java 编 译 器 以 及 JVM 的 品 质 不 够 精 良 了 为 了 急 于 让 信 息 界 接 受 Java 成 为 标 准,SUN 必 须 想 办 法 克 服 这 个 问 题 虽 然 克 服 Java 执 行 缓 慢 的 现 象 是 当 时 几 乎 所 有 支 持 Java 软 件 厂 商 都 想 解 决 的 事 情, 但 Java 的 正 宗 厂 商 SUN 是 责 无 旁 贷 的 也 是 因 为 Java 执 行 效 率 的 缓 慢, 当 时 也 兴 起 了 许 多 小 的 软 件 厂 商 开 发 各 种 技 术 和 编 译 器 来 改 善 或 是 解 决 Java 的 这 个 致 命 缺 点 很 快 SUN 找 到 了 一 家 小 软 件 公 司, 这 家 公 司 以 开 发 出 "Adaptive Compiling" 技 术 来 加 快 JVM 执 行 效 率 以 及 使 用 类 似 的 技 术 来 改 善 Java 编 译 器 的 品 质 而 闻 名 SUN 在 了 解 到 这 些 杰 出 的 技 术 之 后 便 立 刻 决 定 购 买 这 家 公 司, 并 且 根 据 他 们 的 技 术 来 实 现 SUN 的 下 一 代 Java 编 译 器 以 及 JVM, 这 就 是 稍 后 SUN HotSpot 技 术 的 由 来 SUN 投 入 新 的 Java 编 译 技 术 之 后 不 久, 就 有 了 初 步 的 结 果 根 据 这 个 新 的 技 术 编 译 出 来 的 Java ByteCode 以 及 新 的 JVM 的 执 行 效 率 果 然 比 以 前 进 步 了 许 多 这 让 SUN 更 有 信 心, 便 立 刻 向 世 界 公 告 了 这 个 新 的 技 术, 并 且 命 名 为 HotSpot SUN 宣 称 最 后 推 出 的 Java 编 译 器 和 JVM 将 提 供 类 似 C++ 的 执 行 效 率 在 SUN 公 布 了 HotSpot 技 术 之 后, 立 刻 引 起 了 全 世 界 Java 使 用 者 的 狂 热 人 们 认 为 一 旦 SUN 推 出 这 个 技 术,Java 将 可 望 克 服 最 后 一 个 缺 点, 从 而 一 统 天 下 与 此 同 时, 这 也 引 起 了 信 息 业 界 非 常 大 的 讨 论 和 争 议 特 别 是 C/C++ 社 群 的 人 认 为 这 根 本 是 不 可 能 的, 虽 然 "Adaptive Compiling" 非 常 的 有 创 意, 但 是 要 和 已 经 存 在 数 年 的 C++ 最 佳 化 编 译 器 比 起 来, Java 的 ByteCode 是 不 可 能 超 越 C++ 的 但 是 从 SUN 在 其 时 公 布 的 一 些 HotSpot 编 译 数 字 来 看,"Adaptive Compiling" 是 非 常 有 希 望 的, 因 为 它 改 善 的 幅 度 实 在 是 很 大 因 此 全 球 相 关 的 人 员 都 在 屏 息 以 待, 准 备 看 看 SUN 最 后 的 成 果 在 SUN 第 1 次 公 布 HotSpot 的 推 出 时 程 之 后, 果 然 让 所 有 Java 的 使 用 者 都 引 颈 期 盼, 恨 不 得 SUN 立 刻 推 出 这 个 技 术, 解 除 大 众 执 行 Java 的 痛 苦 不 过 随 着 时 间 不 断 的 接 近,SUN 在 最 后 关 头 又 宣 布 因 为 研 发 不 及 因 此 要 延 迟 HotSpot 推 出 的 时 程 软 件 研 发 的 工 作 延 后 在 软 件 界 见 怪 不 怪, 当 时 也 没 有 引 起 太 多 的 争 议, 不 但 让 SUN 争 取 到 了 更 多 的 时 间, 也 顺 利 地 延 后 了 推 出 的 时 程 不 过 在 SUN 宣 布 的 第 2 次 推 出 时 程 到 期 时,SUN 仍 然 无 法 推 出 HotSpot 技 术 很 快 的 SUN 不 得 不 再 次 宣 告 要 延 后 HotSpot 的 时 程 就 在 这 样 SUN 不 断 跳 票 的 戏 码 重 复 上 演 的 情
72 形 下, 终 于 开 始 有 人 笑 称 HotSpot 根 本 是 一 个 骗 局,SUN 根 本 无 法 推 出 接 近 C++ 执 行 效 率 的 Java 编 译 技 术 到 了 1999 年 左 右,SUN 自 知 再 也 无 法 推 拖 HotSpot 推 出 的 时 程 了 因 此 在 当 年 8 月, 当 时 HotSpot 研 发 小 组 的 领 导 人 ( 一 位 博 士, 但 是 我 已 经 忘 记 了 他 的 名 字 ) 在 BorCon 上 进 行 Keynote Speech, 正 式 向 参 加 BorCon 的 人 介 绍 HotSpot 技 术 并 且 在 现 场 展 示 了 HotSpot 的 研 发 成 果 虽 然 一 切 看 起 来 都 很 棒, 但 是 当 现 场 的 听 众 直 接 询 问 到 底 HotSpot 技 术 是 否 能 够 超 越 C++ 的 执 行 效 率 时, 这 位 博 士 却 没 有 正 面 回 答, 只 解 释 说 在 一 些 应 用 中 HotSpot 的 确 可 以 提 供 超 越 C++ 的 执 行 效 率 我 听 了 之 后 心 中 大 概 就 已 经 知 道 HotSpot 最 终 的 结 果 了 果 然 在 HotSpot 被 迫 推 出 市 场 之 后, 大 家 很 快 地 了 解 到 HotSpot 和 C++ 的 执 行 效 率 相 比 终 究 是 还 有 一 段 距 离, 根 本 无 法 超 越 C++ 的 表 现 这 造 成 了 当 初 一 些 热 切 期 待 的 C/C++ 程 序 员 回 到 C/C++ 语 言 的 市 场, 并 没 有 转 换 到 Java 市 场 这 也 是 为 什 么 后 来 C/C++ 市 场 虽 然 受 到 了 Java 的 影 响, 但 是 仍 然 有 大 量 的 使 用 者 和 市 场, 并 没 有 像 当 时 许 多 人 预 测 的 那 样 将 会 有 大 量 的 C/C++ 程 序 员 进 入 Java 市 场, 终 究 还 是 因 为 Java 无 法 完 全 取 代 C/C++ 语 言 来 完 成 一 些 工 作 而 SUN 呢? 为 了 转 移 大 家 对 于 HotSpot 的 失 望 而 开 始 把 研 发 重 点 转 到 Internet/Intranet EJB 组 件 模 型 和 Java Mobile 系 统 方 面 的 研 发 轰 动 一 时 的 HotSpot 热 潮 也 逐 渐 淡 去 现 在 SUN 再 也 不 怎 么 提 起 HotSpot 编 译 器 了, 只 是 在 每 一 个 新 版 本 的 JDK 中 不 断 持 续 的 改 善 HotSpot 的 编 译 品 质 想 起 当 初 SUN 对 HotSpot 不 可 一 世 的 吹 嘘 最 是 令 人 感 叹 不 过 HotSpot 也 不 是 一 无 是 处, 的 确 是 精 进 了 许 多 Java ByteCode 的 产 生 品 质 以 及 JVM 的 执 行 效 率, 只 是 没 有 达 到 当 初 SUN 夸 口 逼 近 或 是 超 越 C 语 言 编 译 器 品 质 的 程 度 在 目 前 状 况 下, HotSpot 能 够 让 Java 的 编 译 品 质 在 伺 服 端 的 效 率 有 着 显 著 的 提 升, 提 供 非 常 不 错 的 执 行 效 率 但 是 在 客 户 端, 尤 其 是 牵 涉 到 图 形 使 用 者 接 口 Render 方 面 的 应 用 时, 仍 然 是 相 当 缓 慢 的 就 Borland 本 身 使 用 Java 的 情 形 来 说,Borland 使 用 Java 开 发 的 VisiBroker For Java 的 执 行 效 率 已 经 相 当 接 近 VisiBroker For C/C++ 的 执 行 效 率 因 此 如 果 再 搭 配 使 用 品 质 良 好 的 JVM, 那 么 根 据 Borland 内 部 的 测 试 数 据 显 示,VisiBroker For Java 甚 至 在 一 些 特 定 的 应 用 中 超 越 了 VisiBroker For C/C++ HotSpot 在 纷 纷 扰 扰 的 这 么 多 年 之 后 到 底 是 不 是 一 些 人 讥 笑 的 " 笑 话 科 技 " 呢? 不 同 的 人 到 现 在 可 能 还 是 有 不 同 的 答 案 吧 Borland 的 困 境 和 选 择 Open JBuilder 虽 然 赶 在 1997 年 最 末 的 一 班 车 推 出, 但 在 市 场 上 的 反 映 并 不 如 预 期 的 好 当 然 这 是 有 许 多 原 因 的 首 先 是 Open JBuilder 太 晚 推 出, 初 期 的 Java 市 场 早 已 被 其 他 的 Java 开 发 工 具, 特 别 是 Visual Café 所 占 领 ; 第 二 是 Open JBuilder 急 着 推 出 市 场, 因 此 在 和 其 他 Java 开 发 工 具 竞 争 时 并 没 有 什 么 特 别 突 出 的 功 能 明 显 的 优 势, 竞 争 力 当 然 不 够 ; 第 三 是 Open JBuilder 于 一 开 始 就 混 合 地 使 用 了 Delphi 和 Java 程 序 代 码, 因 此 Open JBuilder 激 活 以 及 窗 体 设 计 家 的 反 应 都 很 缓 慢, 不 像 Visual Café 那 种 以 纯 C/C++ 程 序 代 码 撰 写 的 Java 开 发 工 具 反 应 迅 速, 从 而 给 许 多 程 序 员 造 成 了 不 良 的 印 象 IBM 的 VisualAge For Java 虽 然 也 很
73 迟 缓, 但 在 高 阶 的 团 队 开 发 方 面 却 支 持 得 很 好, 而 且 通 常 会 使 用 团 队 开 发 功 能 的 使 用 者 大 都 是 属 于 企 业 或 是 大 型 用 户, 因 此 使 用 的 机 器 配 备 也 很 好, 对 于 VisualAge For Java 的 缓 慢 反 应 也 还 能 够 接 受 Open JBuilder 的 表 现 不 如 预 期, 这 让 Borland 很 着 急, 因 为 其 无 法 承 受 失 去 Java 开 发 工 具 市 场 的 损 失 因 此 在 Borland 的 Java 开 发 工 具 研 发 小 组 中 开 始 有 了 一 些 讨 论, 那 就 是 如 何 让 Open JBuilder 能 够 后 来 居 上, 取 得 胜 利 的 果 实 针 对 Open JBuilder 的 失 败 原 因,Open JBuilder 的 开 发 人 员 开 始 反 思 是 否 也 应 该 像 Visual Café 一 样 使 用 Delphi 重 新 打 造 Open JBuilder, 让 Open JBuilder 的 执 行 反 应 加 快 到 使 用 者 能 够 接 受 的 地 步, 因 为 在 当 时 Borland 实 在 已 经 无 法 再 加 快 Java 的 执 行 速 度 此 外 使 用 Delphi 开 发 Open JBuilder 的 窗 体 设 计 家 也 可 以 避 免 许 多 JDK 的 臭 虫, 不 会 因 SUN 开 发 或 是 改 善 JDK 的 时 程 而 影 响 到 Open JBuilder 的 开 发 周 期 这 个 想 法 在 Open JBuilder 的 内 部 引 起 了 很 大 的 争 议 使 用 Delphi 重 写 Open JBuilder 的 集 成 开 发 环 境 可 以 拥 有 许 多 短 期 的 效 益 而 且 产 品 马 上 会 有 明 显 的 改 善, 可 以 拥 有 和 其 他 竞 争 对 手 一 搏 的 本 钱 不 过 反 对 的 人 则 认 为 使 用 原 生 开 发 工 具 开 发 Java 的 工 具 是 走 回 头 路 这 些 人 认 为 Java 有 朝 一 日 一 定 会 开 发 到 成 熟 的 阶 段, 到 时 Open JBuilder 就 会 拥 有 最 后 的 胜 利, 现 在 只 是 一 时 的 挫 折, 没 有 必 要 灰 心 对 于 Borland 来 说, 如 何 继 续 Open JBuilder 是 一 个 困 难 的 抉 择, 因 为 当 时 Borland 急 需 收 入 的 挹 注, 而 Open JBuilder 的 研 发 费 用 惊 人, 光 靠 Delphi 力 撑 实 在 是 很 辛 苦 不 过 如 果 再 回 到 使 用 Delphi 开 发, 那 么 可 能 又 会 失 去 未 来 的 机 会, 这 到 底 应 该 如 何 决 定 呢? Java 天 才 的 加 入 这 一 切 的 答 案 在 Open JBuilder 的 新 产 品 架 构 领 导 人 Blake Stone 加 入 后 才 逐 渐 明 朗 Blake Stone 原 本 是 DSW Systems Corporation 公 司 的 技 术 主 管, 而 DSW 公 司 一 向 和 Borland 互 动 良 好, 许 多 DSW 公 司 的 人 都 曾 在 Borland 的 Conference(BorCon) 中 负 责 技 术 讲 座 Blake Stone 先 生 也 在 1997 年 的 BorCon 中 负 责 了 一 个 讲 座 也 许 是 Blake Stone 和 Borland 在 这 次 的 BorCon 中 合 作 愉 快,Borland 也 很 赏 识 Blake Stone 的 技 术 和 才 华, 因 此 在 BorCon 结 束 之 后 不 久,Borland 便 和 Blake Stone 接 触, 看 看 Blake 是 否 有 意 愿 加 入 Borland 的 Java 研 发 小 组 也 许 是 天 意 吧, 在 Borland 失 去 了 Anders 这 个 天 才 之 后, 老 天 又 给 了 Borland 一 个 弥 补 软 件 天 才 的 机 会 在 Borland 和 Blake 接 触 之 后,Blake 不 但 对 于 Java 未 来 的 潜 力 看 好, 而 且 因 为 Blake 也 曾 使 用 Delphi, 对 于 Borland 研 发 开 发 工 具 的 能 力 相 当 有 信 心 更 凑 巧 的 是 由 于 Open JBuilder 1.0 的 不 尽 人 意, 因 此 此 时 刚 好 有 一 个 Open JBuilder 的 Architect 离 职, 让 Blake 立 刻 有 了 适 当 的 职 位 没 有 多 久 Blake 便 答 应 进 入 Borland 作 为 JBuilder 的 Architect, 目 的 是 带 领 JBuilder 成 为 最 成 功 的 Java 开 发 工 具 由 于 Blake 惊 人 的 天 分, 因 此 很 快 就 成 为 JBuilder 的 主 要 Architect 以 及 技 术 的 主 领 导 者,JBuilder 未 来 开 发 的 Java 技 术 都 由 Blake 负 责 研 究 和 研 发 的 工 作 Blake 进 入 JBuilder 开 发 小 组 之 后, 面 临 的 第 一 个 挑 战 便 是 如 何 改 造 Open JBuilder, 让
74 它 执 行 得 更 为 顺 利, 并 且 能 够 在 竞 争 群 中 脱 颖 而 出 当 然 Blake 必 须 做 的 第 一 个 抉 择 就 是 Open JBuilder 到 底 该 走 向 纯 Java 的 开 发 工 具 或 是 改 成 原 生 的 Windows Java 开 发 工 具 Blake 并 没 有 迟 疑 多 久, 便 决 定 把 JBuilder 带 向 纯 Java 的 开 发 工 具, 使 用 Java 语 言 本 身 来 打 造 整 个 JBuilder Blake 做 了 如 此 的 决 定 是 有 许 多 原 因 的 首 先 是 Blake 希 望 通 过 使 用 Java 语 言 开 发 JBuilder 本 身 来 让 Borland 的 工 程 师 彻 底 掌 握 Java 的 技 术, 也 希 望 通 过 这 样 的 开 发 来 证 明 Java 的 实 用 性 就 像 Delphi 本 身 就 是 使 用 Object Pascal 和 Delphi 研 发 Borland 通 过 Object Pascal 证 明 了 Delphi 的 实 用 性 和 可 靠 性 一 样,Blake 也 希 望 使 用 JBuilder 来 证 明 Java 语 言 的 可 用 性 第 2 点 是 因 为 打 造 纯 Java 开 发 工 具 可 以 让 JBuilder 通 过 Java 跨 平 台 的 特 性 把 JBuilder 推 向 其 他 所 有 支 持 Java 的 平 台, 让 Borland 能 够 穿 透 到 以 往 无 法 进 入 的 市 场, 这 样 可 以 让 JBuilder 的 潜 在 市 场 和 客 户 比 竞 争 对 手 的 更 宽 广 更 多 第 3 点 因 素 则 是 Blake 希 望 通 过 这 个 行 动 让 Borland 掌 握 Java 的 核 心 技 术, 最 好 能 够 和 SUN 有 更 密 切 的 互 动, 让 Borland 能 够 在 Java 领 域 取 得 相 关 的 领 导 地 位 因 为 在 和 以 往 Microsoft 交 手 的 过 程 中,Borland 深 深 了 解 到 如 果 无 法 在 一 个 技 术 领 域 取 得 第 1 或 是 第 2 的 地 位, 那 么 终 将 成 为 微 不 足 道 的 角 色, 被 市 场 淘 汰 出 局 Blake 在 JBuilder 研 发 方 向 制 定 的 策 略 事 后 都 被 证 明 是 正 确 的 后 来 JBuilder 果 然 能 够 支 持 Windows Linux 和 Solaris 平 台, 成 为 当 时 架 构 最 大 最 复 杂 的 Java 应 用 程 序 更 重 要 的 是 SUN 充 分 肯 定 了 Borland 在 Java 方 面 卓 越 的 技 术, 进 而 采 用 Borland 的 Baja 技 术 制 定 Java Bean 规 格 并 且 邀 请 Borland 共 同 参 与 开 发 Java 的 JDK Blake 在 JBuilder 早 期 设 定 了 成 功 的 趋 势, 奠 定 了 JBuilder 成 功 的 基 础 稍 后 JBuilder 新 的 产 品 经 理 Tony de la Lama 又 成 功 地 制 订 了 JBuilder 的 市 场 研 发 脚 步 和 竞 争 策 略, 终 于 让 JBuilder 在 3.5 版 本 之 后 一 飞 冲 天, 成 为 Java 开 发 工 具 的 翘 首 在 Blake 加 入 JBuilder 开 发 团 队 并 且 决 定 了 JBuilder 走 向 之 后, 很 快 整 个 JBuilder 的 开 发 方 向 便 朝 着 他 决 定 的 方 向 快 速 前 进 Blake 也 激 活 了 JBuilder 庞 大 的 纯 Java 开 发 工 具 的 计 划 1998 年 JBuilder 研 发 小 组 在 Blake 的 带 领 之 下 很 快 地 交 出 了 第 1 张 成 绩 单, 那 就 是 JBuilder 2 的 推 出 JBuilder 2 的 战 略 目 标 并 不 是 成 为 完 全 的 纯 Java 开 发 工 具, 而 是 为 了 快 速 跟 上 其 他 Java 开 发 工 具 的 功 能, 并 且 提 升 Open JBuilder 1.0 为 人 诟 病 的 缓 慢 执 行 速 度 以 及 问 题 多 多 的 窗 体 设 计 家 无 疑 JBuilder 2 是 非 常 成 功 的 我 所 谓 的 成 功 并 不 是 指 JBuilder 在 销 售 上 的 成 功, 而 是 指 Blake 为 JBuilder 2.0 设 定 的 目 标 因 为 JBuilder 2.0 推 出 之 后 很 明 显 的 比 Open JBuilder 1.0 看 起 来 成 熟 多 了, 而 且 在 执 行 速 度 包 含 的 功 能 等 方 面 都 到 达 了 合 理 的 地 步, 也 让 JBuilder 正 式 进 入 Java 开 发 工 具 第 一 方 阵 的 竞 争 群 在 Blake 的 努 力 下,JBuilder 2.0 的 实 现 程 序 代 码 已 经 进 步 到 使 用 25%Delphi 程 序 代 码 和 75%Java 程 序 代 码, 离 纯 Java 开 发 工 具 已 经 愈 来 愈 近 了 Borland 也 开 始 从 JBuilder 2.0 的 身 上 看 到 了 未 来 的 曙 光 也 是 上 天 注 定, 这 个 时 候 正 是 Delphi 逼 近 于 全 盛 的 时 期, 需 要 JBuilder 接 棒 才 能 够 让 Borland 持 续 地 成 长 JBuilder 2.0 的 渐 入 佳 境 除 了 归 功 于 Blake Stone 之 外, 另 外 一 个 重 要 的 原 因 便 是 此 时
75 JBuilder 的 产 品 经 理 也 换 成 了 颇 具 眼 光 的 Tony de la Lama Tony 也 像 K. K. 一 样 是 从 Visual dbase 小 组 转 来 的, 而 且 在 K. K. 离 开 了 Borland 之 后 接 手 成 为 JBuilder 的 舵 手 本 来 没 有 人 看 好 Tony 的, 没 有 想 到 Tony 却 是 一 个 雄 才 大 略 的 人 物 Tony 显 然 和 Blake 合 作 无 间 在 JBuilder 一 开 始 于 产 品 和 技 术 还 相 对 处 于 劣 势 的 时 期, Tony 知 道 最 重 要 的 工 作 是 先 把 产 品 做 好, 再 求 其 他 的 策 略 因 此 JBuilder 在 2/3 版 时 主 要 是 由 Blake Stone 操 刀 Tony 为 辅 稍 后 当 JBuilder 逐 渐 成 为 Java 开 发 工 具 的 重 要 角 色 之 后, 便 由 Tony 主 导 在 市 场 产 品 定 位 和 竞 争 策 略 方 面 运 筹 帷 幄 Blake 在 研 发 JBuilder 2.0 时, 便 设 定 了 下 面 的 目 标, 准 备 重 新 奠 定 Open JBuilder 的 竞 争 实 力 呈 现 精 确 的 设 计 时 期 可 视 化 效 果 这 方 面 胜 出 Visual Café 许 多, 也 是 JBuilder 准 备 强 攻 Visual Café 弱 点 的 策 略 充 分 利 用 Java 平 台 的 特 性 以 Java 来 思 考 开 发 工 具 的 开 发 这 一 点 非 常 重 要, 也 是 日 后 JBuilder 胜 出 其 他 Java 开 发 工 具 的 重 要 因 素 开 始 为 Java 设 计 组 件 架 构 当 时 这 项 研 发 计 划 命 名 为 Baja, 由 Carl Quinn 负 责 Baja 也 是 日 后 JavaBean 的 前 身 打 算 以 纯 Java 撰 写 JBuilder 并 且 为 移 植 到 其 他 平 台 做 准 备 在 JDK 1.1 推 出 了 JNI(Java Native Interface) 之 后,JBuilder 开 发 小 组 的 工 作 就 更 为 顺 利 了, 因 为 他 们 可 以 通 过 JNI 呼 叫 使 用 Delphi 2 撰 写 的 程 序 代 码, 呼 叫 Borland 自 行 开 发 的 原 生 Virtual Machine, 以 快 速 地 编 译 Java 程 序 此 外 由 于 JBuilder 2.0 尚 无 法 成 为 完 全 的 Java 开 发 工 具, 因 此 Blake 在 Delphi 方 面 也 进 行 了 更 好 的 最 佳 化 调 整, 以 加 速 JBuilder 激 活 和 执 行 的 速 度 当 然 在 JBuilder 的 窗 体 设 计 家 方 面,Blake 更 是 决 定 投 入 大 量 的 资 源, 以 求 解 决 Render 和 JDK 臭 虫 的 问 题 由 于 Blake 的 决 定,Borland 发 现 并 且 要 求 SUN 解 决 了 当 时 JDK 和 AWT/SWING 初 期 的 许 多 臭 虫 其 中 有 一 些 是 SUN 来 不 及 或 是 不 愿 意 立 刻 修 改 的, 为 了 不 延 误 JBuilder 的 开 发,Borland 直 接 予 以 解 决 再 提 交 给 SUN 作 为 参 考 当 时 Blake 为 了 让 JBuilder 中 Delphi 和 Java 的 程 序 代 码 有 更 好 的 整 合 和 表 现, 甚 至 研 发 了 许 多 低 阶 的 技 术 来 暂 时 强 化 JBuilder 2.0 的 执 行 效 果, 并 加 强 Java 和 Object Pascal 语 言 之 间 互 动 和 交 换 数 据 的 机 制 嗯, 看 来 Blake 在 数 年 前 便 想 到 并 且 解 决 了 许 多 现 今.NET 的 技 术 问 题 呢 Blake Stone 成 功 地 带 领 JBuilder 开 发 小 组 推 出 了 JBuilder 2.0, 这 只 是 Blake 为 JBuilder 实 施 的 第 一 阶 段 竞 争 步 骤 当 JBuilder 2.0 获 得 了 初 步 的 成 果 之 后,Blake 也 正 式 激 活 了 以 纯 Java 打 造 JBuilder 的 计 划 JBuilder 3.0 是 Blake 瞄 准 的 第 一 个 版 本 在 JBuilder 2.0 之 后 的 JBuilder 研 发 工 作 中,Blake 已 经 拥 有 愈 来 愈 多 的 资 源, 整 个 JBuilder 开 发 小 组 的 规 模 也 开 始 和 Borland 的 RAD 部 门 不 相 上 下 了 1999 年 8 月, 在 Blake Stone 和 JBuilder 团 队 全 力 催 生 之 下, 几 乎 是 完 全 由 Java 开 发 的 JBuilder 3.0 也 在 距 离 JBuilder 2.0 推 出 一 年 之 后 正 式 推 出 了 如 果 说 JBuilder 2.0 是 为 了 让 JBuilder 赶 上 其 他 Java 开 发 工 具 的 版 本, 那 么 JBuilder 3.0 的 定 位 无 疑 就 是 在 Borland 推 出 纯
76 Java 的 JBuilder 之 前 从 落 后 于 竞 争 对 手 到 超 越 竞 争 对 手 的 一 个 产 品 虽 然 Borland 进 入 Java 开 发 工 具 市 场 非 常 晚, 但 是 在 经 过 了 3 个 版 本 的 努 力 之 后, 终 于 在 JBuilder 3 毕 其 功 于 一 役, 进 入 了 Java 开 发 工 具 的 领 先 群 此 时 当 初 第 1 名 的 Java 开 发 工 具 Visual Café 正 每 况 愈 下, 逐 渐 接 近 被 JBuilder 超 越 的 命 运 了 还 记 得 在 1999 年 的 BorCon 中, 我 曾 经 和 Blake Stone 有 过 短 暂 的 交 谈, 明 白 了 为 什 么 许 多 人 都 说 Blake Stone 是 一 位 天 才 型 的 软 件 人 物 当 时 我 去 听 其 中 一 场 讨 论 ( 如 何 调 整 InterBase 执 行 效 率 的 Seminar), 没 有 想 到 坐 下 来 之 后 才 发 现 Blake Stone 就 坐 在 旁 边 之 后, 我 一 直 在 暗 中 观 察 他 只 见 他 在 Seminar 开 始 之 后 就 拿 出 了 Notebook 专 心 写 程 序 我 当 时 便 想,Blake 参 加 这 个 Seminar 大 概 只 是 消 磨 时 间, 主 要 是 写 写 JBuilder 的 程 序, 并 不 是 真 的 想 听 这 个 Seminar 的 内 容 选 择 InterBase 这 个 Seminar 纯 粹 是 因 为 人 比 较 少, 不 会 受 到 太 多 的 打 扰 吧 知 道 了 Blake 的 举 动 之 后, 我 也 一 直 想 移 动 身 体 朝 向 Blake, 希 望 看 看 天 才 写 的 程 序 代 码 是 什 么 样 子? 但 是 出 乎 我 意 料 之 外 的 是, 当 Seminar 结 束 之 后, 主 讲 人 开 始 接 受 询 问 问 题,Blake 却 不 断 地 举 手 发 问 这 令 我 大 吃 一 惊, 因 为 整 场 专 心 写 程 序 的 Blake 看 起 来 能 够 一 心 多 用, 不 但 脑 袋 可 以 想 东 西, 手 指 可 以 打 键 盘, 心 思 还 能 够 倾 听 Seminar 的 内 容, 真 令 我 佩 服 Seminar 结 束 之 后, 我 和 Blake 交 谈 了 数 句 寒 暄 的 话, 恭 喜 他 在 JBuilder 方 面 的 成 就 Blake 转 身 离 开 时, 从 身 后 看 简 直 就 像 一 位 小 姐 因 为 Blake 身 材 纤 细, 又 留 了 一 头 长 发, 不 知 情 的 人 从 身 后 看 一 定 会 认 为 这 是 一 位 美 丽 的 小 姐 呢 当 JBuilder 3 在 市 场 上 接 受 开 发 者 的 考 验 时, 虽 然 JBuilder 的 市 场 占 有 率 排 名 还 不 是 第 一, 但 是 已 经 和 主 要 竞 争 对 手 非 常 接 近 从 成 长 分 析 中 也 可 以 看 到,JBuilder 是 以 快 速 的 速 度 成 长, 而 Visual Café 却 不 断 地 呈 现 下 滑 趋 势 至 于 VisualAge For Java, 也 几 乎 停 滞 不 前 JBuilder 对 于 所 有 Java 开 发 工 具 竞 争 对 手 的 威 胁 与 日 俱 增,Symantec 和 IBM 再 也 不 敢 轻 视 JBuilder 的 实 力 事 实 上 此 时 JBuilder 的 王 者 之 姿 也 隐 然 若 现 了 不 过 Blake 并 没 有 稍 做 停 顿, 给 其 他 的 Java 竞 争 对 手 以 喘 息 之 机, 而 是 很 快 蓄 积 力 量, 准 备 在 产 品 面 进 行 最 后 的 一 击 2000 年 3 月 14 日, 对 于 JBuilder 来 说 是 最 重 要 的 一 个 里 程 碑, 因 为 这 一 天 是 Borland 正 式 推 出 JBuilder 3.5 的 日 子, 也 是 Borland 的 JBuilder 小 组 在 经 过 了 数 年 的 努 力 之 后 终 于 拥 有 了 一 个 纯 Java 打 造 的 Java 开 发 工 具 的 日 子 JBuilder 3.5 不 单 是 Borland 第 一 个 完 全 使 用 Java 撰 写 的 开 发 工 具, 也 算 是 业 界 中 第 一 个 纯 Java 开 发 工 具 虽 然 数 年 前 的 Java Workshop 也 是 使 用 Java 开 发 的, 但 是 Java Workshop 提 供 的 功 能 远 不 如 JBuilder 3.5, 此 外 JBuilder 3.5 的 复 杂 度 和 难 度 也 比 Java Workshop 高 太 多 了 JBuilder 3.5 推 出 之 后, 立 刻 风 靡 了 Java 开 发 工 具 市 场 大 量 的 Java 开 发 人 员 迫 不 及 待 地 升 级 到 JBuilder 3.5, 因 为 许 多 Java 程 序 员 都 想 使 用 一 个 纯 正 的 Java 开 发 工 具 此 时 JBuilder 在 市 场 上 的 占 有 率 排 名 已 经 达 到 第 一 位, 而 且 正 朝 市 场 占 有 率 50% 的 目 标 迈 进 依 我 的 眼 光 来 看,JBuilder 到 了 3.5 版 之 后, 在 技 术 和 产 品 方 面 的 竞 争 已 经 告 一 段 落 因 为 在 这 个 阶 段,JBuilder 本 质 方 面 的 使 命 已 经 完 成 了 JBuilder 3.5 之 后 的 竞 争 要 点 是 在 市 场 和 产
77 品 策 略 上 如 何 让 JBuilder 超 过 50% 的 占 有 率 是 JBuilder 4 的 任 务 此 时 JBuilder 的 领 导 也 由 技 术 Architect 转 到 产 品 经 理 Tony de la Lama 身 上 也 是 由 于 Tony de la Lama 继 Blake Stone 之 后 表 现 得 相 当 出 色, 很 快 Tony de la Lama 就 升 为 Borland Java 事 业 部 门 的 Director, 继 Blake Stone 之 后 再 为 JBuilder 开 辟 一 个 光 荣 的 战 场 JBuilder 从 混 合 代 码 的 1.0 演 变 到 3.5 的 纯 Java 开 发 工 具, 每 一 个 版 本 核 心 都 有 精 进 最 后 我 列 出 JBuilder 的 演 进 史, 让 读 者 也 能 够 了 解 JBuilder 的 变 化 Delphi 程 序 代 码 Java 程 序 代 码 JBuilder JBuilder JBuilder JBuilder JBuilder 3.5 推 出 之 后,Java 开 发 工 具 不 可 避 免 地 开 始 进 入 了 第 3 个 大 混 战 时 期 Blake Stone 的 荣 耀 1999 年 7 月,Borland 首 次 在 公 司 内 部 设 立 首 席 科 学 家 的 荣 誉 职 位, 该 职 位 颁 给 Borland 最 优 秀 和 重 要 的 软 件 人 员 除 了 " 首 席 科 学 家 " 光 荣 称 号 外, 当 然 也 有 丰 厚 的 物 质 奖 赏 Blake Stone 当 时 就 和 Chuck Jazdzewski 以 及 Andreas Vogel 同 时 获 得 了 Borland" 首 席 科 学 家 " 大 奖 Blake 对 于 JBuilder 的 贡 献 也 算 是 实 至 名 归 在 进 入 Borland 短 短 的 数 年 时 间 内, 就 以 最 年 轻 的 软 件 人 员 身 份 获 得 此 项 大 奖, 这 也 证 明 了 他 惊 人 的 实 力 虽 然 Blake 不 像 Anders 那 么 锋 芒 毕 露, 也 不 像 Danny 一 样 著 作 丰 富, 但 他 本 身 在 软 件 上 的 修 行 已 属 顶 尖 下 面 列 出 他 荣 耀 的 历 史 : Borland 最 年 轻 的 首 席 科 学 家 成 功 带 领 JBuilder 成 为 世 界 第 一 的 Java 开 发 工 具 成 功 克 服 Linux 上 当 初 没 有 标 准 JDK, 让 JBuilder 能 够 在 Linux 上 执 行 世 界 Java 专 业 论 坛 的 主 讲 人 主 导 Borland Java 开 发 工 具 和 技 术 的 关 键 人 物 现 在 Blake 愈 来 愈 受 到 Borland 的 重 视 除 了 原 本 的 JBuilder 产 品 之 外, 后 来 Borland 并 购 OptimizeIt 进 一 步 强 化 JBuilder 整 体 竞 争 力 也 是 Blake 的 主 张 Blake 已 经 慢 慢 从 JBuilder 产 品 线 转 而 成 为 负 责 Borland 大 部 分 Java 技 术 的 关 键 人 物 日 前 Borland 又 宣 布 Blake 也 将 负 责 公 司 内 新 的 生 命 周 期 管 理 软 件 的 研 发 看 来 Borland 下 一 代 Java 产 品 也 将 由 Blake 贡 献 心 力 继 续 加 油 吧,Blake! 第 3 阶 段 -- 大 混 战 " 人 人 有 希 望, 个 个 没 把 握 " 应 该 是 对 这 个 Java 竞 争 时 期 最 好 的 叙 述 了 在 JBuilder 逐 渐
78 成 为 Java 开 发 工 具 的 领 导 者 同 时 传 统 霸 主 Visual Café 也 逐 渐 没 落 之 时, 对 于 每 一 个 Java 开 发 工 具 厂 商 而 言, 这 似 乎 都 是 最 后 一 搏 的 机 会 了 时 间 已 经 进 入 了 公 元 2000 年 虽 然 Java 开 发 工 具 的 市 场 独 立 于 其 他 语 言 的 工 具 市 场, 而 且 这 个 市 场 的 规 模 也 在 不 断 地 成 长, 但 明 显 没 有 像 当 初 Gartner Group 等 机 构 预 测 的 那 样 有 足 够 大 的 规 模 更 麻 烦 的 是 Java 开 发 工 具 的 价 格 显 然 在 许 多 免 费 工 具 的 竞 争 力 之 下, 这 些 厂 商 的 获 利 也 不 如 预 期 但 是 在 每 一 家 Java 开 发 工 具 厂 商 都 已 经 投 入 大 量 的 资 源 情 况 之 下, 除 了 市 场 第 1 2 名 以 外, 其 他 的 开 发 工 具 厂 商 都 势 必 无 法 拥 有 足 够 的 获 利 除 非 Java 开 发 工 具 厂 商 有 其 他 的 利 益 或 是 因 素 而 能 够 忍 受 不 佳 的 获 利 甚 至 赔 钱, 否 则 迟 早 许 多 厂 商 都 必 须 退 出 这 个 市 场 或 许 所 有 进 入 这 个 市 场 的 厂 商 都 没 有 料 到,Java 开 发 工 具 会 有 如 此 激 烈 的 竞 争 当 初 这 些 厂 商 都 认 为 Java 是 一 个 极 具 潜 力 而 且 没 有 "Microsoft" 竞 争 的 市 场, 因 此 一 定 比 较 好 生 存 但 却 没 有 想 到 因 为 没 有 "Microsoft", 反 而 所 有 其 他 厂 商 几 乎 都 进 入 了 这 个 市 场, 甚 至 一 些 名 不 经 传 的 小 公 司 都 以 为 可 以 分 一 杯 羹 想 在 这 个 市 场 成 名 立 万 就 必 须 经 过 激 烈 的 割 喉 竞 争 同 样 在 2000 年 11 月,Borland 向 所 有 Java 开 发 工 具 竞 争 对 手 挥 出 了 致 胜 的 一 击, 那 就 是 JBuilder 4 的 推 出 JBuilder 4 对 于 Borland 来 说 是 一 个 重 要 的 Java 里 程 碑, 是 Borland 在 JBuilder 3.5 之 后 乘 胜 追 击 之 作 在 JBuilder 3.5 以 纯 Java 开 发 工 具 的 号 召 获 得 了 Java 程 序 员 的 青 睐 之 后,Borland 毫 不 放 松 到 手 的 胜 利, 立 刻 以 JBuilder 4 一 举 冲 破 了 Java 开 发 工 具 50% 的 市 场 占 有 率, 正 式 成 为 Java 开 发 工 具 的 王 者 JBuilder 4 不 但 在 销 售 上 大 获 全 胜, 也 让 Borland 在 经 过 数 年 努 力 之 后 终 于 在 Java 开 发 工 具 重 享 当 初 C/C++ 王 者 的 荣 耀 此 外 JBuilder 4 产 品 本 身 也 得 到 了 专 业 Java 媒 体 和 杂 志 的 高 度 评 价, 一 致 认 为 Borland 的 JBuilder 是 最 好 的 Java 开 发 工 具 Borland 可 以 说 是 里 外 兼 得 在 Borland 以 JBuilder 4 横 扫 千 军 之 际, 唯 一 还 能 够 与 之 抗 衡 的 就 只 有 IBM 的 VisualAge For Java 了 而 昔 日 的 Java 开 发 工 具 霸 主 Visual Café 已 经 沦 落 到 第 3 名 的 地 位, 且 其 市 场 占 有 率 和 影 响 力 还 在 快 速 的 下 降 之 中 Symantec 当 初 辛 辛 苦 苦 花 了 3 年 时 间 打 造 的 Java 王 朝 就 在 二 三 年 之 间 很 快 幻 化 成 泡 沫, 这 也 造 成 了 Symantec 完 全 退 出 开 发 工 具 市 场 全 心 开 发 防 毒 和 企 业 解 决 方 案 应 用 软 件 的 结 局 因 此 在 2000 年 3 月,Symantec 把 Visual Café 卖 给 了 新 成 立 的 WebGain 公 司 Visual Café 从 此 慢 慢 地 从 通 用 Java 开 发 工 具 转 变 为 专 属 的 Java 开 发 工 具, 其 Java 开 发 工 具 市 场 的 地 位 也 变 得 无 足 轻 重 了 另 外 一 个 重 要 的 现 象 是 在 Borland 的 JBuilder 一 轮 猛 攻 并 且 成 为 Java 开 发 工 具 的 领 导 者 之 后,JBuilder 也 慢 慢 地 被 Java 开 发 人 员 视 为 正 统 的 Java 开 发 工 具 因 此 当 时 许 多 在 Windows 平 台 使 用 Java 的 开 发 者 都 逐 渐 转 至 使 用 JBuilder 而 Microsoft 的 VJ++ 由 于 不 支 持 最 新 的 SUN Java 标 准, 又 混 合 使 用 了 许 多 Microsoft 特 定 的 功 能, 最 后 还 和 SUN 发 生 了 法 律 上 的 争 执, 也 逐 渐 被 视 为 非 正 统 的 Java 开 发 工 具, 使 用 者 逐 渐 流 失 因 此 在 2000 年 左 右, 当 所 有 的 Java 开 发 工 具 都 呈 现 成 长 趋 势 的 时 候,Microsoft 的 VJ++ 却 出 现 了 大 幅 的 衰 退, 是 唯 一 呈 现 负 成 长 的 " 类 Java 开 发 工 具 " 此 后 不 久,Microsoft 慢 慢 地 退 出 Java 市 场, 开 始 准 备 另 起 炉 灶, 再 以 2 年 后 的.NET 进 行 反 击
79 JBuilder 4 算 是 Borland 毕 其 功 于 一 役 的 版 本, 因 为 JBuilder 4 不 但 在 产 品 功 能 方 面 大 幅 领 先 于 其 他 的 竞 争 对 手, 在 市 场 占 有 率 方 面 也 终 于 达 到 了 Borland 一 直 想 要 达 到 的 目 标 到 了 这 个 时 期,Blake 主 导 JBuilder 的 工 作 也 算 是 圆 满 达 成 目 标, 在 接 下 来 JBuilder 的 开 发 过 程 中 就 开 始 由 Tony de la Lama 操 盘,Blake 则 转 向 主 导 JBuilder 和 Java 先 进 技 术 的 研 发 工 作, 并 且 稍 后 和 RAD 的 Chuck 一 起, 获 得 了 Borland 首 席 科 学 家 的 荣 耀 第 4 阶 段 -- 谁 跟 的 速 度 最 快 在 Java 开 发 工 具 进 入 大 混 战 阶 段 之 后, 看 起 来 虽 然 热 闹 生 气 蓬 勃, 事 实 上 却 是 惊 险 不 已 各 种 Java 开 发 工 具 多 得 令 人 眼 花 缭 乱, 每 种 Java 工 具 也 都 有 人 使 用 从 要 钱 的 到 不 要 钱 的, 从 完 整 集 成 开 发 环 境 到 只 提 供 最 简 单 的 Java 编 辑 器, 各 种 产 品 都 有 厂 商 提 供, 的 确 是 一 个 百 家 争 鸣 的 时 代 Borland 为 了 在 这 个 阶 段 取 得 领 先 地 位, 以 避 免 被 淘 汰 出 局, 因 此 激 活 了 Borland 前 所 未 有 的 开 发 模 式, 那 就 是 在 JBuilder 的 开 发 团 队 中 同 时 有 二 组 并 行 且 彼 此 竞 争 合 作 的 JBuilder 小 组 当 其 中 一 个 小 组 开 发 目 前 的 JBuilder 版 本 时, 另 外 一 个 小 组 便 开 始 着 手 研 究 和 开 发 下 一 个 版 本 的 JBuilder 开 发 目 前 版 本 JBuilder 的 小 组 完 成 之 后, 便 接 着 再 使 用 另 外 一 个 小 组 已 经 开 发 出 的 成 果 持 续 开 发 下 下 版 本 的 JBuilder 这 种 作 战 方 式 从 JBuilder 3.5 之 后 便 开 始 显 现 成 果 JBuilder 不 但 及 时 地 紧 紧 跟 随 着 每 一 个 JDK 的 版 本, 成 为 市 场 上 最 符 合 JDK 要 求 的 Java 开 发 工 具, 也 渐 渐 形 成 每 半 年 推 出 一 个 新 版 本 的 速 度, 让 JBuilder 远 远 超 越 竞 争 对 手, 成 为 唯 一 的 领 先 者 JBuilder 成 功 的 竞 争 策 略, 让 JBuilder 的 最 大 竞 争 对 手 IBM 的 Visual Age For Java 和 WebGain 愈 显 吃 力, 更 不 用 说 其 他 的 Java 小 厂 商 了 在 这 个 阶 段 Java 开 发 工 具 开 始 了 残 酷 的 最 后 生 存 战 Java 开 发 工 具 市 场 注 定 将 像 当 初 PC 平 台 上 的 C/C++ 开 发 工 具 市 场 一 样, 只 有 少 数 的 厂 商 才 能 存 活 下 来 事 实 也 证 明 从 2000 年 之 后 不 断 有 Java 厂 商 被 迫 退 出 市 场, 甚 至 是 面 临 关 闭 的 命 运 造 成 这 种 现 象 以 及 Borland 能 够 脱 颖 而 出 是 因 为 下 面 的 原 因 : Java 开 发 工 具 市 场 虽 然 有 成 长, 但 相 对 于 其 他 种 类 的 软 件 来 说, 毕 竟 是 比 较 小 的 市 场, 因 此 开 发 工 具 厂 商 必 须 达 到 经 济 规 模 才 能 够 获 利, 才 能 生 存 下 去 Java 开 发 工 具 的 市 场 并 没 有 像 Gartner Group 在 公 元 2000 年 预 测 的 那 样 会 有 巨 大 的 成 长 事 实 上 当 时 就 是 因 为 许 多 研 究 机 构 看 好 Java 市 场 的 成 长 潜 力, 因 此 才 吸 引 许 多 软 件 厂 商 不 断 地 进 入 但 是 过 多 的 软 件 厂 商 和 不 够 大 的 市 场 注 定 会 淘 汰 许 多 的 竞 争 者 Borland 在 残 酷 的 开 发 工 具 竞 争 市 场 生 存 了 将 近 10 几 年 之 久, 因 此 当 然 知 道 竞 争 的 激 烈, 也 深 黯 竞 争 之 道 最 重 要 的 一 点, 是 Java 开 发 工 具 市 场 对 于 Borland 来 说 是 生 存 之 战 在 Borland 的 RAD 开 发 工 具 到 达 了 饱 和 之 后,Borland 必 须 靠 新 开 辟 的 Java 开 发 工 具 市 场 才 能 继 续 茁 壮 发 展 在 经 历 这 一 波 的 残 酷 淘 汰 赛 后, 每 家 厂 商 的 心 态 昭 然 若 揭 对 于 一 些 小 厂 商 而 言, 无 声 无 息 的 消 失 是 很 自 然 的 事 情, 即 使 是 大 厂 商 也 不 见 得 好 到 那 里 例 如 IBM 在 Visual Age For Java 经 营 了 4 个 版 本 之 后, 又 采 用 了 像 当 初 对 待 Visual Age For C/C++ 一 样 的 手 法 我 早 在
80 数 年 前 便 已 经 预 言 IBM 终 会 放 弃 VisualAge For Java, 如 今 果 然 被 我 言 中 我 之 所 以 能 预 知 结 果, 并 不 是 能 够 洞 察 先 机, 而 是 从 IBM 处 理 PC 软 件 的 一 贯 模 式 推 知 的 PC 的 软 件 经 营 金 额 对 于 IBM 来 说 是 九 牛 一 毛, 根 本 无 足 轻 重, 只 是 IBM 竞 争 的 手 段 之 一, 特 别 是 在 经 营 结 果 不 甚 理 想 之 后 自 然 是 第 一 个 开 刀 的 对 象 不 过 最 惨 的 应 该 是 WebGain 了, 曾 几 何 时 是 市 场 第 一 的 Visual Café 也 将 面 临 再 次 被 卖 掉 的 命 运 这 个 比 快 的 淘 汰 赛 中,JBuilder 和 它 的 孪 生 兄 弟 Oracle 的 Jdeveloper 一 起 遥 遥 领 先, 而 IBM 则 已 经 准 备 放 弃 Visual Age For Java, 而 和 BEA WebLogic 搭 配 的 WebGain 也 逐 渐 长 路 将 尽 了 第 5 阶 段 -- 谁 能 走 的 最 久 当 Borland 以 JBuilder 4 横 扫 千 军 之 后, 剩 下 的 主 要 竞 争 对 手 就 只 剩 下 IBM 的 VisualAge For Java 了 不 过 VisualAge For Java 和 一 般 的 Java 开 发 工 具 定 位 不 太 一 样, 而 且 大 多 数 的 VisualAge For Java 使 用 者 都 是 IBM 的 客 户 此 外 VisualAge For Java 最 强 的 功 能 是 在 团 队 开 发 方 面, 而 JBuilder 在 这 方 面 一 直 不 算 是 做 得 很 好 为 了 和 VisualAge For Java 进 行 最 后 的 决 战,JBuilder 小 组 决 定 在 JBuilder 中 大 幅 强 化 团 队 开 发 方 面 的 功 能, 期 望 击 溃 VisualAge For Java 最 后 的 防 线 2001 年 6 月,Borland 推 出 了 JBuilder 5, 除 了 增 加 JBuilder 对 于 愈 来 愈 风 行 的 各 种 EJB 应 用 程 序 服 务 器 的 支 持 之 外, 还 加 入 了 可 视 化 EJB 设 计 家 以 及 支 持 CVS Rational ClearCase 和 Visual SourceSafe 等 团 队 开 发 和 原 始 码 管 理 的 功 能, 开 始 投 注 更 多 的 资 源 在 VisualAge For Java 强 项 的 功 能 上 JBuilder 5 推 出 之 后, 果 然 改 变 了 许 多 Java 专 业 媒 体 和 杂 志 对 于 JBuilder 在 团 队 和 大 型 企 业 开 发 能 力 的 评 价 此 外 由 于 JBuilder 是 所 有 Java 开 发 工 具 中 支 持 EJB 应 用 程 序 服 务 器 最 齐 全 和 最 好 的 工 具, 因 此 从 JBuilder 5 开 始, 一 些 应 用 程 序 服 务 器 厂 商 便 逐 渐 地 建 议 客 户 搭 配 JBuilder 来 开 发 Web 和 EJB 应 用 系 统 这 个 现 象 也 开 始 微 妙 地 影 响 了 JBuilder 的 定 位 并 且 开 始 产 生 许 多 奇 妙 的 效 果 首 先, 为 了 在 市 场 上 取 得 最 大 的 占 有 率,Borland 一 直 坚 持 JBuilder 必 须 支 持 所 有 市 场 上 重 要 的 EJB 应 用 程 序 服 务 器, 特 别 是 对 于 市 场 的 领 导 EJB 应 用 程 序 服 务 器, 例 如 BEA 的 WebLogic 和 IBM 的 WebSphere, 应 该 有 最 好 的 支 持, 以 吸 引 这 些 EJB 应 用 程 序 服 务 器 的 使 用 者 来 使 用 JBuilder 但 是 由 于 Borland 自 己 也 有 EJB 应 用 程 序 服 务 器, 而 Borland 的 EJB 应 用 程 序 服 务 器 部 门 希 望 JBuilder 能 够 先 支 持 Borland 自 己 的 EJB 应 用 程 序 服 务 器, 再 考 虑 其 他 的 EJB 应 用 程 序 服 务 器 因 此 当 时 Borland 的 JBuilder 小 组 和 Borland Enterprise Server 小 组 之 间 有 了 一 些 小 争 吵 不 过 由 于 JBuilder 是 属 于 Borland Java RAD 部 门 的 产 品, 因 此 JBuilder 小 组 仍 然 决 定 成 为 市 场 上 支 持 WebLogic 和 WebSphere 最 好 的 Java 开 发 工 具 只 是 JBuilder 小 组 也 把 Borland Enterprise Server 当 成 是 一 线 应 用 程 序 服 务 器, 决 定 给 予 的 支 持 就 像 给 予 WebLogic 和 WebSphere 的 支 持 一 样 第 二 个 现 象 是 一 些 EJB 应 用 程 序 服 务 器 开 始 和 JBuilder Bundle( 捆 绑 ) 在 一 起 销 售, 或 是 建 议 客 户 使 用 JBuilder 因 为 在 Java 开 发 工 具 重 新 洗 牌 之 后,JBuilder 已 经 是 市 场 的 领 导 者, 其 他 的 应 用 程 序 服 务 器 厂 商 在 可 选 择 的 Java 开 发 工 具 愈 来 愈 少 或 是 原 开 发 工 具 厂 商 退 出
81 Java 市 场 之 后, 也 不 敢 违 抗 市 场 的 主 导 力 量, 当 然 纷 纷 搭 乘 JBuilder 的 便 车 了 在 JBuilder 5 成 功 的 在 团 队 开 发 方 面 给 予 了 VisualAge For Java 极 大 的 压 力 后,Borland 于 同 年 的 11 月 再 次 进 逼, 发 表 了 JBuilder 6, 成 为 压 垮 VisualAge For Java 的 最 后 一 根 稻 草 JBuilder 6 不 但 继 续 强 化 团 队 开 发 能 力, 而 且 已 经 成 为 支 持 EJB 的 最 好 工 具 另 外 JBuilder 6 又 开 始 整 合 UML 和 Extreme Programming 方 面 的 功 能, 比 起 VisualAge For Java 已 经 先 进 了 许 多 而 VisualAge For Java 在 开 发 脚 步 迟 缓 的 情 形 下, 早 已 跟 不 上 JBuilder 的 健 步 如 飞 更 麻 烦 的 是 从 JBuilder 5 之 后,JBuilder 成 功 地 打 入 了 企 业 市 场, 侵 蚀 了 原 本 IBM 的 客 户 并 且 动 摇 了 Visual Age For Java 最 后 的 大 本 营 VisualAge For Java 在 功 能 和 市 场 方 面 节 节 败 退, 已 经 到 了 穷 途 末 路 的 地 步 了 2001 年 12 月 左 右,IBM 终 于 宣 布 把 Visual Age For Java 开 放 给 Eclipse 计 划, 正 式 结 束 了 VisualAge For Java 五 年 来 在 Java 开 发 工 具 市 场 的 竞 争 IBM 在 久 战 不 下,VisualAge For Java 又 无 法 替 IBM 带 来 充 分 的 利 润 之 后, 正 好 借 Open Source 的 名 义 把 VisualAge For Java 拱 手 奉 送 还 可 以 利 用 VisualAge For Java 最 后 的 价 值 为 IBM 打 打 广 告 做 做 形 象 不 过 回 头 看 看 IBM 在 开 发 工 具 市 场 的 记 录, 却 是 惨 不 忍 睹, 对 于 客 户 而 言 也 没 有 什 么 保 障 当 JBuilder 6 成 功 地 摧 毁 了 VisualAge For Java 的 防 线 之 后, 连 带 在 市 场 上 排 名 第 三 的 Visual Café 也 无 法 再 支 撑 下 去, 因 为 Visual Café 的 拥 有 公 司 WebGain 在 失 去 了 BEA 的 支 持 之 后, 已 经 没 有 能 力 再 在 Java 开 发 工 具 市 场 竞 争 下 去 了 第 6 阶 段 -- 胜 利 者 的 出 线 2002 年 Borland 仍 然 以 半 年 一 个 版 本 的 速 度 又 如 期 推 出 了 JBuilder 7 Borland 这 种 推 出 新 产 品 的 速 度 简 直 令 人 无 法 置 信 JBuilder 的 竞 争 对 手 们 也 早 己 一 个 一 个 的 累 倒 在 地 上, 纷 纷 出 局 了 JBuilder 很 明 显 的 已 经 成 为 了 最 后 的 胜 利 者 同 年 6 月,WebGain 在 找 不 到 后 继 的 资 金 和 投 资 者 之 后, 决 定 把 Visual Café 卖 掉 并 且 结 束 WebGain 的 运 营 不 久 之 后 TogetherSoft 以 相 当 便 宜 的 价 格 购 买 了 Visual Café, 准 备 正 式 进 军 Java 开 发 工 具 市 场 而 TogetherSoft 加 入 Java 开 发 工 具 战 火 也 代 表 着 新 一 波 Java 开 发 工 具 的 竞 争, 这 在 稍 后 会 继 续 说 明 Borland 的 JBuilder 在 第 7 版 虽 然 成 为 了 王 者, 但 是 这 并 不 代 表 已 经 打 遍 天 下 无 敌 手 因 为 在 Visual Café 被 Case 和 UML 模 型 工 具 开 发 厂 商 购 买 之 后, 新 一 波 的 Java 开 发 工 具 之 争 已 经 隐 约 成 形 了 此 外 当 初 由 Delbert Yocam License( 授 权 ) 给 Oracle 的 JDeveloper 也 表 现 得 愈 来 愈 好, 开 始 给 JBuilder 造 成 不 小 的 威 胁 第 7 阶 段 --Java 开 发 工 具 和 Case Tool 结 合 的 趋 势 Java 已 经 明 显 的 成 为 大 型 企 业 开 发 应 用 系 统 的 首 选, 许 多 名 列 Fortune 1000 中 的 大 企 业 也 都 开 始 采 用 Java 的 应 用 方 案 在 Java 成 功 地 穿 透 了 企 业 市 场 之 后, 随 着 Java 开 发 工 具 的
82 流 行,Java 使 用 者 也 开 始 要 求 开 发 工 具 必 须 结 合 OOA/OOD 的 功 能, 让 Java 使 用 者 能 够 以 面 向 对 象 的 方 式 开 发 大 型 的 系 统 于 是 从 JBuilder 6 开 始,Borland 便 在 JBuilder 中 逐 渐 加 入 OO 和 UML 的 功 能, 准 备 在 JBuilder 已 经 于 Java 开 发 工 具 金 字 塔 中 / 底 层 成 功 的 攻 城 掠 地 之 后, 再 把 JBuilder 推 向 金 字 塔 顶 端 不 过 JBuilder 的 举 动 自 然 也 引 起 了 另 外 一 群 软 件 厂 商 的 紧 张, 进 而 隐 隐 地 激 活 了 另 一 波 的 竞 争, 这 些 软 件 厂 商 就 是 开 发 Case 以 及 UML 工 具 的 软 件 公 司 话 说 从 2000 年 许 多 软 件 公 司 经 历 了 高 成 长 之 后, 从 2001 年 起, 这 些 公 司 为 了 继 续 维 护 成 长 以 期 获 利, 必 须 在 既 有 的 产 品 之 外 想 办 法 再 扩 充 产 品 线 JBuilder 就 是 一 个 很 好 的 例 子 JBuilder 只 有 不 断 地 扩 展 它 的 功 能 面 以 及 使 用 者 群, 才 能 够 持 续 地 在 Java 开 发 工 具 市 场 成 长 对 于 像 提 供 面 向 对 象 和 UML 工 具 的 厂 商 来 说 ( 例 如 Rational 和 TogetherSoft), 当 金 字 塔 顶 端 的 使 用 者 在 大 部 分 已 经 购 买 了 这 类 工 具 之 后, 如 何 再 让 其 他 的 使 用 者 也 购 买 这 些 工 具 便 成 为 这 类 厂 商 首 要 的 问 题 就 像 在 大 部 分 的 多 金 客 户 和 老 板 们 已 经 成 为 Benz 的 客 户 之 后, 如 何 让 更 多 的 人 愿 意 购 买 Benz 汽 车, 便 是 Benz 需 要 想 办 法 的 一 样 Benz 的 策 略 是 推 出 C-Class 级 的 汽 车, 以 年 轻 新 颖 化 的 设 计 为 号 召, 企 图 打 入 年 轻 的 使 用 者 群, 因 为 以 前 这 一 族 群 的 使 用 者 是 Benz 无 法 打 入 的 Rational 和 TogetherSoft 为 了 扩 展 原 有 的 面 向 对 象 和 UML 相 关 的 产 品 线, 开 始 想 要 跨 入 开 发 工 具 的 市 场 由 于 在 所 有 的 开 发 者 群 组 中,Java 开 发 者 是 最 接 受 面 向 对 象 和 UML 技 术 的 群 组, 因 此 Rational 和 TogetherSoft 自 然 以 Java 开 发 工 具 作 为 优 先 的 市 场 Rational 采 用 的 策 略 是 自 行 开 发 " 类 开 发 工 具 ", 那 就 是 Rational XDE 虽 然 Rational 很 小 心 地 处 理 开 发 工 具 市 场, 但 是 仍 然 遭 遇 了 开 发 工 具 厂 商 的 抵 抗 例 如 Microsoft 原 本 在 开 发 工 具 中 内 附 Rational 的 简 易 UML 工 具, 但 是 在 Microsoft 逐 渐 为 Visio 加 入 更 好 的 UML 支 持 之 后, 就 放 弃 了 采 用 Rational 的 产 品 当 然 对 于 Borland 来 说,Rational 进 入 开 发 工 具 市 场 也 有 着 非 常 微 妙 的 影 响, 因 为 Borland 和 Rational 也 有 合 作 的 关 系 现 在 Rational 为 了 新 增 产 品 线 而 进 入 开 发 工 具 市 场, 令 Borland 和 Rational 同 时 处 于 既 合 作 又 竞 争 的 地 位 对 于 TogetherSoft 而 言, 是 否 进 入 开 发 工 具 市 场 更 是 难 以 决 定 的 事 情, 因 为 TogetherSoft 在 UML 工 具 方 面 和 Rational 竞 争 得 非 常 激 烈, 分 居 此 市 场 的 第 1 和 第 2 位, 在 Rational 逐 渐 跨 入 开 发 工 具 而 且 Rational 和 TogetherSoft 的 客 户 也 开 始 对 于 结 合 开 发 工 具 和 UML 工 具 有 了 强 烈 的 需 求 之 后,TogetherSoft 也 必 须 苦 拟 竞 争 对 策, 否 则 TogetherSoft 和 Rational 的 差 距 不 但 会 被 拉 开, 既 有 的 客 户 群 也 会 遭 受 Java 开 发 工 具 的 侵 蚀 特 别 是 在 Borland 于 JBuilder 6 开 始 加 入 低 阶 的 UML 功 能 ( 例 如 Refactoring) 之 后, 很 明 显 JBuilder 在 某 些 场 合 便 已 经 开 始 和 TogetherSoft 的 产 品 竞 争 了 正 由 于 Java 开 发 工 具 的 厂 商 往 上 仰 攻 企 业 用 户 群, 而 Case 和 UML 厂 商 又 想 向 下 开 拓 新 的 潜 在 客 户, 因 此 开 发 工 具 厂 商 和 这 些 上 端 的 Modeling 软 件 厂 商 从 以 往 互 不 相 干 到 合 作 打 天 下, 再 到 目 前 阶 段 的 合 作 竞 争 状 态, 看 来 这 两 类 软 件 厂 商 彼 此 竞 争 开 战 或 是 合 并 的 日 子 已 经 不 远 了 在 2002 年 8 月,TogetherSoft 终 于 从 WebGain 购 买 了 Visual Café, 正 式 准 备 进 军 开 发 工 具 市 场 也 许 TogetherSoft 的 第 一 步 是 整 合 Visual Café 到 TogetherSoft 的 产 品 线 中, 先 提 供 TogetherSoft 客 户 的 需 求 接 下 来 势 必 强 化 Visual Café 的 功 能, 加 入 UML 的 能 力, 让 TogetherSoft 正 式 和 Java 开 发 工 具 竞 争 TogetherSoft 不 但 通 过 Visual Café 快 速 地 进 入 Java
83 开 发 工 具 市 场, 也 让 Visual Café 又 神 奇 的 再 次 延 长 了 生 命 --Visual Café 真 可 谓 是 Java 开 发 工 具 界 的 " 九 命 怪 猫 " 了 在 TogetherSoft 正 式 通 过 Visual Café 进 入 了 Java 开 发 工 具 市 场 之 后,Borland Microsoft Rational 和 TogetherSoft 在 开 发 工 具 市 场 的 竞 争 也 再 次 隐 然 而 动 这 个 熟 悉 的 影 像 就 和 数 年 前 C/C++ 市 场 的 竞 争 一 样, 只 是 换 了 2 个 主 角 而 已, 看 来 虽 然 开 发 工 具 市 场 获 利 并 不 丰 富, 但 却 是 一 个 具 有 制 高 点 作 用 的 重 要 市 场, 因 此 即 使 许 多 厂 商 都 损 兵 折 将, 但 是 仍 然 不 断 的 有 新 厂 商 投 入 前 仆 后 继, 蔚 为 壮 观 不 管 Java 开 发 工 具 未 来 的 竞 争 形 势 如 何, 从 这 些 厂 商 的 动 作 来 看, 整 合 面 向 对 象 和 UML 的 高 阶 功 能 似 乎 是 不 可 避 免 的 趋 势 成 功 的 开 发 工 具 必 须 适 当 地 整 合 Extreme Programming UML 和 传 统 的 RAD 集 成 开 发 环 境, 以 向 使 用 者 提 供 最 大 的 生 产 力 加 入 UML 的 功 能 是 传 统 开 发 工 具 厂 商 要 面 对 的 挑 战, 提 供 RAD 和 Extreme Programming 的 能 力 则 考 验 了 UML 厂 商 是 否 能 够 提 供 具 备 亲 和 力 的 开 发 工 具 Java 开 发 工 具 目 前 的 两 种 开 发 和 竞 争 方 向, 的 确 是 和 数 年 前 C/C++ 开 发 工 具 的 竞 争 有 所 不 同 究 竟 谁 能 胜 出, 终 究 要 通 过 使 用 者 市 场 和 时 间 来 考 验 了 第 8 阶 段 -- 和.NET 的 巅 峰 之 战 从 1995 年 到 2002 年, 应 该 算 是 Java 的 成 长 和 全 盛 期 这 段 时 间 内 许 多 的 Java 厂 商 开 发 工 具 和 应 用 程 序 服 务 器 不 断 的 在 竞 争 和 厮 杀, 如 同 神 鬼 战 士 一 般 进 行 最 后 的 生 存 战 为 什 么? 我 想 这 是 因 为 必 须 剩 下 最 强 的 竞 争 对 手, 才 能 与 2003 年 起 Microsoft.NET 逐 渐 产 生 影 响 力 时.NET 下 的 开 发 工 具 竞 争 吧 虽 然 Bill Gates 日 前 在 媒 体 上 公 开 承 认.NET 的 流 行 速 度 没 有 Microsoft 设 想 的 快, 但 是 从 以 往 Microsoft 的 竞 争 模 式 来 看,Microsoft 一 向 擅 长 后 来 居 上, 不 可 小 看 其 决 心 和 实 力 更 何 况 Java 毕 竟 已 经 开 发 了 将 近 七 八 年, 而.NET 不 过 是 1 年 多 左 右, 后 面 竞 争 的 日 子 仍 然 很 长 在 我 日 常 的 工 作 中, 通 过 接 触 许 多 不 同 型 态 的 客 户, 也 可 以 察 觉 到 传 统 Windows 开 发 工 具 Java 和.NET 势 力 的 消 长 Java 从 2000 年 起 开 始 有 了 明 显 的 成 长, 特 别 是 大 型 客 户 使 用 多 种 不 同 平 台 的 客 户 群 更 是 快 速 地 倾 向 使 用 Java 由 于 这 类 客 户 在 后 端 大 都 是 使 用 Mainframe 或 是 强 力 的 UNIX 机 器, 在 采 用 Java 之 后, 也 自 然 需 要 引 入 Java 的 组 件 架 构 以 及 Web Solution, 故 JSP/Servlet 便 大 行 其 道,EJB 也 开 始 逐 渐 风 行 并 且 快 速 成 长, 而 造 就 了 许 多 EJB 著 名 厂 商 的 壮 大 以 及 另 外 一 个 竞 争 激 烈 的 EJB 市 场 由 于 大 型 企 业 偏 向 Java 的 解 决 方 案, 因 此 造 成 了 许 多 大 型 企 业 卫 星 软 件 公 司 也 选 择 使 用 Java 此 外 Java 也 在 学 校 和 研 究 界 获 得 重 视, 许 多 大 学 和 学 术 机 构 提 供 了 大 量 的 Java 人 才, 逐 渐 地 形 成 了 极 为 强 大 的 Java 凝 聚 使 用 群 这 群 使 用 者 应 该 算 是 Java 最 有 力 的 支 持 了 对 于 中 小 型 信 息 客 户 来 说, 事 情 就 没 有 这 么 顺 利 了 由 于 这 类 客 户 的 资 源 并 不 像 大 型 客 户 那 样 丰 富, 因 此 许 多 中 小 型 客 户 一 开 始 在 Java 风 潮 下 也 都 尝 试 着 使 用 JBuilder 来 开 发, 但 是 Java 的 高 门 槛 立 刻 让 这 些 客 户 退 出 了 Java 的 世 界, 即 使 留 下 来 的 也 仅 限 于 使 用 Java 开 发 Web 方 面 的 应 用 由 于 Java 在 客 户 端 的 图 形 使 用 者 接 口 方 面 失 败 连 连, 从 Applet AWT 到 Swing,Java
84 似 乎 一 直 无 法 为 客 户 端 提 供 堪 用 的 解 决 方 案, 以 致 不 断 败 退, 造 成 了 目 前 在 客 户 端 使 用 Java 应 用 程 序 的 应 用 系 统 仍 然 非 常 稀 少, 客 户 端 仍 然 是 Windows 原 生 开 发 工 具 的 天 下 问 题 是 虽 然 Java 目 前 在 中 间 及 后 端 占 了 极 大 的 优 势, 不 过 应 用 系 统 仍 然 需 要 客 户 使 用 客 户 端 来 呈 现 应 用 系 统 的 数 据 以 及 图 形 使 用 者 接 口, 因 此 Java 如 果 无 法 在 客 户 端 取 得 一 定 的 应 用 地 位, 那 可 能 也 将 逐 渐 失 去 中 间 层 的 优 势 在 Microsoft 的.NET 从 2003 年 开 始 逐 渐 影 响 市 场 之 后, Java 在 客 户 端 以 及 Web 的 应 用 都 将 会 面 对 新 的 挑 战 尤 其 是 当 Microsoft 以.NET 虚 拟 执 行 环 境 提 供 更 具 安 全 和 延 展 性 的 Web 应 用 ( 指 ASP.NET, 新 的 IIS 服 务 器 以 及 ASP.NET 开 始 支 持 Apache Web Server) 之 后, 简 易 好 用 的 ASP.NET 技 术 和 开 发 工 具 将 进 一 步 挑 战 Java 在 Web 方 面 的 应 用 目 前.NET 在 中 间 的 组 件 技 术 方 面 仍 然 落 后 Java 阵 营 一 大 截, 是 Microsoft 需 要 补 强 的 地 方, 否 则.NET 仍 然 不 适 合 做 为 大 型 企 业 解 决 方 案 的 应 用 ( 不 过 Borland 却 可 提 供 非 常 良 好 的 解 决 方 案, 那 就 是 把 CORBA 移 植 到.NET 上, 稍 后 的 章 节 会 说 明 这 些 有 趣 的 开 发 ) 但 如 果 Java 持 续 地 在 客 户 端 Web 应 用 以 及 移 动 消 费 端 节 节 败 退, 那 Java 的 应 用 也 将 局 限 在 中 后 端 的 系 统 应 用, 情 形 就 不 怎 么 乐 观 了 ( 就 像 UNIX 一 样 ) 根 据 许 多 知 名 信 息 机 构 的 调 查, 在 未 来 的 数 年 当 中,Java 和.NET 的 竞 争 将 趋 于 白 热 化, 而 且 最 可 能 出 现 的 是 由 这 两 大 技 术 平 分 天 下 的 状 态 因 此 Java 目 前 的 开 发 以 及 声 势 似 乎 都 遥 遥 领 先, 但 是 对 擅 长 打 持 久 战 和 逆 转 战 的 Microsoft 仍 然 不 可 大 意 更 何 况 Java 并 不 是 完 美 的 金 刚 之 身, 仍 然 有 许 多 不 甚 令 人 满 意 的 地 方, 还 是 需 要 加 把 劲 才 能 够 维 持 好 的 局 面 此 外 应 用 系 统 型 态 的 开 发 趋 势 也 深 深 地 影 响 了 开 发 工 具 的 走 向 开 发 工 具 必 须 满 足 客 户 的 需 要, 当 应 用 系 统 型 态 改 变 时, 开 发 工 具 厂 商 必 须 提 供 适 当 的 解 决 方 案, 让 使 用 者 能 够 开 发 应 用 程 序 根 据 Gartner Group 的 调 查,Java 和.NET 的 应 用 将 开 始 快 速 爬 升, 开 始 侵 蚀 原 本 的 Microsoft DNA 应 用 市 场 以 及 传 统 的 COBOL 4GL 和 专 属 系 统 数 年 前 Java 以 Web 应 用 开 始 风 行, 再 进 而 成 为 企 业 解 决 方 案 现 在.NET 也 遵 循 相 同 的 路 径 进 入 市 场 只 是.NET 除 了 以 Web 进 攻 之 外, 还 搭 配 了 Web Service 和 一 流 的 开 发 工 具 Microsoft 有 样 学 样 的 招 式 不 但 使 用 在 开 发 产 品 方 面, 连 和 SUN 技 术 平 台 的 全 面 对 战 模 式 使 用 的 策 略 也 如 出 一 辙, 只 是 包 装 的 更 好 而 已 技 术 和 开 发 工 具 的 竞 争 最 终 取 决 于 使 用 者 的 需 求 以 及 提 供 的 功 能 服 务 架 构 和 完 成 度 不 过 由 于 现 在 软 件 技 术 的 高 度 竞 争, 因 此 往 往 一 方 有 了 特 定 的 技 术, 另 一 方 很 快 的 也 会 推 出 相 对 的 技 术 来 因 应 这 种 竞 争 类 似 于 Java 开 发 工 具 在 第 3 和 第 4 阶 段 的 竞 争, 只 是 希 望 SUN 能 够 撑 得 久 一 点 我 相 信 一 旦 有 一 方 撑 不 下 去, 一 定 又 会 站 出 来 以 冠 冕 堂 皇 的 词 汇 说 明 他 们 只 是 为 客 户 提 供 最 好 的 解 决 方 案, 而 不 是 为 了 和 另 一 方 竞 争 如 果 读 者 看 到 这 一 天, 那 就 代 表 着 即 将 分 出 胜 负, 出 来 说 明 的 一 方 又 将 使 用 新 的 名 词 和 技 术 寻 找 出 路 无 论 如 何, 从 下 图 Gartner Group 公 布 的 评 估 数 据 来 看, 虽 然.NET 现 在 只 是 第 1 个 版 本, 但 是 在 许 多 方 面 已 经 不 输 给 开 发 了 数 年 之 久 的 Java 看 来 Microsoft 具 备 在 短 短 的 1 2 年 之 内 达 到 Java 开 发 了 数 年 之 久 的 功 能 和 成 就 的 能 力, 这 也 许 就 是 寡 占 市 场 的 好 处 Java 要 和.NET 竞 争,SUN 还 是 需 要 加 快 油 门, 否 则 很 快 就 会 被 Microsoft 追 上, 竞 争 可 是 不 等 人 的 对 于 Java 开 发 工 具 来 说, 似 乎 目 前 加 入 争 战 的 厂 商 还 彼 此 杀 得 不 亦 乐 乎 难 分 难 解 往 好 的 方 面 想, 这 是 为 了 找 出 最 终 的 强 者, 再 与 Microsoft 的.NET 以 及.NET 下 的 开 发 工 具 竞 争 ; 往 不 好 的 方 面 想, 也 代 表 这 些 厂 商 还 没 有 察 觉 到.NET 的 威 胁 不 过 从 我 的 观 察 以 及.NET 推 出 之 后 业 界 的 反 应 来 看,.NET 的 确 已 经 开 始 吸 引 一 些 客 户 从 Java 转 向.NET, 特
85 别 是 中 小 型 客 户 以 及 需 要 使 用 Web 应 用 的 客 户, 当 然 一 些 大 中 型 的 客 户 也 有 开 始 动 摇 的 情 形 了 对 于 Java 开 发 工 具 的 厂 商 来 说, 除 了 要 和 其 他 Java 开 发 工 具 厂 商 竞 争 之 外, 或 许 也 要 开 始 面 对.NET 开 发 工 具 的 挑 战 这 些 厂 商 必 须 加 快 把 Java 开 发 工 具 塑 造 成 更 容 易 使 用 生 产 力 更 高 的 工 具, 否 则 面 对 精 于 打 造 开 发 工 具 的 Microsoft, 小 的 Java 开 发 工 具 厂 商 生 存 的 时 间 就 不 长 了 对 于 Borland 而 言, 这 却 是 一 个 机 会 现 在 JBuilder 已 经 执 业 界 牛 耳,Borland 又 决 定 开 发.NET 下 的 开 发 工 具, 如 此 一 来 Borland 由 于 在 两 方 都 提 供 最 好 的 解 决 方 案, 因 此 有 机 会 进 一 步 扩 大 Borland 的 客 户 群 但 无 论 如 何, 当.NET 到 达 了 一 定 的 规 模 之 后,.NET 开 发 工 具 和 Java 开 发 工 具 的 竞 争 是 不 可 避 免 的 即 使 像 Borland 这 样 同 时 提 供 Java 原 生 Windows 开 发 工 具 和.NET 开 发 工 具 的 软 件 厂 商, 也 或 多 或 少 的 都 面 临 自 己 人 的 竞 争 叶 孤 城 的 " 天 外 飞 仙 " 对 西 门 吹 雪 的 " 一 剑 西 来 ", 你 赌 谁 赢? 嗯, 也 许 对 决 的 结 果 会 创 造 出 新 的 混 合 体 -- 像 周 星 驰 的 " 少 林 足 球 ", 也 不 一 定 啊 嗯, 有 可 能, 有 可 能 Java 需 要 面 对 和 解 决 的 问 题 Java 在 开 发 了 七 八 年 之 后, 也 逐 渐 进 入 成 熟 期 一 旦 产 品 进 入 这 个 时 期, 很 多 的 压 力 就 会 出 现, 再 加 上.NET 逐 渐 产 生 的 影 响 力,Java 开 发 工 具 以 及 Java 的 应 用 程 序 服 务 器 产 品 线 也 开 始 面 临 了 许 多 的 变 化, 这 些 变 化 将 影 响 Java 未 来 的 开 发 以 及 和.NET 对 抗 的 趋 势 依 我 的 观 察, 目 前 许 多 Java 厂 商 都 逐 渐 陷 入 困 境 和 挑 战 之 中 因 为.NET 和 市 场 的 压 力 愈 来 愈 大, 厂 商 高 获 利 的 时 代 结 束, 开 始 进 入 了 " 微 利 " 的 阶 段, 这 会 让 许 多 Java 厂 商 开 始 退 出 Java 市 场 Java 已 经 不 再 像 数 年 前 拥 有 横 扫 市 场 的 绝 对 优 势,Microsoft 的.NET 也 逐 渐 在 原 本 Java 主 导 的 市 场 形 成 气 候 我 认 为 目 前 Java 正 面 对 着 下 面 最 重 要 的 挑 战 和 威 胁 : 开 发 工 具 价 格 往 下 降 的 威 胁 任 何 产 品 都 是 一 样, 当 产 品 开 始 进 入 成 熟 期 之 后, 产 品 价 格 一 定 会 开 始 下 降, 这 是 正 常 的 现 象 不 过 对 于 Java 这 种 高 投 资 的 技 术 和 开 发 工 具 来 说, 产 品 价 格 下 降 代 表 Java 厂 商 会 经 营 得 更 吃 力, 如 果 无 利 可 图, 那 许 多 Java 厂 商 将 会 退 出 这 个 市 场 正 由 于 竞 争 压 力 太 大, 许 多 Java 厂 商 都 希 望 尽 快 达 到 一 定 经 济 规 模, 以 备 Java 开 发 工 具 价 格 快 速 下 降 后 能 够 以 量 大 来 弥 补, 这 也 是 这 一 波 割 喉 竞 争 的 原 因 对 于 Java 开 发 工 具 是 这 样, 对 于 EJB 应 用 程 序 服 务 器 也 是 这 样 Java 开 发 工 具 价 格 持 续 地 探 底 将 会 注 定 只 有 排 名 前 二 或 是 前 三 的 厂 商 才 能 够 继 续 存 活 下 去, 其 他 的 小 厂 商 只 能 以 非 常 便 宜 或 是 免 费 的 角 色 存 在 于 这 个 市 场 但 是 如 果 这 种 现 象 持 续 下 去 的 话, 那 Java 开 发 工 具 的 进 步 幅 度 和 品 质 都 有 可 能 开 始 往 下 滑 EJB 过 度 竞 争 的 压 力 EJB 是 Java 的 组 件 架 构 由 于 会 使 用 EJB 解 决 方 案 的 企 业 都 属 于 中 大 型 公 司, 而 这 些 公 司 通 常 都 属 于 财 力 雄 厚 的 企 业, 因 此 愿 意 并 且 有 能 力 花 大 笔 的 经 费 在 建 制 EJB 应 用 系 统 之 上 这 个 市 场 获 利 丰 厚 而 且 具 有 主 导 应 用 系 统 架 构 的 力 量, 吸 引 了 世 界 一 流 大 厂 和 许 多 著 名 的 厂 商 开 发 和 提 供 EJB 应 用 程 序 服 务 器, 当 然 也 不 乏 许 多 小 厂 商 想 通 过 这 个 新 的 组 件
86 市 场 而 功 成 名 就, 因 此 为 数 众 多 的 软 件 厂 商 便 在 这 个 拥 挤 的 市 场 中 拼 得 你 死 我 活 了 举 凡 IBM SUN HP 等 世 界 级 大 厂 都 加 入 竞 逐 的 行 列, 这 些 厂 商 原 本 就 是 在 UNIX 工 作 站 和 大 型 Mainframe 的 死 敌, 自 然 不 愿 意 让 其 他 的 竞 争 对 手 有 机 会 独 大 于 重 要 的 EJB 市 场 经 过 了 数 年 的 争 斗 之 后,IBM 和 BEA 已 经 很 明 显 地 居 于 领 导 的 地 位,Borland 和 SUN 等 则 处 于 第 二 领 先 群 中 IBM 通 过 庞 大 的 公 司 资 源 以 及 硬 件 的 交 互 支 持 成 为 数 一 数 二 的 EJB 厂 商, BEA 则 是 由 于 最 早 进 入 EJB 市 场 并 且 通 过 高 知 名 度 的 Tuxedo 掩 护 成 功 地 打 入 企 业 市 场 至 于 SUN, 虽 然 是 Java 技 术 的 领 导 厂 商, 但 是 推 出 的 软 件 产 品 一 向 令 人 不 敢 恭 维 继 当 初 的 Java Workshop 失 败 之 后,EJB 应 用 程 序 服 务 器 iplanet 说 实 话 一 点 也 不 好 用, 功 能 和 执 行 效 率 也 比 不 上 竞 争 对 手 要 不 是 靠 SUN 的 金 字 招 牌,iPlanet 绝 对 无 法 在 EJB 应 用 程 序 服 务 器 市 场 占 有 一 席 之 地 不 过 EJB 应 用 程 序 服 务 器 市 场 虽 然 逐 渐 分 出 胜 负, 但 是 在 高 度 竞 争 以 及 许 多 EJB 应 用 程 序 服 务 器 厂 商 以 免 费 作 为 诉 求 的 同 时, 厂 商 不 但 必 须 投 入 极 大 的 资 源 研 发 最 新 最 符 合 JDK 和 EJB 规 范 的 产 品, 还 必 须 浴 血 奋 战 这 从 观 察 EJB 应 用 程 序 服 务 器 的 授 权 价 格 不 断 往 下 降 就 能 看 得 出 来, 由 于 EJB 授 权 价 格 快 速 地 下 滑, 因 此 许 多 EJB 厂 商 面 临 了 困 境 许 多 只 占 有 极 小 市 场 的 厂 商 开 始 无 利 可 图, 进 而 把 价 格 压 得 更 低 甚 至 采 用 免 费 方 式 和 大 厂 竞 争, 这 造 成 了 即 便 是 市 场 领 导 者 也 无 法 避 免 这 个 风 暴 的 局 面 由 于 IBM 主 要 标 是 硬 件 销 售, 再 搭 配 WebSphere, 因 此 对 于 EJB 应 用 程 序 服 务 器 价 格 下 滑 仍 然 不 感 吃 力 但 是 对 于 BEA 和 SUN 来 说, 却 是 压 力 巨 大, 因 为 BEA 的 收 入 几 乎 就 是 靠 EJB 应 用 程 序 服 务 器, 而 SUN 则 在 投 入 了 大 量 的 资 源 研 发 iplanet 之 后, 不 但 在 市 场 占 有 率 上 无 法 做 大, 又 面 临 价 格 快 速 下 滑, 当 然 就 吃 不 消 了 因 此, 在 2002 年 8 月,SUN 的 EJB 部 门 副 总 裁 公 开 宣 示, 各 EJB 应 用 程 序 服 务 器 厂 商 如 果 再 持 续 进 行 不 计 血 本 和 免 费 大 放 送 的 劣 质 竞 争, 那 么 EJB 应 用 程 序 服 务 器 将 提 早 出 现 大 幅 衰 退 的 现 象 当 然 EJB 应 用 程 序 服 务 器 价 格 下 降 是 有 利 于 使 用 者, 但 是 这 也 将 让 所 有 的 EJB 应 用 程 序 服 务 器 进 行 毁 灭 战,EJB 大 厂 必 须 通 过 坑 杀 小 厂 以 取 得 更 多 的 市 场 占 有 率 来 弥 补 最 后 可 能 剩 下 不 多 的 选 择 以 及 品 质 开 始 下 降, 对 于 企 业 级 的 使 用 者, 这 是 福 是 祸 呢? 行 动 和 消 费 端 的 竞 争 SUN 一 直 想 让 Java 主 宰 所 有 的 软 件 市 场, 从 大 型 企 业 的 应 用 系 统 一 直 到 消 费 端 的 行 动 解 决 方 案, 因 此 除 了 在 Java 语 言 以 及 企 业 的 J2EE 架 构 之 外, 也 非 常 积 极 地 力 推 JINI 和 J2ME 等 技 术 如 果 SUN 能 够 让 Java 同 时 在 中 / 后 端 企 业 应 用 系 统 以 及 移 动 设 备 市 场 大 获 全 胜, 那 么 上 下 交 攻,Microsoft 的 领 域 势 必 被 严 重 地 压 缩 不 过 SUN 的 如 意 算 盘 似 乎 是 出 了 状 况, Java OS 和 JINI 一 直 是 雷 声 大 雨 点 小,SUN 数 年 的 心 血 似 乎 也 一 直 无 法 让 这 两 个 技 术 成 气 候 反 观 Microsoft, 虽 然 在 桌 面 型 应 用 领 域 独 占 鳌 头, 但 是 在 消 费 端 的 应 用 一 开 始 是 处 于 劣 势 的 Win CE 开 始 并 不 见 声 势, 又 被 Palm OS 压 着 打 但 不 屈 不 挠 似 乎 是 Microsoft 反 败 为 胜 的 惯 例,Win CE 在 2,3 年 的 努 力 之 后 已 经 到 了 和 Palm OS 平 起 平 坐 的 地 位,Pocket PC 又 逐 渐 受 市 场 欢 迎,Microsoft 也 介 入 传 媒 和 移 动 电 话 的 市 场, 并 且 以 X-BOX 进 入 家 庭 游 戏 市 场, 一 再 显 示 出 Microsoft 在 消 费 端 的 电 子 行 动 设 备 方 面 已 经 悄 悄 地 建 立 起 了 一 片 江 山 在.NET 以 相 同 的 技 术 和 Framework 允 许 开 发 者 同 时 开 发 企 业 以 及 消 费 端 和 行 动 解 决 方 案 之 后,Microsoft 结 合 消 费 端 和 桌 面 型 的 优 势 将 对 SUN 形 成 强 大 的 竞 争 压 力 如 果 Java 无 法 在 消 费 端 和 电 子 行 动 市 场 成 长 得 如 同 其 在 企 业 端 的 绝 对 优 势, 那 Java 在 消 费 端 的 力 量 将 遭 受
87 严 厉 的 挑 战 语 言 的 对 抗 Java 通 过 简 洁 的 语 言 风 格 和 虚 拟 机 器 提 供 的 安 全 执 行 环 境 获 得 了 开 发 者 的 广 大 回 响 之 后, 其 他 语 言 当 然 也 不 会 坐 以 待 毙, 新 的 语 言 势 必 出 现, 以 求 对 抗 Java 当 初 Java 能 够 成 功 地 采 纳 C/C++ 语 言 的 好 处 并 且 开 发 出 新 的 面 向 对 象 语 言, 其 他 的 新 语 言 也 可 以 学 习 Java 成 功 的 地 方, 融 合 更 多 现 代 的 需 求 以 求 超 越 Java C# 就 是 一 个 很 好 的 例 子,C# 在 许 多 方 面 都 学 习 了 Java, 却 又 加 入 了 Object Pascal 的 优 美 特 性, 成 功 地 塑 造 了 新 语 言, 分 散 了 Java 群 组 的 使 用 者 Gartner Group 的 调 查 就 显 示 了 C# 将 同 时 侵 蚀 C/C++ 和 Java 的 使 用 群, 更 不 用 说 许 多 原 有 的 语 言 了 此 外 VB 和 Object Pascal 也 会 或 将 要 推 陈 出 新, 巩 固 原 有 的 使 用 者 群, 并 且 在 新 的.NET 虚 拟 环 境 中 吸 引 从 Java 转 战 而 来 的 使 用 者 很 显 然,Java 现 在 的 处 境 已 经 慢 慢 地 失 去 了 独 尊 的 地 位 当 然,Java 解 决 方 案 尚 有 许 多 其 他 的 挑 战 和 问 题, 但 如 何 面 对 和 解 决 上 面 重 要 的 问 题, 是 所 有 Java 厂 商 以 及 SUN 要 尽 快 解 决 的 虽 然 现 在 没 有 人 知 道 未 来 Java 的 趋 势, 不 过 唯 一 可 以 确 定 的 就 是 Microsoft 正 在 一 步 一 步 地 逼 近 之 中 JBuilder 未 来 的 开 发 JBuilder 从 2.0 开 始 成 功 地 执 行 了 一 个 有 效 的 竞 争 模 式 : 先 从 产 品 功 能 面 竞 争, 稍 后 再 配 合 市 场 策 略 一 举 攻 上 王 座 虽 然 JBuilder 后 半 段 以 每 半 年 一 个 版 本 的 速 度 杀 得 对 手 措 手 不 及, 不 过 快 速 升 级 的 方 式 也 造 成 了 一 些 后 遗 症, 那 就 是 由 于 改 版 速 度 太 快, 造 成 许 多 JBuilder 客 户 以 跳 版 本 的 方 式 来 升 级 例 如 JBuilder 4 的 客 户 更 新 到 JBuilder 6,JBuilder 5 的 客 户 则 升 级 到 JBuilder 7 当 然 JBuilder 快 速 升 级 方 式 和 Java 开 发 工 具 的 竞 争 有 关, 但 是 很 大 一 部 分 原 因 也 是 因 为 Java 的 JDK 经 常 更 新, 迫 使 Java 开 发 工 具 必 须 跟 上 Java JDK 的 脚 步, 否 则 就 有 被 淘 汰 出 局 的 危 险 因 此 为 了 兼 顾 Java 快 速 开 发 和 使 用 者 的 权 益,JBuilder 在 快 速 开 发 之 后 的 下 一 个 阶 段 也 许 应 该 考 虑 推 出 1 年 套 餐 版, 让 使 用 者 在 付 费 之 后 的 1 年 内 都 可 以 免 费 升 级 吧 Borland 的 JBuilder 还 在 快 速 的 开 发 之 中, 精 彩 的 故 事 也 一 定 会 持 续 发 生, 也 许 1 2 年 之 后, 再 让 我 们 回 首, 又 将 看 到 许 多 可 歌 可 泣 的 故 事, 这 就 留 待 日 后 的 书 籍 来 叙 述 吧 当 读 者 看 到 本 书 时,JBuilder 8 可 能 已 经 在 市 面 上 销 售, 而 JBuilder 9 可 能 也 在 开 发 的 阶 段, 这 就 是 Java 充 满 活 力 进 步 快 速 的 特 质 喜 欢 Java 吗? 那 么 就 接 受 这 个 高 度 动 感 的 世 界 吧! 第 六 章 失 去 的 王 冠 --Borland 数 据 库 工 具 的 战 役 在 Borland 的 产 品 线 中, 有 两 个 产 品 是 较 少 受 到 瞩 目 的, 那 就 是 Borland 从 Ashton-Tate 并 购 来 的 dbase 系 列 以 及 昙 花 一 现 的 IntraBuilder 对 于 Borland 来 说,dBase 和 IntraBuilder 是 非 常 可 惜 的 牺 牲 品 dbase 发 展 的 黄 金 时 机 被 Philippe Kahn 白 白 浪 费,IntraBuilder 带 来 的 无 限 潜 力 硬 生 生 地 被 Delbert Yocam 糟 蹋 掉 Borland 最 有 机 会 的 两 个 关 键 时 刻 分 别 被 两 任
88 CEO 蹉 跎, 不 知 到 底 是 时 也? 命 也? 运 也? dbase 和 IntraBuilder 这 两 个 产 品, 到 底 是 如 何 在 Borland 中 发 展 的 呢? 为 什 么 最 后 dbase 和 IntraBuilder 都 会 进 入 死 胡 同? 让 我 们 一 起 来 探 索 其 中 的 秘 密 IntraBuilder 的 诞 生 谁 说 " 洞 悉 先 机 " 一 定 是 好 事? 当 初 哥 白 尼 在 几 个 世 纪 之 前 大 胆 地 提 出 了 天 体 运 行 论, 同 势 力 庞 大 的 基 督 教 对 抗, 因 而 被 基 督 教 视 为 邪 说, 一 直 到 3 个 世 纪 之 后 才 被 罗 马 教 皇 承 认 而 哥 白 尼 的 一 生 都 在 承 受 着 巨 大 的 压 力,Borland 的 IntraBuilder 几 乎 也 面 临 了 同 样 的 命 运 1995 年, 当 浏 览 器 的 应 用 逐 渐 成 为 主 宰 力 量 之 后, 各 种 Web 的 应 用 也 开 始 快 速 地 发 展 起 来 一 开 始 Web 应 用 是 以 面 向 文 件 为 主, 许 多 Web 应 用 都 使 用 纯 文 本 编 辑 器 来 开 发 HTML 网 页 但 是 人 们 很 快 发 现, 这 种 方 式 非 常 不 经 济, 因 为 Web 应 用 虽 然 有 很 大 一 部 分 属 于 美 工 的 需 求, 但 是 当 Web 进 入 人 们 的 生 活 后, 许 多 Web 应 用 便 开 始 需 要 结 合 数 据 处 理 而 转 向 商 业 的 应 用 因 此, 很 快 Web 的 解 决 方 案 便 开 始 从 静 态 网 页 的 应 用 进 入 到 使 用 程 序 来 解 决 的 阶 段 但 是, 当 时 正 值 浏 览 器 大 战 的 阶 段,Netscape 正 和 Microsoft 的 Internet Explorer 拼 斗 得 你 死 我 活, 而 Java 也 开 始 兴 起 此 时 浏 览 器 并 没 有 标 准, 连 带 着 对 HTML JavaScript 的 支 持 也 混 乱 无 比 因 此, 虽 然 许 多 程 序 员 都 感 觉 需 要 一 个 Web 开 发 工 具 帮 助 他 们 开 发 逐 渐 炙 手 可 热 的 Web 应 用 程 序, 信 息 业 界 也 开 始 有 强 烈 的 需 求, 但 是 混 乱 的 Web 标 准 却 让 许 多 程 序 员 不 知 所 措 不 过,Borland 的 Visual dbase 小 组 却 从 中 看 到 了 极 大 的 契 机, 因 为 在 为 Visual dbase 未 来 的 版 本 加 入 支 持 Web 的 功 能 时,Visual dbase 小 组 突 然 发 现, 既 然 Web 的 功 能 是 许 多 程 序 员 想 要 的, 那 么, 为 什 么 不 直 接 提 供 一 个 可 视 化 的 Web 开 发 工 具, 让 需 要 开 发 Web 应 用 程 序 的 程 序 员 能 够 拥 有 最 好 的 工 具, 而 不 需 要 痛 苦 地 使 用 纯 文 本 编 辑 器 来 开 发 Web 应 用 程 序 呢? 时 值 1995 年, 这 的 确 是 一 个 令 人 相 当 震 撼 的 想 法, 因 为 它 体 现 了 未 来 需 求 的 趋 势 当 Visual dbase 小 组 提 出 这 个 想 法 之 后, 立 刻 在 部 门 内 获 得 了 极 大 的 回 响 几 经 商 议,Visual dbase 小 组 决 定 先 开 发 一 个 可 视 化 的 Web 开 发 工 具 来 测 试 市 场, 而 且 他 们 决 定 就 使 用 Visual dbase 来 开 发 这 个 新 的 产 品 这 实 在 是 个 大 胆 又 令 人 惊 讶 的 决 定, 因 为 当 时 不 但 没 有 类 似 的 产 品, 而 且 决 定 使 用 Visual dbase 而 非 C/C++ 来 开 发 新 产 品, 更 是 不 可 思 议, 开 发 工 具 真 的 可 以 使 用 Visual dbase 来 开 发 吗? 当 Visual dbase 小 组 决 定 开 发 这 个 新 的 开 发 工 具 时, 却 面 临 了 一 些 技 术 上 的 抉 择, 那 就 是 使 用 什 么 语 言 作 为 这 个 新 开 发 工 具 的 核 心? 另 外, 该 产 品 既 然 是 一 个 Web 开 发 工 具, 当 然 需 要 一 个 Web Server 作 为 后 端 的 驱 动 引 擎 但 是, 当 时 的 市 场 上 只 有 Netscape 和 O'Reilly 等 少 数 厂 商 拥 有 Web Server 引 擎 因 此,Borland 必 须 决 定 使 用 什 么 Web Server 不 过, 这 些 问 题 很 快 就 有 了 答 案 由 于 Java 快 速 地 兴 起,Applet 也 成 为 学 习 Java 的 入 门 知 识, 因 此,JavaScript 很 快 就 被 众 人 视 为 开 发 Web 应 用 程 序 的 标 准 语 言 于 是 Visual dbase 小 组 决 定 使 用 JavaScript 作 为 这
89 个 开 发 工 具 的 核 心 语 言, 并 且 强 化 当 时 的 JavaScript 语 言, 以 支 持 这 个 新 的 开 发 工 具 另 外, 由 于 当 时 的 Web Server 大 都 不 便 宜, 因 此,Visual dbase 小 组 决 定 自 行 开 发 一 个 Web Server 作 为 这 个 开 发 工 具 的 内 建 Web Server 最 后,Visual dbase 小 组 定 义 这 个 开 发 工 具 必 须 拥 有 下 面 的 功 能 : 可 视 化 开 发 环 境, 允 许 程 序 员 使 用 组 件 和 拖 曳 的 功 能 来 设 计 Web 应 用 程 序 使 用 JavaScript 作 为 核 心 语 言 提 供 内 建 的 Web Server 结 合 BDE/IDAPI 来 连 接 各 种 数 据 库 这 个 开 发 工 具 便 是 IntraBuilder-- 后 来 震 撼 一 时 的 数 据 库 Web 开 发 工 具 先 驱 在 IntraBuilder 开 始 开 发 之 后,Visual dbase 小 组 很 快 发 现, 虽 然 他 们 可 以 使 用 Visual dbase 完 成 大 部 分 的 工 作, 但 是, 终 究 有 一 些 功 能 是 Visual dbase 力 所 不 逮 的 地 方, 因 此, 在 IntraBuilder 开 发 的 后 期, 为 了 让 它 能 够 支 持 当 时 Microsoft 刚 推 出 的 同 Applet 相 抗 衡 的 ActiveX 以 及 动 态 执 行 Applet,Visual dbase 小 组 还 是 使 用 了 部 分 的 C 程 序 代 码 来 完 成 这 些 功 能 IntraBuilder 的 震 撼 1996 年 9 月, 经 过 1 年 多 的 开 发,IntraBuilder 终 于 推 出 在 世 人 的 面 前 IntraBuilder 推 出 之 后, 全 世 界 的 专 业 媒 体 几 乎 都 对 IntraBuilder 好 评 有 加, 而 且 都 不 能 相 信 Borland 能 够 如 此 快 速 且 先 知 地 推 出 数 据 库 的 Web 开 发 工 具 全 世 界 的 好 评 如 潮, 因 此, 在 IntraBuilder 准 备 正 式 出 货 之 前,Borland 也 是 信 心 满 满 我 记 得, 当 时 在 拿 到 IntraBuilder 的 Beta 版 后, 虽 然 我 对 于 Web 的 开 发 仍 然 没 有 太 多 的 经 验, 但 是 很 快 就 了 解 了 这 个 产 品 的 潜 力, 因 为 IntraBuilder 和 当 时 其 他 的 Web 开 发 工 具 以 及 编 辑 器 比 较 起 来, 简 直 是 领 先 了 数 个 世 代 之 久, 而 且 还 能 够 用 来 作 为 学 习 JavaScript 的 工 具 和 开 发 连 接 数 据 库 的 Web 应 用 程 序 这 些 功 能 在 市 面 上 几 乎 没 有 任 何 的 竞 争 对 手 可 以 比 拟 即 便 以 今 日 的 标 准 来 看,IntraBuilder 提 供 的 Web 可 视 化 设 计 能 力 仍 属 一 流 因 此, 当 时 我 就 觉 得 这 会 是 一 个 大 卖 的 产 品 IntraBuilder 面 对 的 困 难 即 便 Borland 非 常 有 信 心, 专 业 媒 体 也 一 片 看 好, 但 是 没 有 想 到 的 是, 在 IntraBuilder 推 出 之 后, 只 带 来 了 第 一 波 销 售 热 潮, 随 后 的 销 售 却 很 快 冷 却 下 来, 造 成 了 IntraBuilder 叫 好 不 叫 座 的 情 形 这 实 在 是 一 件 很 奇 怪 的 事 情, 因 为 IntraBuilder 产 品 本 身 没 有 太 大 的 问 题, 产 品 的 方 向 也 是 正 确 的 但 是 为 什 么 IntraBuilder 在 市 场 上 就 是 无 法 拥 有 亮 丽 的 表 现 呢? 这 个 问 题 是 Borland 急 于 寻 找 答 案 的 记 得 当 时 在 台 湾 发 表 IntraBuilder 时, 似 乎 也 是 回 响 热 烈, 但 实 际 出 席 的 人 却 不 多 台 湾 Borland 的 产 品 经 理 还 在 会 场 询 问 我, 为 什 么 出 席 的 反 应 这 么 不 热 烈, 产 品 本 身 不 是 不 错 吗?
90 在 IntraBuilder 首 次 遭 遇 挫 折 之 后,Borland 很 快 便 找 出 了 其 中 的 重 要 问 题 所 在 有 些 属 于 产 品 本 身 的 小 瑕 疵, 有 些 则 是 当 时 整 个 环 境 的 问 题 总 结 当 时 IntraBuilder 1.0 失 败 的 原 因 有 : IntraBuilder 太 过 于 先 进, 许 多 程 序 员 不 知 如 何 使 用 IntraBuilder 不 支 持 中 文 浏 览 器 对 于 JavaScript 语 言 的 支 持 程 度 混 乱 IntraBuilder 在 GUI 方 面 的 Render 尚 有 瑕 疵 由 于 当 时 Web 的 程 序 应 用 还 属 于 萌 芽 期,Internet/Intranet 程 序 应 用 仍 然 处 于 第 一 波 面 向 文 件 的 阶 段, 大 多 数 的 Web 应 用 是 使 用 HTML 和 一 般 编 辑 器 来 制 作 的 这 个 时 期 距 离 第 二 波 程 序 员 开 始 大 量 使 用 各 种 不 同 的 Web 语 言 来 开 发 Web 应 用 程 序 仍 然 有 1 2 年 的 时 间 差 可 惜 的 是,IntraBuilder 就 是 太 早 的 察 觉 了 这 个 趋 势, 因 此 当 IntraBuilder 推 出 之 时, 仍 然 是 领 先 第 二 波 Web 应 用 的 发 展 从 下 面 的 图 形, 我 们 也 可 以 看 到 IntraBuilder 推 出 的 时 机 的 确 是 先 于 数 年 后 其 他 Web 开 发 工 具 的 脚 步 正 是 由 于 IntraBuilder 推 出 的 时 机 太 早, 因 此 只 能 吸 引 站 在 前 端 的 开 发 人 员, 大 多 数 的 开 发 人 员 对 于 这 样 革 命 性 的 产 品, 浑 然 不 知 其 重 要 性, 造 成 IntraBuilder 一 开 始 只 能 销 售 给 Borland 的 少 数 客 户 以 及 其 他 领 域 顶 尖 者 的 结 果 不 过 我 认 为 这 是 一 件 好 事, 因 为 IntraBuilder 先 期 的 销 售 数 量 虽 然 没 有 达 到 Borland 的 预 望, 不 过 IntraBuilder 一 开 始 便 攻 入 了 最 重 要 的 客 户 群, 占 据 了 金 字 塔 顶 端 客 户 的 mind-share 只 要 IntraBuilder 能 够 再 接 再 厉, 等 到 1 2 年 后, 当 大 多 数 的 开 发 人 员 了 解 了 Web 开 发 工 具 的 重 要 性 以 及 实 用 性 之 后,IntraBuilder 将 可 快 速 收 割 成 果 此 外 IntraBuilder 的 理 念 与 技 术 领 先 于 其 他 竞 争 对 手 数 年 之 久, 即 使 其 他 Web 开 发 工 具 推 出,IntraBuilder 也 能 够 以 逸 待 劳, 痛 击 竞 争 对 手 在 Borland 分 析 了 IntraBuilder 遭 遇 挫 折 的 因 素 后, 很 快 便 展 开 了 相 应 的 行 动, 因 为 Visual dbase 小 组 对 于 IntraBuilder 仍 然 非 常 有 信 心 在 支 持 DBCS 方 面, 由 于 IntraBuilder 1.0 不 支 持 DBCS, 因 此 造 成 了 在 许 多 亚 洲 国 家 和 地 区, 包 括 中 国 台 湾 地 区 日 本 和 韩 国 以 及 中 东 无 法 销 售 的 问 题 这 个 影 响 当 然 是 很 大 的, 因 为 光 是 一 个 日 本 市 场, 几 乎 就 可 以 销 售 数 千 万 套 另 外 一 个 扰 人 的 问 题, 就 是 由 IntraBuilder 开 发 出 来 的 Web 应 用 程 序 在 不 同 的 浏 览 器 中 会 发 生 网 页 内 容 和 位 置 与 在 IntraBuilder 中 设 计 时 不 一 致 的 情 形 这 个 问 题 形 成 的 原 因 很 复 杂, 大 都 和 当 时 不 同 的 浏 览 器 在 render 网 页 内 容 时 的 差 异 有 关 当 然, 当 时 尚 未 有 一 致 的 标 准, 使 得 不 同 的 浏 览 器 支 持 的 HTML 版 本 和 JavaScript 版 本 不 同 不 过, 虽 然 这 些 问 题 不 全 是 Borland 的 错 误, 但 是, 就 如 同 当 时 一 个 IntraBuilder 使 用 者 在 Forum 中 留 下 的 一 句 话 "It may not be Borland's error,but it definitely is a Borland's problem( 不 是 Borland 的 错 误, 却 是 Borland 的 问 题 )" 为 了 解 决 IntraBuilder 面 对 的 问 题,Visual dbase 小 组 很 快 便 开 始 进 行 了 IntraBuilder 第 二 个 版 本 的 开 发 工 作, 目 的 就 是 为 了 解 决 IntraBuilder 客 户 所 抱 怨 的 问 题, 并 且 强 化 IntraBuilder 在 扩 展 性 和 执 行 效 率 方 面 的 功 能, 以 期 让 更 多 的 客 户 愿 意 使 用 IntraBuilder 1997
91 年 6 月,Visual dbase 小 组 手 脚 很 快 地 推 出 了 IntraBuilder 1.5, 进 行 第 二 次 的 出 击 IntraBuilder 1.5 几 乎 是 一 个 成 熟 的 Web 开 发 工 具, 因 为 IntraBuilder 1.5 可 以 支 持 DBCS, 并 且 大 幅 提 高 了 IntraBuilder 应 用 程 序 的 执 行 效 率 此 外,Visual dbase 小 组 也 特 别 使 用 C 改 写 了 IntraBuilder 在 render 网 页 的 功 能, 让 IntraBuilder 能 够 更 精 确 地 呈 现 Web 网 页 的 内 容, 并 且 大 幅 提 升 了 在 不 同 浏 览 器 中 的 兼 容 性 经 过 了 这 么 多 的 改 善 之 后,IntraBuilder 在 全 世 界 的 销 售 果 然 有 了 起 色, 慢 慢 地 向 Borland 为 IntraBuilder 设 定 的 目 标 接 近 Visual dbase 小 组 当 然 也 是 很 高 兴, 因 为 这 证 明 了 他 们 的 眼 光 是 正 确 的 因 此,Visual dbase 小 组 在 IntraBuilder 站 稳 了 脚 步 之 后, 便 开 始 进 行 IntraBuilder 2.0 大 改 版 的 工 作, 希 望 通 过 2.0 版 本 让 IntraBuilder 成 为 最 成 功 的 Web 开 发 工 具 再 接 再 厉,IntraBuilder 2.0 的 开 发 1997 年,Borland 已 经 准 备 好 了 新 版 的 IntraBuilder, 并 且 在 当 年 的 Borland Conference 中 公 开 宣 示 了 IntraBuilder 2.0, 也 为 未 来 的 IntraBuilder 3.0 提 供 了 发 展 蓝 图 新 版 本 的 IntraBuilder 一 切 看 起 来 是 非 常 的 顺 利, 而 且 Visual dbase/intrabuilder 小 组 也 信 心 满 满, 准 备 为 IntraBuilder 再 下 一 城 当 时 的 Borland 正 和 最 具 影 响 力 的 Netscape 以 及 Microsoft 共 同 制 定 JavaScript 的 标 准, 并 且 准 备 捉 交 到 ECMA 其 时 IntraBuilder Architect Randy Solton 正 忙 于 和 Netscape 以 及 Microsoft 的 人 员 定 义 JavaScript 的 最 终 标 准, 希 望 两 大 浏 览 器 Communicator 和 Explorer 能 够 在 未 来 支 持 这 个 新 的 标 准, 以 便 让 IntraBuilder 的 应 用 程 序 能 够 正 确 无 误 地 执 行 在 这 两 个 浏 览 器 中 不 过, 由 于 Netscape 和 Microsoft 正 处 于 最 激 烈 的 战 火 中, 彼 此 各 怀 鬼 胎 谁 也 不 服 谁, 因 此 标 准 制 定 的 流 程 进 行 得 非 常 缓 慢 不 顺 利, 这 也 间 接 造 成 了 开 发 IntraBuilder 的 难 度 在 Borland Conference 1997 中, 当 时 IntraBuilder 的 Director Michael Gardner 展 示 了 IntraBuilder 2.0 的 新 功 能 在 IntraBuilder 2.0 中,Borland 提 供 了 一 个 内 建 的 HTML 可 视 化 编 辑 器, 以 提 供 更 为 精 确 的 网 页 编 写 功 能 ( 类 似 今 日 Macromedia 提 供 的 工 具 ) IntraBuilder 2.0 的 ActiveX 具 有 同 时 在 客 户 端 和 伺 服 端 执 行 的 能 力 这 个 功 能 非 常 Cool, 因 为 在 当 时,ActiveX 大 都 只 能 执 行 在 客 户 端, 而 IntraBuilder 2.0 却 能 够 让 ActiveX 同 时 执 行 在 客 户 端 和 伺 服 端, 这 可 就 稀 奇 了 另 外,IntraBuilder 2.0 对 于 JavaBean 的 支 持 也 将 和 ActiveX 一 样 完 全, 这 代 表 两 种 不 同 的 组 件 技 术 在 IntraBuilder 中 将 会 是 相 同 的 First-Class 组 件 这 可 是 Macromedia 在 数 年 之 后 才 能 在 UltraDev 中 实 现 的 技 术 另 外 一 个 IntraBuilder 2.0 最 重 要 的 功 能 就 是 提 供 了 跨 平 台 的 能 力 Borland 准 备 同 时 开 发 Windows 和 UNIX 平 台 的 IntraBuilder, 计 划 支 持 的 UNIX 平 台 包 含 了 Solaris HP-UX AIX 和 IRIX 这 在 当 时 可 算 是 非 常 大 的 手 笔, 因 为 当 时 市 场 上 不 但 没 有 类 似 的 产 品, 更 遑 论 是 提 供 跨 平 台 的 Web 开 发 工 具 因 此, 我 认 为 当 时 如 果 Borland 能 坚 持 下 去, 就 将 拥 有 绝 佳 的 市 场 契 机
92 在 1997 年 的 Borland Conference 中, 除 了 Michael Gardner 的 讲 座 之 外,IntraBuilder 的 Architect Randy Solton 也 在 Borland Conference 主 讲 了 两 个 讲 座, 深 入 地 讨 论 了 IntraBuilder 2 0 的 新 功 能 和 实 现 技 术 此 外, 当 时 IntraBuilder 的 产 品 经 理 Klaus Krull(K.K.) 也 在 现 场 同 台 演 出, 并 且 声 明 IntraBuilder 2.0 的 Beta 版 将 提 供 给 有 兴 趣 的 开 发 者 测 试 从 所 有 的 迹 象 来 看,IntraBuilder 2.0 已 经 是 蓄 势 待 发 了 另 外, 当 时 IntraBuilder 的 QA 工 作, 是 由 华 人 出 身 的 Ken Chan 所 领 军 其 实 从 Borland C/C 开 始, 华 人 在 Borland 的 R&D 以 及 QA 部 门 中 一 直 占 有 一 定 的 比 例, 对 于 Borland 产 品 开 发 有 着 不 小 的 贡 献 不 过, 事 情 的 发 展 很 快 就 出 乎 所 有 人 的 意 料, 在 Borland Conference 1997 年 举 行 过 后 不 久,Borland 突 然 放 弃 了 IntraBuilder 这 个 消 息 传 来, 对 于 当 时 急 切 等 待 IntraBuilder 2 0 的 我 来 说, 实 在 是 晴 天 霹 雳 为 什 么 Borland 会 突 然 放 弃 IntraBuilder, 这 是 当 时 我 一 直 想 要 了 解 的 问 题 我 曾 经 询 问 过 台 湾 Borland 的 好 友, 但 是 他 们 也 不 知 道 实 际 的 原 因 后 来 我 曾 经 听 到 几 种 说 法 : 其 一 是 Delbert Yocam 对 于 IntraBuilder 没 有 兴 趣, 因 此 不 愿 意 再 投 入 资 源 开 发 下 去 ; 另 外 的 传 言 则 是 Borland 决 定 全 力 开 发 JBuilder, 因 此 把 IntraBuilder 的 资 源 移 到 JBuilder 去 ; 还 有 的 说 法 是 IntraBuilder 开 发 团 队 和 Delbert 处 不 来, 因 此 集 体 离 开 Borland 不 过 事 情 的 实 际 答 案 仍 然 是 一 个 谜, 即 使 到 了 今 日, 我 再 次 为 Borland 工 作 时, 仍 然 无 法 获 得 确 定 的 答 案, 实 在 令 人 遗 憾 我 认 为 IntraBuilder 是 最 为 可 惜 的 产 品 之 一, 因 为 早 在 1996 年, 当 其 他 软 件 公 司 尚 未 察 觉 到 Web 需 要 一 个 良 好 的 能 够 和 数 据 库 整 合 在 一 起 的 开 发 工 具 时,Borland 居 然 就 已 掌 握 到 软 件 时 脉, 而 且 推 出 了 实 际 的 产 品, 可 说 是 一 片 大 好, 也 是 Borland 少 有 能 够 走 在 别 人 前 面 的 好 时 机 如 果 当 时 Borland 好 好 地 持 续 开 发 IntraBuilder, 我 相 信 IntraBuilder 一 定 会 成 为 比 今 日 Macromedia 的 UltraDev 还 好 的 产 品, 而 且 也 将 是 我 认 为 属 于 " 消 费 型 软 件 " 的 产 品, Borland 将 可 在 数 年 之 后 的 公 元 2000 年 大 展 鸿 图 只 可 惜 Delbert Yocam 似 乎 是 脑 筋 坏 了, 不 然 就 是 没 有 眼 光, 居 然 在 IntraBuilder 2.0 几 乎 已 经 完 成 之 前 决 定 放 弃 不 但 让 Borland 失 去 了 在 Web 开 发 工 具 方 面 占 有 一 席 之 地 的 机 会, 也 失 去 了 数 年 后 让 全 世 界 疯 狂 的 Internet/Intranet 和 DotCOM 的 黄 金 发 展 阶 段, 真 是 令 我 扼 腕 甚 至 在 Delphi 3/4 时, 我 强 烈 建 议 在 Delphi 中 开 发 类 似 的 IntraBuilder 功 能 的 心 愿 也 无 法 达 成 我 想, 这 应 该 是 Borland 在 并 购 Ashton-Tate 之 后, 另 外 的 一 个 重 大 失 策 令 人 遗 憾 的 结 局 在 Delbert Yocam 决 定 放 弃 IntraBuilder 之 后, 这 个 举 动 也 几 乎 成 为 压 垮 骆 驼 的 最 后 一 根 稻 草, 因 为 这 对 Visual dbase 小 组 实 在 是 一 个 非 常 大 的 打 击 Visual dbase 小 组 已 经 看 到 Visual dbase 的 市 场 不 断 地 下 滑 和 萎 缩, 因 此 急 需 一 个 新 的 产 品 以 增 加 收 入 并 开 拓 未 来 的 产 品 线 不 过, 在 Delbert 决 定 了 IntraBuilder 的 命 运 之 后, 也 代 表 了 宣 布 Visual dbase 小 组 终 将 结 束 的 未 来 正 是 由 于 Delbert 的 决 定, 引 发 了 1 2 年 后 Visual dbase 小 组 所 有 人 都 急 于 跳 下 Visual dbase 这 个 曾 经 一 时 的 旗 舰, 转 而 纷 纷 希 望 加 入 Java 这 艘 新 的 战 舰, 从 而 引 发 了 稍 后
93 Borland 内 部 的 极 大 争 议 直 到 现 在, 我 仍 然 非 常 喜 欢 和 怀 念 IntraBuilder 因 为 我 在 CDC 服 务 时, 便 曾 和 一 位 同 事 共 同 把 IntraBuilder 引 入 CDC 作 为 开 发 Web 解 决 方 案 的 开 发 工 具 由 于 CDC 使 用 Delphi 作 为 主 力 开 发 工 具, 而 IntraBuilder 的 开 发 模 式 又 和 Delphi 很 类 似, 因 此 对 于 IntraBuilder 的 接 受 程 度 很 高 IntraBuilder 1.5 解 决 了 中 文 问 题 和 执 行 效 率 问 题, 当 时 我 开 发 的 Pilot 系 统 可 以 执 行 得 非 常 顺 利, 因 此 我 决 定 在 Web 方 面 的 工 具 使 用 IntraBuilder 没 有 想 到, 后 来 Borland 居 然 放 弃 IntraBuilder, 顿 时 之 间 所 有 的 心 血 都 化 为 流 水 身 为 Borland 产 品 使 用 者 的 我, 不 能 够 接 受 Borland 这 种 处 理 产 品 的 方 式, 更 何 况 Borland 在 当 时 也 没 有 提 供 任 何 可 取 代 IntraBuilder 的 产 品 Borland 处 理 IntraBuilder 的 方 式 引 起 了 当 时 许 多 IntraBuilder 使 用 者 的 反 弹, 也 让 Borland 几 乎 无 法 再 涉 足 Web 开 发 工 具 的 市 场 命 运 坎 坷 的 dbase 回 顾 dbase 产 品 的 一 生, 实 在 令 人 不 知 说 什 么 好 dbase 曾 经 主 导 了 PC 数 据 库 技 术 的 发 展 主 流, 在 早 期 也 几 乎 霸 占 了 PC 数 据 库 市 场 十 几 年 前, 当 人 们 发 现 一 台 PC 在 执 行 了 dbase 之 后, 居 然 能 够 处 理 许 多 日 常 数 据, 立 刻 便 为 dbase 不 可 思 议 的 能 力 而 着 迷, 进 而 创 造 了 dbase 不 可 一 世 的 时 代 1980 年 8 月,George Tare 和 Hal Lashlee 两 位 先 生 创 建 了 Software Plus 软 件 公 司 稍 后, 他 们 和 Microsoft 一 样, 从 一 个 小 软 件 公 司 购 买 了 Vulcan Data Base 软 件, 并 且 根 据 Vulcan Data Base 开 发 出 dbase 产 品 的 前 身 很 快,George Tare 和 Hal Lashlee 合 作 的 软 件 便 获 得 了 许 多 使 用 者 的 好 评, 他 们 的 软 件 逐 渐 在 市 场 上 受 欢 迎 不 久 之 后,George Tate 和 Hal Lashlee 便 成 立 了 Ashton Tate 公 司, 展 开 了 dbase 神 话 的 时 代 在 Ashton-Tate 推 出 dbase II 之 后, 正 值 PC 开 始 快 速 成 长 的 时 期 由 于 当 时 的 dbase II 在 PC 上 提 供 了 合 理 的 数 据 处 理 能 力, 因 此 很 快 便 有 了 大 量 的 使 用 者,dBase II 的 影 响 力 也 开 始 渗 入 商 业 使 用 者 领 域, 而 Ashton-Tate 这 个 招 牌 也 逐 渐 成 为 广 为 人 知 的 公 司 1984 年 是 Ashton-Tate 一 生 最 为 重 要 的 一 年, 因 为 在 这 年 的 6 月,Ashton-Tate 推 出 了 dbase III dbase III 在 数 据 处 理 能 力 运 算 速 度 方 面 都 比 dbase II 大 幅 提 升, 正 好 符 合 当 时 PC 愈 来 愈 大 量 数 据 应 用 的 需 求 在 Ashton-Tate 推 出 dbase III 之 后, 立 刻 在 全 球 大 卖, 随 后 推 出 的 dbase III Plus 更 是 奠 定 了 Ashton Tare 在 PC 数 据 库 方 面 至 尊 的 地 位 dbase III 和 dbase III Plus 的 空 前 成 功, 使 得 Ashton-Tate 营 收 大 增, 并 且 成 为 当 时 全 球 第 3 大 的 软 件 公 司 和 Microsoft Lotus 分 别 以 DOS Lotus 和 dbase 各 在 操 作 系 统 Spreadsheet 以 及 数 据 库 市 场 鼎 足 而 立 当 Ashton-Tate 在 数 据 库 市 场 不 可 一 世 之 时,Oracle 还 是 一 个 名 不 见 经 传 的 小 公 司 怎 知 10 年 风 水 轮 流 转, 现 在 的 Oracle 已 经 成 为 数 据 库 的 霸 主 为 什 么 Ashton Tate 这 个 曾 经 执 PC 数 据 库 牛 耳 的 公 司 后 来 会 一 蹶 不 振 呢? 这 都 要 从 Ashton-Tate 的 dbase IV 说 起 急 转 直 下 的 dbase IV
94 当 Ashton-Tate 的 dbase III/Plus 成 功 之 后,Ashton-Tate 的 野 心 就 更 大 了, 急 于 和 Microsoft/Lotus 逐 鹿 天 下 Ashton-Tate 决 定 投 入 大 量 的 资 源 开 发 下 一 代 的 dbase 软 件, 把 处 理 数 据 的 能 力 再 次 提 高, 并 且 提 供 更 为 复 杂 的 功 能 虽 然 Ashton-Tate 的 想 法 很 好, 要 把 PC 数 据 库 的 竞 争 再 次 升 高, 提 供 更 为 高 阶 的 应 用, 但 却 忽 略 了 当 时 PC 硬 件 设 备 是 否 能 够 跟 上 Ashton-Tate 设 定 的 标 准 的 问 题 在 Ashton-Tate 开 发 dbase IV 到 中 期 之 后, 却 发 现 当 时 PC 的 设 备 无 法 顺 利 执 行 dbase IV, 此 时 Ashton-Tate 才 发 现 事 态 严 重 其 实, 在 Ashton-Tate 开 发 dbase IV 之 前, 并 没 有 评 估 硬 件 需 求 或 是 没 有 控 制 dbase IV 的 开 发 无 论 如 何, 对 于 Ashton-Tate 来 说,dBase 几 乎 是 唯 一 的 软 件, 也 是 成 功 的 支 柱 结 果, 对 于 最 重 要 的 产 品 居 然 管 理 成 这 个 样 子, 从 这 个 迹 象 便 可 知 当 时 的 Ashton-Tate 可 能 被 dbase III/Plus 的 胜 利 冲 昏 了 头, 也 开 始 夜 郎 自 大 起 来 Ashton-Tate 发 觉 了 dbase IV 的 问 题 之 后, 立 刻 和 一 些 软 / 硬 件 厂 商 合 作, 为 当 时 只 能 使 用 640K 内 存 的 PC 加 入 新 的 内 存 设 备, 以 便 执 行 需 要 海 量 存 储 器 的 dbase IV 虽 然 后 来 的 确 弄 出 了 一 个 解 决 方 案, 但 却 不 为 市 场 大 众 接 受 dbase IV 在 Ashton-Tate 无 法 解 决 内 存 需 求 问 题 之 下 仍 然 执 意 推 出, 结 果 市 场 一 片 负 面 评 价 不 但 一 般 的 PC 内 存 不 够 无 法 顺 利 执 行, 再 加 上 dbase IV 的 臭 虫 极 多, 立 刻 被 市 场 所 唾 弃 原 来 的 dbase 使 用 者 仍 然 继 续 使 用 dbase III/Plus, 不 愿 意 升 级 到 dbase IV, 这 让 Ashton-Tate 面 临 血 本 无 归 的 窘 况 再 加 上 dbase 又 得 面 对 FoxBase 和 Borland Paradox 愈 来 愈 强 劲 的 竞 争,Ashton-Tate 无 法 推 出 让 dbase 使 用 者 满 意 的 下 一 代 产 品, 只 能 眼 看 着 市 场 不 断 流 失 1990 年 初,Ashton-Tate 内 部 起 了 内 讧, 导 致 dbase 的 主 要 Architect 以 及 许 多 工 程 师 离 开 Ashton-Tate, 而 Ashton-Tate 在 数 年 之 间 仍 然 无 法 解 决 dbase IV 的 问 题 也 让 人 不 可 思 议 此 时,Ashton-Tate 在 Paradox 和 FoxBase 的 鲸 吞 蚕 食 之 下, 几 乎 快 变 成 一 个 空 壳 了 公 司 营 收 不 断 下 滑,dBase 市 场 占 有 率 不 断 下 降, 人 员 更 是 快 速 流 失 到 了 1991 年,Ashton-Tate 几 乎 已 经 撑 不 下 去 了 在 Ashton-Tate 快 速 走 下 坡 之 际, 却 是 Borland 即 将 到 达 巅 峰 之 时 1990 年,Philippe Kahn 从 Borland 本 身 的 Paradox 成 长 情 形 知 道 了 dbase 的 状 况, 已 经 逐 渐 看 出 Ashton-Tate 的 颓 势 于 是 Philippe Kahn 知 道,Borland 称 霸 PC 数 据 库 市 场 的 时 机 即 将 到 来, 而 且 Borland 必 须 比 Microsoft 先 出 手 才 能 够 赢 得 这 个 不 容 错 过 的 好 机 会 1991 年, 在 Ashton-Tate 已 经 摇 摇 欲 坠 之 际,Philippe Kahn 终 于 决 定 出 手 因 为 Philippe Kahn 知 道, 绝 不 能 让 Microsoft 先 叫 牌 更 绝 的 是,Philippe Kahn 一 出 手 就 是 雷 霆 一 击, 条 件 好 得 让 Ashton-Tate 根 本 无 法 拒 绝 1991 年 7 月, 当 Philippe Kahn 以 440 Million 叫 牌 之 后,Ashton-Tate 很 快 就 全 面 投 降, 决 定 从 此 嫁 入 Borland Ashton-Tate 的 被 并 购 和 走 入 历 史 1991 年, 不 可 一 世 的 Philippe Kahn 以 极 大 的 霸 气 和 本 钱 并 购 了 当 时 已 经 快 速 走 下 坡 的 Ashton-Tate Philippe Kahn 购 买 Ashton-Tate 的 真 正 目 的 是 为 了 与 Bill Gates 一 争 长 短, 以 图 成 为 PC 软 件 界 的 霸 主 另 外 一 个 目 的 则 是 为 了 彻 底 消 灭 dbase, 因 为 Philippe Kahn 认 为 Borland 自 己 的 Paradox 比 当 时 问 题 多 多 的 dbase IV 好 得 太 多 了, 一 旦 dbase 退 出 市 场, 那
95 么 Paradox 即 可 席 卷 PC 数 据 库 市 场, 让 Borland 同 时 成 为 PC 开 发 工 具 以 及 PC 数 据 库 市 场 中 的 老 大, 进 而 同 主 掌 PC 操 作 系 统 的 Microsoft 和 控 制 PC 计 算 软 件 的 Lotus 分 庭 抗 礼 在 Borland 以 不 可 思 议 的 高 价 购 买 了 Ashton-Tate 之 后, 立 刻 引 来 了 华 尔 街 的 批 评, 因 为 华 尔 街 的 分 析 师 都 认 为 Philippe Kahn 出 的 价 格 太 高,Ashton-Tate 在 当 时 并 不 值 440Million 多 美 金 不 过 对 于 Philippe Kahn 来 说, 用 4 亿 多 美 金 来 与 Microsoft/Lotus 一 较 长 短 的 大 企 图 相 比, 实 在 不 算 什 么, 因 为 Borland 有 的 是 钱 在 1991 年 Borland 并 购 Ashton-Tate 时,Borland 的 市 值 其 实 比 Ashton-Tate 小 当 时 的 Ashton-Tate 是 排 名 第 5 的 软 件 公 司, 而 Borland 只 排 名 到 第 9 但 是 Ashton-Tate 已 经 在 走 下 坡, 手 头 拮 据 反 观 Borland 则 是 蒸 蒸 日 上, 现 金 多 多 Borland 并 购 Ashton-Tate 一 事, 媒 体 都 以 " 小 鱼 吃 大 鱼 '' 为 标 题 进 行 报 道 当 时 Ashton-Tate 的 营 业 额 大 概 是 250 多 个 Million 美 金, 而 Borland 的 营 业 额 则 大 约 是 230 多 个 Million 因 此, 在 Borland 加 上 Ashton-Tate 之 后, 立 刻 成 为 一 个 年 营 业 额 将 近 500 Million 的 软 件 公 司, 排 名 跃 为 当 时 全 球 第 3 大 的 软 件 公 司, 仅 次 于 Microsoft 和 Lotus 读 者 可 以 想 想, 现 在 的 Borland 年 营 业 额 才 200 多 Million, 但 是 10 年 前 却 已 经 拥 有 500 Million, 可 见 当 时 Borland 的 盛 世 和 规 模 之 大 在 Borland 完 成 了 Ashton-Tate 的 并 购 之 后,Philippe Kahn 每 日 都 得 意 洋 洋, 因 为 在 Philippe Kahn 看 来, 成 为 全 世 界 第 一 大 击 败 Microsoft 的 日 子 已 经 不 远 了 Ashton-Tate 被 Borland 并 购 之 后, 其 光 辉 灿 烂 将 近 10 年 的 时 光 也 随 之 消 逝 Ashton-Tate 原 本 很 有 机 会 成 为 今 日 的 Oracle, 继 续 占 据 PC 数 据 库 市 场 龙 头 的 地 位, 没 有 想 到 Ashton-Tate 却 把 好 好 的 一 盘 棋 下 到 了 死 局, 硬 生 生 地 把 自 己 的 命 脉 产 品 玩 完 虽 然 Ashton-Tate 是 一 个 很 好 的 负 面 教 材, 但 人 类 似 乎 永 远 学 不 会 历 史, 数 年 后 的 Informix 也 走 上 了 和 Ashton-Tate 极 为 类 似 的 道 路 不 甘 之 作,dBase For Windows 5.0 在 Philippe Kahn 得 意 不 久 之 后,Microsoft 也 并 购 了 FoxBase 这 家 公 司, 并 且 快 速 地 推 出 了 FoxPro 这 套 可 以 在 Windows 下 执 行 的 与 dbase 兼 容 的 软 件 由 于 Microsoft 掌 握 了 原 本 DOS 下 dbase 程 序 员 急 需 一 个 Windows 下 的 dbase 开 发 工 具 的 心 态, 因 此 当 FoxPro For Windows 推 出 之 后, 立 刻 吸 引 了 许 多 原 先 dbase III/dBase III Plus 的 使 用 者 虽 然 Borland 在 Microsoft 推 出 FoxPro For Windows 之 后 开 始 流 失 使 用 者, 但 是, 由 于 其 时 Paradox For DOS 的 销 售 仍 然 良 好, 因 此,Philippe Kahn 并 没 有 放 在 心 上, 仍 然 认 为 最 终 Paradox For Windows 可 以 击 败 FoxPro For Windows 在 这 里,Philippe Kahn 显 然 犯 了 轻 敌 的 错 误 在 Microsoft 连 续 推 出 两 个 版 本 的 FoxPro For Windows 之 后,Borland 终 于 察 觉 原 先 dbase 的 使 用 者 正 处 于 快 速 地 流 失 之 中 虽 然 Borland 已 经 推 出 了 Paradox For Windows, 而 且 销 售 也 在 预 期 之 中, 但 是 很 显 然,Paradox For Windows 并 不 能 阻 止 dbase 客 户 的 流 失 Philippe Kahn 此 时 才 开 始 着 急 此 外,Borland 也 面 临 还 在 使 用 dbase For DOS 使 用 者 强 大 的 压 力, 他 们 要 求 Borland 推 出 dbase For Windows 其 实,dBase For Windows 产 品 本 身 还 是 不 错 的, 不 过 由 于 已 经 太 晚 加 入 Windows 平 台 数 据 库 战 场, 而 且 是 在 匆 促 上 阵 的 情 形 下, 本 身 的 臭 虫 当 然 不 少, 再 加 上 得 面 对 轻 装 上 阵 的
96 FoxPro For Windows,dBase For Windows 几 乎 没 有 什 么 胜 算 随 后 的 结 果 果 然 如 同 许 多 人 预 期 的 一 样,dBase For Windows 在 推 出 之 后 不 但 无 法 憾 动 FoxPro For Windows 的 江 山, 反 而 引 来 原 本 期 待 的 dbase 使 用 者 的 绝 望 dbase 的 使 用 者 在 苦 等 Windows 版 的 dbase 数 年 之 后, Borland 仍 然 无 法 提 供 一 个 高 品 质 的 产 品 顿 时 之 间, 大 量 不 满 的 dbase 使 用 者 都 转 向 了 Microsoft 的 FoxPro For Windows, 也 造 成 了 dbase For Windows 不 可 挽 回 的 败 势 在 dbase For Windows 失 利 之 后, 许 多 人 都 开 始 把 矛 头 对 向 Philippe Kahn, 认 为 是 Philippe Kahn 的 自 大 和 轻 敌 搞 死 了 dbase For Windows 这 条 原 本 有 机 会 的 产 品 线 如 果 Philippe Kahn 能 够 在 并 购 Ashton-Tate 之 后 好 好 地 开 发 dbase For Windows, 并 且 在 Microsoft 的 FoxPro For Windows 之 前 推 出, 那 么 Borland 将 可 让 大 部 分 dbase For DOS 使 用 者 转 入 Windows 的 市 场 唉, 如 果 时 光 能 够 倒 转, 如 果 Borland 能 够 早 一 步 推 出 dbase For Windows, 再 进 而 开 发 出 后 来 的 关 系 数 据 库 (Relational Database) 产 品, 那 么,Borland 现 在 可 能 仍 然 是 前 3 大 的 软 件 公 司 最 后 的 帝 王 --Visual dbase 7 很 显 然,Microsoft 以 极 小 的 代 价 购 买 了 FoxBase, 并 且 用 FoxPro For Windows 抢 走 了 Philippe Kahn 花 大 钱 购 买 来 的 dbase 使 用 者, 的 确 是 等 于 狠 狠 地 打 了 Philippe Kahn 一 巴 掌, 让 Philippe Kahn 知 道, 先 出 手 并 不 代 表 会 赢 得 最 后 的 胜 利 这 对 于 日 日 夜 夜 想 打 败 Microsoft 的 Philippe Kahn 来 说, 当 然 是 无 法 忍 受 的 耻 辱, 因 此, Philippe Kahn 念 念 不 忘 的 就 是 如 何 扳 回 一 城 在 dbase For Windows 5.0 失 利 之 后,Borland 决 定 再 次 重 新 出 发, 准 备 推 出 新 版 本 的 dbase For Windows, 来 挑 战 FoxPro For Windows 不 过, 市 场 情 势 的 发 展 却 出 现 了 变 化,PC 数 据 库 市 场 已 经 开 始 走 入 关 系 数 据 库 的 时 代, 桌 面 型 数 据 库 的 市 场 已 经 开 始 出 现 下 滑 的 现 象 1997 年 12 月,Borland 推 出 最 后 一 版 的 dbase For Windows 7.0 来 角 逐 市 场 dbase For Windows 7.0 的 品 质 和 功 能 才 是 Borland 早 该 在 几 年 前 推 出 的 产 品, 如 果 Borland 早 几 年 推 出 dbase For Windows 7.0, 那 么 Windows 下 dbase 的 市 场 绝 对 会 由 Borland 寡 占,FoxPro For Windows 将 不 是 对 手 只 可 惜 时 不 我 待, 在 dbase For Windows 7.0 推 出 之 际,Windows 下 dbase 的 市 场 已 经 大 势 已 定 虽 然 dbase For Windows 7.0 的 确 是 一 个 好 产 品, 但 是 它 再 也 无 力 改 变 市 场 了 此 外, 此 时 PC 桌 面 型 数 据 库 的 市 场 也 逐 渐 萎 缩,Microsoft 也 准 备 走 向 关 系 数 据 库 市 场,Windows 下 dbase 的 市 场 对 于 Microsoft 来 说, 已 经 不 那 么 重 要 了 在 dbase For Windows 7.0 推 出 之 后,Borland 事 实 上 也 察 觉 到 了 PC 数 据 库 市 场 的 变 化, 准 备 以 InterBase 进 入 关 系 数 据 库 的 市 场 至 此, 延 续 数 年 之 久 的 PC 桌 面 型 数 据 库 的 战 火 也 终 于 近 乎 停 止 状 态 了 当 Borland 的 Visual dbase 小 组 发 现 整 个 数 据 库 市 场 的 变 化 之 后, 内 部 产 生 了 相 当 大 的 矛 盾, 许 多 Visual dbase 的 工 程 师 在 不 看 好 dbase 产 品 的 情 形 下 纷 纷 决 定 转 换 跑 道 " 弃 船 " 也 许 是 当 时 最 适 当 的 形 容 词, 几 乎 所 有 的 Visual dbase 的 工 程 师 都 希 望 进 入 Borland Java 开 发 小 组, 没 有 人 愿 意 继 续 留 在 Visual dbase 小 组 因 此, 当 时 Visual dbase 小 组 在 Borland 内 部 引 起 了 不 小 的 骚 动 每 一 个 人 都 想 到 Java 小 组, 许 多 Borland C/C++ 小 组 的 工 程 师 也 都
97 希 望 进 入 Java 开 发 小 组, 但 是 Java 小 组 并 不 能 容 纳 这 么 多 人 最 后 许 多 无 法 进 入 Java 小 组 的 工 程 师 不 是 离 开 Borland, 就 是 随 着 Borland 卖 出 dbase 时 跟 随 Visual dbase 到 了 新 的 公 司 最 后 的 晚 餐 1998 年 的 Borland Conference 应 该 是 Visual dbase 在 Borland 最 后 一 次 的 盛 会 了 当 时 使 用 Visual dbase 的 使 用 者 已 经 不 多, 因 此 在 BorCon 1998 年 中 Visual dbase 的 讲 座 也 不 多 不 过 对 于 一 些 dbase 的 忠 诚 使 用 者 来 说,Visual dbase 7.0 仍 然 是 他 们 的 最 爱 因 此 在 BorCon 1998 年, 当 时 在 Visual dbase 界 中 最 著 名 的 支 持 者 Alan Katz 负 责 了 许 多 Visual dbase 的 讲 座, 也 号 召 了 许 多 dbase 的 使 用 者 参 加 这 次 的 Borland Conference Alan Katz 的 努 力 显 然 是 希 望 Borland 不 要 放 弃 Visual dbase, 能 够 继 续 开 发 dbase 的 产 品 不 过, 这 些 努 力 仍 然 无 法 挽 回 市 场 的 形 势 以 及 Borland 的 决 心,BorCon 1998 也 终 于 成 为 Visual dbase 最 后 一 次 的 舞 台 生 命 的 延 续 --dbase 下 半 年,Borland 终 于 决 定 把 Visual dbase 卖 掉, 因 为 Borland 已 经 不 想 在 Desktop 的 数 据 库 市 场 竞 争 了 在 Borland 决 定 卖 掉 Visual dbase 的 信 息 传 出 之 后, 立 刻 引 起 了 许 多 dbase 使 用 者 的 强 烈 反 应 他 们 认 为 Borland 不 负 责 任, 因 为 如 果 Borland 随 便 把 Visual dbase 卖 掉, 那 么 Visual dbase 便 注 定 会 从 此 消 失 由 于 当 时 dbase 使 用 者 的 压 力 太 大, 因 此 Borland 不 得 不 小 心 翼 翼 地 处 理 这 个 烫 手 山 芋 当 时 的 Borland 已 经 是 放 也 不 是, 不 放 也 不 行 了 为 了 缓 和 dbase 使 用 者 的 强 烈 不 满,Borland 宣 布 会 谨 慎 地 选 择 购 买 dbase 的 公 司, 而 不 会 随 便 把 dbase 卖 出 去 这 个 时 候,Alan Katz 也 知 道 了 Borland 的 决 定 出 于 对 Visual dbase 的 热 爱,Alan Katz 决 定 找 寻 资 金 来 源 把 dbase 的 版 权 从 Borland 的 手 中 买 下 来 很 快, 他 找 到 了 一 些 dbase 的 爱 好 者, 每 人 拿 出 一 定 的 资 金 来 集 资 购 买 Visual dbase 的 版 权 在 Alan Katz 取 得 了 资 金 之 后, 便 立 刻 和 Borland 联 络, 准 备 和 Borland 谈 判 当 然, 在 Alan Katz 集 资 的 过 程 中,Borland 也 试 着 寻 找 对 Visual dbase 有 兴 趣 的 公 司 或 是 个 人, 不 过 这 个 过 程 并 不 顺 利 因 此 当 Alan Katz 和 Borland 接 触 之 后, 双 方 立 刻 有 了 交 集, 双 方 都 有 很 高 的 意 愿 不 过, 在 深 入 的 谈 判 之 后,Borland 很 快 发 现 Alan Katz 的 资 金 和 Borland 想 要 求 的 版 权 费 有 很 大 的 距 离 原 本 Borland 不 太 想 再 谈 下 去, 不 过, 在 Alan Katz 和 Borland 接 触 的 消 息 传 出 之 后, 却 获 得 了 许 多 dbase 使 用 者 的 欢 迎 Alan Katz 在 dbase 界 的 高 知 名 度 以 及 多 年 来 对 于 dbase 的 贡 献 都 让 dbase 的 使 用 者 觉 得, 如 果 由 Alan Katz 收 购 dbase, 那 么 dbase 仍 然 将 有 美 好 的 未 来 于 是 dbase 的 使 用 者 开 始 向 Borland 施 压, 希 望 Borland 能 够 成 功 地 和 Alan Katz 谈 好 条 件 虽 然 Borland 不 太 接 受 Alan Katz 的 条 件, 但 是 在 遍 寻 不 到 适 合 的 买 主 再 加 上 dbase 使 用 者 的 强 烈 要 求 和 Borland 急 于 解 决 Visual dbase 的 情 况 下,Borland 终 于 在 半 买 半 送 的 条 件 下 把 dbase 所 有 的 原 始 程 序 以 及 版 权 卖 给 了 Alan Katz 在 Borland 决 定 出 脱 dbase 给 Alan
98 Katz 之 后,Alan Katz 便 立 刻 和 朋 友 成 立 下 KSoft 软 件 公 司, 准 备 延 续 Visual dbase 的 产 品 生 命 1999 年 3 月 12 日,Borland 终 于 廉 价 售 出 了 1991 年 花 费 数 亿 美 金 并 购 来 的 dbase 产 品, dbase 在 Borland 不 受 重 视 的 日 子 也 终 于 结 束 Alan Katz 在 购 买 了 dbase 的 版 权 之 后 不 久, 便 把 公 司 更 名 为 dbase Inc. 公 司,1 年 之 后, 也 就 是 2000 年 的 12 月,dBase Inc. 推 出 了 自 己 的 新 dbase 产 品, 取 名 为 dbase 2000, 至 此 dbase 系 列 产 品 也 终 于 正 式 延 续 了 产 品 生 命 dbase 在 80 年 代 诞 生 以 来, 持 续 生 存 了 近 20 年 的 时 间, 可 说 是 PC 软 件 中 生 命 力 最 为 强 韧 的 软 件 了 dbase 被 Philippe Kahn 的 狂 妄 自 大 所 牺 牲,IntraBuilder 因 Delbert Yocam 目 光 如 豆 而 夭 折 虽 然 dbase 因 为 再 转 卖 给 其 他 公 司 而 得 以 延 续 生 命, 但 是 对 于 Borland 来 说,dBase 和 IntraBuilder 终 究 是 在 遗 憾 中 结 束 了 生 命 的 产 品 Paradox 对 于 Borland 来 说,Paradox 一 直 是 棵 摇 钱 树, 为 Borland 赚 进 了 大 把 的 钞 票, 同 时 也 让 Borland 称 霸 PC 数 据 库 市 场 不 过 Paradox 并 不 是 Borland 自 己 研 发 的 ( 嗯, 写 到 这 里, 我 才 突 然 想 到,Borland 数 据 库 产 品 几 乎 都 不 是 自 己 开 发 的, 都 是 并 购 来 的 ), 是 从 一 家 叫 做 Ansa 的 小 公 司 购 买 来 的 在 1985 年, 为 了 进 入 PC 数 据 库 市 场,Borland 看 上 了 Ansa 公 司 的 Paradox 产 品, 于 是 在 1985 年 的 秋 季 正 式 购 买 了 Paradox, 成 为 Borland 第 一 个 数 据 库 开 发 工 具 其 实, 在 Borland 所 有 的 数 据 库 产 品 中,Paradox 是 最 受 Borland 照 顾 的, 这 也 许 是 因 为 Paradox 是 Borland 的 第 一 个 数 据 库 产 品, 也 或 许 是 因 为 Philippe Kahn 对 于 Paradox 情 有 独 钟 但 Paradox 对 于 Borland 也 有 着 很 大 的 影 响, 因 为 Paradox 后 来 不 但 成 为 Borland 的 主 力 产 品 之 一, 存 取 Paradox 的 数 据 存 取 引 擎 也 成 为 数 年 后 Delphi 的 主 要 数 据 库 和 存 取 引 擎, BDE/IDAPI 也 是 从 Paradox Engine 演 化 而 来 的 Borland 取 得 了 Paradox 之 后, 很 快 就 开 发 出 了 Borland Paradox For DOS, 正 式 进 军 PC 的 数 据 库 市 场 由 于 Paradox 当 时 独 特 的 Query By Example(QBE) 以 及 每 一 个 版 本 都 维 持 兼 容 的 良 好 特 性, 很 快 就 吸 引 了 许 多 的 使 用 者,Paradox 也 成 为 当 时 dbase 系 列 之 外 另 外 一 个 非 常 流 行 的 数 据 库 产 品, 在 国 外 非 常 的 盛 行 而 Paradox 之 所 以 没 有 在 台 湾 / 大 陆 等 地 流 行 起 来, 原 因 便 是 Paradox 一 直 和 Double-Byte 的 兼 容 有 问 题, 无 法 正 确 地 处 理 中 文 信 息 由 于 Paradox 在 DOS 以 及 Windows 初 期 的 版 本 中 表 现 得 非 常 抢 眼, 因 此 Philippe Kahn 一 度 想 以 Paradox 称 霸 PC 桌 面 型 数 据 库 市 场, 投 入 许 多 的 资 源 研 发 Paradox For Windows, 并 且 不 惜 压 制 Borland 自 己 的 dbase 产 品 来 壮 大 Paradox 在 Windows 市 场 的 占 有 率 不 过, 很 显 然 Borland 的 脑 筋 仍 然 没 有 转 过 来 在 dbase Paradox 和 FoxPro 等 PC 数 据 库 开 发 工 具 被 使 用 了 多 年 之 后, 已 经 开 始 慢 慢 地 进 入 一 般 计 算 机 使 用 者 的 市 场 来 解 决 日 常 数 据 处 理 的 工 作, 因 此 在 PC 桌 面 型 数 据 库 市 场, 已 经 开 始 需 要 一 些 比 dbase Paradox 和 FoxPro 等 更 简 易 好 用 的 产 品 了 在 这 方 面 Lotus 便 掌 握 得 比 Borland 好, 因 为 Lotus 开 始 开 发 适 合 一 般 计 算 机 使 用 者 的 桌 面 型 数 据 库 工 具, 那 就 是 后 来 的 Lotus Approach Paradox 的 导 向 一 直 是 以 程 序 员 为 主, 后 来 Paradox 引 以 为 傲 的 开 发 语 言 Paradox Application Language(PAL) 也 以 面 向 对 象 为 宣 传 重 点, 强 烈 地 吸 引 着 想 使 用 面 向 对 象 技 术 开
99 发 数 据 库 应 用 程 序 的 程 序 员 正 是 因 为 Paradox 从 头 到 尾 都 是 以 程 序 员 为 导 向, 所 以 在 Paradox 到 达 了 巅 峰 之 后, 仍 无 法 吸 引 一 般 的 计 算 机 使 用 者, 也 无 法 进 入 这 个 新 兴 的 市 场 --Paradox 对 于 这 类 计 算 机 使 用 者 而 言 实 在 是 太 困 难 了 因 此, 当 Lotus 的 Approach 步 步 为 营 ( 嗯,"Approach" 这 个 名 字 还 真 符 合 当 时 的 状 况 ), 掌 握 了 新 起 的 PC 桌 面 型 数 据 库 工 具 市 场 之 后,Borland 等 于 同 时 失 去 了 dbase 市 场 给 FoxPro, 又 无 法 通 过 Paradox 渗 入 新 的 数 据 库 工 具 市 场 当 Borland 也 察 觉 到 Paradox 的 瓶 颈 以 及 新 兴 起 的 PC 桌 面 型 数 据 库 市 场 之 后, 急 于 让 Paradox 进 入 Lotus Approach 掌 握 的 市 场 因 为 Borland 相 信, 以 Paradox 这 么 优 秀 的 品 质, 绝 对 有 机 会 同 其 他 新 的 竞 争 对 手 一 较 长 短 因 此,Borland 开 始 了 Paradox For Windows 5.0 的 研 发 工 作, 准 备 为 Paradox 加 入 许 多 简 易 的 功 能, 以 打 开 新 市 场 的 契 机 虽 然 Borland 很 努 力 地 想 要 转 变 Paradox 的 产 品 形 象 并 且 打 入 新 的 市 场, 无 奈 Paradox 的 产 品 定 位 已 经 非 常 的 固 定, 而 且 此 时 Microsoft 也 进 入 了 PC 桌 面 型 数 据 库 工 具 市 场, 并 且 以 Microsoft Access 屠 杀 和 血 洗 Lotus Approach,Paradox 当 然 再 也 没 有 机 会 在 这 个 市 场 称 雄 了 不 过 也 还 好,Borland 晚 了 一 步 进 入 这 个 市 场, 才 没 有 让 Paradox 和 Approach 一 样 被 Microsoft 的 Access 以 极 为 不 合 理 的 手 段 所 消 灭 1994 年 3 月, 当 时 的 Novell 还 想 在 Office 产 品 线 中 和 Microsoft 一 争 长 短, 因 此 大 手 笔 地 并 购 了 WordPerfect 公 司, 并 且 从 Borland 买 走 了 Quattro Pro 以 及 Paradox 的 使 用 权 Novell 当 时 的 想 法 是 让 这 些 Office 产 品 和 Novell 的 Network OS 连 接 在 一 起, 以 便 与 Microsoft 抗 衡, 挽 救 Novell 日 益 下 滑 的 局 面 不 过, 当 时 我 根 本 不 看 好 Novell 的 这 个 举 动 连 开 发 商 业 应 用 程 序 为 主 的 Lotus 都 不 是 Microsoft 的 对 手, 更 何 况 从 来 不 以 商 业 应 用 程 序 为 擅 长 的 Novell 呢? 而 且 除 了 NOS 之 外,Novell 还 开 发 出 过 什 么 知 名 的 产 品 呢? 因 此,Novell 真 正 的 目 的 恐 怕 并 不 是 和 Microsoft 竞 争, 而 是 为 了 固 守 Novell NOS 的 地 盘, 防 止 被 Microsoft 进 一 步 地 侵 蚀 从 这 个 现 象, 我 们 可 以 知 道 Novell 早 在 1994 年 便 开 始 逐 渐 采 取 防 守 的 策 略, 已 经 无 力 和 Microsoft 竞 争 了 Paradox 的 告 别 作 Paradox 和 Borland 的 缘 分 似 乎 已 经 快 到 了 尽 头, 虽 然 Borland 试 图 在 Paradox For Windows 5.0 时 改 变 Paradox 的 策 略, 转 向 一 般 计 算 机 使 用 者, 不 过 Borland 的 努 力 显 然 失 败 了,Paradox 的 核 心 就 不 是 为 这 个 市 场 设 计 的 因 此, 在 Paradox For Windows 5.0 表 现 得 不 如 人 意 之 后,Borland 又 决 定 把 Paradox 定 位 在 专 业 的 P C 桌 面 型 数 据 库 工 具 市 场, 准 备 推 出 下 一 个 Paradox 重 要 的 版 本 --Paradox For Windows 年 12 月,Borland 推 出 了 几 乎 是 品 质 最 好 的 Paradox, 即 Paradox For Windows 7.0 严 格 地 说,Paradox For Windows 7.0 是 当 时 所 有 PC 桌 面 型 数 据 库 开 发 工 具 中 功 能 最 强 大 品 质 最 稳 定 的 工 具, 可 以 说 是 当 时 的 王 者 可 惜 时 不 我 待, 其 时 大 部 分 的 桌 面 数 据 库 应 用 都 被 Microsoft Access 抢 走, 一 般 PC 使 用 者 的 人 数 远 超 过 数 据 库 程 序 员 的 数 量, 因 此,Microsoft Access 的 销 售 量 是 其 他 所 有 PC 桌 面 型 数 据 库 开 发 工 具 的 数 倍 之 多, 再 加 上 关 系 数 据 库 也 快 速 地 流 行 于 PC 的 应 用 之 中,PC 桌 面 型 数 据 库 开 发 工 具 在 上 / 下 夹 攻 之 中, 市 场 也 逐 渐 地 消 失 了
100 对 于 PC 桌 面 型 数 据 库 开 发 工 具 市 场 的 不 断 萎 缩 以 及 关 系 数 据 库 市 场 的 快 速 兴 起, Borland 也 了 解 到 必 须 正 视 市 场 的 变 化 因 此,Borland 开 始 着 手 从 Ashton-Tate 取 得 的 InterBase, 准 备 进 军 关 系 数 据 库 市 场, 同 时 卖 出 Paradox 以 集 中 资 源 开 发 InterBase 此 时, 刚 好 Corel 夹 着 CorelDraw 以 及 绘 图 软 件 取 得 的 雄 厚 资 金 从 Novell 手 中 又 买 下 了 PerfectOffice 所 有 的 软 件 因 此 Borland 也 决 定 一 次 性 把 所 有 的 Paradox 版 权 卖 给 Cord 1996 年 1 月 底,Borland 正 式 和 Corel 签 约, 卖 出 最 后 Borland 保 留 的 Paradox 权 利 给 Corel 从 此,Borland 不 再 拥 有 任 何 Paradox 的 权 利, 也 不 再 继 续 开 发 Paradox 这 也 就 是 为 什 么 Delphi/C++Builder 之 中 的 Paradox 数 据 库 规 范 最 高 只 到 Paradox 7, 因 为 Borland 再 也 没 有 权 利 开 发 新 版 本 的 Paradox 以 及 Paradox 引 擎 和 数 据 库 规 范 了 Corel 在 取 得 了 Paradox 之 后, 也 持 续 地 开 发 Paradox For Windows 一 直 到 9.0 的 版 本, 但 对 于 市 场 已 无 任 何 举 足 轻 重 的 影 响, 因 为 延 续 10 几 年 的 PC 桌 面 型 数 据 库 市 场 已 然 退 出 市 场 的 主 流, 不 管 是 dbase FoxPro Paradox 还 是 其 他 的 类 似 产 品, 也 注 定 被 Access 和 关 系 数 据 库 所 逐 渐 取 代 后 言 Borland 在 PC 桌 面 型 数 据 库 以 及 关 系 数 据 库 方 面 的 战 役 一 直 是 问 题 连 连 除 了 Paradox 之 外,Borland 接 连 错 失 了 以 dbase 主 掌 天 下 的 大 好 时 机, 也 没 有 及 早 通 过 InterBase 进 入 关 系 数 据 库 市 场 如 果 当 时 Borland 能 够 在 一 开 始 从 Ashton-Tate 取 得 InterBase 之 后, 立 刻 研 发 和 进 入 关 系 数 据 库 市 场, 那 么 以 当 时 Borland 的 力 量 绝 对 可 能 成 为 关 系 数 据 库 的 霸 主 因 为 在 那 个 时 候,Oracle 等 公 司 还 是 非 常 小 的, 而 Microsoft 也 没 有 关 系 数 据 库 的 产 品, 但 是 Borland 手 中 却 有 InterBase 无 奈,Philippe Kahn 没 有 看 到 未 来 数 据 库 市 场 可 怕 的 成 长 潜 力, 任 手 中 的 宝 贝 闲 置 了 好 几 年 等 到 其 他 的 关 系 数 据 库 厂 商 已 经 闯 出 了 名 号 后, 才 发 现 原 来 自 己 家 中 早 已 有 一 个 好 东 西, 但 是 在 落 后 别 人 已 多 的 情 形 下 想 要 追 赶, 却 已 不 容 易 了 Borland 在 PC 数 据 库 市 场 上 犯 了 过 多 的 错 误 以 及 失 去 了 许 多 宝 贵 的 机 会, 否 则 很 有 可 能 主 宰 PC 数 据 库 市 场 持 续 地 和 Microsoft 竞 争, 并 且 站 稳 软 件 大 厂 的 地 位 回 顾 Borland 在 PC 数 据 库 市 场 的 搅 和, 实 在 是 令 人 不 解 而 又 令 人 叹 息! 既 然 有 眼 光 并 购 潜 力 十 足 的 各 个 数 据 库 厂 商, 为 何 又 放 任 大 好 的 契 机 流 失 呢? 这 个 问 题 的 答 案 恐 怕 只 有 Philippe Kahn 才 知 道 了 第 七 章 中 途 岛 之 战 --Borland 和 组 件 技 术 " 没 有 中 间 件 技 术, 我 们 就 没 有 未 来!" Golden Gate Strategy 1996 年,Borland 察 觉 到 软 件 技 术 将 会 开 始 朝 中 间 件 的 方 向 发 展 由 于 Borland 一 向 只
101 开 发 工 具 软 件, 因 此 如 何 面 对 这 个 软 件 趋 势 便 成 了 重 要 的 问 题 当 时 Borland 陷 入 一 片 混 乱 之 中, 新 任 CEO Delbert Yocam 还 尚 未 进 入 公 司, 软 件 和 产 品 线 的 开 发 方 向 几 乎 都 是 由 担 任 Borland R&D Director 一 职 的 Paul Gross 负 责 1996 年 7 月,Paul Gross 和 Delphi 的 负 责 人 Zack 共 同 激 活 了 一 个 崭 新 的 计 划, 其 目 的 是 为 了 让 Borland 能 够 在 未 来 的 软 件 业 界 中 保 持 高 度 的 竞 争 力 当 时,Borland 已 经 开 始 想 往 企 业 市 场 发 展 但 是,Borland 缺 乏 企 业 市 场 需 要 的 大 型 架 构 技 术, 那 就 是 所 谓 的 中 间 件 (Middleware) 中 间 件 通 常 都 非 常 复 杂, 而 且 需 要 许 多 时 间 才 能 够 开 发 完 成, 更 何 况 中 间 件 服 务 器 都 需 要 运 行 在 许 多 不 同 的 硬 件 平 台 上, 例 如 SUN HP 和 IBM 等 大 型 机 器 中, 而 那 时 Borland 只 是 一 个 开 发 PC 软 件 的 公 司, 不 但 对 大 型 机 器 的 开 发 完 全 没 有 经 验, 而 且 也 没 有 相 关 的 硬 件 设 备 来 支 持 开 发 尽 管 如 此,Borland 和 Paul 都 知 道, 在 未 来 中 间 件 技 术 绝 对 是 软 件 产 品 的 主 战 场 之 一 如 果 Borland 不 趁 早 往 这 方 面 发 展, 那 将 永 远 没 有 机 会 成 长 为 大 型 的 软 件 公 司 因 此,Paul 和 Zack 知 道,Borland 必 须 想 办 法 克 服 所 有 困 难, 以 取 得 中 间 件 技 术 当 然, 最 快 的 方 法 就 是 并 购 拥 有 这 方 面 技 术 和 产 品 的 公 司 在 寻 寻 觅 觅 了 一 段 时 间 之 后,Paul 终 于 找 到 了 在 Boston 的 一 家 软 件 顾 问 公 司 虽 然 这 家 公 司 不 大, 但 是 却 拥 有 使 用 RPC(Remote Procedure Call) 通 讯 协 议 技 术 的 中 间 件 市 场 的 领 导 产 品 --Entera RPC 是 一 个 存 在 了 非 常 久 的 软 件 技 术, 发 展 得 非 常 成 熟 Entera 被 许 多 如 HP 之 类 的 大 型 公 司 使 用 于 是 Paul 想 通 过 并 购 这 家 软 件 顾 问 公 司 以 取 得 Entera, 再 通 过 Entera 把 Borland 打 入 企 业 级 市 场 如 果 Borland 能 够 整 合 Entera 和 Borland 的 开 发 工 具, 那 么 大 型 企 业 可 能 也 会 开 始 使 用 Borland 的 工 具 这 对 于 Borland 来 说, 算 是 很 好 的 机 会, 因 为 如 此 一 来,Borland 不 但 可 以 取 得 中 间 件 技 术, 更 可 以 让 开 发 工 具 进 入 以 往 Borland 难 以 进 入 的 市 场 就 在 Paul 心 动 之 际, 又 恰 逢 这 家 位 于 Boston 的 软 件 顾 问 公 司 经 营 发 生 了 问 题, 也 在 寻 找 新 的 资 金 来 源, 因 此 和 Borland 可 以 说 是 一 拍 即 合 不 久 之 后,Borland 便 宣 布,Entera 正 式 成 为 Borland 的 产 品 之 一 在 Paul 决 定 并 购 Entera 之 后, 立 刻 激 活 了 Golden Gate Strategy( 金 门 战 略 ), 开 始 要 求 Borland 的 开 发 工 具 必 须 和 Entera 整 合 在 一 起 同 时 Borland 也 第 一 次 开 始 大 量 购 买 大 型 的 硬 件, 准 备 研 发 Entera, 至 此 Borland 通 过 Entera 正 式 进 入 了 大 型 的 以 及 基 于 UNIX 平 台 的 软 件 市 场 在 Borland 取 得 了 中 间 件 技 术 和 产 品 之 后, 便 很 高 兴 地 把 Golden Gate Strategy 呈 现 给 世 人, 宣 示 Borland 已 经 成 为 整 合 科 技 的 领 导 厂 商 之 一 当 时 Paul 还 特 别 拨 了 一 笔 预 算, 拍 摄 了 一 个 宣 传 Borland Golden Gate Strategy 的 动 画 影 片, 其 中 使 用 的 宣 传 语 是 "We don't want to own the world,we just want to make it work better( 我 们 不 想 拥 有 世 界, 只 想 让 它 运 作 得 更 好 )" 相 信 许 多 读 者 可 能 会 记 得 这 个 影 片 Borland 在 取 得 了 Entera 之 后, 算 是 进 入 了 陌 生 的 中 间 件 市 场 虽 然 Borland 通 过 Entera 企 图 打 入 企 业 市 场, 但 严 格 地 说,Entera 只 是 让 Borland 这 个 招 牌 被 较 多 的 企 业 知 晓 而 Borland 在 销 售 Entera 方 面 表 现 得 并 不 好, 因 为 Borland 一 开 始 并 不 熟 悉 RPC 技 术, 另 外 就 是 Borland 当 初 的 销 售 体 制 无 法 成 功 地 销 售 企 业 级 的 软 件, 因 为 新 的 公 司 体 制 尚 未 建 立 起 来 由 于 Entera 在 之 后 的 表 现 不 如 人 意, 后 来 几 乎 只 有 Entera 的 旧 客 户 才 购 买 新 版 本,Entera 已 经 无 法 吸 引 新 的 客 户 了 这 当 然 也 是 因 为 市 场 上 的 中 间 件 技 术 主 流 已 经 慢 慢 转 换 为 使 用 CORBA 和 DCOM 技 术 因 此, 不 久 之 后,Borland 便 把 Entera 的 维 护 和 开 发 新 版 本 的 工 作
102 交 由 Borland 亚 洲 研 发 中 心 新 加 坡 来 处 理 了 Borland 一 直 到 取 得 了 CORBA 技 术 之 后, 才 开 始 真 正 掌 握 中 间 件 技 术, 并 且 逐 渐 打 入 企 业 市 场 并 购 Visigenic, 取 得 CORBA 技 术 Borland 在 第 一 次 的 中 间 件 尝 试 不 甚 成 功 之 后, 还 是 没 有 放 弃 想 在 中 间 件 开 发 的 决 心 当 企 业 市 场 的 中 间 件 主 流 技 术 转 为 使 用 CORBA 之 后,Borland 又 看 到 了 第 2 次 机 会 当 CORBA 技 术 逐 渐 被 企 业 和 PC 界 视 为 明 星 技 术 之 后, 提 供 CORBA 相 关 产 品 的 IONA 和 Visigenic 便 成 为 许 多 人 眼 中 的 潜 力 软 件 公 司 了 不 过 由 于 IONA 已 经 早 一 步 推 出 了 CORBA 产 品 并 且 也 已 经 拥 有 了 许 多 客 户, 因 此 IONA 成 长 得 非 常 快 速 相 反 Visigenic 是 刚 成 立 不 久 的 小 软 件 公 司, 而 且 还 处 于 亏 损 状 态 Visigenic 是 由 Roger Sippl 先 生 创 立 的 Roger Sippl 是 信 息 业 界 非 常 有 名 的 人, 因 为 他 也 是 Informix 的 创 始 人 像 Roger Sippl 这 样 的 人, 在 美 国 被 称 为 " 创 投 冒 险 家 " 这 群 人 的 特 点 就 是 拥 有 极 为 敏 锐 先 趋 的 眼 光, 不 断 找 寻 新 的 信 息 契 机 成 立 软 件 公 司 一 旦 新 公 司 有 了 一 点 成 果 之 后, 便 立 刻 果 断 地 卖 出 公 司 以 求 获 利, 而 甚 少 长 久 经 营 一 家 公 司 Roger Sippl 创 立 了 Informix 公 司, 在 有 了 一 点 经 营 成 果 之 后, 立 刻 把 Informix 卖 掉, 大 赚 一 笔, 此 后 又 再 试 图 建 立 其 他 的 小 公 司 寻 找 机 会 和 买 家 Visigenic 就 是 后 来 Roger Sippl 看 好 CORBA 技 术 之 后 成 立 的 小 公 司 Borland 看 到 CORBA 的 潜 力, 但 没 有 足 够 的 本 钱 并 购 IONA, 因 此 看 上 了 规 模 还 小 的 Visigenic Borland 找 上 Visigenic, 表 示 愿 意 以 数 百 万 美 金 和 股 票 分 配 权 购 买 Visigenic 公 司, 当 然 Roger Sippl 立 刻 答 应 了 因 为 如 此 一 来,Roger Sippl 不 但 可 以 让 Borland 负 责 Visigenic 的 负 债, 还 能 够 赚 进 大 把 的 现 金 和 Borland 的 股 票, 何 乐 而 不 为 呢! 因 此 在 1997 年 11 月,Borland 正 式 购 买 了 Visigenic, 而 Roger Sippl 也 成 为 Borland 当 时 的 CIO 当 时 我 就 知 道,Roger Sippl 一 定 是 暂 时 性 的 担 任 Borland 的 CIO, 目 的 就 是 帮 助 Borland 顺 利 接 收 Visigenic 的 产 品 线 一 旦 Borland 掌 握 了 之 后,Roger Sippl 一 定 会 立 刻 离 开 Borland, 再 次 找 寻 新 的 机 会 果 然 当 Visigenic 的 产 品 在 Borland 稳 定 之 后,Roger Sippl 也 就 离 开 去 创 立 其 他 的 软 件 小 公 司 了 不 过, 对 于 Borland 来 说, 这 并 没 有 损 失, 因 为 Borland 要 的 本 来 就 只 是 Visigenic 的 CORBA 产 品 1998 年, 我 还 在 Borland 的 总 部 Scott Valley 聆 听 了 已 经 快 要 谢 顶 的 Roger Sippl 的 演 讲, 宣 示 Borland 未 来 在 中 间 件 市 场 的 光 明 前 景 那 也 是 我 最 后 一 次 看 到 Roger Sippl Borland 取 得 了 CORBA 产 品 之 后, 果 然 没 有 再 败 坏 家 产, 而 是 立 刻 投 入 资 源 开 发 Borland 自 己 的 CORBA 产 品 线, 那 就 是 VisiBroker 很 快,Borland 就 有 了 成 果 当 时 Netscape 正 和 Microsoft 火 拼 到 最 高 点,Netscape 为 了 增 加 Navigator 在 企 业 级 市 场 的 优 势, 决 定 在 Netscape 中 内 建 CORBA 客 户 端 引 擎 在 Netscape 评 估 了 IONA 和 Borland 的 CORBA 产 品 后, 决 定 使 用 Borland 的 CORBA 引 擎, 因 为 当 时 Borland 虽 然 没 有 像 IONA 一 样 拥 有 比 较 完 整 的 CORBA 产 品 和 CORBA 服 务, 但 是 VisiBroker 却 拥 有 体 积 小 执 行 速 度 快 的 优 点, 正 好 适 合 在 客 户 端 的 浏 览 器 中 使 用
103 当 Netscape 找 上 Borland 的 时 候,Borland 简 直 是 喜 上 心 头 当 时 的 Netscape 是 如 日 中 天 的 软 件 公 司, 全 世 界 使 用 Navigator 浏 览 器 的 人 数 超 过 数 百 万 如 果 Netscape 决 定 使 用 VisiBroker, 那 Borland 不 但 得 到 了 最 大 的 客 户, 而 且 还 可 通 过 Netscape 的 名 气 立 刻 让 全 世 界 的 人 包 括 企 业 级 的 使 用 者 都 知 道 Borland 这 家 公 司, 了 解 Borland 是 有 能 力 提 供 企 业 级 的 软 件 解 决 方 案 的 在 Netscape 和 Borland 磋 商 之 后, 立 刻 就 有 了 结 果 Borland 答 应 以 极 低 的 价 格 授 权 Netscape 在 Navigator 中 使 用 VisiBroker 虽 然 在 这 次 的 商 业 谈 判 中,Borland 几 乎 没 有 什 么 赚 头, 但 是,Borland 却 达 成 了 极 为 重 要 的 形 势 胜 利 首 先 是 通 过 Netscape 的 授 权 使 用,Borland 的 VisiBroker 在 CORBA 市 场 的 占 有 率 立 刻 超 越 了 IONA; 第 二 是 VisiBroker 通 过 Navigator 打 入 了 企 业 市 场, 让 许 多 大 型 的 企 业 开 始 对 VisiBroker 产 生 了 兴 趣, 以 致 后 来 VisiBroker 在 金 融 和 电 信 领 域 突 破 IONA 的 阵 地, 成 为 更 受 欢 迎 的 CORBA 引 擎 ; 第 三 点 当 然 就 是 Borland 可 以 通 过 Netscape 这 个 成 功 的 案 例 宣 传 Borland 的 CORBA 产 品, 让 VisiBroker 再 也 不 会 矮 上 IONA 的 产 品 半 截 了 在 这 次 成 功 地 出 击 CORBA 市 场 之 后,Borland 终 于 开 始 让 IONA 正 视 自 己 为 最 强 劲 的 竞 争 对 手 了 这 也 开 始 了 Borland 和 IONA 之 间 无 止 境 的 CORBA 大 战, 双 方 在 各 个 CORBA 应 用 领 域 厮 杀 惨 烈, 一 定 要 分 出 高 下 当 然,Borland 在 CORBA 的 成 功 也 让 Patti 和 Zack 的 Golden Gate 计 划 显 得 比 较 圆 满, 而 且 在 Paul 和 当 时 Borland R&D Director Joe Bently 的 要 求 下,Delphi 和 C++Builder 也 都 开 始 支 持 CORBA 的 功 能 至 此 Golden Gate 计 划 逐 渐 走 向 成 型 阶 段,Borland 终 于 在 中 间 件 技 术 杀 出 了 一 条 血 路 Paul Gross 的 愤 怒 和 Golden Gate 的 坠 毁 但 不 幸 的 是, 当 Delbert Yocam 在 1999 年 4 月 被 Borland 董 事 会 踢 出 门 之 后, 担 任 Borland R&D 副 总 裁 的 Paul Gross 便 一 直 认 为 Borland 新 的 CEO 职 位 应 该 非 他 莫 属 了, 于 是 开 始 积 极 争 取 CEO 一 职 不 过,Borland 的 董 事 会 却 认 为 如 果 公 司 真 的 想 进 入 企 业 市 场, 就 必 须 拥 有 专 业 的 销 售 团 队, 需 要 一 个 在 销 售 领 域 非 常 有 经 验 的 人 来 担 任 CEO Paul Gross 出 身 于 R&D, 对 于 销 售 没 有 太 多 的 经 验, 无 法 为 Borland 建 立 起 所 需 要 的 销 售 团 队 因 此,Borland 董 事 会 决 定 从 外 面 寻 找 新 的 CEO 在 得 知 了 Borland 董 事 会 的 决 定 之 后,Paul Gross 非 常 愤 怒 因 为 他 认 为 Golden Gate Strategy 是 他 策 划 的,Borland 能 够 进 入 企 业 市 场, 取 得 中 间 件 技 术, 都 是 因 为 他 的 眼 光 和 功 劳 现 在 Borland 董 事 会 居 然 不 考 虑 由 他 接 任 新 的 CEO,Paul Gross 心 中 充 满 了 怨 言, 对 于 Borland 产 品 线 的 开 发 工 作 也 就 顿 时 失 去 了 兴 趣 在 Borland 开 始 向 外 寻 找 新 的 CEO 之 际,Microsoft 也 得 知 了 这 个 信 息, 于 是 马 上 就 和 Paul Gross 接 触, 想 了 解 Paul Gross 的 动 向 此 时 正 是 Paul Gross 最 不 满 的 时 候, 因 此 和 Microsoft 相 谈 甚 欢, 很 快 便 答 应 到 Microsoft 工 作 由 于 Paul 在 Borland 已 经 是 R&D 部 门 的 副 总 裁, 因 此 Microsoft 答 应 给 Paul 的 职 位 也 是 Microsoft 开 发 工 具 部 门 的 副 总 裁, 负 责 Microsoft 的 Visual Studio 以 及 Internet 方 面 的 产 品 研 发 工 作 这 又 是 一 个 Microsoft 直 接 挖
104 角 Borland 人 才 到 自 己 公 司 担 任 类 似 工 作 的 例 子 Paul Gross 虽 然 是 以 副 总 裁 的 角 色 被 挖 走, Microsoft 给 予 Paul 的 待 遇 也 很 高, 但 和 Anders Hejlsberg 比 起 来 还 是 差 多 了 这 也 说 明 美 国 对 于 技 术 专 才 的 重 视, 高 层 管 理 人 员 的 待 遇 不 见 得 会 比 第 一 流 的 技 术 人 员 高 注 : 从 Paul Gross 的 事 例 中, 似 乎 可 以 看 到 技 术 人 员 的 宿 命 技 术 人 员 最 高 的 职 位 好 像 就 是 技 术 副 总 裁 了, 想 做 CEO 是 不 太 可 能 了 的 ( 除 非 是 技 术 人 员 自 己 开 的 公 司 ) 这 是 真 的 吗? 看 来,Paul Gross 在 Gold Gate Strategy 中 写 错 了 那 句 名 言 Paul Gross 是 想 拥 有 全 世 界 的, 所 以 才 加 入 Microsoft, 不 是 吗,Paul? 随 着 Delbert Yocam Zack Urlocker 以 及 Paul Gross 等 人 一 一 离 开 Borland,Golden Gate Strategy 就 再 也 没 有 人 提 起 了 虽 然 Borland 已 经 拥 有 了 当 初 Golden Gate Strategy 规 划 的 所 有 软 件 技 术, 不 过 在 Java 快 速 兴 起 并 且 掌 握 了 企 业 市 场 之 后, 软 件 的 发 展 似 乎 已 经 移 转 到 了 Java 应 用 程 序 服 务 器 市 场 这 个 软 件 趋 势 也 造 就 了 BEA 的 快 速 成 长 等 到 Borland 的 下 一 任 CEO Dale Fuller 先 生 任 职 之 后, 他 立 刻 投 入 大 量 的 资 源 进 入 Java 应 用 程 序 服 务 器 的 竞 争 市 场 至 此,Golden Gate Strategy 也 就 正 式 成 为 历 史 灰 烬 了 到 EJB 的 阵 地 吧! 虽 然 Borland 在 CORBA 领 域 逐 渐 超 越 IONA, 并 且 开 始 成 为 市 场 的 领 导 者, 不 过,Java 的 日 渐 兴 盛 也 开 始 让 CORBA 面 临 考 验 而 在 Windows 平 台,CORBA 也 必 须 面 对 Microsoft 的 COM/COM+ 中 间 件 技 术 的 竞 争 当 SUN 提 出 Java 的 RMI 技 术 后, 一 些 对 CORBA 并 不 了 解 的 人 开 始 鼓 吹 CORBA 已 经 是 日 薄 西 山 了, 他 们 认 为 CORBA 这 个 已 经 存 在 许 久 且 复 杂 的 技 术 可 能 会 被 Java 方 面 的 RMI 取 代 不 过, 后 来 事 实 很 快 就 证 明 RMI 根 本 无 法 取 代 CORBA 先 不 说 RMI 的 功 能 和 CORBA 比 起 来 简 直 是 九 牛 一 毛, 更 何 况 RMI 的 执 行 效 率 根 本 不 是 CORBA 的 对 手, 因 此 关 于 RMI 是 否 能 取 代 CORBA 的 争 论 很 快 就 平 息 了 下 来 不 过, 当 SUN 提 出 了 J2EE 架 构 准 备 力 推 EJB 技 术 时, 又 有 许 多 人 不 看 好 CORBA 的 命 运, 认 为 CORBA 的 长 路 将 尽,Java 世 界 终 将 使 用 EJB 而 不 是 CORBA 一 开 始,SUN 也 认 为 EJB 是 最 好 的 中 间 件 技 术, 认 为 企 业 应 该 采 用 EJB 作 为 中 间 件 的 引 擎 来 开 发 企 业 应 用 系 统 不 过 当 SUN 真 正 试 着 把 EJB 打 入 企 业 市 场 时, 才 发 现 CORBA 早 已 在 企 业 市 场 根 深 蒂 固, 许 多 大 型 的 应 用 系 统 都 是 使 用 CORBA 技 术 开 发 的 如 果 SUN 要 把 EJB 推 上 企 业 中 间 件 的 主 流, 那 么 EJB 一 定 要 能 够 同 CORBA 兼 容 和 沟 通 因 此 后 来 SUN 修 改 了 EJB 的 规 格, 让 它 和 CORBA 兼 容, 以 顺 利 解 决 大 型 企 业 需 要 整 合 CORBA 以 及 新 的 EJB 技 术 的 需 求 Borland 很 早 就 发 现 CORBA 和 EJB 根 本 不 冲 突, 反 而 有 很 高 的 兼 容 性,CORBA 的 跨 平 台 特 性 又 非 常 适 合 用 来 实 现 EJB 的 功 能 规 格 因 此 在 1999 年,Borland 开 始 进 行 用 VisiBroker 作 为 实 现 EJB 服 务 器 引 擎 的 研 究 工 作 Borland 在 中 间 件 市 场 付 出 了 庞 大 的 成 本, 奸 不 容 易 才 在 CORBA 方 面 有 了 一 点 成 果, 如 果 又 被 EJB 抢 走 中 间 件 市 场 的 主 流, 那 么 Borland 岂 不 是 损 失 惨 重? 而 且 Borland 好 不 容 易 通 过 Golden Gate 计 划 进 入 中 间 件 市 场, 从 RPC CORBA 一 路 走 来, 既 然 已 经 在 中 间 件 市 场 投 下 了 重 注, 那 就 没 有 理 由 现 在 因 为 EJB 而 退 出 市 场 更 重 要 的 是 Borland 看 到 了 未 来 EJB 市 场 的 潜 力, 如 果 SUN 真 的 能 够 把 J2EE
105 架 构 打 人 大 型 企 业 应 用 的 核 心, 那 么 掌 握 EJB 服 务 器 的 厂 商 将 会 拥 有 巨 大 的 商 机, 因 此 Borland 无 论 如 何 都 不 能 放 弃 这 个 市 场 为 了 在 EJB 市 场 成 为 领 导 厂 商 之 一,Borland 不 惜 巨 资 投 入 了 许 多 的 资 源 来 研 发 EJB 服 务 器 的 产 品, 并 且 以 开 发 工 具 和 CORBA 产 品 赚 得 的 资 源 源 源 不 断 地 资 助 EJB 开 发 小 组, 以 期 能 够 早 日 开 花 结 果, 让 Borland 在 EJB 的 中 间 件 技 术 市 场 再 下 一 城, 奠 定 Borland 在 这 个 领 域 技 术 至 尊 的 地 位 不 过 事 情 发 展 得 却 并 不 像 Borland 预 期 的 那 样 简 单 几 乎 也 在 同 一 时 期, 另 外 两 位 重 量 级 的 厂 商 BEA 和 IBM 也 分 别 投 下 了 巨 大 的 资 源 进 入 EJB 市 场 BEA 选 择 的 方 式 是 快 速 并 购 Tuxedo, 并 且 以 Tuxedo 为 引 擎 开 发 EJB 服 务 器 ; 而 IBM 则 是 占 有 最 丰 富 的 资 源 优 势, 以 最 大 的 团 队 规 模 投 入 Java 和 EJB 市 场 虽 然 Borland 也 投 入 了 巨 资, 但 是 Borland 的 " 巨 资 " 和 这 两 家 比 起 来 根 本 不 够 看 很 快 BEA 和 IBM 就 有 了 成 果 当 然, 由 于 UNIX 服 务 器 战 场 的 关 系, 当 BEA 和 IBM 推 出 EJB 的 服 务 器 之 后, 立 刻 引 起 HP 等 大 厂 商 加 入 EJB 来 火 拼 SUN 自 然 也 不 会 置 身 事 外 一 场 EJB 的 世 界 级 大 战 展 开 了 这 么 激 烈 的 EJB 战 场, 是 当 初 Borland 可 能 没 有 想 到 的 加 入 中 间 件 技 术 大 战 的 厂 商 每 一 个 的 规 模 都 比 Borland 大 上 几 十 倍, 甚 至 是 数 百 倍 这 种 大 规 模 的 阵 仗 是 Borland 前 所 未 见 的 因 此, 当 Borland 开 发 出 了 EJB 服 务 器 引 擎 之 后, 才 发 现 在 大 型 中 间 件 市 场 不 是 光 比 技 术 和 产 品 除 了 技 术 和 产 品 之 外, 还 要 比 公 司 招 牌 的 知 名 度 专 业 服 务 专 业 顾 问 咨 询 和 专 业 的 销 售 团 队 此 外, 更 需 要 极 大 的 公 司 资 源 准 备 打 一 场 长 期 的 消 耗 战 一 直 到 进 入 了 EJB 市 场,Borland 才 真 正 了 解 到 这 个 市 场 的 对 手 是 如 何 对 战 的 为 了 在 这 个 割 喉 市 场 生 存 下 去,Borland 公 司 策 划 了 第 三 次 的 转 变, 以 便 为 Borland 建 立 专 业 的 销 售 体 系, 准 备 以 不 同 的 手 法 开 打 EJB 的 战 争 这 在 稍 后 Borland 的 演 变 一 文 中 有 详 细 的 说 明 够 强 壮 再 玩 下 去 吗? 到 了 2002 年, 中 间 件 市 场 已 经 到 了 成 熟 而 且 是 最 后 关 头 的 时 刻 EJB 厂 商 之 间 的 竞 争 已 经 快 见 分 晓,Borland 是 否 能 够 坐 稳 除 了 BEA/IBM 之 外 的 第 三 领 导 厂 商 地 位, 事 关 Borland 能 否 在 EJB 服 务 器 市 场 存 活 下 去 又 或 是 Borland 与 BEA 成 为 联 军, 一 起 攻 占 其 他 EJB 竞 争 对 手 的 最 后 滩 头 堡 呢? 这 个 答 案 也 许 在 2003 年 会 揭 晓 不 过, 不 管 如 何, 现 在 的 Borland 似 乎 又 在 中 间 件 市 场 找 到 了 另 外 一 线 生 机, 那 就 是.NET 平 台 下 的 中 间 件 战 争 这 个 故 事 将 在 稍 后 "EJB 对 抗 CORBA? 有 趣 的 假 设 " 一 章 中 讨 论 第 八 章 Borland 的 成 长 和 改 变 许 多 人 都 用 过 Borland 的 产 品, 就 像 我 和 正 在 阅 读 本 书 的 读 者 一 样 有 的 人 非 常 喜 欢 Borland, 有 的 人 则 只 把 Borland 当 成 一 个 普 通 的 软 件 公 司 不 可 讳 言, 软 件 人 员 对 于 自 己 使
106 用 的 工 具 或 语 言, 总 有 着 一 股 喜 爱 和 狂 热 当 然, 在 爱 屋 及 乌 的 效 应 下, 他 们 对 于 推 出 工 具 或 语 言 的 公 司 自 然 也 有 了 类 似 的 情 结 对 于 许 多 软 件 人 员 来 说,"Borland" 这 个 名 字 是 非 常 可 敬 的 因 为 Borland 敢 于 对 抗 Microsoft, 历 经 十 几 年 仍 然 屹 立 不 倒, 而 且 还 能 不 断 地 推 出 令 人 惊 喜 的 产 品 这 令 人 印 象 深 刻, 使 人 打 心 底 里 佩 服 当 然,Borland 的 产 品 品 质 有 高 有 低 面 对 优 秀 产 品, 总 会 让 人 高 兴 不 已, 让 人 有 少 康 中 兴 打 败 Microsoft 一 吐 心 中 闷 气 的 愉 悦 ; 相 反, 对 于 并 不 令 人 满 意 的 产 品, 又 有 一 种 恨 铁 不 成 钢 混 杂 着 担 心 Borland 未 来 的 焦 虑 感 这 种 既 期 待 又 悸 动 心 情 上 下 反 复 的 感 觉, 是 那 些 不 喜 欢 Borland 产 品 的 人 所 不 能 体 会 的 在 十 几 年 的 发 展 中,Borland 展 现 了 强 劲 的 生 命 力 在 每 一 个 关 键 时 刻,Borland 以 不 同 的 产 品 技 术 和 策 略 度 过 了 一 次 又 一 次 的 挑 战 和 难 关 虽 然 Borland 始 终 代 表 着 除 了 Microsoft 以 外 的 最 大 独 立 软 件 开 发 厂 商, 可 事 实 上, 她 从 创 立 一 直 到 现 在, 已 经 历 经 了 三 个 重 大 的 转 变 这 些 转 变 不 但 影 响 了 Borland 产 品 的 走 向, 也 影 响 了 Borland 的 组 织 架 构 以 及 未 来 的 发 展 不 知 喜 爱 或 是 关 心 Borland 的 读 者 是 否 注 意 到 这 些 转 变? 在 继 续 阅 读 本 章 的 内 容 之 前, 不 妨 先 回 头 想 想 您 是 否 知 道 这 些 转 变 Philippe Kahn, 产 品 和 技 术 为 主 的 Borland Borland 的 创 始 人 Philippe Kahn 代 表 的 是 Borland 第 一 时 期 在 Philippe Kahn 主 掌 期 间, Borland 从 无 到 有 茁 壮 成 长 至 全 盛, 成 为 全 球 瞩 目 的 世 人 最 看 好 的 软 件 公 司 之 一, 继 而 业 绩 快 速 下 滑 终 至 差 点 解 体 Philippe Kahn 创 造 了 Borland 最 辉 煌 的 软 件 王 国, 也 差 点 成 为 亡 国 之 君 先 不 论 Philippe Kahn 的 功 过 如 何, 总 之, 在 他 主 控 的 时 期,Borland 最 注 重 产 品 和 技 术, 甚 至 日 后 Borland 的 命 运 也 似 乎 和 Philippe Kahn 的 个 性 有 着 密 切 的 关 系 恃 才 傲 物 的 Philippe Kahn 从 来 不 给 美 国 华 尔 街 的 分 析 师 什 么 好 脸 色 1991~1993 年, 是 Borland 最 会 赚 钱 的 时 代, 也 是 Borland 内 部 生 产 力 最 高 峰 的 时 期 当 时 Borland 的 股 票 价 格 高 高 在 上, 最 高 时 期 曾 经 每 股 单 价 超 过 了 100 多 美 元 在 那 个 时 候,Philippe Kahn 几 乎 是 Borland 的 国 王, 拥 有 Borland 大 量 的 股 票 功 成 名 就 的 Philippe Kahn 认 为 Borland 的 成 功 都 是 他 的 功 劳 都 应 归 结 于 他 的 领 导, 况 且 Borland 的 实 力 和 产 品 非 常 坚 强, 不 需 要 为 那 些 华 尔 街 的 分 析 师 进 行 什 么 公 关 工 作,Borland 的 股 票 仍 然 将 是 投 资 大 众 的 最 爱 因 此, 当 华 尔 街 的 分 析 师 希 望 Philippe Kahn 能 够 向 他 们 说 明 Borland 未 来 的 开 发 方 向 以 及 公 司 在 管 理 和 财 务 方 面 的 信 息 时,Philippe Kahn 并 不 理 会 这 些 分 析 师 所 以, 在 Philippe Kahn 时 代,Borland 和 华 尔 街 的 关 系 并 不 好 有 一 次, 华 尔 街 的 分 析 师 邀 请 了 许 多 公 司 的 CEO 演 讲, 其 中 也 包 括 Philippe Kahn 没 有 想 到,Philippe Kahn 的 现 场 演 讲 却 完 全 不 给 这 些 分 析 师 面 子, 还 嘲 笑 他 们 是 笨 蛋, 因 为 Borland 完 全 不 需 要 任 何 的 分 析,Borland 就 是 最 好 的 公 司, 投 资 Borland 准 没 有 错 Philippe Kahn 这 个 自 大 而 且 不 给 面 子 的 行 为 终 于 惹 火 了 许 多 华 尔 街 的 分 析 师 这 不 但 使 Borland 和 华 尔 街 的 关 系 更 为 紧 张, 而 且, 许 多 分 析 师 也 常 常 借 机 修 理 Borland, 宰 杀 Borland 的 股 票 更 糟 糕 的 是, 在 Borland 从 1994 年 逐 渐 走 下 坡 之 后, 许 多 分 析 师 更 是 落 井 下 石, 看 坏 Borland 的 未 来 因 此, 不 时 地 有 Borland 将 会 关 闭 被 并 购 或 是 被 拍 卖 的 不 实 消 息 散 出, 让 Borland 的 股 票 价 格 快 速 地 往 下 落 底 这 都 是 Philippe Kahn 种 下 的 恶 果
107 Philippe Kahn 对 于 产 品 和 技 术 的 坚 持 造 就 了 Borland, 但 是 太 过 坚 持 反 而 变 成 了 刚 愎 自 用, 他 完 全 听 不 进 去 其 他 的 意 见 通 常 来 说,Philippe Kahn 一 定 会 参 加 Borland 许 多 的 产 品 开 发 计 划 会 议 对 于 好 的 或 是 他 喜 欢 的 产 品,Philippe Kahn 坚 定 支 持, 即 使 产 品 可 能 没 有 市 场, 他 也 不 去 理 会 或 者 是 因 为 太 过 于 坚 持 产 品 一 定 要 尽 善 尽 美, 即 使 严 重 地 延 误 了 产 品 应 该 上 市 的 时 期, 造 成 产 品 已 经 没 有 推 出 的 价 值,Philippe Kahn 也 不 管 因 为 Borland 是 他 的, 他 有 100% 的 决 定 权 此 外 Philippe Kahn 在 许 多 会 议 中 太 过 于 强 势, 喜 欢 主 导 产 品 的 研 发, 造 成 产 品 开 发 主 管 不 知 如 何 是 好, 因 此 惹 火 了 许 多 有 天 分 的 研 发 人 员, 致 使 他 们 纷 纷 求 去,Borland C/C++ 的 Eugene Wang 就 是 一 个 很 好 的 例 子 Philippe Kahn 少 年 得 志, 以 至 于 最 后 目 中 无 人 狂 妄 自 大, 终 致 鞠 躬 下 台 不 过,Philippe Kahn 毕 竟 是 所 有 Borland CEO 中 最 重 视 产 品 开 发 的 自 他 之 后, 再 也 没 有 任 何 的 CEO 能 像 他 一 样, 知 道 唯 有 产 品 和 技 术 才 是 Borland 的 命 脉 Philippe Kahn 对 于 Borland 未 来 发 展 的 规 划 也 是 以 产 品 和 技 术 为 主 轴 当 时 的 Borland 最 重 视 软 件 开 发 人 才 工 程 师 和 产 品 经 理 但 从 Philippe Kahn 下 台 之 后, 整 个 形 势 慢 慢 地 有 了 改 变 不 过, 总 体 来 说, 这 个 时 期 的 Borland, 是 我 最 喜 欢 的 Delbert Yocam, 强 势 Marketing 为 主 的 Borland Borland 第 二 个 重 要 的 时 期 应 该 是 Delbert Yocam 上 台 之 后 在 Philippe Kahn 被 赶 出 公 司 之 后,Borland 历 经 了 一 段 没 有 真 正 CEO 的 时 期 在 这 个 时 期, 担 任 CEO 的 人 都 只 是 暂 时 的, 因 为 Borland 董 事 会 决 定 从 业 界 寻 找 有 实 际 大 型 企 业 管 理 的 人 物 接 手 Borland CEO 一 职, 以 带 领 Borland 走 出 低 潮 事 实 上, 从 这 个 时 期 开 始,Borland 已 经 逐 渐 走 向 一 般 大 型 软 件 公 司 的 路 线, 而 不 再 以 充 满 软 件 开 发 者 理 想 的 公 司 自 居, 因 为 此 时 的 Borland 需 要 的 是 大 量 的 收 入 和 有 效 率 的 管 理, 以 拯 救 Borland 濒 临 破 产 的 命 运 Borland 放 弃 了 Philippe Kahn, 建 立 起 Borland 理 想 而 务 实 的 生 存 之 路 寻 寻 觅 觅 了 一 段 时 间 之 后,Borland 终 于 找 上 了 曾 任 Apple 副 总 裁 的 Delbert Yocam 由 于 Delbert 拥 有 丰 富 的 大 型 企 业 经 验, 并 且 对 软 件 公 司 很 有 兴 趣, 因 此 和 Borland 董 事 会 一 拍 即 合, 答 应 担 任 CEO 以 重 振 Borland 事 实 上, 在 Delbert 之 前,Borland 的 董 事 会 也 曾 找 了 许 多 知 名 的 美 国 大 型 企 业 经 理 人, 希 望 他 们 担 任 CEO 但 由 于 当 时 Borland 已 经 岌 岌 可 危, 许 多 专 业 经 理 人 都 不 感 兴 趣, 致 使 Borland 一 直 无 法 找 到 理 想 中 的 CEO 所 以,Delbert 的 应 答 立 刻 让 Borland 董 事 会 精 神 大 振, 认 为 Borland 终 将 起 死 回 生, 回 复 以 往 光 荣 的 历 史 不 过 始 料 未 及 的 是, 数 年 后 的 事 实 证 明, 找 Delbert 担 任 CEO 是 一 个 错 误 的 决 策 不 知 读 者 是 否 发 现 问 题 :Borland 董 事 会 中 应 该 会 有 经 验 丰 富 的 人 选, 为 什 么 不 直 接 从 中 寻 找 而 要 从 外 面 找 人 呢? 其 实, 原 因 也 同 样, 那 就 是 Borland 董 事 会 中 有 资 格 担 任 CEO 的 人 也 认 为 这 个 工 作 艰 巨, 不 敢 轻 易 尝 试 另 外 一 个 问 题 则 是, 既 然 数 年 后 证 明 当 时 找 Delbert Yocam 管 理 Borland 是 一 个 错 误, 那 为 什 么 这 些 经 验 丰 富 的 董 事 会 成 员 却 无 法 预 知 当 初 就 不 应 该 找 他 担 任 Borland 的 CEO 呢? 可 见, 要 成 功 地 管 理 一 个 公 司 是 不 容 易 的, 即 使 是 经 验 丰 富 的 专 业 人 土, 也 不 见 得 能 够 找 到 适 当 的 管 理 人 才 Delbert Yocam 成 为 Borland 的 CEO 之 后, 立 刻 开 始 了 两 项 工 作 第 一 是 把 他 在 Apple
108 的 工 作 团 队 带 入 Borland Delbert 逐 一 安 插 他 的 工 作 团 队 到 Borland 的 每 一 个 重 要 职 位, 以 便 完 全 掌 握 Borland 并 且 执 行 Delbert 的 意 志 Delbert 从 Apple 引 进 Borland 的 人 物, 大 多 属 于 管 理 阶 层 的 经 理 人, 只 有 Rick LeFaivre 属 于 信 息 技 术 方 面 的 人 当 时,Rick LeFaivre 被 任 命 为 Borland 的 CTO(Chief Technology Officer), 负 责 掌 管 Borland 的 信 息 技 术 和 产 品 开 发 Delbert 在 成 功 地 建 立 了 自 己 的 管 理 阶 层 之 后, 第 二 步 便 是 开 始 掌 握 Borland 的 产 品 为 了 实 现 改 造 Borland 的 计 划,Delbert 很 快 就 提 升 Zack 为 Borland Marketing 副 总 裁, 开 始 试 图 改 善 Borland 一 向 积 弱 不 振 的 Marketing 表 现 刚 开 始 接 手 时,Delbert 是 有 心 好 好 地 管 理 Borland 因 此, 在 Delbert 管 理 的 早 期,Borland 还 有 盈 余 除 了 Delbert 个 人 比 较 奢 侈 的 享 受 外, 并 没 有 太 大 的 错 误 我 也 曾 经 在 Borland 的 总 部 听 过 Delbert 对 员 工 讲 话, 那 是 因 为 当 时 的 那 一 季 Borland 表 现 得 很 好,Delbert 很 高 兴 地 鼓 励 大 家 继 续 努 力 演 讲 之 后, 公 司 还 举 行 了 一 个 小 Party, 提 供 有 大 量 的 食 物 和 饮 料 嗯, 当 时 我 还 大 饱 了 一 顿 口 福 不 过, 随 着 时 间 的 过 去, 由 于 Delbert 过 度 干 涉 产 品 的 开 发,Borland 开 始 走 向 亏 损, 公 司 股 价 也 始 终 没 有 出 色 的 表 现 更 麻 烦 的 是,Delbert 砸 下 巨 资 让 Zack 领 导 的 Marketing 部 门 不 但 没 有 太 大 的 表 现, 反 而 招 致 更 多 的 抱 怨, 让 Delbert 管 理 下 的 Borland 烽 火 连 天 麻 烦 处 处 Borland 董 事 会 开 始 质 疑 Delbert 的 管 理 能 力 在 后 期 并 购 工 作 失 败 而 且 Delbert 带 入 的 管 理 团 队 看 到 大 势 不 妙 纷 纷 跳 船 求 去 之 后,Borland 董 事 会 也 终 于 决 定 换 掉 Delbert, 另 觅 新 的 CEO, 自 此 Delbert 的 时 代 宣 告 终 结 基 本 上, 我 认 为 Delbert 想 要 改 善 Borland 在 Marketing 方 面 的 弱 势 是 正 确 的 步 骤, 因 为 Borland 一 直 拥 有 好 的 产 品 和 技 术, 但 在 Marketing 方 面 却 一 直 混 乱 一 团 当 时,Borland 的 收 入 主 力 仍 然 是 Box-Moving 的 产 品 这 就 是 说,Borland 主 要 是 以 销 售 盒 装 的 开 发 工 具 为 主, 尚 未 进 入 以 组 件 和 中 间 件 为 主 的 时 期 因 此, 强 化 Borland 在 市 场 的 知 名 度 以 及 领 导 地 位, 再 配 合 好 的 产 品,Borland 是 大 有 可 为 的 但 是,Delbert 过 于 心 急 地 干 预 产 品 开 发 时 程 和 方 向, 这 不 但 没 有 改 善 Borland Marketing 的 弱 势, 还 把 产 品 搞 坏 了, 实 在 是 赔 了 夫 人 又 折 兵, 也 让 Borland 元 气 大 伤 Dale Fuller, 高 效 率 Sale Force 的 Borland Delbert 离 开 Borland 之 后,Borland 的 CEO 真 空 了 一 段 时 间, 因 为 董 事 会 还 在 搜 寻 适 当 的 人 选, 希 望 他 能 够 带 领 Borland 走 出 困 境 不 过 在 Borland 找 寻 CEO 的 同 时, 软 件 业 界 进 步 和 竞 争 的 脚 步 并 没 有 停 顿 下 来 在 开 发 工 具 和 软 件 产 业 中, 除 了 Box-Moving 的 产 品 之 外, 组 件 和 中 间 件 的 力 量 愈 来 愈 强 BEA 便 是 在 这 段 时 间 通 过 购 买 了 Tuxedo 之 后 快 速 地 在 EJB 应 用 程 序 服 务 器 的 市 场 中 成 长 而 Borland 在 并 购 Visigenic 取 得 了 CORBA 的 技 术 和 产 品, 而 且 也 推 出 EJB 应 用 程 序 服 务 器 之 后,Borland 传 统 的 销 售 Box-Moving 方 式 却 不 适 合 用 来 销 售 中 间 件 因 为 Box-Moving 的 产 品 可 以 靠 Channel 卖 出, 但 是 中 间 件 产 品 却 需 要 搭 配 教 育 培 训 专 业 咨 询 服 务 来 一 起 销 售 另 外, 中 间 件 产 品 需 要 较 长 的 销 售 期 间, 更 需 要 专 门 的 销 售 人 员 来 服 务 客 户, 这 些 都 是 当 时 Borland 没 有 建 立 起 的 公 司 制 度 因 此, 即 使 Borland 拥 有 最 好 的 组 件 和 中 间 件 技 术, 却 因 为 不 知 道 如 何 销 售 而 任 凭 好 时 机 消 逝 此 外, 在 Windows
109 平 台 上 的 开 发 工 具 也 已 经 逐 渐 达 到 了 饱 和 虽 然 Windows 平 台 上 的 一 些 开 发 工 具 厂 商 慢 慢 地 淡 出, 使 Borland 和 Microsoft 能 够 逐 步 蚕 食 其 他 厂 商 留 下 来 的 市 场, 但 无 疑 这 已 经 所 剩 无 多 因 此,Borland 需 要 新 的 市 场 新 的 刺 激, 才 能 够 持 续 成 长 Borland 下 一 任 CEO 面 对 的 挑 战 是 很 艰 辛 的, 因 为 Borland 需 要 再 次 改 变, 以 适 应 销 售 组 件 和 中 间 件 的 产 品 另 外, 新 的 CEO 必 须 开 拓 新 的 市 场, 让 Borland 的 开 发 工 具 产 品 能 够 拥 有 成 长 的 空 间 最 后, 新 的 CEO 必 须 能 够 带 领 Borland 走 出 亏 损, 并 且 想 办 法 拉 高 Borland 的 股 价 Borland 的 董 事 会 在 接 连 找 了 数 个 失 败 的 CEO 之 后, 此 次 对 于 新 的 CEO 特 别 谨 慎, 希 望 新 的 CEO 不 要 再 把 Borland 搞 砸 了 Borland 董 事 会 找 上 Dale Fuller, 是 因 为 当 时 正 值 Internet/Intranet 热 潮 兴 起 之 时 Dale Fuller 成 功 地 创 办 了 自 己 的 公 司 并 且 在 经 营 了 一 段 时 间 之 后 又 漂 亮 地 把 公 司 以 高 价 卖 出 因 此,Borland 董 事 会 对 于 Dale Fuller 高 明 的 手 腕 和 眼 光 深 感 兴 趣, 开 始 接 触 Dale Fuller, 看 看 Dale 是 否 有 意 愿 接 手 Borland 在 卖 掉 了 自 己 的 公 司 之 后,Dale 此 时 也 正 需 要 另 外 一 个 一 展 身 手 的 舞 台, 所 以, 当 Borland 的 董 事 会 和 他 接 触 之 后,Dale 开 始 注 意 Borland 这 家 软 件 公 司, 并 在 思 考 了 一 段 时 间 之 后 决 定 接 任 Borland CEO 当 然, 我 不 知 道 Borland 董 事 会 和 Dale 之 间 的 约 定, 不 过, 在 Dale 开 始 接 任 Borland CEO 之 时 便 有 谣 传, 说 Dale Fuller 是 希 望 以 高 明 的 手 腕 看 看 能 否 为 Borland 找 到 归 属 因 为,Dale Fuller 选 择 了 大 量 的 Borland 股 票 权 而 不 要 求 高 薪, 希 望 用 股 票 选 择 权 大 赚 一 票 和 Corel 的 合 并 案 Dale 上 任 之 后 不 久, 便 逐 渐 接 近 公 元 2000 年 全 球 Internet/Intranet 疯 潮 以 及 股 市 狂 飙 的 时 期 当 时 所 有 和 电 子 商 务 以 及 Linux CORBA 有 关 的 软 件 公 司 的 股 票 都 狂 飙 不 已, 例 如 RedHat BroadVision 和 IOAN 等 但 是 奇 怪 的 是, 虽 然 Borland 也 拥 有 CORBA 的 技 术 和 产 品, 可 是 Borland 的 股 票 却 从 来 没 有 狂 飙 过, 真 是 令 人 不 解 Dale Fuller 眼 看 Linux 概 念 股 都 开 始 狂 飙, 立 刻 决 定 投 入 Linux 市 场, 责 令 Borland 的 RAD 部 门 必 须 立 刻 开 发 出 Linux 上 的 开 发 工 具 ( 这 就 是 Kylix 的 源 起 ), 希 望 能 够 通 过 这 个 举 动 吸 引 全 球 看 好 Linux 的 热 钱 大 买 Borland 的 股 票 此 外,Dale Fuller 和 当 时 Corel 的 CEO Michael Cowpland 经 人 介 绍 之 后, 两 人 一 见 如 故 当 时 Corel 决 定 开 发 Corel Linux, 而 Borland 也 决 定 开 发 Linux 上 的 开 发 工 具, 更 重 要 的 是 两 人 都 看 好 Linux 的 热 潮, 而 且 当 时 Corel 的 股 票 已 经 开 始 上 涨 到 30 多 美 金 因 此,Dale 和 Michael 在 试 探 了 彼 此 合 作 的 意 愿 之 后, 立 刻 一 拍 即 合 公 元 2000 年 的 2 月 7 日,Corel 和 Borland 宣 布 了 两 家 公 司 准 备 合 并 的 消 息 在 Dale Fuller 和 Michael Cowpland 宣 布 合 并 的 消 息 之 后, 原 本 以 为 靠 着 Linux 概 念 和 两 家 公 司 ( 一 个 开 发 Linux 操 作 系 统, 一 个 负 责 Linux 开 发 工 具 ) 的 完 美 组 合, 肯 定 会 带 动 两 家 公 司 股 票 价 格 的 上 涨 没 有 想 到, 消 息 公 布 之 后, 却 不 被 业 界 看 好 因 为 当 时 许 多 业 界 的 专 家 都 已 经 预 测 Corel 撑 不 了 多 久, 原 因 是 Corel 的 产 品 的 市 场 占 有 率 快 速 地 下 降, 花 下 大 把 银 子 推 出 的 Corel Office 根 本 无 法 动 摇 Microsoft Office 的 地 位 此 外,Corel 的 现 金 也 即 将 用 完 情 形 不 妙
110 果 然, 合 并 消 息 发 布 之 后 不 久,Corel 的 股 价 很 快 地 往 下 跌, 而 且 居 然 跌 到 比 Borland 还 低 至 此,Borland 和 Corel 的 合 并 应 该 算 是 破 局 了, 因 为 Borland 不 可 能 和 比 自 己 价 值 还 惨 的 公 司 合 并 于 是 在 公 元 2000 年 5 月 17 日,Dale Fuller 终 于 叫 停 了 这 桩 合 并 案 Dale 提 出 的 理 由 有 三 : Corel 2000 年 第 1 季 的 收 入 锐 减 Corel 宣 布 接 下 来 的 2 个 Quarter 的 情 形 也 是 一 样 Corel 宣 布 在 3 个 月 之 后 现 金 将 会 用 完 当 时 Borland 虽 然 亏 损, 但 是 仍 然 握 有 大 量 的 现 金, 而 Corel 却 是 现 金 即 将 用 完 如 果 不 停 止 这 个 合 并 案, 那 么 Corel 也 很 快 会 把 Borland 的 现 金 耗 尽, 到 那 个 时 候 Borland 便 万 劫 不 复 了 因 此 Dale 毅 然 坚 决 地 停 止 这 桩 合 并 交 易, 并 且 付 给 Corel 一 笔 金 钱 作 为 取 消 合 并 的 赔 偿 在 此 事 件 之 后,Michael Cowpland 也 从 Corel 辞 去 了 CEO 一 职 而 Dale Fuller 在 遭 遇 了 这 个 挫 折 并 且 无 法 找 到 适 当 的 合 并 公 司 之 后, 决 定 开 始 改 变 自 己 的 角 色, 准 备 再 次 转 变 Borland, 让 Borland 成 为 适 合 当 前 竞 争 的 软 件 公 司 开 始 打 造 成 销 售 的 Borland Dale Fuller 在 抛 开 了 被 合 并 或 是 并 购 其 他 公 司 的 想 法 之 后, 第 一 件 事 情 便 是 开 始 回 头 检 视 Borland 的 状 况 和 产 品 线, 看 看 为 什 么 Borland 会 陷 入 亏 损 的 地 步 以 及 如 何 让 Borland 重 振 雄 风 其 实, 当 时 Borland 虽 然 处 于 亏 损, 但 拥 有 的 现 金 仍 然 相 当 充 裕, 有 稳 定 而 大 量 的 使 用 者 群 组, 并 没 有 亏 损 的 理 由 因 此,Dale 首 先 决 定, 稳 定 Borland 开 发 团 队 的 军 心, 弥 补 Delbert Yocam 对 于 Borland 产 品 带 来 的 伤 害, 并 且 大 幅 整 理 Borland 的 管 理 阶 层, 尝 试 为 Borland 建 立 一 个 更 有 效 率 的 专 业 管 理 团 队 此 外,Dale 大 刀 阔 斧 地 进 行 了 下 列 工 作 : 稳 定 开 发 工 具 产 品 线, 回 归 产 品 开 发 的 本 质 扩 充 新 的 产 品 线 建 立 专 业 销 售 团 队 他 首 先 将 Borland 的 产 品 线 划 分 为 三 个 主 要 部 分, 分 别 是 负 责 Windows/Linux RAD 开 发 工 具 的 RAD 部 门 ; 负 责 Java 开 发 工 具 的 Java 部 门 ; 以 及 负 责 组 件 和 中 间 件 的 Enterprise 部 门 每 一 个 部 门 都 建 立 了 明 确 的 管 理 组 织 架 构, 力 求 改 善 Delbert 时 混 乱 的 产 品 管 理 第 二 项 工 作 便 是 扩 充 新 的 产 品 线 由 于 Microsoft 在 Windows 平 台 上 占 尽 了 优 势, 虽 然 Borland 仍 可 和 Microsoft 一 搏, 但 Dale 认 为,Borland 如 果 要 持 续 成 长, 必 须 拥 有 更 多 的 收 入 因 此,Dale 决 定 在 Linux 上 增 加 新 的 产 品, 除 了 原 先 Linux 上 的 开 发 工 具 之 外, 也 要 开 发 下 一 代 产 品 Dale 发 现 Borland 拥 有 CORBA 和 EJB 的 技 术 和 产 品, 但 是 却 没 有 这 方 面 专 业 的 销 售 团 队, 使 用 的 仍 然 是 传 统 的 销 售 方 法, 造 成 了 这 些 产 品 叫 好 不 叫 座 的 状 况, 迟 迟 无 法 打 开 市 场
111 因 此,Dale 执 行 的 第 三 个 计 划, 便 是 为 Borland 建 立 专 业 的 销 售 团 队, 使 用 适 当 的 方 式 销 售 CORBA 和 EJB 产 品 于 是,Dale 开 始 在 Borland 的 销 售 区 域 中 建 立 专 业 的 管 理 和 销 售 团 队, 并 且 开 始 改 变 Borland 的 一 些 公 司 政 策, 以 便 配 合 新 的 销 售 策 略 Dale 的 努 力 果 然 逐 渐 显 现 出 成 效 来 Borland 从 2000 年 开 始 便 逐 渐 转 亏 为 盈, 而 且 营 业 额 不 断 增 加, 进 而 创 造 了 Borland 在 2001/2002 年 连 续 获 利 和 营 收 上 升 的 表 现, 在 全 世 界 一 片 不 景 气 的 情 形 中 呈 现 出 亮 丽 的 成 果 Borland 的 年 营 收 额 从 当 时 Delbert 的 180 几 Million 美 金 成 长 到 现 在 超 过 220 几 Million 美 金, 开 始 愈 来 愈 接 近 10 几 年 前 Borland 全 盛 时 期 的 营 业 额 了 ` Dale 改 造 Borland 的 行 动 也 影 响 了 Borland 的 日 常 工 作 方 式 例 如, 在 我 以 前 为 Borland 工 作 时, 除 了 负 责 产 品 和 技 术 之 外, 也 兼 做 一 些 Presale 的 工 作, 因 为 那 时 Borland 没 有 正 式 的 Sales 人 员, 所 以 技 术 人 员 有 时 也 必 须 客 串 一 下 Sales 但 是 在 Dale 引 入 了 专 业 的 销 售 人 员 之 后, 有 许 多 工 作 现 在 都 是 由 专 门 的 Sales 人 员 负 责, 技 术 人 员 则 配 合 Sales 进 行 工 作 现 在 的 Borland 编 制 中 有 了 以 前 没 有 的 Sales 团 队 Dale 的 改 造 除 了 增 加 了 Borland 的 营 收 之 外, 也 改 变 了 Borland 的 组 织 结 构 Sales 人 员 和 Sales 部 门 现 在 是 Borland 强 势 的 力 量, 和 以 往 Philippe Kahn 时 以 技 术 人 员 为 主 以 及 Delbert Yocam 时 以 Marketing 为 主 完 全 不 一 样 现 在 Borland 的 技 术 人 员 和 Marketing 人 员 必 须 配 合 Sales 来 工 作, 所 有 员 工 的 表 现 也 以 Sales 绩 效 为 衡 量 的 根 据 虽 然 我 非 常 怀 念 Borland 以 往 的 时 光, 但 是 我 也 知 道 这 个 转 变 是 不 可 避 免 的, 因 为 这 是 让 Borland 更 有 竞 争 力 的 必 要 步 骤 只 是 我 认 为, 太 过 强 势 的 Sales 在 长 期 来 说 仍 然 不 太 好 Dale 应 该 在 Borland 逐 渐 成 为 有 效 率 的 销 售 公 司 之 后, 再 回 头 好 好 加 强 在 技 术 和 研 发 方 面 的 力 度, 让 Borland 能 够 再 开 发 出 几 个 划 时 代 的 伟 大 产 品 在 Dale Fuller 成 功 地 打 造 富 有 成 效 的 销 售 企 业 之 后,Borland 不 但 每 季 都 赚 钱, 更 重 要 的 是, 在 2001/2002 年 全 世 界 不 景 气 中 居 然 还 不 断 地 成 长 同 时,Borland 开 始 在 欧 洲 和 亚 洲 快 速 地 成 长, 不 断 带 动 Borland 营 收 创 造 新 高 这 也 让 许 多 专 家 跌 破 了 眼 镜, 创 下 软 件 公 司 在 不 景 气 的 气 候 中 还 持 续 成 长 的 范 例 Borland 的 股 票 价 格 虽 然 没 有 狂 飙, 但 是 已 经 比 许 多 当 时 有 名 的 软 件 公 司 的 股 价 还 高 Dale 成 功 地 完 成 了 Borland 第 三 次 的 转 变 Borland 除 了 技 术 和 产 品 之 外, 同 时 也 成 为 拥 有 高 效 率 管 理 和 销 售 的 公 司, 的 确 是 和 以 前 不 一 样 了 现 在 Borland 手 中 不 但 拥 有 大 量 的 现 金 可 以 并 购 对 Borland 有 帮 助 的 小 公 司, 更 有 许 多 知 名 的 软 件 大 公 司 现 在 都 和 Borland 合 作 例 如,Sybase 和 Borland 合 作 推 出 了 JBuilder-Sybase Edition JBuilder-WebLogic Edition 从 2000 年 到 2002 年,Borland 的 确 打 了 一 场 漂 亮 的 胜 战 第 四 波 的 演 变 Borland 在 历 经 了 三 波 的 改 变 之 后, 已 经 逐 渐 成 了 一 个 比 较 典 型 的 美 国 软 件 公 司 虽 然 不 再 有 Philippe Kahn 时 代 以 开 发 者 为 主 带 有 理 想 主 义 色 彩 的 软 件 公 司 形 象, 但 是 在 本 质 上 比 以 前 好 多 了 特 别 是 经 Dale Fuller 大 力 整 顿 之 后,Borland 的 营 运 效 率 比 Delbert 时 代 好 上 数 倍 不 过,Borland 虽 然 比 以 前 更 有 效 率 更 有 竞 争 力, 但 是 却 得 面 对 比 以 前 更 为 险 恶 的 生 存 环 境 和 竞 争
112 首 先 是 软 件 平 台 和 技 术 的 改 朝 换 代 虽 然 Borland 努 力 在 Java 方 面 有 了 一 定 的 成 就, 但 是 又 面 临 了 Microsoft.NET 的 推 出 其 实,Borland 一 开 始 也 为 了 是 否 要 跟 随 Microsoft 进 入.NET 新 平 台 而 犹 豫 不 决, 因 为 Borland 当 时 想 要 趁 Linux 的 热 潮 改 走 跨 平 台 的 方 向, 而 不 是 在 Windows 平 台 辛 苦 地 和 Microsoft 竞 争, 这 也 是 为 什 么 Borland 在.NET 方 面 进 入 得 比 较 缓 慢 的 原 因 不 过, 随 着 Linux 在 2000/2001 年 从 爆 炸 性 成 长 逐 渐 回 归 成 正 常 的 发 展 之 后, Borland 很 快 发 现, 光 靠 Java 和 Linux 市 场 将 无 法 获 得 足 够 的 利 润 另 外, 在 所 有 知 名 的 信 息 研 究 机 构 的 分 析 都 指 出.NET 在 未 来 将 和 Java 一 起 占 有 相 当 大 比 重 的 市 场 之 后,Borland 才 知 道 是 不 可 以 失 去.NET 市 场 的 于 是,Borland 这 时 匆 匆 地 投 入 了.NET 产 品 的 研 发 第 二 则 是 随 着 软 件 利 润 的 趋 于 下 降,Borland 必 须 想 办 法 维 持 公 司 的 成 长, 开 辟 新 的 产 品 线 从 2000 年 开 始,Borland 推 出 并 且 扩 充 了 Kylix 产 品, 研 发 了 新 的.NET 产 品, 并 且 有 数 个 内 部 不 公 开 的 技 术 和 产 品 在 进 行 中 这 些 行 动 让 Borland 投 注 了 许 多 的 资 源, 是 否 能 够 成 功, 是 对 Borland 开 发 产 品 的 功 力 以 及 公 司 是 否 能 够 在 市 场 和 策 略 方 面 合 理 搭 配 的 考 验 在 现 在 这 个 时 代 推 产 品, 已 经 不 像 数 年 前 只 要 品 质 够 好 就 可 以, 还 需 要 其 他 许 多 方 面 的 配 合 第 三 则 是 随 着 软 件 技 术 愈 来 愈 多, 应 用 也 愈 来 愈 多 元 化 这 使 得 产 品 的 潜 在 客 户 群 被 分 散 如 何 凝 聚 使 用 者 成 了 开 发 工 具 厂 商 重 要 的 工 作 Borland 除 了 需 要 巩 固 原 有 的 使 用 者 外, 也 急 需 开 发 新 的 潜 在 客 户 才 能 够 达 到 经 济 客 户 规 模 因 此,Borland 必 须 在 使 用 者 族 群 方 面 建 立 良 好 的 支 持 社 群, 并 且 强 化 和 使 用 者 互 动 的 关 系 第 四,Borland 除 了 需 要 持 续 增 加 效 率 之 外, 回 归 基 本 面 好 好 地 着 重 产 品 开 发 并 且 建 立 坚 强 的 开 发 者 社 群 是 最 重 要 的 工 作 软 件 高 科 技 公 司 的 命 运 如 果 读 者 是 在 信 息 产 业 经 历 了 一 段 时 间, 那 么 可 以 观 察 到 目 前 著 名 软 件 公 司 在 经 营 上 风 格 的 异 同 每 一 家 公 司 在 成 立 之 初, 创 办 者 都 有 特 定 的 理 想 或 是 技 术, 软 件 公 司 也 一 样 不 过 随 着 公 司 的 成 长 和 发 展, 软 件 公 司 的 风 格 却 逐 渐 地 出 现 差 异 我 说 的 风 格 当 然 不 是 指 每 一 家 的 企 业 文 化, 这 当 然 会 有 不 同, 我 指 的 是 软 件 公 司 的 创 始 人 目 前 是 否 仍 然 是 这 家 公 司 的 主 要 负 责 人 美 国 企 业 喜 欢 并 购, 许 多 公 司 的 创 始 人 也 喜 欢 在 公 司 有 了 一 点 成 就 之 后 立 刻 卖 出 公 司, 以 股 票 换 钞 票, 许 多 的 美 国 公 司 董 事 会 也 喜 欢 动 不 动 就 换 CEO 这 造 成 许 多 公 司 的 CEO 只 注 重 炒 短 线 的 工 作, 只 想 把 公 司 股 票 价 格 炒 高, 然 后 卖 了 公 司 就 闪 人 如 此 做 法 会 让 软 件 公 司 的 产 品 和 营 运 快 速 地 走 下 坡 路 Borland 就 历 经 过 这 种 CEO 但 是 请 读 者 观 察, 只 要 是 公 司 创 办 人 仍 然 还 在 掌 舵 或 是 担 任 重 要 职 位 的 软 件 公 司, 对 于 产 品 就 会 坚 持, 不 会 随 意 以 炒 股 票 来 恶 搞 例 如 以 Microsoft 来 说, 虽 然 这 是 一 家 饱 受 争 议 的 公 司, 但 是 她 的 创 始 人 Bill Gates 仍 然 掌 握 Microsoft, 因 此 Microsoft 仍 然 在 源 源 不 断 地 开 发 产 品 和 提 出 新 的 构 想 不 管 这 些 产 品 是 好 是 坏, 我 们 都 不 可 否 认,Bill Gates 仍 然 在 努 力 地 实 现 他 的 理 想, 即 使 一 般 大 众 都 认 为 这 是 狼 子 野 心 这 让 Microsoft 持 续 地 保 有 活 力 和 竞 争 力 再 比 如,Oracle 的 创 始 人 Larry Ellison 仍 然 执 掌 Oracle 虽 然 Larry Ellison 也 是 属 于 好
113 大 喜 功 的 人, 但 是 我 们 不 可 否 认, 在 Larry 的 领 导 下,Oracle 仍 然 振 奋 向 前 这 些 现 象 可 以 从 其 他 的 正 在 力 争 上 游 的 软 件 公 司 看 出, 例 如 Developer Express Atozed software 以 及 目 前 正 和 Microsoft 在 多 媒 体 市 场 打 得 不 亦 乐 乎 的 RealPlayer 等, 这 些 公 司 的 特 点 便 是 对 于 产 品 的 努 力 和 坚 持 反 观 一 些 走 下 坡 或 是 关 闭 的 公 司, 其 中 许 多 都 是 由 于 公 司 的 创 始 人 离 开 而 导 致 例 如 以 前 著 名 的 数 据 库 厂 商 Informix, 就 是 由 于 创 始 人 Roger Sippl 卖 掉 Informix 的 股 票 另 起 炉 灶 后 继 者 对 于 公 司 没 有 热 忱, 最 后 因 为 经 营 不 善 而 终 于 成 为 历 史 Informix 如 此,Netscape 又 何 尝 不 是 呢?Netscape 被 American Online 并 购 之 后, 快 速 地 走 下 坡 路 前 一 阵 子 我 看 到 的 新 闻 消 息 指 出, 目 前 Netscape 在 全 世 界 的 占 有 率 只 剩 下 3% 这 个 曾 经 占 有 超 过 90% 市 场 并 给 予 Microsoft 强 烈 威 胁 的 浏 览 器 巨 人, 也 在 创 始 人 离 开 之 后 消 声 匿 迹, 逐 渐 被 人 淡 忘, 真 是 令 人 不 胜 唏 嘘 Philippe Kahn 的 Borland 是 只 会 做 产 品 的 公 司,Delbert Yocam 时 的 Borland 只 会 短 线 操 作, 以 致 让 Borland 快 速 走 下 坡 路 现 在,Borland 在 Dale Fuller 的 主 掌 之 下 好 不 容 易 地 回 稳, 并 且 在 2001/2002 年 全 世 界 不 景 气 之 中 仍 然 呈 现 稳 健 的 成 长, 算 是 相 当 难 能 可 贵 的 Dale Fuller 虽 然 不 是 Borland 的 创 始 人, 但 是 似 乎 对 于 经 营 Borland 真 的 发 生 了 兴 趣, 愿 意 管 理 Borland, 也 愿 意 投 入 心 力 规 划 Borland 的 产 品 线, 是 相 当 认 真 的 CEO Borland 在 经 过 了 多 年 之 后 终 于 找 到 了 一 位 不 错 的 CEO, 希 望 Dale Fuller 能 够 以 公 司 创 始 人 般 的 热 忱, 带 领 Borland 再 创 另 外 一 个 高 峰 当 然, 公 司 创 始 人 是 否 仍 然 是 软 件 公 司 的 重 要 人 物 不 是 判 断 一 间 软 件 公 司 唯 一 的 指 针 如 果 软 件 公 司 能 够 适 当 地 吸 引 专 业 的 管 理 人 才 来 改 善 公 司 的 体 制 是 很 好 的 事 情, 因 为 这 样 的 公 司 有 可 能 结 合 创 新 的 理 想, 对 产 品 的 坚 持 以 及 有 效 率 的 专 业 管 理, 这 是 对 公 司 以 及 使 用 者 最 好 的 保 障 没 有 了 创 始 人 的 存 在, 软 件 公 司 总 是 少 了 一 股 对 于 理 想 的 坚 持, 不 是 吗? Borland Conference Borland Conference 对 于 Borland 的 使 用 者 来 说 是 非 常 重 要 的 事 件 就 像 回 教 徒 一 生 一 定 要 去 麦 加 朝 圣 一 样,Borland Conference 也 是 许 多 Borland 开 发 者 想 要 参 加 的 重 要 技 术 研 讨 会 Borland Conference 已 经 有 了 相 当 久 的 历 史, 在 美 国 也 算 是 评 价 很 高 的 技 术 研 讨 会, 每 年 几 乎 都 会 被 专 业 媒 体 评 选 为 最 值 得 参 加 的 Conference 之 一 我 一 直 都 非 常 喜 欢 参 加 Borland Conference, 因 为 这 绝 对 是 超 值 的 盛 会 Borland Conference 最 近 几 年 都 维 持 一 个 惯 例, 那 就 是 一 年 在 美 国 东 海 岸 举 行, 下 一 年 在 美 国 西 海 岸 揭 幕 我 曾 很 幸 运 地 参 加 过 3 次 Borland Conference, 分 别 是 和 1999, 每 一 次 参 加 都 收 获 满 满 参 加 Borland Conference 除 了 可 以 聆 听 许 多 精 彩 的 Seminar 之 外, 也 可 以 遇 见 许 多 信 息 界 重 要 的 人 物, 例 如 我 就 在 Borland Conference 中 见 过 Bruce Eckcle Martin Fowler 和 Peter Codd 当 然, 也 可 以 和 Delphi C++Builder 和 JBuilder 的 开 发 团 队 见 面 而 且 和 他 们 交 谈 互 动 通 过 和 这 些 R&D 研 发 小 组 见 面, 我 也 认 识 了 许 多 Borland R&D 中 重 要 的 人 物,Chuck Danny 和 Blake 等 也 只 有 在 Borland Conference 中 才 有 机 会 有 比 较 多 的 时 间 和 他 们 交 谈, 否 则 就 必 须 飞 到 Borland 总 部 Scott Valley 才 能 见 到 他 们 了
114 早 期 的 BorCon 是 比 较 偏 向 开 发 工 具 的 Seminar, 每 一 个 开 发 工 具 各 自 提 供 多 场 的 Seminar 让 参 加 者 选 择 因 此, 在 BorCon 上 很 容 易 就 可 以 从 参 加 者 的 人 数 和 反 映 来 了 解 Borland 每 一 个 开 发 工 具 产 品 在 市 场 上 的 表 现 C/C++ 的 参 加 者 在 较 早 的 BorCon 中 占 据 了 大 部 分 的 Seminar, 每 一 场 C/C++ Seminar 都 是 挤 得 水 泄 不 通 但 是 在 1995 年 Borland 推 出 了 Delphi 之 后, 每 一 年 参 加 BorCon 的 人 中 Delphi 的 使 用 者 占 据 了 愈 来 愈 多 的 比 例, 而 C/C++ 的 参 加 人 数 反 而 快 速 地 下 降 一 直 到 了 最 近 几 年,Delphi 的 人 数 还 是 BorCon 中 占 有 最 大 比 例 的 群 组 但 是, 在 BorCon 的 参 加 者 中,Java 的 开 发 者 也 占 有 愈 来 愈 高 的 比 例, 由 此 可 见 开 发 工 具 和 语 言 使 用 的 趋 势 在 Borland 陆 续 取 得 了 组 件 和 中 间 件 技 术 推 出 CORBA EJB 产 品 之 后, 最 近 数 年 的 BorCon 更 是 呈 现 了 多 元 化 的 发 展 BorCon 中 的 Seminar 愈 来 愈 多, 同 时 也 有 许 多 的 Seminar 是 围 绕 着 COM+ CORBA EJB 以 及 软 件 设 计 开 发 和 管 理 的 主 题 在 早 期 参 加 BorCon 时, 我 大 都 选 择 参 加 开 发 工 具 和 技 术 的 Seminar 但 是 到 了 后 期, 却 非 常 喜 欢 参 加 软 件 设 计 和 架 构 的 Seminar, 因 为 在 这 些 Seminar 中 可 以 听 到 非 常 多 的 宝 贵 的 知 识 和 经 验, 这 是 很 难 在 其 他 地 方 能 听 到 的 我 喜 欢 收 集 BorCon 的 T-Shirt, 不 但 免 费 好 穿, 更 有 纪 念 价 值 现 在 我 仍 然 拥 有 一 件 1995 年 的 紫 色 的 BorCon T-Shirt, 夏 天 时 穿 在 身 上 好 不 神 气 每 一 届 BorCon 都 有 专 门 设 计 的 Logo 和 代 表 本 次 BorCon 的 T-Shirt 下 面 是 我 收 集 的 一 些 BorCon Logo 和 参 加 BorCon 的 小 花 絮, 与 读 者 一 起 分 享 1998 年, 我 参 加 了 在 丹 佛 举 办 的 BorCon 不 过 在 丹 佛 实 在 有 些 无 聊, 除 了 白 天 的 Seminar 之 外, 晚 上 不 知 道 做 些 什 么 丹 佛 的 BorCon 结 束 之 后,Borland 又 另 外 举 行 了 内 部 工 程 师 训 练, 因 此 我 总 共 在 丹 佛 呆 了 一 个 多 星 期, 都 快 发 霉 了 好 在 是 和 朋 友 一 起 参 加 的, 彼 此 间 还 有 个 伴 另 外 也 巧 遇 了 几 个 从 台 湾 去 的 人, 居 然 其 中 还 有 相 识 的, 感 觉 特 别 温 暖 费 城 的 BorCon 是 非 常 令 人 难 忘 的 我 和 李 匡 正 (Tom Lee) 在 赴 会 途 中 被 整 惨 了 先 是 从 台 湾 坐 飞 机 到 Newark 机 场, 因 为 空 中 交 通 拥 塞, 飞 费 城 的 飞 机 在 延 滞 了 4 个 多 钟 头 之 后 才 取 消, 我 只 好 和 Tom Lee 从 Newark 坐 巴 士, 这 样 又 花 了 4 个 钟 头 才 到 费 城 当 时 香 港 和 新 加 坡 的 同 事 还 在 苦 等 我 和 Tom Lee, 很 久 未 到, 以 为 我 们 出 事 了, 吓 出 了 一 身 冷 汗 但 在 费 城 参 加 BorCon 时 却 很 愉 快 因 为 一 行 中 有 高 官 相 随, 所 以 吃 了 费 城 最 好 的 牛 排, 也 抽 了 点 时 间 游 览 费 城 市 区 但 是 从 费 城 回 台 湾 又 是 噩 梦 一 场 因 为 从 费 城 到 LA 的 班 机 延 误, 所 以 当 我 和 Tom Lee 到 了 LA 机 场 之 后, 回 台 湾 的 班 机 已 经 出 发 了, 而 且 随 后 的 一 班 飞 机 也 没 有 空 位 害 得 我 和 Tom 在 LA 机 场 空 等 了 12 个 多 钟 头, 才 搭 上 回 台 湾 的 飞 机 更 惨 的 是 行 李 却 已 经 直 接 Check-in, 而 我 的 长 袖 衣 物 都 在 check-in 的 行 李 中, 害 得 我 在 LA 机 场 差 点 被 冻 僵 我 很 想 参 加 2002 的 这 次 BorCon, 因 为 很 想 看 看 Anaheim 市 的 模 样 当 然, 这 也 是 因 为 Anaheim 有 一 个 Anaheim 天 使 队,Tom Lee 很 喜 欢 这 支 球 队 不 过, 由 于 当 时 我 正 忙 于 工 作, 无 法 分 身 参 加, 实 在 遗 憾 2003 年 将 是 BorCon 20 周 年 的 庆 典 听 说 这 次 Borland 将 要 隆 重 举 办, 提 供 最 丰 富 的 BorCon 我 也 想 参 加 不 可 错 过 的 BorCon 2003, 拿 几 件 T-Shirt 作 为 永 远 的 纪 念 想 想, 一 个 技 术 Conference 能 够 举 办 20 年, 可 真 是 不 容 易, 不 知 道 参 加 的 时 候, 是 否 能 够 有 机 会 在 异 乡 巧 遇 我 的 读 者 呢?
115 并 购 自 保 和 集 团 战 商 场 真 是 诡 谲 多 变, 没 有 人 知 道 会 发 生 什 么 事 情 但 是,2002 年 底, 数 个 令 人 震 惊 的 软 件 公 司 并 购 案 可 能 会 大 大 地 影 响 2003 年 软 件 公 司 的 竞 争, 也 有 可 能 影 响 到 我 们 每 一 个 人 的 饭 碗 200l/2002 是 Borland 绝 处 逢 生 营 运 蒸 蒸 日 上 的 时 段 Borland 靠 着 在 Java 开 发 工 具 市 场 所 向 披 靡 的 机 会 连 续 11 季 产 生 盈 余, 并 且 在 大 多 数 软 件 公 司 赔 钱 的 情 形 中 快 速 地 累 积 了 大 量 的 现 金 虽 然 就 公 司 营 运 的 角 度 来 看, 拥 有 大 量 未 使 用 的 现 金 不 见 得 是 好 事 情 但 是, 在 这 段 不 景 气 的 时 间 中,"Cash is King", 拥 有 现 金 就 是 拥 有 力 量 在 蓄 积 了 强 大 的 能 量, 并 且 思 索 了 如 何 在 Java 和.NET 平 台 的 竞 争 下 找 出 一 个 康 庄 大 道 后,Borland 终 于 在 2002 年 底 出 手 了 首 先,Borland 确 定 了 在.NET 上 的 开 发 之 路, 誓 言 成 为 除 Microsoft 之 外 最 好 的.NET 开 发 工 具 和 企 业 解 决 方 案 提 供 厂 商 此 外,Borland 也 决 定 在 Java 战 线 上 往 上 再 提 升 一 个 层 次, 拉 大 和 对 手 的 竞 争 距 离, 以 确 保 Borland 在 Java 平 台 的 优 势 由 于 未 来 软 件 的 竞 争 势 必 是 Java 和.NET 两 大 平 台 主 宰, 因 此, 如 何 在 两 大 平 台 保 持 竞 争 力, 是 每 一 个 软 件 厂 商 都 必 须 严 肃 面 对 的 坦 白 地 说, 别 说 是 Borland, 现 在 已 经 没 有 任 何 公 司 能 够 再 建 立 一 个 新 的 平 台 同 SUN 的 Java 和 Microsoft 的.NET 竞 争 了 所 有 的 软 件 厂 商 都 必 须 在 这 两 个 平 台 下 提 供 最 好 的 工 具 技 术 和 解 决 方 案, 软 件 厂 商 如 何 同 手 握 平 台 主 宰 力 量 的 SUN/Microsoft 竞 争, 这 便 是 每 一 个 软 件 厂 商 能 否 生 存 下 去 的 重 要 话 题 对 于 Borland 来 说, 既 然 无 法 取 得 系 统 平 台 的 优 势, 而 单 靠 工 具 以 " 点 " 为 单 位 作 战 的 时 代 也 已 经 过 去, 如 何 进 行 " 面 " 的 全 面 备 战 便 是 Borland 必 须 思 考 的 战 略 问 题 还 好,Borland 还 是 有 一 些 聪 明 的 人, 想 到 了 既 然 如 果 无 法 争 取 到 系 统 平 台 的 优 势, 那 么 为 什 么 不 在 系 统 平 台 上 提 供 一 个 " 中 立 的 应 用 平 台 " 呢? 这 真 是 一 个 好 想 法, 并 且 也 值 得 一 试 所 谓 " 应 用 平 台 ", 是 指 Borland 要 在 Java 和.NET 上 提 供 全 方 位 的 软 件 解 决 方 案 这 也 就 是 说,Borland 除 了 以 往 的 开 发 工 具 中 间 件 和 J2EE 之 外, 将 提 供 完 整 的 软 件 供 应 链 在 2002 年 的 产 品 线 中, 要 想 实 现 软 件 供 应 链,Borland 仍 然 有 很 大 的 缺 陷 例 如 Borland 几 乎 只 有 开 发 工 具 和 后 端 的 中 间 件, 缺 少 了 效 率 调 整 整 合 测 试 Modeling 工 具 自 动 测 试 等 软 件 和 工 具, 更 不 用 说 许 多 在 中 间 件 方 面 的 服 务, 例 如 Messaging 服 务 Transaction 服 务 等 这 些 工 具 都 是 小 规 模 的 软 件, 因 此 Borland 面 临 了 是 否 需 要 自 己 开 发 还 是 通 过 其 他 途 径 来 取 得 所 缺 少 的 软 件 的 抉 择 其 实,Borland 面 临 的 选 择 已 经 不 多 而 且 很 明 显 了 如 果 Borland 决 定 自 己 开 发 从 未 进 入 过 的 软 件 市 场, 那 不 仅 需 要 花 费 长 期 的 开 发 时 间, 而 且 在 开 发 出 来 之 后, 又 必 须 面 对 市 场 已 经 存 在 的 竞 争 对 手, 胜 算 不 大 且 缓 不 济 急, 等 到 Borland 开 发 了 新 的 软 件 之 后 可 能 已 经 来 不 及 因 此,Borland 决 定 通 过 现 金 并 购 的 方 式 来 取 得 这 方 面 软 件, 所 以 展 开 了 稍 后 的 一 系 列 Borland 大 并 购 行 动, 继 而 也 震 惊 了 软 件 界, 引 发 了 另 一 波 软 件 公 司 并 购 的 热 潮
116 并 购 行 动 的 展 开 Borland 出 击 的 第 1 步, 便 是 根 据 Blake Stone 的 建 议, 并 购 VMGEAR 公 司 的 OptimizeIt 产 品 线 由 于 JBuilder 已 经 是 Java 开 发 工 具 市 场 的 老 大, 许 多 程 序 员 经 常 会 询 问 为 什 么 Borland 没 有 提 供 Java 效 率 调 整 方 面 的 工 具, 也 都 非 常 希 望 Borland 能 够 为 Java 程 序 员 提 供 这 样 的 工 具 当 时, 市 场 上 Java 效 率 调 整 工 具 主 要 是 由 Sitraka 的 JProbe 和 VMGEAR 的 OptimizeIt 在 进 行 激 烈 的 竞 争 在 Blake 看 好 OptimizeIt 的 情 形 下,Borland 很 快 就 决 定 并 购 VMGEAR, 因 为 OptimizeIt 不 但 可 以 让 JBuilder 的 战 斗 力 更 为 坚 强, 还 能 够 帮 助 Borland 填 补 欲 形 成 的 软 件 供 应 链 的 缺 陷 2002 年 1 月 22 日,Borland 以 现 金 快 速 收 购 了 VMGEAR, 很 快 成 为 Java 效 率 调 整 工 具 的 领 导 者,OptimizeIt 也 很 快 整 合 到 JBuilder 中 并 且 扩 充 功 能, 增 加 了 OptimizeIt Suite 这 个 新 的 产 品 Borland 并 购 VMGEAR 并 且 在 很 短 的 时 间 内 便 推 出 新 的 OptimizeIt 产 品, 可 见 这 次 是 玩 真 的, 而 不 像 以 前 往 往 在 并 购 了 新 的 公 司 和 软 件 之 后 便 放 在 那 里 不 闻 不 问 在 购 得 了 VMGEAR 之 后 不 久, 同 年 的 10 月 9 日,Borland 以 更 大 的 动 作 收 购 了 闻 名 的 团 队 开 发 以 及 软 件 管 理 公 司 Starbase 这 个 收 购 行 动 当 时 出 乎 许 多 人 和 软 件 公 司 的 意 料 因 为 在 2000 年,Starbase 公 司 的 市 值 还 超 过 Borland, 其 股 票 的 价 格 也 远 远 高 出 Borland 的 股 票 价 格 没 有 想 到 两 年 之 后,Borland 居 然 有 能 力 并 购 Starbase 由 此 可 见 两 年 来 Borland 和 许 多 软 件 公 司 势 力 的 消 长 Borland 购 得 Starbase 公 司 之 后, 意 欲 提 供 软 件 应 用 平 台 的 计 划 也 隐 约 可 见 了 在 Borland 当 时 的 计 划 中, 软 件 应 用 平 台 应 该 包 含 需 求 分 析 工 具 分 析 和 设 计 工 具 开 发 工 具 测 试 工 具 以 及 执 行 应 用 软 件 的 服 务 器 工 具 Borland 购 得 了 Starbase 之 后, 就 拥 有 了 Starbase 的 团 队 开 发 工 具 以 及 软 件 需 求 分 析 和 管 理 工 具, 再 加 上 从 VMGEAR 取 得 的 效 率 调 整 工 具 Borland 自 己 的 开 发 工 具 以 及 CORBA/J2EE 服 务 器, 距 离 Borland 想 要 形 成 的 软 件 应 用 平 台 仍 然 缺 少 重 量 级 的 Modeling 工 具 其 实, 从 Borland 开 发 工 具 的 演 进 过 程 中, 已 经 可 以 发 现 若 干 Borland 欲 往 Modeling 方 向 发 展 的 蛛 丝 马 迹 先 从 JBuilder 开 始 说 起, 在 JBuilder 6 中,Borland 已 经 开 始 想 为 JBuilder 加 入 Modeling 的 功 能, 随 后 出 现 在 JBuilder 中 的 Refactoring 和 Class Diagram 的 功 能 就 是 一 个 证 明 虽 然 急 着 往 Modeling 的 方 向 开 发, 但 是 Borland 也 知 道 自 己 开 发 这 方 面 的 软 件 将 是 旷 日 费 时 的 因 此,Borland 决 定 使 用 并 购 的 方 式 快 速 取 得 这 方 面 的 技 术 和 产 品 放 眼 望 去, Modeling 工 具 市 场 几 乎 只 剩 下 两 强 相 争 的 局 面, 那 就 是 Rational 和 TogetherSoft 由 于 Rational 的 市 值 远 比 Borland 大 了 许 多, 虽 然 Borland 已 经 和 Rational 有 商 业 的 合 作, 但 是 Borland 仍 然 没 有 可 能 并 购 Rational 既 然 如 此, 那 剩 下 的 答 案 就 非 常 清 楚 了 在 Borland 完 成 了 VMGEAR 和 Starbase 的 并 购 之 后,Borland 的 软 件 应 用 平 台 几 乎 已 经 完 备, 剩 下 的 缺 角 就 是 设 计 和 分 析 工 具 了 虽 然 TogetherSoft 并 不 像 Rational 一 样 是 Modeling 工 具 市 场 的 第 一, 也 不 像 Rational
117 拥 有 比 较 完 整 的 产 品 线, 但 是 TogetherSoft 的 Modeling 工 具 在 Java/C/C++ 市 场 享 有 盛 名, 其 软 件 功 能 和 图 形 使 用 界 面 远 远 超 过 了 Rational 的 软 件 就 软 件 品 质 来 说,TogetherSoft 已 经 超 越 Rational 甚 多 只 是 TogetherSoft 没 有 Rational 的 三 位 知 名 大 师 而 已 在 Borland 决 定 和 TogetherSoft 合 作 之 后,TogetherSoft 也 非 常 欣 然 地 接 受 了 Borland 的 提 议, 因 为 TogetherSoft 正 想 往 开 发 工 具 市 场 发 展, 以 补 足 TogetherSoft 没 有 适 当 开 发 工 具 来 结 合 其 Modeling 工 具 的 遗 憾, 这 也 是 为 什 么 TogetherSoft 在 早 一 步 从 WebGain 购 买 Visual Café 权 利 的 原 因 现 在,Borland 拥 有 最 佳 的 开 发 工 具, 再 结 合 TogetherSoft 的 Modeling 工 具, 两 家 公 司 有 机 会 共 创 双 赢 打 败 Rational 而 成 为 盟 主 于 是 TogetherSoft 很 快 就 答 应 了 Borland 的 建 议, 同 意 和 Borland 合 并 世 事 真 是 难 料, 没 有 想 到 当 初 Visual Café 和 JBuilder 恶 斗 数 年 之 后, 竟 然 由 Borland 取 得 了 Visual Café, 也 让 Visual Café 最 后 在 Borland 的 手 中 成 为 历 史 正 是 因 为 Borland 并 购 TogetherSoft, 成 了 压 垮 骆 驼 的 最 后 一 根 稻 草, 所 以 在 消 息 宣 布 之 后, 立 刻 引 起 了 许 多 软 件 公 司 的 震 惊 和 不 安, 这 也 激 活 了 软 件 界 的 并 购 风 暴 我 当 时 的 预 测 就 是 Rational 将 首 当 其 冲 并 购 的 涟 漪 效 果 Borland 宣 布 并 购 TogetherSoft, 立 刻 引 起 了 软 件 界 的 轩 然 大 波 由 于 Borland 和 TogetherSoft 的 合 作, 对 于 Rational 产 生 了 巨 大 的 影 响, 而 Borland 又 和 Rational 有 软 件 合 作, 因 此 为 了 缓 和 对 Rational 的 冲 击,Borland 便 下 令 公 司 内 的 人 必 须 对 这 件 事 情 封 口 当 时 我 就 认 为 Rational 也 不 是 傻 瓜, 他 们 一 定 会 了 解 事 情 的 严 重 性, 即 使 Borland 不 提,Rational 也 一 定 会 有 动 作 果 然 在 不 久 之 后,Rational 便 通 知 Borland, 结 束 和 Borland 在 Java Enterprise Studio 以 及 Windows Enterprise Studio 的 合 作, 反 将 了 Borland 一 军 当 然 这 也 正 式 代 表 Borland 终 将 进 入 Modeling 市 场 的 大 战 Rational 和 Borland 的 战 事 尚 未 真 正 开 火, 就 被 " 螳 螂 捕 蝉, 黄 雀 在 后 " 的 IBM 盯 上 了, IBM 开 始 正 式 向 Rational 下 手 为 什 么 IBM 会 找 上 Rational 呢? 这 要 从 IBM 和 BEA 之 间 愈 演 愈 烈 的 EJB 服 务 器 战 争 说 起 由 于 IBM 的 WebSphere 和 BEA 的 WebLogic 已 经 进 入 最 终 的 市 场 第 一 位 争 夺 战, 两 方 人 马 都 是 无 所 不 用 其 极 地 想 要 干 掉 对 方 不 过, 由 于 EJB 服 务 器 的 市 场 已 经 进 入 成 熟 的 阶 段, 现 在 光 靠 EJB 服 务 器 核 心 已 经 无 法 作 为 胜 出 的 筹 码 了 这 也 是 为 什 么 WebSphere 和 WebLogic 都 开 始 加 入 其 他 的 辅 助 功 能, 例 如 Portal 服 务 管 理 服 务 等, 以 求 能 够 压 过 对 手 不 过, 当 大 部 分 的 软 件 服 务 都 被 加 入 之 后, 剩 下 来 的 当 然 就 是 从 整 合 开 发 工 具 以 及 分 析 / 设 计 软 件 上 动 脑 筋 了 这 也 是 为 什 么 当 初 BEA 会 和 WebGain 合 作 而 IBM 也 不 愿 意 放 弃 VisualAge For Java 的 原 因 即 使 Visual Café 和 VisualAge For Java 已 经 无 法 在 Java 开 发 工 具 市 场 成 为 第 一 位 的 工 具, 但 由 于 使 用 EJB 技 术 的 企 业 愈 来 愈 多, 也 有 愈 来 愈 多 的 企 业 要 求 结 合 Java 开 发 工 具 和 Modeling 工 具 以 便 开 发 大 型 的 Java 以 及 J2EE 应 用 系 统 IBM 很 显 然 也 注 意 到 了 这 个 市 场 和 需 求, 于 是 在 Borland 并 购 了 TogetherSoft Rational 感 觉 到 巨 大 压 力 的 时 候, 立 刻 找 上
118 Rational 由 于 IBM 出 手 阔 绰, 再 加 上 Rational 自 知 要 独 自 面 对 Borland 和 TogetherSoft 的 联 军 没 有 多 大 胜 算, 因 此 也 很 快 答 应 了 IBM 的 条 件, 正 式 由 IBM 接 收 了 Rational 在 IBM 确 定 并 购 Rational 之 后, 这 股 软 件 公 司 之 间 重 量 级 的 并 购 潮 不 但 没 有 结 束, 反 而 更 为 暗 潮 汹 涌, 因 为 IBM 并 购 了 Rational 之 后, 开 始 对 BEA 和 Microsoft 产 生 更 大 的 影 响 IBM 在 取 得 了 Modeling 工 具 之 后 就 在 EJB 服 务 器 中 取 得 了 整 合 的 优 势, 对 于 BEA 将 有 更 强 大 的 攻 击 力 而 BEA 在 原 本 已 经 逐 渐 落 居 下 风 的 EJB 战 役 中 如 果 还 面 临 IBM 整 合 Modeling 的 攻 势, 那 么 情 势 必 将 更 为 恶 劣 因 此, 当 时 我 认 为 BEA 将 是 IBM 这 桩 并 购 案 最 大 的 受 害 者 果 然 之 后 不 久, 许 多 专 业 媒 体 都 评 论 了 BEA 不 利 的 局 势, 预 言 BEA 最 强 的 支 持 者 将 会 是 Borland, 甚 至 许 多 人 也 传 出 BEA 将 并 购 Borland 的 消 息 对 于 这 个 传 言,BEA 的 响 应 似 乎 是 正 面 的, 因 为 现 在 BEA 已 经 和 Borland 有 所 合 作, 而 BEA 和 Borland 的 产 品 线 也 非 常 互 补, 没 有 什 么 严 重 的 冲 突 不 过, 我 个 人 还 是 希 望 Borland 能 够 维 护 独 立 的 软 件 公 司 另 外 一 个 受 影 响 的 软 件 厂 商 则 是 Microsoft Microsoft 在 以 前 早 就 和 Rational 有 合 作, 不 过 Microsoft 还 是 那 个 调 调, 在 自 己 没 有 Modeling 工 具 之 前 希 望 和 Rational 合 作, 但 是 一 旦 有 了 类 似 的 工 具 之 后 ( 即 Visio), 就 停 止 了 和 Rational 的 合 作, 这 种 做 法 类 似 当 初 Microsoft 和 Sybase 的 合 作 关 系 不 过, 在 IBM 取 得 了 Rational 之 后 情 势 又 不 同 了, 因 为 现 在 IBM 拥 有 了 非 常 完 整 的 产 品 线,IBM 可 使 用 这 条 产 品 线, 以 强 大 又 完 整 的 J2EE 架 构 正 面 攻 击 Microsoft 的.NET 因 此, 后 来 也 传 出 了 Microsoft 有 意 并 购 Borland 以 取 得 Modeling 工 具 的 风 声 如 此 一 来,Microsoft 不 但 可 以 在.NET 上 提 供 全 世 界 最 好 的 开 发 工 具 Modeling 工 具, 又 能 够 取 得.NET 需 要 的 组 件 模 型, 即 CORBA.NET, 以 对 抗 EJB, 可 以 说 是 一 举 数 得 不 过 在 开 发 工 具 方 面,Microsoft 和 Borland 有 严 重 的 重 复, 又 可 能 会 引 起 独 占 市 场 的 疑 虑, 因 此 我 个 人 认 为, 这 是 不 太 可 能 的 结 合, 真 的 要 说, 那 么 双 B(Borland 和 BEA) 的 组 合 反 而 比 较 可 能 不 管 未 来 的 发 展 如 何, 应 该 发 生 在 2003 年 的 大 战 终 于 在 2002 年 末 正 式 提 前 开 打, Borland 也 即 将 进 入 另 外 一 个 新 的 转 变 第 九 章 软 件 技 术 和 平 台 的 大 竞 赛 2002 年 的 2 月,Microsoft 终 于 推 出 了.NET, 也 击 败 了 许 多 爱 看 Vaporware 好 戏 的 人.NET 的 出 现, 代 表 了 窗 口 平 台 的 软 件 开 发 将 进 入 一 个 新 的 领 域, 对 于 窗 口 平 台 上 开 发 工 具 厂 商 也 有 深 远 的 影 响, 因 为.NET 是 有 史 以 来 变 动 最 大 的 窗 口 平 台 第 一 次,Microsoft 把 窗 口 变 成 一 个 虚 拟 执 行 环 境, 通 过 SOAP/Web Service 技 术, 把 窗 口 和 各 种 行 动 以 及 电 子 装 置 整 合 在 一 起, 提 供 了 下 一 代 的 整 合 虚 拟 数 字 世 界 这 个 影 响 是 深 远 的, 它 不 但 冲 击 了 操 作 系 统, 影 响 了 下 一 代 窗 口 操 作 系 统 的 发 展 方 向, 也 改 变 了 开 发 工 具 在 这 个 虚 拟 执 行 环 境 中 的 角 色 开 发 工 具 厂 商 必 须 重 新 定 义 定 位 开 发 工 具 在.NET 中 扮 演 的 角 色 以 及 未 来 的 发 展 趋 势 Windows3.0 和 3.1 曾 为 窗 口 平 台 带 来 了 最 辉 煌 的 时 代, 造 就 了 C/C++ 四 大 天 王 (Borland
119 Symantec Watcom 和 Microsoft) C/S 双 雄 (PowerBuilder 和 Gupta) COBOL 两 大 家 (RM COBOL 和 Acu COBOL) 以 及 无 数 充 满 活 力 的 开 发 工 具 厂 商 图 形 用 户 界 面 的 盛 行 也 让 各 种 Framework 充 斥 于 市 随 着 C/C++ 语 言 的 流 行, 其 他 语 言 很 快 便 退 居 2 线 MFC 的 出 现 让 Symantec 和 Watcom 退 出 市 场,VB 和 Delphi 的 快 速 成 长 则 让 C/S 双 雄 饮 恨 不 及 开 发 工 具 市 场 在 Windows 98 之 后 有 了 快 速 而 巨 大 的 变 化 最 后, 除 了 Microsoft 和 Borland 等 少 数 厂 商 之 外, 大 部 分 的 开 发 工 具 厂 商 都 逐 渐 退 出 了 这 个 竞 争 最 激 烈 门 槛 最 高 的 市 场 随 着.NET 的 推 出,Microsoft 又 把 竞 争 门 槛 再 度 拉 高 这 次 Microsoft 瞄 准 的 是 企 业 信 息 市 场 以 及 Java 平 台, 程 序 语 言 和 开 发 工 具 的 竞 争 不 再 是 Microsoft 关 心 的 重 点,Microsoft 的 重 点 是 如 何 在 窗 口 平 台 提 供 类 似 Java 已 经 发 展 将 近 10 年 的 计 算 环 境 不 过, 这 个 目 标 却 苦 了 开 发 工 具 厂 商, 因 为 他 们 必 须 面 对 新 的 虚 拟 执 行 平 台 新 的 编 译 技 术 和 新 的 Framework 更 糟 糕 的 是, 开 发 工 具 厂 商 必 须 在.NET 中 找 到 一 条 新 的 生 存 之 道, 由 于.NET 包 含 了 : 一 个 虚 拟 执 行 环 境 --Common Language Runtime(CLR) 一 个 庞 大 且 完 善 的 Framework--.NET Framework 因 此 开 发 工 具 厂 商 必 须 在 这 两 者 以 及 两 者 交 错 产 生 的 软 件 元 素 中 找 到 新 的 技 术 新 的 应 用 和 新 的 利 基, 才 能 够 持 续 在.NET 中 生 存 更 麻 烦 的 是,Microsoft 已 经 提 供 了 一 个 开 发 工 具 范 例 --Visual Studio.NET, 它 比 当 初 SUN 的 失 败 作 品 Java Workshop 好 得 太 多 这 不 但 证 明 了 Microsoft 是 一 个 比 SUN 更 精 于 开 发 工 具 的 厂 商, 而 且, 其 他 的 开 发 工 具 厂 商 要 想 凸 显 其 产 品 更 在 Visual Studio.NET 之 上, 也 将 是 一 件 更 艰 苦 的 工 作 也 许.NET 的 出 现 会 加 速 淘 汰 更 多 的 开 发 工 具 厂 商, 让.NET 平 台 上 的 开 发 工 具 厂 商 更 纯 化, 最 后 只 剩 下 最 具 实 力 的 少 数 厂 商 目 前 各 家 开 发 工 具 厂 商 如 何 适 应.NET 的 冲 击? 它 们 会 提 出 什 么 新 的 软 件 技 术 同 Microsoft 以 及 其 他 厂 商 竞 争? 谁 会 是 最 后 的 胜 利 者? 这 都 将 是 非 常 有 趣 的 事 情, 仔 细 观 察 并 分 析 这 些 问 题, 或 许 从 中 也 能 学 到 许 多 的 宝 贵 经 验.NET 和 Java 的 发 展 过 程 提 供 了 许 多 耐 人 寻 味 的 东 西 有 趣 的 是,.NET 和 Java 虽 然 在 现 在 以 及 未 来 的 发 展 有 许 多 类 似 的 表 现, 但 是 这 两 个 平 台 的 骨 子 里 却 有 一 些 重 要 的 差 异 其 中 最 明 显 的, 就 是 JVM 和 CLR 分 别 如 何 执 行 最 终 的 应 用 程 序 以 及 单 一 语 言 对 语 言 中 立 的 考 验 除 此 之 外,Java 和.NET 对 于 中 间 件 组 件 技 术 的 对 抗 也 是 最 激 烈 的 一 环, 因 为 中 间 件 技 术 将 是 未 来 主 宰 系 统 架 构 的 主 要 因 素,SUN 和 Microsoft 都 希 望 自 己 力 推 的 平 台 成 为 新 的 应 用 标 准 Java 和.NET 的 竞 争, 虽 然 从 虚 拟 执 行 环 境 程 序 语 言 Framework 一 直 延 续 到 最 新 的 软 件 技 术 --SOAP/Web Service 和 数 据 存 取 技 术, 但 是 组 件 模 型 仍 然 是 其 中 最 重 要 的, 因 为 它 代 表 的 目 标 市 场 -- 企 业 信 息 领 域, 才 是 这 两 家 必 争 之 地 Java 和.NET 的 组 件 模 型 是 程 序 语 言 设 计 之 奇 Design Pattern 之 美 数 据 存 取 架 构 之 广 以 及 设 计 构 想 之 深 的 结 晶 组 件 模 型 不 但 是 SUN 和 Microsoft 市 场 的 关 键, 也 代 表 了 两 家 领 导 厂 商 的 软 件 技 术 实 力 以 及 系 统 架 构 的 思 想 逻 辑 因 此 在 讨 论 Java 和.NET 竞 争 时, 充 分 了 解 J2EE 以 及.NET 在 组 件 模 型 方 面 的 发 展 是 很 重 要 的 通 过 了 解 这 两 个 阵 营 在 组 件 技 术 的 竞 争, 我 们 也 可 以 很 容 易 掌 握 未 来 Java 和.NET 的 发 展 趋 势 因 此 随 后 的 文 章 将 从 Microsoft 和 SUN 发 展 组 件 模 型 的 历 史 和 趋 势 开 始 讨 论, 让 读 者 了 解 Java 和.NET 中 位 居 关 键 地 位 的 技 术 演 进, 以 及 组 件 模 型 如 何 影 响 Java 和.NET 的 未 来 走 向 在 本 文 后 半 部 分, 我 们 将 讨 论.NET 对 于 窗 口 平 台 中 开 发 工 具 厂 商 的 影
120 响, 以 及 未 来 开 发 工 具 的 适 应 和 发 展 趋 势 Microsoft 的 COM 组 件 模 型 Microsoft 的 COM 组 件 模 型 一 直 在 很 稳 定 的 发 展 中 舍 弃 繁 杂 的 OLE 细 节 之 后,COM 才 真 正 地 奠 定 了 Windows 组 件 模 型 的 核 心, 开 始 可 以 提 供 制 作 企 业 逻 辑 对 象 的 能 力 DCOM 开 始 提 供 远 程 访 问 和 分 布 式 计 算 以 及 对 象 回 收 的 机 制, 让 COM 组 件 模 型 能 够 提 供 企 业 级 计 算 的 能 力 不 过 在 DCOM 的 时 代, 客 户 端 仍 然 是 通 过 Proxy/Stub 直 接 和 COM 对 象 互 动, 还 未 到 达 像 EJB 组 件 模 型 那 样 由 虚 拟 服 务 器 控 管 以 提 供 系 统 服 务 等 功 能 但 是,Microsoft 很 快 在 MTS 1.0 中 正 式 加 入 了 这 个 功 能, 至 此,COM 组 件 模 型 能 够 顺 利 地 加 入 企 业 核 心 服 务, 例 如 Object Pooling Role-Based 安 全 权 限 和 交 易 管 理 等 功 能 严 格 地 说, 在 MTS 出 来 之 后,COM 组 件 模 型 才 有 资 格 成 为 关 键 性 系 统 的 核 心 组 件 模 型 也 因 为 MTS, 才 有 后 来 的 Microsoft DNA 架 构 在 Windows 2000 中,MTS 正 式 成 熟 演 进 到 COM+1.0, 除 了 把 MTS 调 整 得 和 操 作 系 统 更 契 合 之 外, 最 重 要 的 进 步 是 大 幅 提 升 了 执 行 效 率, 因 此,Microsoft 的 TCP/IP 数 据 大 都 是 以 COM+ 加 VC++ 撰 写 的 在 不 久 前 推 出 的 Windows XP 中,COM+ 又 进 步 到 1.5 版 在 COM+1.5 版 中,Microsoft 对 COM+ 进 行 了 许 多 改 善, 其 中 最 重 要 的 便 是 再 次 提 升 了 COM+ 的 执 行 效 率, 让 它 比 COM+1.0 更 快 此 外, 延 展 性 也 是 COM+1.5 的 调 校 重 点 Microsoft 为 COM+1.5 加 入 了 Partitioning 功 能, 企 图 让 COM+ 的 Application 能 够 在 不 同 的 Container 服 务 器 (DllHost.exe) 中 执 行, 提 供 对 象 并 联 的 架 构, 以 增 加 COM+ 应 用 系 统 的 延 展 性 不 过, 从 COM+1.5 目 前 实 现 的 程 度 来 看, 这 应 该 是 初 步 的 规 划, 未 来 应 该 还 有 很 大 的 进 步 空 间 此 外,COM+1.5 也 加 入 了 Application Pooling 的 机 制, 让 程 序 员 可 以 控 制 COM+ Container 服 务 器 执 行 的 数 目 当 Container 服 务 器 的 执 行 数 达 到 右 图 中 集 区 大 小 的 数 目 之 后, Windows 操 作 系 统 便 会 重 复 使 用 已 经 存 在 的 Container 服 务 器, 而 不 会 允 许 客 户 端 继 续 建 立 新 的 Container 服 务 器, 如 此 一 来, 就 不 会 让 客 户 端 启 动 太 多 的 Container 服 务 器 以 拖 垮 Windows 操 作 系 统 而 应 用 程 序 回 收 (Application Recycling) 功 能 则 是 Microsoft 为 了 克 服 COM+ 内 存 泄 漏 (Memory Leak) 问 题 加 入 的 在 COM+1.5 中, 程 序 员 可 以 指 定 COM+ 的 Application 在 一 定 时 间 或 是 在 COM+ 的 Application 的 内 存 使 用 到 达 一 定 的 数 量 或 是 被 调 用 了 一 定 的 次 数 或 是 被 启 动 了 一 定 的 次 数 之 后 就 重 新 启 动 COM+ 的 Application 这 样, 可 以 让 Container 服 务 器 结 束 运 行, 而 操 作 系 统 则 可 以 回 收 因 为 COM+ 对 象 泄 漏 的 内 存 在 COM+ 尚 未 像 EJB 或 是.NET 一 样 以 虚 拟 执 行 环 境 进 行 Garbage Collection 之 前, 这 倒 不 失 为 一 个 好 方 法, 因 为 Windows 2000 和 XP 在 进 程 安 全 控 制 方 面 有 了 大 幅 的 精 进 此 外,COM+1.5 的 组 件 服 务 程 序 也 允 许 程 序 员 直 接 管 理 和 设 定 旧 的 COM/DCOM 组 件, 不 需 要 再 使 用 DCOMCNFG.exe 程 序 1.5 的 组 件 服 务 程 序 整 合 了 所 有 型 态 的 COM 组 件, 是 相 当 不 错 的 功 能 从 COM+1.5 的 发 展 来 看, 其 他 的 许 多 功 能 都 属 于 小 进 步, 未 来 COM+ 的 发 展 将 会 很 小, 进 而 COM+ 会 真 正 地 转 变 成 Windows 的 核 心 服 务 之 一 未 来 Windows 的 组 件 模 型 应 该 是
121 由.NET 的 组 件 架 构 来 接 棒, 因 为 Microsoft 仍 然 需 要 一 个 提 供 虚 拟 执 行 环 境 的 组 件 架 构, 以 提 供 良 好 的 Garbage Collection 和 Partitioning 的 功 能, 进 一 步 和 EJB 竞 争 企 业 系 统 的 延 展 性, 而 这 个 征 兆 可 以 从 稍 后 讨 论 的.NET 发 展 看 得 出 来 SUN 的 EJB 组 件 模 型 经 过 了 将 近 2 年 的 时 间 后,SUN 终 于 在 最 近 推 出 了 新 一 版 的 EJB 2.0 功 能 规 格, 很 快 也 被 BEA 和 Borland 的 BES 实 现 出 来 SUN 在 EJB 2.0 中 提 出 了 许 多 先 进 而 复 杂 的 功 能, 目 的 是 为 了 大 幅 强 化 EJB 作 为 企 业 核 心 组 件 架 构 的 本 钱, 以 便 在 企 业 系 统 中 和 Microsoft 下 一 代 的.NET 组 件 竞 争 从 SUN 定 义 EJB 的 规 范 开 始, 就 展 现 了 其 和 COM 不 一 样 的 观 念 EJB 一 开 始 就 非 常 重 视 Design Pattern 和 组 件 种 类, 例 如 Session Bean 和 Entity Bean 各 自 负 责 不 同 的 角 色, 再 借 助 于 Java 的 Garbage Collection, 提 供 了 成 为 企 业 信 息 系 统 组 件 必 要 的 基 础 但 是, 在 EJB 1.x 中, 所 有 的 Bean Instance 之 间 的 调 用 都 是 使 用 Remote Interface 方 式, 因 此 在 许 多 的 应 用 方 面 付 出 了 较 大 的 开 销, 导 致 一 些 情 况 下 执 行 效 率 不 佳 在 EJB 1.x 中 发 展 出 了 许 多 的 Design Pattern 来 改 善 这 种 现 象, 例 如 鼓 励 使 用 Coarse-Grained 对 象, 以 减 少 网 络 Round-Trip 和 Bean 之 间 的 调 用 次 数 在 EJB 2.0 中,SUN 终 于 为 改 善 这 个 问 题 而 提 出 了 Local Interface 所 谓 Local Interface, 是 指 当 Bean Instance 在 同 一 个 EJB Container 中 时,EJB Container 可 以 使 用 Local Interface 调 用 来 代 替 Remote Interface 调 用, 这 样 可 以 增 加 3 倍 以 上 的 对 象 启 动 效 率 另 外,SUN 加 入 Local Interface 功 能 的 重 要 原 因 是 为 了 支 持 EJB 2.0 中 大 幅 强 化 的 CMP(Container Managed Persistence) 功 能 简 单 地 说,EJB 2.0 中 的 CMP 允 许 程 序 员 使 用 EJB Query Language 来 定 义 Bean 之 间 的 关 系 只 要 程 序 员 使 用 EJB QL 定 义 了 一 个 Bean 和 另 外 一 个 Bean 的 关 系 (Relationship), 那 客 户 端 便 可 以 在 存 取 了 主 要 Bean 之 后, 再 通 过 Bean 定 义 的 Finder 或 是 Selector 方 法 取 得 所 有 的 从 属 Bean 如 果 读 者 不 太 了 解 这 个 意 思, 可 以 参 考 下 面 的 示 意 图 在 客 户 端 建 立 主 CMP 之 后, 可 以 通 过 主 CMP 的 Finder 或 是 Selector 方 法 取 得 所 有 的 从 属 Bean, 此 时, 主 CMP 便 可 以 通 过 EJB QL 向 数 据 源 查 询 所 有 相 关 的 数 据, 再 由 EJB Container 根 据 查 询 的 数 据 自 动 建 立 从 属 Bean 并 且 和 主 CMP 建 立 关 联 如 此 一 来,2.0 的 CMP 可 以 免 除 程 序 员 自 行 撰 写 存 取 数 据 和 建 立 CMP 的 程 序 代 码 的 麻 烦, 并 且 允 许 EJB Container 使 用 最 佳 化 的 方 式 从 数 据 源 存 取 数 据 和 建 立 CMP 为 了 增 加 这 个 过 程 的 执 行 效 率,EJB 2.0 的 功 能 规 范 要 求 这 种 Bean 必 须 支 持 Local Interface, 当 然, 这 也 代 表 着 这 些 会 建 立 关 系 的 Bean 必 须 执 行 在 一 个 相 同 的 EJB Container 中 EJB 2.0 的 CMP 增 加 了 功 能 和 效 率, 但 是 也 增 加 了 Bean 之 间 相 互 依 靠 的 关 系, 这 会 影 响 EJB 程 序 员 在 设 计 系 统 时 的 布 局 此 外,EJB 2.0 的 CMP 虽 然 提 供 了 这 么 强 大 的 功 能, 但 这 也 是 不 同 厂 商 实 现 的 EJB 服 务 器 执 行 效 率 有 差 距 的 地 方 不 同 EJB 服 务 器 使 用 的 实 现 方 法 的 不 同, 会 大 大 影 响 执 行 效 率 这 就 是 为 什 么 SUN 定 义 了 ECperf 标 准 来 检 验 和 评 比 EJB 服 务 器 的 真 正 执 行 效 率 的 原 因, 这 稍 后 会 谈 到 因 此, 在 EJB 2.0 功 能 规 格 中,SUN 定 义 了 数 个 机 制 来 增 加 EJB 服 务 器 的 执 行 效 率, 这 在 EJB 的 架 构 已 经 很 完 整 的 情 形 下 是 很 自 然 的 下 一 步 当 然, 除 了 上 述 的 功 能 外,EJB 2.0
122 功 能 规 格 也 增 加 了 MDB(Message Driven-Bean),MDB 可 以 让 程 序 员 使 用 异 步 的 方 式 传 送 信 息, 事 实 上 把 原 本 JMS 的 功 能 加 入 到 EJB 的 功 能 规 格 中, 是 为 了 对 抗 Microsoft 把 MSMQ 整 合 进 COM+ 请 看 EJB 进 化 的 示 意 图, 我 认 为 EJB 2.0 最 重 要 的 进 步 便 是 执 行 效 率 OR Mapping 以 及 EJB 的 查 询 语 言 EJB 的 查 询 语 言 开 启 了 未 来 和 JDO(Java Data Object) 的 整 合, 目 的 是 和 Microsoft 在.NET 中 定 义 的 OPath 和 数 据 对 象 相 互 竞 争, 这 在 稍 后 也 会 再 说 明 至 于 OR Mapping, 则 是 一 个 非 常 复 杂 的 机 制 它 规 范 了 Bean Instance 和 数 据 源 之 间 的 关 系, 这 个 标 准 可 能 会 让 许 多 小 的 EJB 服 务 器 厂 商 退 出 EJB 市 场, 或 是 无 法 完 整 地 支 持 EJB 2.0 的 功 能 规 格 再 看 看 Local Interface 的 意 义 在 EJB 1.x 中, 客 户 端 调 用 Bean Instance 时, 在 Container 中 Bean 和 Bean 之 间 都 是 使 用 Remote Interface 的 方 式 进 行 调 用, 如 下 图 所 示 : 事 实 上, 图 中 显 示 的 启 动 模 式 是 非 常 浪 费 资 源 的, 因 为 图 中 的 Bean 都 属 于 同 一 个 Container 之 中, 为 什 么 要 使 用 缓 慢 的 Remote 调 用 模 式 呢? 因 此 在 EJB 2.0 中 定 义 了 Local Interface 如 下 图, 现 在 只 有 在 跨 越 网 络 或 是 跨 越 不 同 的 Container 时 才 需 要 使 用 Remote 调 用 模 式, 这 大 大 地 改 善 了 使 用 的 资 源 和 调 用 效 率 更 好 的 是 在 EJB 2.0 中, 一 个 Bean 可 以 同 时 定 义 Remote Interface 和 Local Interface 如 此 一 来,Bean 的 使 用 者 和 组 合 者 (Assembler) 可 以 更 有 弹 性 地 分 发 和 部 署 EJB Bean 在 EJB 2.0 中,Bean 只 要 从 EJBLocalObject 继 承 下 来, 就 可 以 拥 有 Local Interface 的 功 能 例 如 程 序 员 可 以 用 下 面 的 程 序 代 码 来 提 供 Local Interface 的 功 能 本 质 上, 实 现 和 定 义 Local Interface 的 方 式 和 原 本 的 Remote Interface 非 常 类 似, 因 此 EJB 的 程 序 员 可 以 很 自 然 地 学 会 这 个 新 的 EJB 功 能 public interface YourobjectClass extends EJBLocalObject public interface YourobjectClass extends EJBLocalHome 了 解 了 EJB 2.0 增 加 的 功 能 之 后, 现 在 就 可 以 回 到 前 面 朋 友 询 问 我 的 问 题 了, 为 什 么 在 EJB 中 没 有 看 到 任 何 像 COM 一 样 的 线 程 模 型 之 类 呢? 事 实 上 这 很 简 单, 因 为 EJB 是 一 个 标 准 功 能 规 格, 并 不 包 含 如 何 实 现 的 细 节, 在 一 般 的 EJB 书 籍 中 当 然 看 不 到 类 似 的 东 西 而 且,COM 之 所 以 有 这 么 复 杂 的 各 种 线 程 模 型, 是 因 为 COM 发 展 的 包 袱 以 及 历 史 的 因 素 所 造 成 的 不 过, 这 并 不 代 表 在 EJB 中 没 有 线 程 模 型 的 问 题, 因 为 EJB 厂 商 如 何 实 现 EJB 功 能 规 格 会 深 深 地 影 响 EJB 服 务 器 的 效 率 因 此, 线 程 模 型 反 而 是 EJB 程 序 员 应 该 知 道 的 东 西, 只 是 依 据 不 同 的 厂 商 而 有 不 同 的 结 果, 不 像 COM 功 能 规 格 是 由 Microsoft 定 义 的, 也 是 由 Microsoft 实 现 的, 因 此 会 有 一 致 的 执 行 行 为 EJB 的 线 程 模 型 应 该 是 使 用 Object Per Client 的 模 型 这 个 意 思 是 说,EJB Container 会 为 每 一 个 请 求 的 客 户 端 建 立 一 个 独 立 的 Bean 服 务 因 此, 如 果 EJB 厂 商 没 有 特 别 进 行 最 佳 化 的 工 作, 那 EJB 使 用 的 模 型 应 该 是 类 似 COM 中 的 STA, 也 就 是 说, 一 次 只 有 一 个 Worker 线 程 在 Bean Instance 中 执 行 下 图 就 显 示 了 这 个 架 构, 对 每 一 个 客 户 端 就 启 动 一 对 Worker Thread/Bean Instance 上 图 叙 述 的 是 正 常 的 情 形, 那 如 果 让 两 个 客 户 端 同 时 存 取 一 个 Bean Instance 时, 会 发 生 什 么 情 况 呢? 下 图 就 显 示 了 这 个 架 构 在 这 个 情 形 中, 如 果 有 两 个 客 户 端 要 同 时 存 取 Bean
123 Instance, 那 EJB Container 如 何 控 制 呢? 在 一 般 的 EJB 书 籍 中, 似 乎 也 没 有 看 到 和 同 步 处 理 有 关 的 范 例, 难 道 说, 可 以 不 进 行 任 何 的 处 理 就 让 两 个 客 户 端 同 时 存 取 吗? 这 当 然 不 会, 因 为 此 时 EJB Container 就 会 进 行 管 理, 以 STA 的 模 式 控 制 同 步 存 取, 因 此 客 户 端 的 存 取 必 须 依 序 ( 排 队 ) 来 调 用 Bean Instance 这 个 情 形 也 可 以 直 接 从 Bean 的 实 现 程 序 代 码 中 看 出, 例 如 下 面 的 程 序 代 码 是 EJB 的 标 准 范 例 Entity Bean 的 实 现 程 序 代 码 请 注 意, 在 这 个 Bean 类 别 中 定 义 了 数 个 private 变 量, 并 且 在 Bean 的 方 法 中 直 接 存 取 和 处 理 这 些 private 变 量, 完 全 不 需 要 考 虑 任 何 的 同 步 处 理 机 制, 这 就 是 因 为 EJB Container 一 般 就 是 使 用 Object Per Client 的 模 型 以 及 类 似 COM 的 STA 的 线 程 控 制 模 型 这 只 是 一 般 的 EJB Container 可 能 会 使 用 的 模 型, 但 有 一 些 EJB 服 务 器 提 供 了 最 佳 化 的 机 制, 可 能 会 提 供 更 为 有 效 率 的 方 式 下 面 的 表 格 列 出 了 COM/COM+ 和 EJB 在 线 程 模 型 方 面 的 比 较 : 因 为 不 同 的 应 用 程 序 服 务 器 厂 商 实 现 而 不 同 读 者 必 须 注 意 的 是, 上 表 并 不 代 表 COM+ 是 比 较 好 的, 只 能 说 COM+ 提 供 了 较 多 的 选 择, 可 以 让 有 经 验 的 程 序 员 调 整 执 行 效 率 但 是, 相 对 地 也 让 情 形 复 杂 了 许 多, 而 且 COM+ 的 MTA 线 程 模 型 也 不 容 易 实 现 正 由 于 EJB 功 能 规 格 会 因 为 不 同 的 EJB 厂 商 实 现 而 有 不 同, 因 此, 除 了 前 面 提 到 的 EJB 2.0 中 CMP 和 OR Mapping 会 影 响 EJB 服 务 器 的 执 行 效 率 之 外, 如 果 再 结 合 线 程 模 型 和 对 象 建 立 的 技 术, 那 下 面 列 出 的 问 题 是 影 响 执 行 效 率 的 重 要 因 素 : 如 何 实 现 和 控 制 Worker Thread 事 实 上 这 就 是 EJB Server 中 Thread Pooling 的 机 制 如 何 实 现 和 控 制 EJB Bean Instance 这 就 是 EJB Server 中 Object Pooling 的 机 制 为 了 让 EJB 服 务 器 有 公 平 的 效 率 比 较 基 础,SUN 定 义 了 ECperf 标 准 让 使 用 者 能 够 用 来 评 量 各 家 EJB 服 务 器 的 执 行 效 率, 以 避 免 各 说 各 话 的 情 形 从 这 一 点 也 可 以 看 出,SUN 现 在 开 始 注 重 EJB 服 务 器 的 执 行 效 率 因 素 了 为 什 么 我 说 线 程 模 型 会 因 为 不 同 的 EJB 服 务 器 而 有 不 同 呢? 现 在 让 我 们 以 实 例 来 看 看 EJB 服 务 器 的 行 为 下 图 是 我 使 用 4 个 Delphi 建 立 的 客 户 端 应 用 程 序, 并 且 使 用 SIDL 技 术 来 调 用 Borland Application Server-BAS 中 的 一 个 Stateless Session Bean 的 结 果 从 图 中 可 以 明 显 地 看 到, 即 使 是 在 有 4 个 客 户 端 的 情 形 中,BAS 仍 然 使 用 了 MTA 模 式, 只 建 立 一 个 Stateless Session Bean, 并 且 让 4 个 Worker 线 程 同 时 存 取, 因 此 执 行 效 率 非 常 高, 使 用 的 内 存 资 源 也 非 常 少 而 下 图 则 使 用 4 个 Delphi 客 户 端 应 用 程 序 调 用 Stateless COM+ 对 象 ( 使 用 Both 线 程 模 型 ), 从 图 中 可 以 看 到,COM+ 使 用 Object Per Client 的 模 式, 建 立 了 4 个 COM+ 对 象 服 务 4 个 客 户 端, 虽 然 执 行 效 率 也 非 常 高, 但 是 使 用 的 资 源 稍 比 BAS 多 接 下 来, 再 让 我 们 讨 论 一 下 未 来 Microsoft 的 组 件 模 型 以 及 SUN 的 组 件 模 型 的 演 进 趋 势
124 Data Access Technology 在 未 来,Microsoft 和 SUN 的 组 件 模 型 大 概 都 会 强 调 数 据 存 取 的 技 术, 因 为 从 前 面 讨 论 的 EJB 2.0 CMP 的 内 容 中 我 们 可 以 知 道, 现 在 SUN 已 经 在 为 对 象 和 数 据 之 间 建 立 连 接 的 技 术 了, 而 未 来 的 JDO 技 术 将 进 一 步 紧 密 结 合 数 据 对 象 的 观 念, 让 程 序 员 面 对 的 所 有 东 西 都 是 对 象, 不 再 有 数 据 和 对 象 不 一 样 的 观 念 和 使 用 方 式 不 过 别 以 为 Microsoft 只 会 呆 在 原 地, 在 PDC 2002 中 Microsoft 已 经 宣 示 了 未 来 ADO.NET 的 发 展 方 向 ADO.NET 未 来 将 会 结 合 数 据 和 组 件 的 观 念, 让.NET 的 程 序 员 以 对 象 的 观 念 来 代 表 数 据, 就 像 EJB 中 的 CMP/BMP 一 样 如 此 一 来,.NET 的 程 序 员 可 以 像 EJB 一 样 声 明 代 表 数 据 源 中 数 据 的 数 据 类 型, 并 且 使 用 以 XML 格 式 封 装 的 数 据 对 映 叙 述 器 (Data Descriptor) 来 连 接 数 据 对 象 和 数 据 源 之 中 的 数 据 如 此 一 来,.NET 的 组 件 模 型 也 提 升 到 和 EJB 2.0 加 上 未 来 JDO 一 样 的 层 次 例 如 程 序 员 可 以 定 义 如 下 的 数 据 类 型 : public abstract class Customer { public abstract string Name{get; set;} [Link(Account)] public abstract IList Accounts {get;} } public abstract class Account { public abstract float Amount {get; set;} } public void CalculateTotal() { // business logic } 并 且 定 义 上 述 Customer 和 Account 之 间 的 连 接 关 系, 这 和 EJB2.0 中 新 的 CMP 功 能 一 样, 然 后 再 定 义 如 下 的 对 象 / 数 据 对 映 器, 把 对 象 和 数 据 源 连 接 起 来, 请 特 别 注 意 下 面 relationship 的 部 分 : 最 后, 程 序 员 可 以 使 用 如 下 的 形 式 通 过 数 据 对 象 存 取 数 据, 并 且 在 数 据 对 象 之 间 自 动 形 成 关 联 的 关 系 这 非 常 有 威 力, 和 EJB/JDO 不 相 上 下 事 实 上,ADO.NET 和 EJB/JDO 实 现 的 观 念 和 想 法 非 常 类 似, 这 是 巧 合 还 是 模 仿 呢? 基 本 上 可 以 说, 这 两 大 阵 营 都 有 互 相 参 考 对 方 技 术 的 地 方 下 图 就 是 未 来 ADO.NET 的 数 据 对 象 架 构, 程 序 员 只 需 要 修 改 Schema Mapper 就 可 以 连 接 到 不 同 的 数 据 源, 例 如 MS SQL Server 或 是 Oracle 等 除 了 ADO.NET 的 数 据 对 象 外,Microsoft 也 开 始 定 义 类 似 于 EJB QL 的 对 象 查 询 语 言, 目 前 暂 时 称 为 OPath 当 然, 我 们 可 以 进 一 步 地 讨 论 更 为 深 入 的 组 件 技 术 问 题, 不 过 由 于 篇
125 幅 的 限 制, 就 让 我 们 以 后 在 专 门 讨 论 技 术 的 书 籍 中 继 续 说 明 好 了 下 图 很 清 楚 地 说 明 了 Microsoft 和 SUN 组 件 模 型 的 发 展 趋 势 从 图 中, 我 们 几 乎 可 以 知 道 这 两 者 非 常 类 似, 发 展 的 方 向 也 趋 于 一 致 未 来 比 较 的 因 素 可 能 是 执 行 效 率 延 展 性 能 够 执 行 的 平 台 以 及 开 发 工 具 的 支 持 程 度 和 使 用 的 方 便 性 吧 综 合 上 述 内 容, 从 最 近 Microsoft 的 COM+/.NET 的 推 出 SUN 的 EJB 2.0 功 能 规 范 的 完 成 以 及 中 间 件 厂 商 实 现 的 EJB 应 用 程 序 服 务 器 来 看,Microsoft 似 乎 也 已 经 开 始 采 用 类 似 Java 的 虚 拟 执 行 环 境 以 及 EJB 的 模 型 来 重 新 塑 造.NET 的 组 件 模 型 了 COM+ 将 逐 渐 退 居 幕 后 提 供 系 统 核 心 服 务, 甚 至 会 慢 慢 地 消 失 于 未 来.NET 的 执 行 平 台 之 中 不 过 由 于.NET 的 进 入 门 槛 不 低, 而 且 目 前 仍 然 有 大 量 的 原 生 Windows 开 发 人 员 以 及 Windows 应 用 程 序, 因 此, 这 个 从 COM 组 件 模 型 完 整 转 换 到.NET 的 过 程 可 能 仍 然 需 要 数 年 之 久, 而 COM 在 现 在 开 始 的 数 年 内 仍 然 是 Windows 平 台 上 最 重 要 的 中 间 件 技 术 据 Gartner Group 的 调 查 和 估 计, 在 2003 到 2004 年 使 用 EJB 技 术 开 发 的 Java 应 用 系 统 将 占 整 个 Java 平 台 的 40% 左 右, 这 表 示 EJB 技 术 已 经 获 得 了 大 型 企 业 和 专 业 软 件 厂 商 的 认 可, 是 企 业 级 的 组 件 模 型 EJB 2.0 必 须 开 始 增 加 执 行 效 率, 故 此 加 入 了 Local Interface 此 外 延 展 性 也 成 为 EJB 应 用 程 序 服 务 器 的 发 展 重 点, 因 为 EJB 应 用 程 序 服 务 器 势 必 将 承 载 更 多 的 存 取, 以 担 负 起 企 业 的 关 键 应 用 因 此,EJB 厂 商 开 始 在 EJB 服 务 器 中 切 割 虚 拟 伺 服 环 境, 并 且 在 每 一 个 虚 拟 伺 服 环 境 中 执 行 不 同 的 软 件 例 如 一 个 虚 拟 伺 服 环 境 负 责 执 行 JSP/Servlet Container, 而 另 外 的 虚 拟 伺 服 环 境 则 执 行 EJB Container 等, 如 下 图 所 示 这 样 做 的 好 处 是 不 但 每 一 个 Container 更 安 全, 而 且 应 用 程 序 服 务 器 的 延 展 性 将 更 为 优 秀, 因 为 在 多 CPU 的 机 器 中 可 以 分 配 专 门 的 CPU 给 不 同 的 Container, 并 且 在 一 个 EJB 服 务 器 中 可 以 同 时 执 行 多 个 EJB Container 这 里 有 一 个 很 有 趣 的 区 别, 那 就 是 由 于 Microsoft 掌 握 了 操 作 系 统,Microsoft 可 以 尽 量 地 把.NET 的 虚 拟 执 行 环 境 移 往 操 作 系 统 的 核 心, 提 供 更 为 良 好 的 执 行 效 率 ; 但 是 由 于 提 供 EJB 的 厂 商 没 有 这 项 优 势, 因 此 必 须 以 更 好 的 实 现 方 式 来 开 发 EJB 应 用 程 序 服 务 器, 这 也 是 为 什 么 SUN 以 ECperf 这 个 标 准 来 评 定 各 家 EJB 应 用 程 序 服 务 器 的 执 行 效 率 的 原 因 但 是 从 目 前 EJB 服 务 器 的 实 现 观 念 和 技 术 看, 仍 然 是 领 先 于 Microsoft 的.NET 不 过 不 要 小 看 Microsoft, 虽 然.NET 在 2002 年 的 第 一 季 才 推 出, 但 是 Microsoft 已 经 在 开 发.NET 的 第 2 个 版 本 了,.NET 的 发 展 步 伐 是 很 快 速 的 中 间 件 技 术 将 会 继 续 不 断 地 发 展 下 去, 各 种 新 的 组 件 观 念 和 实 现 技 术 也 将 持 续 地 出 现 组 件 模 型 技 术 和 中 间 件 已 逐 渐 取 代 早 期 的 程 序 语 言 和 数 据 库 服 务 器, 成 为 现 在 信 息 架 构 的 主 导 力 量,Microsoft 和 SUN 都 希 望 成 为 这 个 领 域 的 领 导 者 不 过 谢 谢 信 息 市 场 的 竞 争 力 量, 让 这 两 家 大 厂 都 无 法 消 灭 对 方, 反 而 由 于 竞 争 的 力 量 造 成 了 组 件 模 型 不 断 地 创 新, 使 信 息 人 员 能 够 持 续 地 使 用 新 的 更 好 的 更 成 熟 的 中 间 件 技 术, 来 实 现 日 趋 复 杂 的 信 息 系 统, 虽 然 这 个 学 习 的 过 程 很 辛 苦, 但 这 也 是 信 息 行 业 让 人 感 觉 到 有 趣 味 的 地 方, 因 为 你 不 会 总 觉 得 工 作 是 一 成 不 变 的 只 是 现 在 Web Service 的 兴 起 让 组 件 模 型 的 界 限 开 始 显 得 模 糊 了, 而 Web Service 也 是 Microsoft.NET 和 下 一 版 Java JDK 强 调 的 重 点 功 能 看 起 来,Web Service 技 术 将 会 开 始 把 组 件 模 型 逐 渐 地 转 换 为 面 向 组 件 服 务, 让 组 件 模 型 的 决 胜 点 从 面 向 功 能 逐 渐 转 向 面 向 服 务
126 以 后 哪 一 个 组 件 模 型 能 够 提 供 企 业 级 的 服 务 模 型, 将 会 是 决 定 系 统 使 用 的 架 构 的 关 键 点, 而 这 个 现 象 已 经 可 以 从 一 些 中 间 件 厂 商 最 近 的 动 作 中 隐 约 的 看 出.NET 对 于 开 发 工 具 厂 商 的 影 响.NET 的 推 出, 对 于 所 有 开 发 工 具 厂 商 而 言 都 是 一 大 挑 战, 这 除 了 牵 涉 到 技 术 层 面 之 外, 还 包 含 了 复 杂 的 产 品 定 位 的 问 题 相 对 于 当 初 Windows 3.0/3.1 推 出 时 各 个 开 发 工 具 厂 商 百 家 争 鸣 的 盛 况 比 起 来, 如 今 的.NET 平 台 就 显 得 逊 色 了 许 多 当 然 这 主 要 的 原 因 在 于.NET 中 语 言 不 再 是 重 点, 再 加 上 语 言 可 以 内 嵌 在 Microsoft 的 Visual Studio.NET 中, 这 顿 时 让 许 多 的 开 发 工 具 厂 商 失 去 了 定 位 以 及 竞 争 优 势 如 果 开 发 工 具 厂 商 只 是 做 一 个 语 言 的 Plug-In 到 Visual Studio.NET 中, 那 将 很 难 生 存 下 去 对 于 像 Borland 的 Delphi C++Builder 以 及 Sybase 的 PowerBuilder 而 言, 如 何 在 新 的.NET 环 境 中 保 持 竞 争 优 势 是 很 重 要 的 问 题 因 为 在.NET 中, 应 用 程 序 执 行 环 境 Common Language Runtime(CLR) 以 及.NET Framework 都 是 由 Microsoft 所 掌 握, 其 他 工 具 厂 商 如 何 在 Microsoft 一 手 控 制 的 环 境 中 营 造 出 竞 争 优 势 呢? 另 外 在.NET 中, 开 发 工 具 厂 商 必 须 把 应 用 程 序 编 译 成 Common Intermediate Language(CIL) 的 格 式, 再 由 JIT 编 译 器 编 译 成 原 生 机 械 码 执 行, 如 下 图 所 示 因 此, 如 果 开 发 工 具 厂 商 要 在.NET 环 境 中 继 续 提 供 竞 争 产 品, 那 至 少 必 须 在 下 面 的 三 个 领 域 中 找 到 答 案, 并 且 做 出 实 际 的 解 决 方 案 : 编 译 器 的 竞 争 -- 如 何 把 程 序 语 言 最 正 确 且 有 效 率 地 编 译 成 CIL.NET Framework 的 竞 争 -- 如 何 在.NET Framework 上 进 行 加 值 的 工 作, 并 且 定 位 产 品 竞 争 力 开 发 工 具 本 身 功 能 集 (Feature Set) 的 竞 争 从 编 译 器 角 度 来 说, 由 于.NET 的 CLR 内 建 的 Virtual Execution System(VES) 支 持 一 般 的 程 序 语 言 功 能, 同 时 又 提 供 了 丰 富 的 对 象 模 型 支 持 能 力, 以 提 供 面 向 对 象 语 言 对 映 到 CLR 的 能 力, 因 此.NET 可 以 说 是 OOP-Friendly 的 执 行 环 境, 这 非 常 有 助 于 面 向 对 象 程 序 语 言 在.NET 中 实 现, 例 如 对 C/C++ Object Pascal 等 真 正 的 OOP 来 说 是 个 好 消 息, 而 Microsoft 的 新 语 言 C# 就 是 一 个 好 的 OOP 实 现 范 例 但 是 对 于 使 用 脚 本 语 言 作 为 骨 架 的 开 发 工 具 ( 例 如 PowerBuilder) 来 说, 可 能 就 需 要 花 上 许 多 的 功 夫 重 新 规 范, 以 便 能 够 适 当 地 使 用 CLR 的 特 性 当 然 除 了 程 序 语 言 之 外, 如 何 开 发 出 一 个 有 效 率 的 CLR 编 译 器 更 是 开 发 工 具 厂 商 需 要 费 心 的 地 方 在 Framework 方 面,Microsoft 的.NET Framework 摆 明 了 要 和 SUN 的 J2EE/J2SE/JEME 等 竞 争, 而 且 花 了 许 多 的 资 源 打 造.NET Framework, 力 求 能 够 提 供 给 程 序 员 最 好 的 开 发 功 能 但 是, 对 于 开 发 工 具 厂 商 来 说 则 是 有 喜 有 忧 一 方 面,Microsoft 虽 然 提 供 了 良 好 的.NET Framework, 可 以 减 少 开 发 工 具 厂 商 需 要 花 费 的 成 本 ; 但 另 一 方 面, 开 发 Framework 的 权 力 掌 握 在 Microsoft 手 中, 特 别 是 Microsoft 也 有 Visual Studio.NET 作 为 竞 争 产 品, 因 此 如 何 定 位 便 成 了 重 要 的 问 题 就 我 的 看 法, 如 果 开 发 工 具 厂 商 无 法 在.NET Framework 上 进 行 增 值 的 工 作, 那 最 后 仍 然 难 逃 被 淘 汰 的 命 运
127 即 使 开 发 工 具 厂 商 能 够 克 服 前 面 讨 论 的 两 个 问 题, 最 后 仍 然 要 回 到 产 品 本 身 的 竞 争 力 上 来 没 有 集 成 开 发 环 境 组 件 架 构 调 试 环 境 和 高 生 产 力, 仍 然 无 法 和 Visual Studio.NET 竞 争 开 发 工 具 厂 商 不 但 要 像 以 往 一 样 提 供 一 个 集 成 开 发 环 境, 甚 至 还 必 须 做 得 比 Visual Studio.NET 更 好 更 具 创 意 这 也 不 是 一 件 容 易 的 事 情, 因 为 这 必 须 有 突 破 性 的 想 法 例 如, 其 中 的 一 种 可 能 就 是 再 把.NET 的 通 用 性 延 伸, 除 了 像.NET 不 把 语 言 的 差 异 作 为 重 点 之 外, 也 不 把 CIL 产 生 的 结 果 作 为 差 异 由 于 CIL 是 一 组 标 准 的 中 介 信 息, 开 发 工 具 厂 商 可 以 继 续 把 CIL 转 化 为.NET 原 生 窗 口 应 用 程 序 Linux 应 用 程 序, 甚 至 是 移 动 设 备 上 的 程 序 代 码, 如 下 图 所 示 如 此 一 来, 这 种 开 发 工 具 将 更 为 广 泛 和 实 用, 也 是 开 发 工 具 极 好 的 竞 争 优 势, 特 别 是 现 在 仍 然 有 许 多 的 软 件 厂 商 需 要 继 续 开 发 小 而 快 的 原 生 窗 口 应 用 程 序 Microsoft.NET 的 出 现 不 单 对 于 Microsoft 本 身 有 重 大 的 意 义, 对 于 窗 口 平 台 上 所 有 开 发 工 具 厂 商 和 SUN 都 有 巨 大 的 影 响 开 发 工 具 厂 商 正 面 对 着 从 Windows 推 出 以 来 最 严 格 的 考 验, 这 是 一 场 生 与 死 的 竞 争 对 于 SUN 来 说,.NET 代 表 的 是 Microsoft 正 式 全 面 地 向 Java 平 台 挑 战, 时 间 将 决 定 JVM 和 CLR 的 胜 负, 而 Java 单 一 语 言 的 通 用 性 也 将 面 临.NET 语 言 中 立 的 考 验 至 于 传 统 的 窗 口 程 序 设 计 人 员 而 言, 也 许 正 如 " 魔 戒 传 奇 " 中 的 哈 比 人 一 样, 明 知 前 途 坎 坷, 仍 然 必 须 选 择 走 向 严 寒 的 雪 山 或 是 诡 谲 的 地 道, 因 为 目 的 只 有 一 个 : 在 新 一 波 的 软 件 技 术 和 平 台 中 找 到 一 条 生 存 之 路 第 十 章 令 人 焦 虑 的 时 代 " 通 向 未 来 之 路 在 哪 里?" 时 间 进 入 2000 年 之 后, 许 多 事 情 变 得 似 乎 都 不 确 定 了, 世 界 经 济 的 走 向 和 信 息 技 术 的 趋 势 变 得 更 令 人 困 惑 在 经 过 了 Internet/Intranet Linux 和 Open Source 的 洗 礼 之 后, 目 前 信 息 技 术 的 发 展 似 乎 已 经 趋 向 多 元 化 的 状 态 虽 然 许 多 的 信 息 系 统 仍 然 在 使 用 我 们 早 已 熟 悉 的 技 术 ( 例 如 Web 和 主 从 架 构 ), 但 各 种 新 的 信 息 技 术 也 在 层 出 不 穷 地 出 现 ( 例 如 SOAP 和 Web Service), 再 加 上.NET 和 Java 两 大 平 台 之 间 逐 渐 升 温 的 战 火, 让 许 多 软 件 开 发 人 员 眼 花 缭 乱, 继 而 心 生 疑 惑 --" 自 己 未 来 的 前 途 到 底 在 哪 里?" 其 实, 信 息 人 员 产 生 这 样 的 疑 惑 是 很 正 常 的 因 为 信 息 技 术 的 发 展 到 达 了 前 所 未 有 的 阶 段, 不 但 各 种 程 序 语 言 之 间 掀 起 了 混 战, 操 作 系 统 平 台 虚 拟 执 行 平 台 开 发 工 具 组 件 模 型 等 都 兴 起 了 热 战 而 虚 拟 执 行 平 台 让 跨 平 台 模 糊 了 以 往 壁 垒 分 明 的 开 发 领 域, 程 序 语 言 的 多 样 化 稀 释 了 原 本 由 数 种 语 言 瓜 分 天 下 的 态 势, 而 Web 和 多 层 架 构 又 逐 渐 瓦 解 了 传 统 的 信 息 架 构 这 些 信 息 技 术 的 多 元 化 发 展, 不 但 让 传 统 的 开 发 人 员 面 临 难 以 抉 择 的 命 运, 虚 拟 平 台 程 序 语 言 和 信 息 架 构 等 众 多 的 组 合 变 量, 也 让 开 发 人 员 顿 然 之 间 感 觉 负 担 沉 重, 担 心 自 己 已 经 跟 不 上 信 息 发 展 的 快 速 脚 步, 那 软 件 开 发 人 员 的 未 来 到 底 在 哪 里 呢?
128 信 息 技 术 多 元 化 的 发 展 和 许 多 人 的 工 作 一 样, 也 许 你 还 在 使 用 Delphi/C++Builder 开 发 主 从 架 构 或 是 Web 或 者 一 般 的 应 用 系 统, 又 或 许 是 使 用 JBuilder 开 发 Java 应 用 系 统 总 之, 你 可 能 已 经 熟 知 目 前 所 使 用 的 技 术, 并 且 大 量 地 应 用 在 日 常 的 应 用 系 统 中 但 是, 身 为 软 件 开 发 人 员, 必 须 了 解 软 件 趋 势 的 发 展, 必 须 随 时 注 意 新 的 软 件 技 术, 因 为 唯 有 不 断 地 增 加 自 己 的 附 加 价 值, 才 能 够 在 这 个 竞 争 激 烈 演 进 快 速 的 产 业 中 生 存 下 去 其 实 从 整 个 软 件 技 术 发 展 的 趋 势 中, 细 心 的 软 件 人 员 已 经 能 够 看 出 未 来 的 方 向 在 软 件 开 发 的 过 程 中, 每 一 个 时 代 都 有 主 导 的 软 件 技 术 在 影 响 着 当 时 的 产 品 以 及 软 件 公 司 的 兴 衰 当 然, 能 够 掌 握 软 件 趋 势 的 人 或 是 公 司 也 都 获 得 了 成 功 从 下 图 中 我 们 可 以 看 到, 在 不 同 年 代 中 不 同 的 信 息 技 术 掌 握 了 当 时 的 主 宰 力 量 60/70 年 代 是 由 数 据 处 理 和 程 序 语 言 独 领 风 骚, 到 了 80 年 代 便 由 数 据 库 当 家 作 主,90 年 代 各 种 组 件 和 中 间 件 又 主 导 了 系 统 架 构 但 是 从 60/70/80/90 年 代 的 软 件 技 术 来 看, 每 一 个 时 代 都 是 由 一 个 点 的 信 息 技 术 来 主 导 不 过 在 Internet/Intranet 时 代, 面 向 对 象 和 Modeling 等 技 术 对 于 信 息 系 统 的 影 响 愈 来 愈 大, 信 息 技 术 的 演 进 逐 渐 从 点 形 成 了 面, 上 图 就 显 示 了 在 2001 年 之 后 主 要 的 软 件 力 量 来 自 平 台 的 整 合 和 竞 争 以 及 全 方 位 的 软 件 技 术 其 实, 作 为 软 件 人 员, 我 们 也 可 以 从 自 己 的 信 息 生 涯 中 咀 嚼 出 这 个 趋 势, 问 题 只 是 在 于 有 没 有 花 时 间 进 行 自 我 思 考 数 年 前 的 软 件 人 员 可 能 只 需 要 了 解 程 序 语 言 即 可, 例 如 只 需 要 会 C/C++ 就 可 以 找 到 工 作 那 时 数 据 库 也 几 乎 属 于 专 门 的 技 术 领 域, 当 时 的 DBA 只 要 会 管 理 数 据 库 就 行, 因 为 还 有 许 多 专 门 写 SQL 的 程 序 员 但 随 着 时 间 的 推 移, 软 件 人 员 开 始 需 要 同 时 会 程 序 语 言 SQL 以 及 管 理 数 据 库 接 着 又 需 要 了 解 组 件 技 术 Web 技 术 终 至 面 向 对 象 和 Modeling 等 技 术 为 什 么 对 软 件 人 员 的 要 求 会 愈 来 愈 高? 这 是 因 为 整 个 软 件 的 发 展 趋 势 正 在 走 向 信 息 技 术 整 合 的 道 路 未 来 的 软 件 趋 势 是 走 向 软 件 和 系 统 整 合, 这 代 表 着 软 件 人 员 必 须 知 道 得 更 多, 掌 握 更 多 的 技 术 才 能 够 顺 利 迎 接 未 来 的 挑 战 唯 有 掌 握 每 一 个 独 立 的 软 件 技 术, 软 件 人 员 才 可 能 有 能 力 拥 有 系 统 整 合 的 能 力 从 许 多 的 观 察 分 析 和 统 计 中, 我 们 可 以 抽 离 出 下 面 这 些 最 重 要 的 软 件 技 术 或 是 软 件 特 质 这 些 技 术 需 求 和 软 件 特 质 是 未 来 成 功 的 软 件 人 员 都 必 须 具 备 的, 唯 此 才 能 够 持 续 地 在 竞 争 愈 来 愈 激 烈 的 软 件 业 中 保 持 高 度 的 竞 争 力 了 解 多 种 程 序 语 言 熟 悉 更 多 的 系 统 架 构 面 向 对 象 和 UML 模 型 技 巧 成 为 软 件 人 员 的 基 本 要 求 快 速 学 习 和 开 发 的 能 力 精 致 化 的 开 发 能 力 对 于 上 述 的 技 术 和 特 质, 许 多 读 者 会 认 为 这 本 来 就 是 正 常 的 事 项, 为 什 么 还 需 要 在 这 里 再 次 提 出? 这 是 因 为 其 中 许 多 的 事 项 由 于 时 空 因 素 的 关 系, 不 是 有 了 新 的 意 义, 就 是 有 了 更 大 的 压 力 在 本 章 和 第 13 章 中 我 会 分 别 做 详 细 的 说 明
129 软 件 人 员 在 发 展 本 身 技 能 并 且 了 解 信 息 技 术 发 展 的 趋 势 之 时, 当 然 也 需 要 了 解 目 前 各 种 软 件 平 台 和 软 件 领 域 发 展 的 状 况, 以 便 规 划 本 身 的 发 展 方 向 目 前, 如 果 我 们 以 平 台 作 为 分 类 的 标 准, 便 可 以 概 略 分 成 UNIX/Mainframe Windows Java 以 及.NET 四 大 平 台 由 于 未 来 趋 势 的 演 进, 在 这 些 不 同 平 台 中 的 软 件 人 员 也 会 有 不 同 的 境 遇 和 发 展 不 过 总 体 来 说, UNIX/Mainframe 和 Windows 平 台 的 前 景 都 属 于 逐 渐 下 滑 的 趋 势, 其 原 因 就 在 于 这 些 平 台 已 经 处 于 成 熟 饱 和 或 是 即 将 由 新 的 平 台 所 取 代 如 果 仔 细 观 察 Java 平 台, 可 以 发 现 它 已 经 开 始 进 入 爆 炸 成 长 期 事 实 确 实 如 此 Java 在 历 经 了 数 年 的 奋 斗 之 后, 的 确 开 始 在 全 世 界 开 花 结 果 Java 除 了 在 美 国 和 欧 洲 快 速 占 据 市 场 之 外, 在 亚 洲 也 开 始 快 速 崛 起 例 如 Java 在 台 湾 的 表 现 一 年 比 一 年 好, 不 但 使 用 Java 的 人 数 增 长 了 许 多,Java 的 开 发 工 具 ( 例 如 JBuilder) 也 一 年 比 一 年 卖 得 好 JBuilder 已 经 隐 然 有 和 Delphi/C++Builder 分 庭 抗 礼 的 趋 势 也 由 于 Java 的 势 力 日 盛, 因 此 Java 软 件 人 员 的 身 价 也 水 涨 船 高 更 有 趣 的 是.NET 的 发 展 虽 然.NET 在 2002 年 才 正 式 推 出, 但 是 许 多 的 分 析 和 预 测 都 显 示 了.NET 的 发 展 将 不 会 像 Java 一 样 需 要 花 上 6/7 年 才 达 到 一 定 的 高 度,.NET 的 脚 步 将 快 上 许 多 从 上 图 中 我 们 也 可 以 看 到.NET 平 台 的 趋 势 已 经 处 于 温 和 上 升 的 状 态 根 据 Microsoft 最 新 公 布 的 信 息, 到 目 前 为 止, 全 世 界 已 经 有 4 千 万 台 的 PC 安 装 了.NET 的 虚 拟 执 行 环 境 估 计 在 2003 年,Microsoft 推 出 下 一 代 的 操 作 系 统 Microsoft.NET Server 之 后, 将 有 为 数 更 多 的 PC 安 装.NET 虚 拟 执 行 环 境 当 然 这 也 代 表 了.NET 的 时 代 可 能 会 比 我 们 想 像 中 更 早 到 来, 这 同 样 预 示 着.NET 软 件 人 员 的 需 求 会 开 始 浮 现 根 据 Gartner Group 的 调 查 显 示, 以 后 的 信 息 势 力 会 由 Java/.NET 平 分 市 场, 最 有 可 能 的 结 果 是 Java 将 会 称 霸 中 / 后 端 以 及 UNIX/Linux/Mainframe 市 场, 而.NET 则 可 能 控 制 客 户 端 Microsoft 的 行 动 消 费 端, 并 且 逐 渐 朝 向 中 间 件 攻 城 略 地 未 来 更 有 可 能 通 过 Intel/AMD 高 阶 CPU 的 计 算 能 力 以 及 Microsoft 的.NET Server 而 在 原 本 由 UNIX 控 制 的 低 / 中 / 高 阶 工 作 站 市 场 取 得 一 定 的 优 势 下 面 的 分 析 图 更 是 显 示 了 四 大 平 台 之 间 势 力 消 长 的 情 形.NET 将 很 快 取 代 Microsoft 原 本 的 DNA 架 构 而 成 为 Windows 平 台 下 的 企 业 系 统 核 心 技 术 和 架 构 我 认 为 这 个 现 象 是 合 理 的, 但 是 更 有 趣 的 问 题 是.NET 何 时 将 穿 透 Mainframe 和 Java 平 台 呢? 看 完 了 平 台 之 间 的 竞 争 后, 再 让 我 们 看 看 2002 年 应 用 程 序 开 发 种 类 的 趋 势 应 用 系 统 分 布 趋 势 每 一 位 读 者 实 际 开 发 的 应 用 系 统 种 类 可 能 都 有 不 同 有 的 读 者 可 能 是 开 发 MIS 应 用 系 统 的, 有 的 可 能 在 开 发 Web 解 决 方 案, 也 有 读 者 是 在 开 发 分 布 式 应 用 系 统 或 是 低 阶 的 系 统 软 件 嵌 入 (Embedded) 式 软 件, 或 者 驱 动 程 序 系 统 不 管 读 者 主 攻 哪 一 种 信 息 系 统, 了 解 整 个 信 息 产 业 的 开 发 分 布 状 况 都 会 是 很 有 帮 助 的, 因 为 这 些 信 息 有 助 于 信 息 人 员 准 备 和 规 划 自 己 的 职 业 生 涯, 了 解 整 个 信 息 产 业 的 走 势 下 图 显 示 了 2002 年 信 息 人 员 开 发 的 应 用 系 统 种 类 统 计 结 果 从 图 中 可 以 看 出, 主 从 架
130 构 仍 然 是 第 1 名, 如 果 结 合 数 据 库 的 开 发, 一 共 拥 有 24.8% 的 占 有 率 同 时 我 们 也 可 以 看 到, Web 的 开 发 几 乎 已 经 超 过 主 从 架 构, 估 计 到 了 2003 年,Web 开 发 将 超 越 主 从 架 构, 成 为 最 流 行 的 应 用 系 统 开 发 种 类 在 Java 和.NET 企 业 平 台 愈 来 愈 有 影 响 力 之 际, 未 来 最 重 要 的 系 统 种 类 是 什 么? 其 实 答 案 已 经 相 当 明 显 了, 那 绝 对 不 会 是 低 阶 的 系 统 种 类, 而 是 多 层 架 构 Web/Web Service 系 统 组 件 系 统 等 应 用 各 位 读 者 可 看 到 了 未 来 所 需 求 的 人 才? 组 件 架 构 使 用 趋 势 Java 的 EJB 和 Microsoft 的 COM+ 都 想 在 企 业 市 场 竞 逐, 成 为 企 业 对 象 应 用 系 统 的 核 心 组 件 架 构 但 是 EJB 和 COM+ 却 选 择 了 两 个 不 同 的 发 展 方 向 对 于 EJB,SUN 只 是 定 义 出 其 标 准 功 能 规 格, 再 由 各 个 EJB 厂 商 根 据 标 准 EJB 规 范 来 开 发 EJB 服 务 器 而 COM+ 却 是 由 Microsoft 定 义 标 准 规 范 并 且 自 己 实 现 正 由 于 EJB 和 COM+ 采 取 不 同 的 策 略, 因 此 EJB 获 得 了 较 多 厂 商 的 支 持, 推 出 了 许 多 不 同 的 EJB 服 务 器, 但 是 COM+ 却 凭 借 着 内 建 于 Microsoft 的 操 作 系 统 而 拥 有 较 多 的 使 用 者 目 前 EJB 的 功 能 规 格 已 经 发 展 到 2.x 版 本,Microsoft 也 准 备 推 出 COM+1.5 版 SUN 和 Microsoft 推 广 了 许 多 年 的 EJB 和 COM+, 到 底 这 两 个 组 件 架 构 在 业 界 被 使 用 的 状 况 如 何? 两 者 是 不 是 雷 声 大 雨 点 小 呢? 根 据 去 年 调 查 的 结 果 显 示,EJB 的 确 已 经 开 始 在 企 业 生 根, 已 经 有 19.3% 的 企 业 在 使 用 EJB 技 术 ; 另 外 有 15.3% 的 企 业 准 备 开 始 使 用 EJB 这 个 趋 势 和 Gartner Group 对 于 EJB 的 预 测 非 常 符 合, 估 计 到 了 2004 年, 有 40% 左 右 的 企 业 会 使 用 EJB 从 这 个 现 象 来 看,EJB 实 在 可 以 说 是 已 经 成 功 了, 其 实 用 性 也 获 得 了 证 明 台 湾 EJB 的 实 用 性 正 日 渐 普 及, 许 多 的 大 型 企 业 ISV 都 已 经 开 始 使 用 EJB 作 为 关 键 企 业 应 用 系 统 的 核 心 技 术,EJB 的 人 才 需 要 也 日 渐 升 高 由 于 COM+ 是 内 建 在 Microsoft 的 Windows 的 操 作 系 统 中, 理 所 当 然 地 其 使 用 率 应 该 是 不 低 只 是 COM+ 的 前 身 COM/MTS 等 由 于 其 延 展 性 受 人 质 疑, 因 此 使 用 COM/MTS 作 为 企 业 核 心 技 术 的 并 不 多, 大 多 数 是 使 用 COM 作 为 客 户 端 的 可 重 复 使 用 软 件 组 件 但 是 COM+ 推 出 之 后, 由 于 其 执 行 效 率 和 延 展 性 都 大 幅 精 进, 再 加 上 Microsoft 在 TPCC 上 显 示 的 惊 人 效 率 也 都 是 使 用 COM+ 组 件, 因 此 COM+ 逐 渐 打 入 企 业 市 场, 成 为 Windows 平 台 核 心 的 组 件 架 构, 被 许 多 企 业 的 应 用 系 统 所 采 用 根 据 2002 年 调 查 结 果 显 示,COM+ 使 用 率 已 经 超 过 了 34.5%, 同 时 还 有 13.9% 的 企 业 有 兴 趣 采 用 Microsoft 在 努 力 推 广 COM 技 术 数 年 之 后 终 于 有 了 一 定 的 成 果 不 过 Microsoft 现 在 面 临 的 挑 战 是.NET 对 于 COM+ 的 影 响, 由 于 Microsoft 的 平 台 正 从 原 生 窗 口 转 换 到.NET 的 阶 段, 许 多 人 也 开 始 困 惑 起 来,.NET 中 的 组 件 架 构 仍 然 是 COM+? 还 是 有 其 他 的 组 件 架 构 来 代 替? 如 果.NET 仍 然 要 使 用 COM+ 作 为 组 件 架 构, 那 么 纯.NET 的 开 发 工 具 又 无 法 开 发 原 生 的 COM+ 组 件, 如 此 一 来 在.NET 中 COM+ 不 就 又 不 是 First Class 的 组 件 架 构 了 吗? 如 果 纯 粹 使 用.NET 的 组 件, 那 么 纯.NET 组 件 的 延 展 性 尚 未 经 过 实 际 的 验 证, 也 不 提 供 Two-Phase Commit 和 分 布 式 Commit 的 能 力, 又 如 何 能 用 来 作 为 企 业 应 用 系 统 的 核 心 组 件
131 呢? 看 来 Microsoft 在 这 方 面 还 有 很 长 的 一 段 路 要 走 CORBA 呢? 在 EJB/COM+ 的 强 攻 之 下,CORBA 似 乎 失 去 了 原 有 的 光 彩, 但 是 不 可 否 认 的 是,CORBA 仍 然 是 架 构 / 服 务 最 完 整 经 过 最 长 时 间 验 证 的 组 件 模 型 根 据 2002 年 的 调 查 结 果 显 示,CORBA 仍 然 有 相 当 数 量 的 使 用 率, 而 且 未 来 也 仍 然 保 有 稳 定 的 使 用 率, 可 见 CORBA 仍 然 受 到 相 当 的 欢 迎 随 着 Microsoft.NET 的 出 现 和 成 长,CORBA 似 乎 反 而 可 以 在.NET 平 台 有 更 大 的 潜 力, 相 关 的 讨 论 请 参 考 下 一 章 "EJB 对 抗 CORBA? 有 趣 的 假 设 " 信 息 技 术 到 了 现 在 的 阶 段 可 以 说 是 " 平 台 逐 渐 整 合, 但 是 程 序 语 言 则 呈 现 百 家 争 鸣 的 情 形 " 再 加 上 UML 等 Modeling 的 技 术 和 软 件 愈 来 愈 贴 近 软 件 人 员, 数 据 库 和 SQL 技 术 更 已 经 成 为 软 件 人 员 最 基 本 的 技 能, 因 此 软 件 人 员 本 身 也 自 然 朝 向 身 通 18 般 武 艺 的 阶 段 只 是 好 的 软 件 人 员 耍 起 来 虎 虎 生 风, 而 一 般 的 软 件 人 员 在 愈 学 愈 多 的 情 形 下 则 一 无 精 通, 到 最 后 反 而 是 害 了 自 己 回 到 前 面 的 问 题, 目 前 的 信 息 技 术 的 确 是 朝 着 多 元 化 的 方 向 发 展 太 多 的 技 术 产 品 架 构 程 序 语 言 数 据 库 客 户 端 种 类 等 技 术, 造 成 了 许 多 软 件 人 员 的 困 惑 和 焦 虑, 这 是 很 自 然 的 现 象 但 是 另 一 方 面, 平 台 在 收 敛, 系 统 开 发 正 走 向 整 合 阶 段, 对 软 件 人 员 的 要 求 也 走 向 整 合 因 此, 除 了 焦 虑 之 外, 软 件 人 员 在 了 解 了 软 件 趋 势 之 后, 更 应 该 提 出 疑 问 : 你 准 备 好 了 吗? 快 速 的 开 发 周 期 上 大 学 时, 要 学 习 系 统 分 析 和 设 计 (System Analysis and Design) 课 程, 正 好 看 到 一 个 统 计, 说 程 序 员 一 天 只 写 一 行 有 效 的 程 序 代 码, 当 时 我 简 直 乐 坏 了 心 想 一 定 要 进 入 信 息 行 业, 又 有 高 薪 又 有 地 位, 更 重 要 的 是 工 作 如 此 轻 松, 一 天 写 一 行 代 码, 闭 着 眼 睛 都 可 以 做 到 没 有 想 到, 在 真 正 进 入 了 信 息 行 业 之 后, 情 形 却 大 为 不 同 不 但 工 作 繁 重, 每 日 更 需 撰 写 成 百 上 千 行 的 程 序 代 码, 这 哪 里 是 一 天 写 一 行 的 日 子? 不 禁 心 生 感 叹, 自 己 似 乎 入 错 了 行 所 有 的 读 者 都 可 以 感 觉 到, 现 在 系 统 开 发 的 时 程 要 求 得 愈 来 愈 快 我 记 得 5/6 年 前, 系 统 和 项 目 开 发 的 速 度 还 是 1 年 到 1 年 半 左 右, 到 了 3/4 年 前 已 经 缩 短 成 10 个 月 左 右, 在 Internet/Intranet 快 速 兴 起 之 后, 许 多 系 统 和 项 目 甚 至 缩 短 到 了 3 个 月 就 要 推 出 的 迫 人 时 限 信 息 机 构 的 调 查 显 示, 系 统 和 项 目 的 开 发 时 程 将 持 续 地 缩 短, 到 了 2012 年 居 然 只 有 一 天 的 时 程, 这 种 超 高 标 准 的 要 求 可 能 会 吓 坏 许 多 的 软 件 人 员 不 管 这 份 调 查 的 数 据 是 否 100% 正 确, 但 是 从 这 份 信 息 调 查 趋 势 以 及 我 本 身 的 经 验 来 看, 愈 来 愈 短 的 开 发 时 程 却 是 不 争 的 事 实 面 对 愈 来 愈 短 的 开 发 时 程, 软 件 人 员 应 该 如 何 适 应? 这 是 许 多 人 面 临 的 困 扰 其 实 许 多 的 程 序 语 言 开 发 工 具 软 件 工 程 都 强 调 帮 助 软 件 人 员 提 高 生 产 力, 以 适 应 快 速 开 发 的 要 求, 只 是 随 着 时 程 的 要 求 愈 来 愈 高, 许 多 传 统 的 程 序 语 言 和 开 发 工 具 都 已 经 呈 现 力 不 从 心 的 现 象 既 然 如 此, 那 解 决 问 题 的 方 案 是 什 么 呢?
132 数 年 前, 业 界 对 于 软 件 开 发 的 速 度 要 求 愈 来 愈 快, 这 造 成 了 软 件 品 质 的 下 降 许 多 软 件 在 完 善 率 尚 未 达 到 一 定 的 水 准 下 便 仓 促 推 出, 造 成 了 更 多 的 问 题, 因 此 软 件 业 曾 经 被 许 多 人 讥 笑 为 " 不 可 靠 行 业 " 为 了 改 善 这 个 现 象, 许 多 软 件 工 程 技 术 相 继 出 现, 以 求 提 高 软 件 品 质 其 中 最 为 突 出 的 是 以 面 向 对 象 的 各 种 软 件 工 程, 强 调 软 件 IC 可 重 复 使 用 的 软 件 组 件 为 特 质, 以 加 快 软 件 开 发 的 速 度 并 且 提 高 软 件 品 质 面 向 对 象 的 大 旗 造 就 了 3 位 面 向 对 象 大 师, 也 让 UML 等 模 型 工 程 独 领 风 骚, 进 而 让 Rational 公 司 成 为 近 年 来 最 重 要 的 软 件 公 司 之 一 不 过 几 年 下 来,UML 对 于 软 件 开 发 的 贡 献 一 直 受 到 争 议, 许 多 软 件 人 员 对 于 UML 过 于 复 杂 的 流 程 和 过 多 的 UML 图 形 产 生 怀 疑, 因 此 前 一 阵 子 又 兴 起 了 Extreme Programming 的 热 潮, 强 调 轻 便 动 态 快 速 开 发 的 特 性 其 实 这 个 现 象 正 反 映 了 软 件 业 界 对 于 开 发 " 速 度 " 的 要 求 已 经 超 越 了 过 份 强 调 软 件 工 程 流 程 的 重 要 性 现 在 的 信 息 业 界 需 要 的 是 " 灵 活 的 " 开 发 速 度 右 边 的 图 片 明 确 显 示 了 从 2002 年 下 半 年 起, 许 多 企 业 和 软 件 公 司 对 于 软 件 开 发 特 性 的 要 求, 其 中 列 为 最 重 要 的 特 质 就 是 " 灵 活 性 ", 接 着 仍 然 是 强 调 速 度 的 Extreme Programming 的 特 质 其 实, 这 些 对 于 软 件 开 发 的 要 求 也 正 回 应 了 上 一 张 图 形 显 示 的 对 于 开 发 速 度 的 要 求 我 认 为 UML/RUP 和 Extreme Programming/Agile Development 之 间 并 没 有 冲 突, 反 而 是 相 辅 相 成 的 对 于 大 型 复 杂 的 系 统 开 发,UML/RUP 仍 然 是 目 前 为 止 最 好 的 方 法 之 一, 只 是 需 要 适 当 的 修 正, 不 要 过 份 强 调 所 有 的 形 式 流 程 而 Extreme Programming/Agile Development 则 特 别 适 合 中 / 小 型 系 统, 需 要 快 速 反 应 时 间 的 开 发 要 求 既 然 快 速 开 发 已 经 成 为 现 在 最 重 要 的 软 件 开 发 要 素 之 一, 那 传 统 软 件 人 员 应 该 如 何 适 应 呢? 其 实 这 个 原 理 也 不 难 了 解, 答 案 就 隐 含 在 上 图 中 Developer-Centric 包 含 的 意 义 想 想 看, 现 在 的 许 多 企 业 是 如 何 增 加 效 率 的 呢? 答 案 之 一 就 是 组 织 扁 平 化, 尽 量 减 少 不 必 要 的 重 复 浪 费 软 件 开 发 也 是 一 样, 软 件 工 具 应 该 尽 量 以 开 发 人 员 为 中 心, 让 开 发 人 员 使 用 较 少 的 循 环 能 够 完 成 更 多 的 开 发 阶 段, 并 且 提 供 更 可 靠 的 软 件 例 如, 新 一 代 的 开 发 工 具 允 许 开 发 人 员 在 一 个 开 发 环 境 中, 同 分 析 / 设 计 人 员 以 UML 的 模 型 来 沟 通, 并 且 能 够 在 一 个 开 发 环 境 中 撰 写 程 序 代 码, 以 可 视 化 方 式 检 视 程 序 代 码 的 关 系 和 可 靠 度, 能 够 在 相 同 的 开 发 环 境 中 进 行 单 元 测 试 压 力 测 试 负 载 测 试, 并 且 和 测 试 人 员 合 作 另 外, 在 这 个 开 发 环 境 中 也 能 够 和 开 发 团 队 共 同 进 行 项 目 管 理 和 版 本 管 理 的 工 作 如 此 一 来, 开 发 人 员 可 以 在 较 短 的 时 程 内 提 供 更 高 的 生 产 力, 缩 减 开 发 循 环 当 然, 这 意 味 着 以 后 软 件 人 员 必 须 知 道 得 更 多 要 求 也 更 高, 但 是, 这 的 确 可 以 让 开 发 人 员 更 有 效 率, 并 且 增 加 整 个 团 队 开 发 的 生 产 力 面 对 要 求 愈 来 愈 高 的 动 态 开 发 时 程, 身 为 专 业 软 件 人 员 的 你 : 可 准 备 好 了 吗? 程 序 语 言 的 战 争 从 程 序 语 言 的 发 展 史 来 看, 数 年 前 似 乎 就 有 统 一 的 趋 势 在 商 业 应 用 上 COBOL 几 乎 是 事 实 标 准, 在 科 学 计 算 上 Fortran 有 不 可 取 代 的 地 位, 而 C/C++ 则 几 乎 垄 断 了 大 部 分 其 他 的 应 用 但 是 随 着 Internet/Intranet 以 及 RAD 工 具 的 兴 起, 这 个 由 数 个 主 流 语 言 掌 握 的 局 面 很 快 被 打 破 了 特 别 是 在 各 种 脚 本 语 言 (Scripting Language) 和 Java 在 Internet 应 用 上 逐 渐 取 得
133 了 优 势 之 后, 各 种 新 的 程 序 语 言 纷 至 沓 来, 让 人 眼 花 缭 乱, 不 知 如 何 选 择 程 序 语 言 战 场 在 寂 静 了 数 年 之 后 却 突 然 陷 入 了 前 所 未 有 的 热 战 之 中 其 实, 各 种 程 序 语 言 的 不 断 出 现, 反 映 的 就 是 以 往 的 程 序 语 言 已 经 不 足 使 用 或 是 不 适 合 使 用 在 特 定 的 应 用 中, 因 此 才 需 要 新 的 程 序 语 言 来 解 决 问 题 新 的 程 序 语 言 代 表 了 信 息 应 用 的 多 样 化, 而 以 往 由 COBOL Fortran C/C++ 主 掌 的 情 势 也 被 快 速 地 打 破 如 今 的 软 件 开 发 人 员 可 能 必 须 同 时 熟 悉 数 种 程 序 语 言, 并 且 在 不 同 的 应 用 中 选 择 使 用 最 适 当 的 程 序 语 言 以 Web 应 用 系 统 的 开 发 为 例, 看 看 目 前 这 个 最 流 行 最 重 要 的 应 用 系 统 是 由 什 么 程 序 语 言 开 发 的 在 台 湾 地 区, 不 可 否 认 的 是 ASP 绝 对 是 最 多 人 使 用 的 解 决 方 案, 这 是 由 于 台 湾 大 部 分 的 Web 应 用 都 属 于 中 小 型 系 统, 而 且 Web 应 用 系 统 分 布 的 区 域 并 不 算 广 大, 因 此 ASP 就 足 够 满 足 大 多 数 的 需 求, 软 件 人 员 选 择 的 标 准 是 好 用 开 发 迅 速 的 程 序 语 言 但 是, 对 于 美 国 或 是 大 陆 这 种 幅 员 广 大 并 且 拥 有 许 多 大 型 系 统 的 应 用 而 言, 很 可 能 和 台 湾 地 区 的 情 况 大 不 相 同 那 么, 到 底 世 界 上 的 软 件 人 员 是 使 用 什 么 程 序 语 言 来 开 发 Web 应 用 系 统 呢? 对 于 这 个 问 题 的 答 案, 我 很 有 兴 趣, 因 为 可 以 拓 宽 自 己 的 视 野 下 图 显 示 的 是 信 息 机 构 对 美 国 软 件 人 员 调 查 的 结 果, 从 图 中 可 以 发 现 使 用 最 高 的 居 然 是 XML, 而 不 是 ASP 或 JSP 不 过 XML ASP 和 JSP 这 3 者 加 起 来 占 据 了 3 分 之 一 强, 可 见 这 3 种 程 序 语 言 是 Web 应 用 开 发 的 主 流 另 外 值 得 注 意 的 是, 虽 然 PHP 最 近 声 势 不 断 地 增 长 并 且 拥 有 Open Source 的 优 势, 但 是 居 然 只 占 有 4% 的 使 用 率 PHP 的 成 长 率 很 惊 人, 这 在 稍 后 也 会 说 明, 不 过 PHP 要 想 在 Web 开 发 领 域 占 有 显 著 的 地 位, 仍 然 需 要 多 多 努 力 除 了 Web 的 开 发 之 外, 如 果 不 注 重 开 发 工 具 的 区 别 而 纯 以 程 序 语 言 的 角 度 来 看, 下 图 显 示 的 就 是 目 前 针 对 程 序 语 言 所 做 的 调 查 统 计 结 果,Java Visual Basic C/C++ 和 C# 是 目 前 4 大 主 流 程 序 语 言 不 过 下 图 中 的 C# 数 字 是 指 C# 在 2003 年 的 表 现, 而 不 是 在 2002 年 的 情 形 图 中 的 调 查 结 果, 显 然 和 我 国 台 湾 地 区 以 及 大 陆 的 情 形 有 些 出 入 在 台 湾,Java 正 快 速 爬 升,C/C++ 的 影 响 力 则 持 续 下 滑, 而 最 大 使 用 的 程 序 语 言 应 该 就 是 Visual Basic 和 Object Pascal 了 台 湾 地 区 的 情 形 和 大 陆 稍 有 不 同, 目 前 在 大 陆 Java 也 是 快 速 地 兴 起, 不 过 尚 未 形 成 最 有 影 响 力 的 语 言 之 地 位, 反 而 是 C/C++ 仍 然 为 大 陆 目 前 最 有 影 响 力 的 程 序 语 言,Object Pascal Java 和 Visual Basic 则 紧 迫 在 后 根 据 CSDN 网 站 统 计 的 结 果, 目 前 各 程 序 语 言 讨 论 的 文 章 数 分 别 如 表 所 示 从 右 边 图 形 和 数 字, 我 们 可 以 了 解 在 大 陆 使 用 C/C++ 语 言 的 人 数 实 在 是 众 多, 而 Java 已 经 超 过 了 Visual Basic 不 过 未 来 的 发 展 情 形 则 更 令 人 好 奇, 因 为 在 全 世 界 的 C/C++ 都 开 始 逐 渐 走 下 坡 之 际,C/C++ 在 大 陆 的 市 场 会 不 会 也 发 生 类 似 的 现 象 呢?Visual Basic 和 PowerBuilder 会 不 会 持 续 下 滑?Java 何 时 会 成 为 霸 主?C# 又 何 时 会 迎 头 赶 上? 这 些 问 题 都 非 常 值 得 观 察, 因 为 这 不 但 影 响 了 各 程 序 语 言 之 间 势 力 的 消 长, 也 代 表 着 软 件 工 作 市 场 的 需 求 和 变 化 有 趣 的 是, 在 Windows 和.NET 平 台 上, 程 序 语 言 正 以 前 所 未 有 的 生 气 蓬 勃 发 展, 而 且 不 同 的 程 序 语 言 间 互 相 激 荡 相 互 影 响, 再 产 生 新 的 程 序 语 言 或 是 在 原 有 的 程 序 语 言 中 加 入 新 的 机 制 以 符 合 新 的 需 求 但 是 在 Java 平 台, 却 几 乎 只 有 Java 语 言, 没 有 其 他 的 选 择 那
134 么 读 者 是 喜 欢 单 一 程 序 语 言 的 单 纯, 还 是 喜 欢 多 种 语 言 产 生 的 灿 烂 火 花 呢? 我 个 人 是 比 较 喜 欢 多 种 语 言 的, 因 为 我 认 为, 我 们 可 以 通 过 欣 赏 不 同 程 序 语 言 的 设 计 精 神 和 思 想 来 吸 收 更 多 的 知 识 和 技 术, 通 过 不 同 程 序 语 言 彼 此 竞 争 的 结 果, 可 以 嗅 出 未 来 程 序 语 言 的 发 展 方 向, 这 大 概 也 是 因 为 我 从 大 学 时 就 特 别 喜 欢 程 序 语 言 和 编 译 器 课 程 的 结 果 吧 知 己 知 彼, 百 战 百 胜 就 让 我 们 以 EJB 服 务 器 市 场 这 个 实 际 的 竞 争 范 例 来 看 看 信 息 产 业 是 如 何 竞 争 和 演 化 的 吧 三 四 年 前, 当 EJB 市 场 开 始 成 长 时, 许 多 软 件 厂 商 相 继 投 入 这 个 潜 力 十 足 的 市 场 当 时, 所 有 EJB 厂 商 竞 争 的 基 准 大 概 都 是 符 合 EJB 规 范 使 用 最 新 JDK 标 准 以 及 执 行 效 率 最 良 好 的 EJB 服 务 器 当 时 竞 争 的 EJB 服 务 器 可 以 用 满 山 满 谷 来 形 容, 为 什 么 呢? 因 为 在 这 个 阶 段 纯 粹 是 以 技 术 为 决 胜 点, 这 个 门 槛 并 不 高, 拥 有 技 术 的 软 件 人 才 多 得 是 因 此, 这 个 阶 段 中 有 眼 光 和 智 慧 的 厂 商 便 了 解 到, 光 凭 EJB 服 务 器 引 擎 是 无 法 作 为 胜 出 的 要 件 的, 必 须 想 办 法 增 加 竞 争 门 槛 以 阻 绝 竞 争 对 手 持 续 逼 近, 或 是 增 加 " 软 件 服 务 " 以 提 供 竞 争 对 手 没 有 的 功 能 到 了 EJB 服 务 器 竞 争 的 第 2 阶 段, 逐 渐 胜 出 的 EJB 厂 商 便 开 始 为 EJB 服 务 器 加 入 各 种 服 务, 其 中 一 类 是 以 增 加 商 业 应 用 服 务 为 主, 例 如 Portal Service ERP Service 等 而 另 外 一 类 则 是 以 技 术 服 务 为 主, 例 如 分 布 式 交 易 服 务 安 全 服 务 等 由 于 这 些 软 件 服 务 的 加 入, 在 EJB 服 务 器 竞 争 的 第 2 阶 段 便 逐 渐 产 生 了 EJB 服 务 器 的 领 先 群, 许 多 其 他 的 EJB 服 务 器 厂 商 在 眼 看 竞 争 无 望 之 下 自 然 地 退 出 了 市 场,HP 就 是 一 个 例 子 现 在 EJB 服 务 器 市 场 又 进 入 了 最 后 厮 杀 的 阶 段, 因 为 在 领 先 群 中 的 厂 商 大 都 提 供 了 类 似 的 服 务 那 么 接 下 来 要 如 何 竞 争 呢?IBM 很 快 就 看 到 了 关 键 点, 那 就 是 为 WebSphere 加 入 整 合 开 发 平 台 的 能 力 通 过 并 购 Rational 取 得 Modeling 工 具 和 技 术,IBM 可 结 合 原 有 的 Java 开 发 工 具 为 WebSphere 形 成 一 个 关 键 开 发 平 台, 同 时 吸 引 企 业 使 用 者 以 及 开 发 人 员 为 WebSphere 形 成 的 企 业 平 台 开 发 更 多 的 客 制 化 服 务, 以 便 为 WebSphere 形 成 势 力 强 大 的 专 属 力 量 这 是 WebSphere 最 大 竞 争 对 手 WebLogic 目 前 没 有 的 优 势 从 EJB 服 务 器 竞 争 的 过 程 来 看, 致 胜 的 关 键 便 是 软 件 人 员 是 否 能 够 看 到 别 人 看 不 到 的 优 势 并 提 供 额 外 的 服 务 对 于 软 件 人 员 的 发 展, 道 理 也 是 同 样 大 部 分 的 软 件 人 员 都 只 注 重 在 特 定 的 开 发 工 具 或 是 程 序 语 言 中 精 进, 但 似 乎 都 是 随 着 别 人 的 脚 步 而 前 进, 少 数 软 件 精 英 除 了 在 信 息 技 术 领 域 有 高 人 一 等 的 修 为 外, 真 正 胜 出 的 却 是 能 够 为 自 己 增 加 附 加 价 值 提 供 创 造 力 的 能 力 就 像 JBuilder 的 Chief Scientist--Blake Stone, 为 什 么 他 能 够 在 年 纪 轻 轻 的 情 形 下 成 为 领 导 者? 许 多 资 历 年 纪 都 比 Blake Stone 多 的 研 发 人 员 反 而 只 能 当 工 程 师 呢? 很 简 单, 因 为 Blake Stone 更 早 地 看 到 了 JBuilder 的 发 展 趋 势 和 竞 争 策 略, 掌 握 了 Java 开 发 工 具 发 展 的 动 脉, 能 够 为 JBuilder 开 发 团 队 提 供 更 多 的 价 值, 再 加 上 坚 强 的 技 术 实 力, 终 于 成 为 家 喻 户 晓 的 Java 天 才 我 一 直 认 为 任 何 软 件 技 术 终 将 被 大 众 所 熟 知 和 掌 握, 就 像 数 年 前 的 主 从 架 构 一 样, 因 此 光 凭 借 技 术 并 不 能 让 人 领 先 多 久 反 而 是 通 过 平 日 不 断 培 养 的 眼 光 和 趋 势 再 加 上 专 业 的 技 术 才 能 够 让 软 件 人 员 保 持 在 领 先 群 中, 并 且 掌 握 软 件 趋 势 的 动 脉 拥 有 这 种 特 质 的 软 件 人 员
135 能 够 不 时 的 提 供 服 务, 不 时 地 为 团 队 提 供 持 续 的 创 新 力, 自 然 也 就 能 够 百 战 百 胜 了 结 论 人 类 对 于 新 事 物 的 害 怕, 通 常 都 是 由 于 对 新 事 物 的 无 知 所 引 起 同 样, 软 件 人 员 对 于 未 来 的 困 惑 和 焦 虑 则 来 自 不 知 如 何 是 好, 这 也 是 对 于 未 来 趋 势 发 展 的 无 知 所 引 起 本 节 中, 我 们 通 过 分 析 观 察 和 统 计 了 解 了 以 往 现 在 和 未 来 软 件 趋 势 的 发 展, 当 事 实 的 走 向 豁 然 开 朗 之 后, 困 惑 和 焦 虑 不 再 重 要, 软 件 人 员 反 而 应 该 反 躬 自 省 地 自 问 : 面 对 未 来, 我 们 准 备 好 了 没 有? 不 管 Java 和.NET 两 大 平 台 之 间 的 战 争 如 何, 不 管 哪 一 个 软 件 组 件 或 是 程 序 语 言 会 获 得 最 后 的 胜 利, 世 界 对 于 软 件 系 统 快 速 开 发 的 要 求 不 会 因 为 那 一 方 胜 出 而 改 变, 软 件 人 员 必 须 准 备 好 面 对 这 个 趋 势 想 想,JBuilder 以 每 半 年 一 个 新 版 本 出 现,Java JDK 和.NET 也 几 乎 以 1 年 半 之 间 推 出 两 个 版 本 的 速 度 在 彼 此 争 战 之 中, 连 传 统 的 开 发 工 具 现 在 也 几 乎 以 一 年 一 个 版 本 的 速 度 出 现 更 夸 张 的 是,Internet/Intranet 的 技 术 现 在 几 乎 每 3 个 月 就 有 一 番 新 的 面 貌, 开 发 人 员 应 该 如 何 自 处 呢? 机 会 可 能 会 降 临 在 每 一 个 人 的 身 上, 但 是 只 有 时 时 准 备 好 的 人 才 能 够 把 握 住 机 会, 不 让 它 从 手 缝 中 溜 走 第 十 一 章 EJB 对 抗 CORBA? 有 趣 的 假 设 " 组 件 模 型 的 两 大 巨 头 终 将 对 决?" 什 么 是.NET? 我 们 可 以 从 各 种 技 术 角 度 探 讨.NET,NET 的 技 术 书 籍 也 可 以 撰 写 成 几 十 本 甚 至 是 上 百 本 但 是 Microsoft 提 倡.NET, 最 重 要 的 目 的 是 提 供 一 个 足 以 和 Java 平 台 对 抗 的 " 企 业 平 台 "(Enterprise Platform) Microsoft 希 望 企 业 能 够 使 用.NET 作 为 企 业 应 用 系 统 的 核 心 平 台, 根 据 这 个 企 业 核 心 平 台 再 开 发 各 种 应 用 系 统, 连 接 新 式 的 移 动 设 备 (Mobile Device), 形 成 企 业 应 用 系 统 需 要 的 完 整 信 息 供 应 链, 提 供 类 似 目 前 Java 拥 有 的 企 业 业 务 Microsoft 希 望 通 过.NET 打 入 企 业 市 场 的 企 图 是 不 言 而 喻 的 为 什 么 Microsoft 急 于 打 入 企 业 市 场 呢? 主 要 因 为 企 业 市 场 是 获 利 最 为 丰 富 的 市 场, 也 是 Microsoft 长 久 以 来 最 想 进 入 的 市 场 另 外,Microsoft 不 希 望 Java 独 占 企 业 市 场 进 而 产 生 对 Microsoft 的 威 胁, 这 是 第 二 个 关 键 因 素 其 次 更 重 要 的 原 因 是,Microsoft 在 客 户 端 几 乎 已 达 饱 和, 继 续 成 长 的 空 间 有 限, 需 要 另 外 能 够 持 续 成 长 的 市 场, 而 企 业 市 场 消 费 端 市 场 通 讯 市 场 以 及 游 戏 市 场 就 是 Microsoft 注 重 的 目 标 了 Microsoft 要 想 打 入 企 业 市 场, 需 要 面 对 的 是 表 现 愈 来 愈 好 的 J2EE 架 构 目 前 J2EE 已 经 被 愈 来 愈 多 的 大 型 企 业 用 作 企 业 核 心 的 信 息 技 术 根 据 Gartner Group 的 调 查,EJB 的 架
136 构 将 逐 年 增 加, 到 了 2003 年 将 会 拥 有 超 过 40% 的 使 用 率 这 代 表 EJB 将 成 为 企 业 应 用 系 统 的 核 心 组 件 架 构, 更 多 的 企 业 系 统 将 使 用 J2EE 来 建 制 这 些 现 象 在 大 型 的 信 息 业 界 反 映 得 非 常 真 实 和 明 显, 例 如 台 湾 的 台 积 电 (TSMC) 联 电 (UMC) 和 友 达 光 电 等 都 已 经 在 使 用 Java 和 J2EE 作 为 新 一 代 信 息 系 统 开 发 的 核 心 技 术 再 看 看 目 前 EJB 服 务 器 的 两 大 领 导 厂 商 产 品 --BEA 的 WebLogic 以 及 IBM 的 WebSphere WebLogic 和 WebSphere 除 了 已 经 成 为 许 多 企 业 的 核 心 J2EE 服 务 器 提 供 企 业 开 发 应 用 系 统 的 基 石 之 外, 还 慢 慢 形 成 了 企 业 应 用 系 统 的 解 决 方 案 中 心, 并 从 其 中 衍 生 出 许 多 新 的 软 件 需 求 和 应 用 例 如 许 多 的 Portal 系 统 ERP CRM 或 Web Service 应 用 都 围 绕 在 这 两 个 J2EE 服 务 器 的 外 部 进 行 增 值 的 应 用 这 种 现 象 已 经 开 始 形 成 非 常 巨 大 的 力 量, 让 EJB 服 务 器 的 竞 争 从 EJB 核 心 服 务 器 演 变 到 EJB 解 决 方 案 的 地 步, 宛 如 一 个 黑 洞 在 不 断 地 吸 引 新 的 应 用 和 力 量 进 入 使 用 这 个 架 构 这 种 软 件 群 聚 的 效 应 正 是 企 业 级 信 息 技 术 应 该 形 成 的 现 象, 因 为 唯 有 如 此, 才 能 够 让 影 响 力 不 断 扩 大 当 初 Microsoft 的 Windows 就 是 这 样, 吸 引 了 全 世 界 程 序 员 为 Windows 开 发 应 用 软 件, 以 Microsoft Windows 为 应 用 的 核 心, 这 才 造 就 了 Windows 成 为 全 世 界 客 户 端 操 作 系 统 的 霸 主 由 此 可 见, 一 个 核 心 软 件 技 术 对 于 信 息 应 用 的 重 要 性 当 初 Microsoft 在 Windows 上 力 推 COM/COM+ 组 件 模 型, 希 望 它 们 成 为 Windows 上 的 核 心 组 件 技 术, 提 供 企 业 在 Windows 平 台 上 开 发 企 业 应 用 系 统 的 解 决 方 案 其 实 以 效 率 来 说,COM+ 的 确 是 不 错 的 根 据 许 多 的 测 试 以 及 TPCC 上 公 布 的 结 果 来 看,COM+ 的 执 行 效 率 几 乎 是 最 好 的 而 前 段 时 间 The ServerSide 上 公 布 的 EJB 对 COM+ 的 评 比 更 是 闹 得 满 城 风 雨 Java 业 界 仍 然 不 肯 承 认 COM+ 比 EJB 来 得 有 效 率, 但 是 以 目 前 的 数 据 来 看, 在 Windows 上 EJB 的 确 远 远 比 不 上 COM+ 在 Microsoft 多 年 的 推 展 之 后,COM/COM+ 的 确 也 有 了 不 错 的 使 用 结 果 根 据 2002 年 北 美 关 于 COM+ 的 信 息 调 查 显 示, 使 用 COM+ 技 术 的 人 占 了 34.3%, 而 且 还 有 9% 的 人 回 答 将 会 采 用 COM+ 虽 然 COM+ 在 执 行 效 率 方 面 表 现 很 好, 但 不 可 否 认 的 是 COM+ 只 能 在 Windows 平 台 使 用, 而 且 在 Internet 应 用 中 使 用 不 便, 延 展 性 也 不 若 EJB, 这 都 是 COM+ 致 命 的 缺 点.NET 核 心 组 件 技 术 既 然 Microsoft 希 望.NET 成 为 企 业 应 用 的 平 台, 那.NET 需 要 提 供 什 么 呢? 除 了 开 发 工 具 之 外,.NET 最 重 要 的 便 是 提 供 一 个 类 似 J2EE 架 构 的 软 件 解 决 方 案, 以 吸 引 软 件 人 员 为.NET 开 发 企 业 级 的 应 用 系 统, 帮 助.NET 打 入 企 业 市 场 和 Java 平 台 竞 争 那 现 在 的.NET 中 有 什 么 类 似 J2EE 架 构 的 技 术 呢? 从 下 图 我 们 可 以 清 楚 地 看 到, Microsoft 在.NET 中 正 逐 渐 建 立 起 同 SUN Java 平 台 竞 争 的 技 术 核 心 Microsoft 和 SUN 的 虚 拟 竞 争 平 台 现 在 几 乎 非 常 类 似, 不 过, 目 前 的 Java 在 组 件 技 术 的 领 域 远 远 超 过 了 Microsoft 提 供 的 解 决 方 案 Microsoft 在.NET 中 的 组 件 技 术 是 以.NET 组 件 配 合 COM+ 为 主 COM+ 在.NET 中 转 为 操 作 系 统 的 核 心 服 务, 提 供 事 务 管 理 (Transaction Management) 的 功 能, 而.NET 组 件 则 可 以 同 时 扮 演.NET 中 的 可 视 化 组 件 (Visual Component) 数 据 感 知 组 件 (Data-Aware Component) 以 及 中 间 件 (Middleware Component) 然 而 使 用.NET 组 件 作 为.NET 平 台 中 间 件 有 许 多 问 题
137 首 先 是.NET 组 件 必 须 依 靠 COM+ 组 件 提 供 分 布 式 事 务 管 理 能 力 ; 另 外,.NET 组 件 目 前 也 没 有 像 EJB 一 样 的 Fail-Over 和 Load-Balancing 能 力, 这 在 企 业 级 的 应 用 中 是 明 显 不 足 的 此 外,.NET 组 件 必 须 和 COM+ 一 起 搭 配 使 用, 这 意 味 着 程 序 员 必 须 开 发 COM+ 组 件, 而.NET 的 原 生 工 具 无 法 开 发 COM+ 组 件, 程 序 员 还 是 必 须 使 用 原 生 的 Windows 开 发 工 具 此 外, 一 旦 使 用 了 COM+, 代 表 此.NET 应 用 系 统 无 法 移 植 到 其 他 的 平 台 如 果 Microsoft 把.NET 移 植 到 Linux 或 是 FreeBSD 上, 那 使 用 COM+ 组 件 的.NET 应 用 系 统 将 无 法 移 植 到 这 些 平 台 之 中 那 么,Microsoft 是 不 是 需 要 一 个 新 的 能 在.NET 平 台 使 用 的 组 件 架 构 呢? 就 我 的 眼 光 来 看, 如 果 Microsoft 希 望 把.NET 平 台 定 位 在 企 业 系 统 同 J2EE 竞 争, 那 的 确 是 需 要 这 种 技 术, 但 这 对 于 Microsoft 是 有 一 点 困 难 的 首 先,Microsoft 正 忙 于 在 一 二 年 内 达 到 Java 平 台 花 了 七 八 年 的 成 果, 正 忙 于 开 发.NET 本 身.NET 开 发 工 具.NET 下 的 数 据 库, 并 且 把 所 有 的 Microsoft Server 应 用 程 序 移 植 到.NET 之 下, 可 能 一 时 无 法 投 入 太 多 的 资 源 来 开 发 一 个 全 新 的 企 业 级 的 组 件 架 构 另 外, 再 看 看 Microsoft 建 立 组 件 架 构 的 历 史 就 可 以 了 解 到, 在 这 方 面 Microsoft 的 确 不 太 在 行 期 望 Microsoft 在 短 时 间 内 在.NET 平 台 定 义 类 似 EJB 的 企 业 组 件 架 构 的 规 格 并 且 将 其 实 现 出 来, 似 乎 是 不 太 容 易 的 事 情 组 件 技 术 结 果 16 位 VBX 失 败 32 位 VBX 失 败 OLE 失 败 COM 尚 可 ActiveX 失 败 MTS 失 败 COM+ 不 错.NET 组 件 不 适 合 使 用 在 企 业 级 应 用 中 既 然 新 创.NET 下 的 企 业 组 件 架 构 不 是 短 时 间 内 可 以 完 成 的, 那 是 不 是 代 表 着.NET 在 这 方 面 已 经 无 法 和 J2EE 竞 争 而 提 早 出 局 呢? 其 实 并 不 一 定, 因 为 如 果 无 法 快 速 开 发 一 个 新 的 组 件 架 构, 那 为 什 么 不 使 用 已 经 存 在 且 已 经 验 证 是 适 合 企 业 应 用 的 组 件 架 构 呢? 让 我 们 想 想.NET 的 特 性 和 需 求 是 什 么, 就 可 以 推 知 什 么 组 件 架 构 最 适 合 在.NET 平 台 下 成 为 企 业 级 的 组 件 架 构 了 什 么 组 件 架 构 已 经 使 用 过 很 长 的 一 段 时 间, 且 经 过 了 市 场 的 验 证 呢? CORBA EJB 和 COM+ 什 么 组 件 架 构 可 以 跨 平 台? CORBA 和 EJB
138 什 么 组 件 架 构 允 许 多 种 语 言 开 发 和 使 用? CORBA 从 上 面 的 问 题 中, 我 们 已 经 看 到 答 案 是 呼 之 欲 出 了 更 关 键 的 是 上 面 的 第 3 个 问 题 由 于.NET 是 一 个 语 言 中 立 的 平 台, 程 序 员 可 以 使 用 任 何 语 言 来 开 发.NET 应 用 程 序, 因 此 在.NET 平 台 的 组 件 架 构 必 须 能 够 让 各 种 不 同 的 程 序 语 言 来 开 发 和 使 用, 而 不 像 EJB 一 样 只 能 使 用 Java 语 言 对 比 一 下,CORBA 正 好 符 合 语 言 中 立 的 要 求 此 外 CORBA 是 一 个 跨 平 台 的 组 件 架 构, 可 以 随 着.NET 移 植 到 各 种 平 台 因 此 从 各 方 面 来 看,CORBA 实 在 非 常 适 合 使 用 在.NET 之 中 并 成 为.NET 的 核 心 组 件 架 构 CORBA 和 EJB CORBA 已 经 在 企 业 应 用 系 统 使 用 了 很 长 时 间, 是 一 个 架 构 成 熟 经 过 了 市 场 严 格 考 验 的 组 件 技 术 在 CORBA 之 后 的 许 多 组 件 架 构 其 实 也 都 学 习 了 CORBA 例 如 J2EE 中 的 EJB 规 格 可 以 使 用 CORBA 来 实 现, 在 EJB 2.0 之 后 也 要 求 EJB 服 务 器 必 须 和 CORBA 兼 容, 由 此 可 见 CORBA 组 件 架 构 的 重 要 性 和 成 熟 性 目 前,CORBA 仍 然 是 一 个 在 持 续 发 展 中 的 组 件 规 格,OMG 也 持 续 为 CORBA 定 义 更 为 完 整 的 核 心 和 服 务 规 格 CORBA 使 用 的 Stub/Proxy 以 及 组 件 服 务 架 构 深 深 地 影 响 了 COM+ 和 EJB 的 实 现 架 构, 以 致 COM+ 和 EJB 组 件 架 构 和 CORBA 都 有 许 多 神 似 的 地 方 由 于 CORBA 几 乎 是 其 他 组 件 架 构 的 始 祖, 因 此 CORBA 绝 对 有 能 力 有 份 量 和 EJB 分 庭 抗 礼 如 果.NET 能 够 在 其 平 台 上 以 CORBA 作 为 核 心 组 件 架 构, 那 么.NET 就 可 以 提 供 同 J2EE 一 样 好 的 企 业 应 用 架 构 虽 然 许 多 人 会 质 疑 在 PC 上 执 行 企 业 应 用 系 统 会 不 会 力 量 不 够? 但 是, 随 着 64 位 的 CPU(Intel 和 AMD) 即 将 推 出,Microsoft 也 准 备 推 出 64 位 的 操 作 系 统 在.NET 虚 拟 执 行 环 境 的 保 护 下, 如 果 再 加 上 安 全 强 固 的 CORBA, 那 么.NET 的 确 可 以 提 供 相 当 有 竞 争 力 的 企 业 执 行 平 台, 与 J2EE 在 中 / 低 阶 的 企 业 应 用 中 竞 争 如 此 一 来, Java/J2EE 就 不 再 拥 有 企 业 应 用 中 的 绝 对 优 势 了 既 然 CORBA 对 于 Microsoft.NET 平 台 的 企 业 运 算 有 这 么 大 的 助 力, 那 么 CORBA 组 件 架 构 在.NET 平 台 上 将 以 什 么 样 的 架 构 来 提 供 服 务 呢? CORBA For.NET CORBA 要 如 何 在.NET 平 台 上 提 供 企 业 级 的 服 务 呢? 由 于 CORBA 使 用 IIOP 通 讯 协 议 作 为 调 用 CORBA 服 务 的 接 口, 因 此 传 统 的 CORBA 引 擎 ( 例 如 Borland 的 VisiBroker), 应 该 会 为 CORBA 伺 服 端 和 客 户 端 产 生 可 连 接 的 DLL 或 是 函 数 库, 这 些 DLL 和 函 数 库 就 负 责 让 客 户 端 通 过 IIOP 调 用 伺 服 端 的 CORBA 服 务 器 因 此 CORBA 即 使 是 执 行 在.NET 平 台 中, 也 是 使 用 IIOP 作 为 调 用 的 通 讯 协 议, 如 右 图 所 示 不 过, 在.NET 下 Microsoft 是 使 用.NET Remoting 机 制 作 为 远 程 和 分 布 式 沟 通 的 通 讯 协 议 那 么,.NET 的 CORBA 开 发 工 具 要 如 何 结 合.NET 的 Remoting 机 制 并 且 允 许.NET 下
139 各 种 不 同 的 语 言 通 过 IIOP 调 用 远 程 的 CORBA 服 务 呢? 其 实, 这 同 在 Windows 下 提 供 原 生 窗 口 开 发 工 具 开 发 CORBA 应 用 系 统 几 乎 是 一 样 的, 只 是 在.NET 下 CORBA 引 擎 必 须 进 行 一 些 额 外 的 工 作 以 让.NET 的 开 发 工 具 和 应 用 程 序 能 够 使 用 CORBA 技 术 首 先,.NET 下 的 CORBA 开 发 工 具 必 须 能 够 提 供.NET 下 主 流 程 序 语 言 的 支 持, 这 代 表 CORBA For.NET 必 须 为 每 一 种 程 序 语 言 产 生 客 户 端 的 CORBA.NET Stub 和 伺 服 端 的 CORBA.NET Proxy 其 次, 为 了 和.NET Remoting 机 制 结 合 在 一 起 并 提 供 IIOP 的 能 力, CORBA For.NET 必 须 产 生 一 个 Adapter 和.NET RemotJng 作 为 沟 通 的 机 制,.NET Remoting 通 过 这 个 Adapter 再 调 用 最 底 层 的 CORBA For.NET 引 擎,CORBA For.NET 引 擎 再 把.NET Remoting 的 调 用 惯 例 转 换 为 IIOP 通 讯 协 议 经 由 Adapter 和 CORBA For.NET 引 擎 的 转 换 之 后, 就 可 以 调 用 远 程 的 CORBA 服 务 和 CORBA 服 务 器, 甚 至 通 过 RMI Over IIOP 调 用 到 远 程 的 EJB 服 务 器, 如 下 所 示 : 上 面 说 明 的 架 构 还 是 比 较 详 细 的 由 于 在.NET 下 各 种 程 序 语 言 都 会 被.NET 的 编 译 器 转 换 为.NET 的 IL, 因 此 CORBA For.NET 工 具 可 以 产 生 一 个 IL 型 态 的 客 户 端 CORBA.NET Stub 如 此 一 来, 不 管 程 序 员 使 用 的 程 序 语 言 是 什 么, 都 可 以 保 证 能 够 通 过 这 个 CORBA.NET Stub 来 调 用 远 程 的 CORBA 服 务 这 个 架 构 其 实 比 以 前 Windows 下 的 CORBA 开 发 工 具 更 容 易, 因 为 在 Windows 下,CORBA 厂 商 还 必 须 为 不 同 的 程 序 语 言 产 生 不 同 程 序 语 言 的 客 户 端 CORBA Stubs 现 在.NET 下 CORBA 厂 商 反 而 因 为.NET 几 的 特 性 而 更 轻 松 和 一 致 了 一 旦 CORBA 厂 商 能 够 在.NET 下 实 现 CORBA For.NET, 那 么 不 但 可 以 让.NET 的 程 序 员 开 发 真 正 企 业 级 的.NET 应 用 系 统, 更 由 于 CORBA 和 EJB 是 兼 容 的, 因 此.NET 下 的 CORBA 服 务 器 也 能 够 通 过 RMI Over IIOP 调 用 和 整 合 EJB 服 务 器, 提 供.NET 和 J2EE 无 缝 整 合 的 能 力, 并 且 允 许 使 用 者 的 应 用 系 统 能 够 从.NET 平 台 顺 利 地 移 转 到 J2EE 平 台, 如 下 所 示 更 何 况, 现 在 许 多 的 EJB 服 务 器 还 能 够 像 管 理 EJB 对 象 一 样 地 管 理 CORBA 对 象, 这 意 味 着 执 行 在 Mainframe 或 是 UNIX/Linux 的 EJB 服 务 器 能 够 管 理 和 整 合 执 行 在.NET 中 的 CORBA 对 象 或 是 CORBA 服 务.NET 有 了 CORBA 这 个 解 决 方 案 之 后, 终 于 有 了 进 入 可 提 供 企 业 级 应 用 程 序 架 构 的 能 力 了 巨 人 终 将 对 决? CORBA 的 复 杂 度 使 其 一 直 未 能 被 广 大 的 程 序 员 所 接 受, 现 在 的 CORBA 本 身 已 经 非 常 安 全 强 固, 而 且 经 过 了 十 几 年 企 业 市 场 的 考 验 ( 即 使 是 EJB 也 不 过 在 企 业 市 场 才 经 历 了 2 个 版 本 的 洗 礼 ),CORBA 的 开 发 厂 商 应 该 已 经 清 楚,CORBA 不 被 大 多 数 开 发 人 员 接 受 的 原 因 并 不 是 CORBA 不 够 好, 而 是 CORBA 太 复 杂 因 此 这 些 开 发 厂 商 应 该 舍 弃 CORBA 中 鲜 为 人 用 的 服 务, 先 提 供 一 个 完 整 的 CORBA 引 擎 以 及 企 业 应 用 最 重 要 的 两 个 服 务 -- 事 务 管 理 服 务 (Transaction Service) 和 安 全 服 务 (Security Service) 更 进 一 步 的 是, 如 果 CORBA 厂 商 能 够 在 客 户 端 提 供.NET 的 组 件 来 封 装 比 较 复 杂 的 CORBA 调 用 和 存 取 机 制, 并 且 结 合 数 据 存 取 的 能 力, 那 么,.NET 下 的 程 序 员 将 能 够 以 非 常 快 的 速 度 学 习 和 使 用 CORBA 组 件 架 构 如
140 此 一 来,CORBA 将 有 机 会 在.NET 平 台 中 大 展 身 手, 有 机 会 成 为.NET 平 台 中 最 有 潜 力 的 组 件 架 构, 也 将 有 机 会 让 CORBA 一 吐 闷 气, 让 世 人 了 解 CORBA 的 价 值 "EJB 和 CORBA 两 大 巨 人 终 将 对 决 "? 不, 更 正 确 的 说 法 应 该 是 J2EE/EJB 终 于 找 到 了 可 敬 的 对 手 --.NET/CORBA, 而 CORBA 和 EJB 也 将 进 入 " 既 竞 争 又 合 作 " 的 时 代, 当 然 前 提 是 有 厂 商 推 出 CORBA For.NET 的 软 件 产 品 第 十 二 章 回 到 C/C++ 的 王 国 " 让 我 们 重 返 荣 耀 之 都 吧!" 当 年 Windows 平 台 C/C++ 开 发 工 具 四 大 天 王 一 战, 在 Microsoft 取 得 了 市 场 的 主 导 力 量 之 后,C/C++ 开 发 工 具 的 市 场 和 竞 争 反 而 缓 慢 了 下 来,Windows 上 C/C++ 开 发 工 具 的 进 步 也 开 始 牛 步 化 VC++ 一 连 两 三 个 版 本 的 进 度 幅 度 并 不 大, 除 了 稍 后 推 出 的 ATL 还 有 新 意 和 技 术 革 新,VC++ 编 译 器 除 了 在 C/C++ 语 言 上 更 趋 近 于 标 准 之 外,MFC 本 身 几 乎 已 经 没 有 什 么 大 的 进 步 了 在 Watcom 和 Symantec 退 出 市 场 之 后,VC++ 也 顺 利 地 接 受 了 Watcom 和 Symantec 的 市 场 而 Borland C/C++ 虽 然 也 损 失 了 大 量 的 市 场, 并 且 失 去 了 C/C++ 的 王 座, 但 是 在 数 年 后,Borland 推 出 C/C++Builder, 以 C/C++ RAD 工 具 以 及 更 符 合 ANSI C/C++ 标 准 和 VC++ 进 行 市 场 的 区 隔, 也 慢 慢 地 收 复 了 一 些 失 地 虽 然 Borland C/C++ 工 具 系 列 已 经 无 法 像 以 前 一 样 是 市 场 第 一 的 C/C++ 开 发 工 具, 但 是 Borland 在 Windows 的 C/C++ 开 发 工 具 市 场 仍 然 占 有 30% 强 的 市 场 份 额 C/C++ 开 发 工 具 在 C/C++ Framework 一 战 之 后, 开 发 的 重 点 却 似 乎 模 糊 了 起 来 由 于 VC++ 没 有 强 劲 的 竞 争, 因 此 整 个 的 发 展 速 度 缓 慢 下 来 不 过 C/C++ 技 术 在 C/C++ 语 言 函 数 库 (Library) 和 通 用 Framework 方 面 却 快 速 地 如 雨 后 春 笋 般 兴 起 特 别 是 在 C/C++ 语 言 的 标 准 化 更 为 完 善 以 及 Template 的 功 能 被 C++ Standards Committee 接 受 而 且 被 广 泛 地 由 C/C++ 编 译 器 支 持 之 后, 各 种 支 持 和 使 用 Template 的 Framework C/C++ 函 数 库 也 快 速 地 占 据 了 C/C++ 开 发 者 的 心 灵, 成 为 有 力 的 程 序 技 巧 之 一 在 Java 日 益 兴 盛 开 始 威 胁 C/C++ 的 市 场 时, 反 而 激 发 了 C/C++ 语 言 前 所 未 有 的 高 度 发 展 不 过, 目 前 C/C++ 开 发 工 具 以 及 C/C++ 编 译 器 是 否 跟 上 了 C/C++ 这 么 快 速 的 发 展 脚 步 呢? 在 本 章 继 续 讨 论 之 前, 也 许 应 该 让 我 们 先 看 看 目 前 C/C++ 市 场 的 现 况 日 不 落 帝 国 曾 几 何 时,C/C++ 是 征 服 全 世 界 的 语 言 之 一 在 数 年 前 C/C++ 语 言 全 盛 的 时 期, 我 记 得 几 乎 所 有 的 应 用 系 统 都 选 择 使 用 C/C++ 来 编 写, 如 从 系 统 程 序 公 用 程 序 软 件 包 到 项 目 开 发, 因 此 也 造 就 了 C/C++ 开 发 工 具 横 扫 软 件 销 售 市 场 的 现 象 但 是 随 着 RAD 工 具 和 Java 的 逐 渐 受 欢 迎, 让 C/C++ 开 始 从 许 多 的 市 场 撤 退 特 别 是 当 Java 兴 起 之 后 便 快 速 取 代 了 以 往 C/C++ 在 跨 平 台 语 言 的 主 导 角 色, 让 C/C++ 语 言 在 这 个 市 场 受 到 Java 最 大 的 威 胁 不 过,
141 C/C++ 仍 然 在 许 多 方 面 的 应 用 不 可 否 认 地 具 有 绝 对 的 优 势, 特 别 是 在 需 要 高 度 执 行 效 率 的 应 用 系 统 中, 例 如 驱 动 程 序 和 低 阶 的 系 统 程 序 等 那 么 C/C++ 目 前 的 市 场 到 底 有 多 少? 有 没 有 像 两 三 年 前 许 多 信 息 机 构 预 测 的 那 样,Java 将 会 大 幅 抢 走 C/C++ 的 市 场 并 且 吸 引 大 量 的 C/C++ 程 序 员 呢? 让 我 们 以 实 际 的 数 据 来 看 看 目 前 的 状 态 右 图 是 全 世 界 专 业 信 息 机 构 对 于 C/C++ 开 发 工 具 市 场 规 模 和 使 用 状 况 的 调 查 结 果 从 这 个 结 果 图 形 中 我 们 可 以 得 知 几 个 非 常 重 要 的 C/C++ 信 息 : 首 先 请 读 者 注 意 的 是, 就 整 体 来 说 C/C++ 开 发 工 具 的 市 场 的 确 是 处 于 小 幅 的 下 降 趋 势 之 中, 根 据 Gartner Group 的 调 查,C/C++ 市 场 是 以 5% 的 幅 度 下 降, 而 根 据 Evans Data Survey 的 调 查,C/C++ 市 场 则 是 以 3% 的 幅 度 下 降 不 过 稍 后 我 们 会 说 明,C/C++ 开 发 工 具 是 在 哪 些 平 台 和 应 用 中 产 生 变 化 另 外 一 个 值 得 注 意 的 地 方, 是 C/C++ 语 言 主 要 是 用 于 三 个 应 用 领 域 之 中, 分 别 是 客 户 端 伺 服 端 和 维 护 现 有 的 应 用 程 序 从 图 中 我 们 也 可 以 发 现 C/C++ 语 言 被 使 用 的 转 变 状 态, 在 工 业 应 用 方 面,C/C++ 开 发 工 具 仍 然 有 很 大 的 成 长, 这 当 然 是 因 为 C/C++ 语 言 被 广 泛 用 于 驱 动 程 序 的 开 发, 例 如 显 示 卡 驱 动 程 序 网 卡 驱 动 程 序 等 此 外 C/C++ 语 言 也 被 用 于 移 动 设 备 的 开 发, 例 如 Nokia 为 了 和 Microsoft 的 Smart Phone 对 抗 而 推 出 的 Symbian 手 机 系 统 当 然, 在 操 作 系 统 系 统 程 序 和 低 阶 核 心 应 用 方 面 C/C++ 语 言 仍 然 有 着 不 可 取 代 的 地 位 但 是,C/C++ 在 其 他 方 面 的 应 用 的 确 是 在 下 降 之 中, 特 别 是 在 企 业 的 应 用 系 统 方 面 例 如 目 前 在 大 型 项 目 软 件 包 MIS 和 企 业 内 部 的 应 用 系 统 中, 使 用 C/C++ 语 言 的 比 例 的 确 在 下 降 其 中 主 要 的 原 因 是 C/C++ 语 言 本 身 的 难 度 较 高, 因 此 生 产 力 也 不 如 其 他 语 言 和 开 发 工 具 加 上 较 易 使 用 的 RAD 工 具 和 Java 出 现 之 后,C/C++ 语 言 在 这 些 领 域 的 影 响 力 是 大 不 如 前 的 这 个 现 象 也 非 常 契 合 台 湾 地 区 目 前 的 状 况, 在 前 几 年 C/C++ 兴 盛 的 阶 段, 几 乎 大 部 分 的 软 件 包 厂 商 和 SI 以 及 系 统 厂 商 的 确 都 是 以 C/C++ 开 发 工 具 为 第 一 选 择 不 过 由 于 C/C++ 需 要 的 人 力 素 质 较 高, 而 且 生 产 力 无 法 大 幅 提 高, 因 此 在 目 前 软 件 包 和 项 目 的 开 发 大 多 都 由 Delphi VB PowerBuilder 以 及 Java 所 瓜 分 至 于 C/C++ 开 发 工 具 使 用 的 操 作 系 统 分 配 状 况, 则 可 以 由 右 面 的 调 查 结 果 来 说 明 从 图 中 我 们 可 以 发 现,UNIX/Linux 操 作 系 统 平 台 仍 然 是 占 了 最 大 的 使 用 平 台, 这 当 然 是 由 于 UNIX/Lmux 本 身 就 是 使 用 C/C++ 语 言 开 发 的 而 且 在 UNIX/Linux 平 台 我 们 可 以 发 现,C/C++ 开 发 工 具 的 规 模 仍 然 在 成 长, 可 达 成 10% 左 右 的 年 成 长 幅 度 由 此 可 知, 虽 然 Java 现 在 已 经 入 侵 UNIX/Linux 平 台, 但 是 对 于 C/C++ 的 影 响 仍 然 不 太 显 著 C/C++ 开 发 工 具 第 二 个 最 大 的 平 台 就 是 Windows 平 台 了, 虽 然 现 在 Windows 平 台 是 开 发 工 具 百 花 齐 放 的 状 态, 但 是 不 可 否 认 的 是,C/C++ 仍 然 是 Windows 最 重 要 的 数 个 语 言 之 一, 因 为 122 Million 到 137 Million 的 市 场 规 模 是 相 当 大 的 而 Windows 平 台 的 C/C++ 开 发 工 具 的 成 长 虽 然 在 为 数 众 多 的 开 发 工 具 瓜 分 之 下, 仍 可 达 到 12% 的 成 长 率 这 代 表 C/C++ 语 言 即 使 是 在 Java 强 力 竞 争 之 下 仍 然 拥 有 一 定 的 成 长 量 由 于 Windows 平 台 下 的 C/C++ 和 Java 开 发 工 具 是 处 于 同 时 成 长 的 情 形, 因 此, 这 可 能 表 示 在 Windows 平 台 下 许 多 的 程 序 员 应 该 是 同 时 使 用 了 C/C++ 和 Java 开 发 工 具
142 至 于 其 他 平 台 的 C/C++ 开 发 工 具 则 呈 现 下 降 的 趋 势, 而 且 是 处 于 快 速 下 降 的 情 形, 这 也 可 以 解 释 为 什 么 Java 在 Mainframe 和 OS/400 等 大 型 专 属 平 台 成 长 快 速 的 情 形 由 此 可 见, 在 这 些 专 属 市 场 中 C/C++ 语 言 的 确 是 受 到 Java 很 大 的 影 响 除 了 C/C++ 语 言 本 身 之 外, 再 让 我 们 观 察 一 下 目 前 主 流 语 言 应 用 的 现 况, 通 过 观 察 不 同 语 言 之 间 势 力 消 长 的 情 况, 我 们 也 可 以 了 解 其 他 语 言 对 于 C/C++ 语 言 的 影 响 右 图 即 显 示 了 信 息 机 构 对 于 目 前 几 个 主 流 语 言 之 间 成 长 和 下 降 的 预 估 从 图 中 我 们 可 以 看 到, 几 乎 所 有 的 传 统 语 言 例 如 VB C/C++ 和 COBOL 等 都 呈 现 下 滑 的 趋 势, 相 同 的 现 象 当 然 也 在 第 2 级 的 主 流 语 言 例 如 Object Pascal 和 PowerBuilder 等 中 看 到, 但 是 新 一 代 的 虚 拟 语 言 却 呈 现 了 对 比 的 情 形 而 大 幅 上 升 和 成 长, 表 示 使 用 这 些 新 语 言 的 程 序 员 人 口 正 在 快 速 的 兴 起 之 中, 例 如 SUN 的 Java 和 Microsoft 的 C#, 而 Java 快 速 兴 起 也 可 以 解 释 为 什 么 Borland 的 JBuilder 现 在 已 经 是 Borland 最 大 收 入 来 源 的 开 发 工 具 看 完 了 C/C++ 整 体 市 场 的 趋 势 之 后,C/C++ 语 言 目 前 在 程 序 员 人 口 中 使 用 的 情 形 到 底 是 如 何 呢? 下 图 是 2002 年 针 对 美 国 程 序 员 调 查 的 结 果, 从 这 个 结 果 中 我 们 已 经 可 以 看 到, 在 所 有 调 查 的 人 数 中 使 用 C/C++ 的 程 序 员 占 了 45.6% 的 比 率, 但 是 只 使 用 C/C++ 单 一 语 言 的 比 率 只 有 3%, 可 见, 现 在 大 部 分 的 C/C++ 程 序 员 应 该 已 经 开 始 同 时 使 用 两 种 以 上 的 语 言 而 第 二 幅 图 则 是 针 对 美 国 程 序 员 对 于 未 来 计 划 使 用 C/C++ 语 言 的 调 查 结 果, 从 图 中 可 以 证 明 前 面 图 形 和 分 析 的 结 果,C/C++ 语 言 的 确 是 以 3% 到 5% 的 速 度 在 衰 退 之 中, 也 有 愈 来 愈 多 的 C/C++ 程 序 员 开 始 使 用 多 种 语 言 来 进 行 开 发 的 工 作, 当 然 C/C++ 程 序 员 选 择 的 最 多 语 言 就 是 Java 和 C# 了 在 " 令 人 焦 虑 的 时 代 " 一 章 中 我 们 已 经 讨 论 了 Java 语 言 目 前 使 用 的 状 况 以 及 未 来 的 发 展 从 其 中 我 们 了 解 了 Java 虽 然 快 速 地 兴 盛, 但 是 也 看 到 了 Java 似 乎 已 经 在 美 国 进 入 成 熟 期, 开 始 出 现 稳 定 的 状 态 并 且 有 小 幅 的 衰 退 既 然 C/C++ 和 Java 这 两 个 拥 有 共 同 基 因 的 语 言 都 处 于 稳 定 或 是 小 幅 衰 退 的 情 况, 那 么 流 失 的 程 序 员 到 底 到 哪 里 去 了 呢? 当 然 答 案 很 明 显, 这 些 流 失 的 程 序 员 是 转 到 拥 有 相 同 基 因 的 C# 语 言 阵 营 了 虽 然 Microsoft 的 Visual Studio.NET 是 在 2002 年 的 2 月 才 正 式 推 出, 但 是 C# 的 编 译 器 和 相 关 的 工 具 早 已 在 Beta 阶 段 便 为 许 多 程 序 员 所 使 用, 因 此 在 2002 年 便 已 经 吸 引 了 一 些 程 序 员 使 用, 而 这 些 第 1 波 使 用 C# 的 程 序 师 大 都 是 从 C/C++ 和 Java 语 言 转 换 跑 道 而 来 的 右 图 是 C# 语 言 在 2002 年 使 用 的 状 况 调 查,C# 在 不 到 1 年 的 时 间 便 吸 引 了 美 国 14.6% 的 程 序 员 人 口 使 用 是 相 当 惊 人 的 表 现 那 么 未 来 呢?C# 还 能 够 稳 健 地 成 长 吗? 因 为 唯 有 稳 健 成 长 的 语 言 才 能 够 有 机 会 成 为 主 流 的 语 言 右 图 便 是 对 于 2003 年 C# 语 言 使 用 状 况 的 评 估, 从 这 些 数 据 我 们 可 以 看 到,C# 语 言 果 然 将 以 稳 健 的 脚 步 成 长, 每 年 以 将 近 10% 的 速 度 发 展, 而 C# 如 果 持 续 地 照 这 样 的 速 度 发 展 下 去, 那 么 C# 将 在 4 年 之 内 达 成 Java 花 了 七 八 年 才 达 成 的 现 状 当 然,C# 这 种 成 长 趋 势 也 暗 示 了 Microsoft 的.NET 将 在 不 久 的 时 间 内 对 于 Java 平 台 产 生 重 大 的 影 响 对 于 C/C++ Java 和 C# 这 三 个 拥 有 类 似 基 因 的 语 言, 如 果 我 们 把 它 们 的 发 展 放 在 一 起 比 较 的 话, 会 发 现 目 前 C/C++ 和 Java 语 言 正 处 于 激 烈 竞 争 的 状 态 但 是 C/C++ 和 Java 千 万
143 不 可 忽 视 C# 这 个 后 起 之 秀,C# 正 以 旺 盛 的 企 图 快 速 地 向 两 位 老 大 哥 挑 战 之 中, 以 竞 逐 在 程 序 员 心 中 主 流 的 地 位 从 上 面 所 有 的 分 析 中, 我 们 可 以 知 道 使 用 C/C++ 语 言 的 人 数 虽 然 的 确 是 在 下 降 之 中, 但 是 幅 度 并 不 大, 这 代 表 C/C++ 语 言 有 着 非 常 稳 定 的 支 持 力 量, 这 当 然 也 是 因 为 在 许 多 的 应 用 中 C/C 十 十 语 言 拥 有 不 可 取 代 的 优 势, 更 何 况 C/C++ 开 发 工 具 的 市 场 仍 然 拥 有 将 近 600 Million 美 金 的 规 模 这 实 在 是 一 个 非 常 大 的 数 字, 以 Borland 来 比 较 的 话,Borland 全 年 所 有 的 软 件 营 收 不 过 是 240 Million 左 右, 可 见 C/C++ 市 场 的 潜 在 力 量, 对 于 Borland 来 说 这 是 绝 对 不 可 放 弃 的 开 发 工 具 市 场 相 对 于 欧 洲 的 发 展 模 型 和 美 国 非 常 接 近, 另 外 一 个 全 世 界 最 大 的 程 序 员 市 场 -- 中 国 大 陆, 并 没 有 在 这 次 的 调 查 中 显 示 出 开 发 工 具 的 使 用 状 态, 也 许 未 来 应 该 有 全 球 软 件 语 言 的 调 查 评 估 不 过 从 各 种 迹 象 显 示, 大 陆 的 市 场 目 前 是 以 C/C++ 和 Ddphi 分 占 程 序 员 使 用 的 大 宗, 而 Java 则 在 快 速 的 成 长 之 中 这 和 台 湾 地 区 有 一 点 不 同, 那 就 是 在 台 湾 地 区 是 以 VB Delphi 和 C/C++ 为 主 要 的 语 言 力 量, 而 Java 则 是 几 乎 进 入 成 熟 的 阶 段, 开 始 和 VB Ddphi 以 及 C/C++ 分 庭 抗 礼 因 此 对 于 Borland 来 说, 不 管 是 在 中 国 大 陆 和 台 湾 地 区,C/C++ 开 发 工 具 都 是 很 重 要 的, 所 以 Bodand 的 RAD 部 门 宣 称 中 国 大 陆 的 市 场 是 Borland RAD 部 门 最 后 的 圣 地, 因 为 在 中 国 大 陆 Borland 的 C++Builder Delphi Kylix 和 未 来 的 C/C++ 开 发 工 具 以 及.NET 的 开 发 工 具 都 拥 有 全 世 界 最 大 成 长 潜 力 的 机 会 蓬 勃 发 展 的 新 兴 C/C++ 力 量 其 实 不 管 是 什 么 程 序 语 言, 在 面 对 竞 争 日 益 激 烈 的 情 势 中, 程 序 语 言 的 开 发 厂 商 和 爱 好 者 莫 不 卯 足 全 力 地 捍 卫 和 鼓 吹 其 支 持 的 程 序 语 言, 对 于 C/C++ 的 发 展 厂 商 和 爱 好 者 来 说 也 是 一 样 的 情 形 更 有 趣 的 是, 虽 然 使 用 C/C++ 语 言 最 大 的 平 台 是 UNIX/Linux, 但 是 Windows 上 的 C/C++ 开 发 工 具 反 而 是 竞 争 得 最 为 激 烈 进 步 幅 度 也 是 最 大 的 平 台 对 于 Borland 来 说, 在 Windows 平 台 上 是 市 场 排 名 第 2 的 C/C++ 开 发 工 具 厂 商, 而 且 C++Builder 这 条 产 品 线 对 于 Borland 来 说, 占 据 了 开 发 工 具 第 3 位 的 收 入 来 源, 对 于 Borland 有 着 重 要 的 贡 献,Borland 不 但 不 可 能 放 弃, 反 而 更 要 想 办 法 增 加 市 场 规 模 在 C++Builder 推 出 并 且 从 Microsoft 抢 回 了 部 分 的 市 场 份 额 之 后,Borland 计 划 推 出 更 新 更 强 劲 的 C/C++ 开 发 工 具 Borland 也 在 BorCon 2002 中 透 露 了 一 些 有 关 未 来 C/C++ 开 发 工 具 的 计 划 不 过 在 我 们 讨 论 C/C++ 开 发 工 具 的 未 来 之 前, 先 让 我 们 看 看 目 前 在 C/C++ 技 术 方 面 重 要 的 发 展 首 先 在 C/C++ 编 译 器 方 面 Windows 平 台 上 厂 商 的 表 现 实 在 是 差 强 人 意, 不 管 是 Borland 或 是 Microsoft 都 没 有 完 全 实 现 出 符 合 ANSI C/C++ 标 准 的 C/C++ 编 译 器, 这 和 数 年 前 四 大 C/C++ 编 译 器 厂 商 彼 此 竞 争 激 烈 快 速 进 步 的 情 况 来 说 实 在 是 令 人 不 满 意, 这 也 可 见 失 去 竞 争 的 市 场 其 进 步 缓 慢 的 现 状 不 过 Borland 已 经 宣 称 在 发 展 下 一 代 最 佳 化 的 C/C++ 编 译 器, 不 但 能 够 产 生 更 好 的 最 佳 化 C/C++ 编 译 机 器 码, 而 且 也 将 符 合 ANSI C/C++ 标 准 相 对 于 Borland 在 C/C++ 方 面 的 大 动 作,Microsoft 反 而 显 得 比 较 沉 寂, 除 了 把 VC++ 移 植 到.NET 上 的 VC.NET 之 外 似 乎 没 有 什 么 大 的 改 善 当 然,Borland 是 不 是 能 够 真 地 推 出 宣 称 的 C/C++ 编 译 技 术 还 要 看 在 2003 年 的 表 现 另 外, 在 C/C++ 连 接 器 (Linker) 方 面 Borland 也 宣 称 将 要 搭 配 新 一 代 的 C/C++ 编 译 器 推 出 新 一 代 的 C/C++ 连 接 器, 提 供 更 聪 明 更 紧 密 的 最 终 机 器 码
144 除 了 编 译 器 连 接 器 和 C/C++ 开 发 工 具 之 外, 另 外 一 股 发 展 快 速 的 C/C++ 势 力 便 是 各 种 C/C++ 的 开 放 函 数 库 和 Framework 了 许 多 的 C/C++ 函 数 库 和 Framework 由 于 品 质 良 好 而 且 采 用 开 放 源 码 的 设 计, 因 此 也 快 速 被 许 多 的 C/C++ 程 序 员 使 用 而 盛 行 于 C/C++ 程 序 员 的 领 域 中, 除 了 早 为 大 多 数 C/C++ 程 序 员 广 泛 使 用 而 享 大 名 的 STL 之 外, 其 中 最 著 名 的 当 属 ACE Boost 和 Loki 这 三 个 C/C++ 函 数 库 和 Framework 了 C/C++ 的 王 牌 Framework--ACE ACE 是 一 个 使 用 面 向 对 象 方 式 设 计 的 C/C++Framework, 主 要 是 提 供 开 发 通 讯 应 用 软 件 使 用 的 核 心 同 步 处 理 (concurrency) 和 分 布 式 设 计 模 式 (design patterns) 的 功 能 ACE 提 供 了 C++ 的 封 装 类 别 (wrapper) 和 组 件, 让 程 序 员 在 许 多 UNIX 操 作 系 统 Win32 平 台 和 实 时 操 作 系 统 (Realtime Operation System) 平 台 开 发 高 效 率 的 系 统 服 务 和 应 用 程 序 ACE Framework 提 供 了 将 近 行 的 程 序 代 码 以 及 450 个 左 右 的 类 ACE 为 了 分 隔 Framework 的 复 杂 度, 采 用 了 层 次 的 架 构 来 设 计, 下 图 就 是 ACE Framework 的 设 计 架 构 图 在 ACE Framework 的 低 阶 层 次 中 封 装 了 OS 的 Adapter 以 及 C++ 的 封 装 类 别, 以 增 加 ACE Framework 在 不 同 平 台 之 间 的 移 植 性 而 在 ACE Framework 的 高 阶 层 次 中, 则 提 供 了 延 伸 低 阶 C++ 封 装 类 别 的 能 力, 以 提 供 可 重 复 使 用 的 分 布 式 组 件 以 及 分 布 式 计 算 中 间 件 由 此 可 知,ACEFramework 的 目 的 是 提 供 一 个 跨 平 台 的 中 间 件 Framework, 以 便 让 C/C++ 的 程 序 员 在 各 种 平 台 中 开 发 高 效 率 的 分 布 式 计 算 应 用 系 统 由 于 ACE Framework 的 流 行 以 及 广 泛 被 使 用, 因 此 已 经 被 许 多 C/C++ 程 序 员 视 为 主 流 的 C/C++Framework 目 前 也 有 许 多 的 应 用 程 序 使 用 ACE Framework 成 功 的 开 发 出 高 品 质 的 分 布 式 软 件 例 如 下 图 的 ACE ORB 便 是 使 用 ACE Framework 实 现 重 要 的 CORBA 规 格 的 实 时 ORB 引 擎 :TAO TAO 由 于 使 用 了 ACE Framework, 因 此 也 属 于 一 个 免 费 的 ORB 引 擎, 从 遵 照 OMG 规 格 的 CORBA 都 能 够 使 用 ACE Framework 来 实 现 这 一 点, 就 可 以 了 解 ACE Framework 的 实 用 性 读 者 可 以 在 找 到 TAO 的 数 据 另 外 一 个 使 用 ACE Framework 实 现 的 著 名 软 件 就 是 JAWS 了 JAWS 是 一 个 高 效 率 的 Adaptive Web Server, 下 图 是 JAWS 提 供 的 复 杂, 强 大 的 功 能 读 者 也 可 以 在 找 到 JAWS 的 数 据 由 于 目 前 ACE Framework 被 使 用 得 愈 来 愈 广 泛, 所 以 许 多 C/C++ 编 译 器 也 开 始 支 持 ACE Framework 因 此 新 一 代 的 C/C++ 开 发 工 具 必 须 能 够 支 持 ACE Framework, 最 好 还 能 够 提 供 整 合 ACE Framework 的 功 能, 直 接 在 C/C++ 开 发 工 具 内 部 支 持 ACE Framework Template 和 Design Pattern 的 极 美 结 合 :Loki Loki 是 一 个 愈 来 愈 流 行 的 C/C++ 类 函 数 库, 它 是 由 Andrei Alexandrescu 先 生 开 发 的, 而 Andrei 也 是 "Modern C++ Design" 一 书 的 作 者 事 实 上,Loki 就 是 因 为 "Modern C++Design"
145 一 书 的 介 绍 才 逐 渐 被 许 多 C/C++ 程 序 员 使 用 Loki 是 结 合 了 Design Pattern Generic Programming 和 C++ 语 言 集 成 的 C++ 函 数 库, 充 分 展 示 了 C++ 语 言 的 优 美 和 威 力, 并 且 提 供 了 C++ 语 言 使 用 新 的 应 用 由 于 Loki 的 优 美 和 盛 行, 因 此 现 在 许 多 C/C++ 编 译 器 和 开 发 工 具 都 以 支 持 Loki 为 重 要 的 功 能 之 一 最 新 的 C/C++ 标 准 函 数 库 Boost Boost 是 除 了 ACE 和 Loki 外 另 一 个 快 速 崛 起 的 C/C++ 标 准 函 数 库 目 前 Boost 已 经 被 C/C++ Standard's Committee 提 议 成 为 C/C++ 标 准 的 核 心 函 数 库, 由 此 可 见 Boost 的 重 要 性 目 前 Boost 同 样 被 许 多 C/C++ 编 译 器 支 持 未 来 的 C/C++ 开 发 工 具 应 该 在 核 心 部 分 就 会 支 持 Boost 未 来 的 C/C++ 开 发 工 具 最 应 该 采 用 的 开 放 架 构 应 该 是 在 核 心 部 分 支 持 Boost 和 Loki, 并 且 以 开 放 的 Adapter 来 整 合 ACE Framework 著 名 的 C/C++ 函 数 库 和 Framework 的 开 发 厂 商 Rogue Wave 数 年 前 使 用 C/C++ 开 发 工 具 的 程 序 员 可 能 都 知 道 Rogue Wave 这 家 软 件 厂 商, 因 为 Rogue Wave 就 是 以 提 供 各 种 专 业 的 C/C++ 函 数 库 和 Framework 著 名 的 在 数 年 前 Borland 和 许 多 的 C/C++ 开 发 工 具 厂 商 也 都 向 Rogue Wave 授 权 使 用 Rogue Wave 的 C/C++ 函 数 库 我 记 得, 数 年 前 在 使 用 C/C++ 语 言 时 最 喜 欢 使 用 的 函 数 库 也 是 Rogue Wave 出 品 的 产 品 当 年 在 C/C++User's Journal C/C++Report 等 著 名 的 杂 志 中,Rogue Wave 的 产 品 也 是 经 常 可 见 的 不 过 随 着 C/C++ 的 盛 况 不 再,Rogue Wave 的 声 势 似 乎 也 不 如 前 了, 许 多 当 时 Rogue Wave 著 名 的 C/C++ 函 数 库 也 随 着 消 失, 在 前 一 阵 子 甚 至 传 出 Borland 可 能 并 购 Rogue Wave 的 传 言 但 是 随 着 C/C++ 语 言 最 近 的 重 振 声 威,Rogue Wave 似 乎 也 开 始 有 了 比 较 积 极 的 动 作, 也 推 出 了 许 多 新 的 C/C++ 函 数 库 和 Framework, 有 兴 趣 的 读 者 可 到 Rogue Wave 的 网 站 上 看 看 不 过,Rogue Wave 的 发 展 史 也 见 证 了 C/C+4- 语 言 使 用 的 演 变 以 前 Rogue Wave 是 以 提 供 高 品 质 的 C/C++ 函 数 库 著 名, 例 如 Rogue Wave 曾 推 出 过 封 装 各 种 数 据 类 型 运 算 方 法 的 C/C++ 函 数 库, 但 是 在 STL 等 开 放 C/C++ 函 数 库 流 行 之 后,Rogue Wave 的 产 品 自 然 走 入 了 历 史 另 外,Rogue Wave 也 曾 推 出 过 封 装 ODBC 的 C/C++ 类 函 数 库, 以 提 供 C/C++ 程 序 员 在 各 种 平 台 使 用 ODBC 存 取 关 系 数 据 库 的 能 力, 但 是 随 着 0DBC 成 为 历 史,Rogue Wave 这 样 的 产 品 自 然 也 开 始 消 失 了 因 此, 如 何 为 一 个 已 经 流 行 超 过 10 年 的 语 言 不 断 注 入 新 的 创 意 技 术 和 应 用, 是 每 一 个 C/C++ 开 发 厂 商 都 必 须 面 对 的 事 情 C/C++ 开 发 工 具 的 未 来
146 那 么 C/C++ 开 发 工 具 的 未 来 是 什 么? 难 道 在 四 大 C/C++ 编 译 器 厂 商 大 战 之 后 C/C++ 开 发 工 具 的 市 场 便 没 有 创 新 了 吗? 除 了 Microsoft 的 VC.NET 和 Borland 的 C++Builder 之 外, Windows C/C++ 开 发 工 具 市 场 就 此 沉 寂 了 吗? 当 然 不, 在 前 面 我 们 看 到 了 C/C++ 函 数 库 和 Framework 的 蓬 勃 发 展, 相 较 于 目 前 C/C++ 开 发 工 具 厂 商 来 说 是 有 活 力 得 多 了 因 此, 未 来 的 C/C++ 开 发 工 具 必 须 能 够 跟 上 最 新 的 C/C++ 标 准 以 及 各 种 颇 具 威 力 的 C/C++ Framework 未 来 的 C/C++ 开 发 工 具 除 了 本 身 提 供 的 编 译 器 集 成 开 发 环 境 和 Framework 之 外, 必 须 采 用 新 的 架 构 设 计 以 提 供 C/C++ 程 序 员 整 合 Third-Party 或 是 Open Source 的 C/C++ Framework, 而 无 需 C/C++ 程 序 员 辛 苦 地 自 己 修 改 这 些 C/C++ Framework 才 能 够 使 用 另 外, 未 来 的 C/C++ 开 发 工 具 必 须 提 供 类 似 Java 的 高 移 植 性, 让 C/C++ 程 序 员 能 够 在 各 种 平 台 开 发 各 种 C/C++ 应 用 系 统 除 了 一 般 的 应 用 程 序 之 外, 在 移 动 设 备 低 阶 系 统 程 序 等 都 必 须 能 够 胜 任, 而 不 像 现 在 的 Windows C/C++ 开 发 工 具 一 样, 各 在 不 同 的 应 用 中 占 有 优 势 目 前,Microsoft 的 VC++ 在 窗 口 平 台 上 的 C/C++ 开 发 工 具 发 展 方 向 已 经 非 常 明 显, 那 就 是 维 持 原 生 窗 口 C/C++ 开 发 工 具 的 现 状 并 且 往 VC.NET 发 展 Borland 呢? 除 了 Borland C++Builder 6.0 之 外, 未 来 Borland 的 C/C++ 开 发 工 具 将 提 供 什 么 新 的 发 展 呢? 在 前 一 阵 子 Borland 已 经 宣 布 了 未 来 仍 将 投 入 大 量 的 资 源 研 发 新 一 代 的 C/C++ 开 发 工 具, 将 采 用 下 图 的 架 构 提 供 给 程 序 员 最 具 整 合 威 力 的 C/C++ 开 发 工 具 从 上 图 中 的 架 构, 我 们 已 经 可 以 预 知 未 来 的 Borland C/C++ 开 发 工 具 将 允 许 程 序 员 高 度 整 合 最 流 行 的 C/C++ Framework, 例 如 前 面 讨 论 的 ACE Boost 和 Loki 等 这 是 非 常 重 要 的, 因 为 未 来 的 Borland C/C++ 开 发 工 具 将 提 供 跨 平 台 / 移 动 设 备 的 能 力, 而 这 些 C/C++ Framework 也 大 都 提 供 跨 平 台 的 功 能 如 果 Borland 能 够 提 供 完 整 的 整 合 能 力, 那 么 这 代 表 未 来 的 Borland C/C++ 开 发 工 具 不 管 在 什 么 平 台, 都 能 够 提 供 最 完 整 和 强 劲 的 功 能 如 果 Borland 真 能 推 出 这 种 新 一 代 的 C/C++ 开 发 工 具, 那 么 这 将 是 Borland 从 当 初 Borland C/C++3.0 以 来 最 具 创 意 的 产 品, 也 是 最 值 得 程 序 员 期 待 的 C/C++ 工 具 Borland 是 不 是 能 够 遵 照 承 诺 推 出 呢? 也 许 答 案 在 2003 年 便 会 揭 晓 了 到 底 这 些 因 素 的 影 响 事 项 是 什 么 呢? 为 什 么 它 们 对 于 软 件 人 员 在 未 来 有 很 大 的 影 响 呢? 这 些 也 是 本 章 讨 论 的 重 点 不 都 是 整 理 和 抽 丝 剥 茧 吗? 我 在 从 事 信 息 工 作 的 生 涯 中 使 用 过 数 种 不 同 的 程 序 语 言 数 据 库 组 件 模 型 以 及 Framework 面 对 许 多 新 的 技 术 不 断 地 出 现, 开 发 人 员 似 乎 陷 入 了 永 远 学 不 完 新 东 西 的 梦 魇 不 过, 如 果 开 发 人 员 仔 细 回 味 许 多 技 术 的 本 质, 却 会 发 现 这 些 技 术 其 实 只 是 把 我 们 已 经 了 解 的 东 西 再 以 更 细 致 化 的 方 式 加 以 运 用, 关 键 在 于 开 发 人 员 是 否 注 意 到 了 这 些 本 质 和 趋 势 而 已 例 如, 目 前 在 C++ 中 流 行 得 火 热 的 Template Policy-Based template, 在 Java Object Pascal
147 和 C# 中 当 红 的 接 口 程 序 设 计, 以 及 各 种 组 件 模 型 和 Web Service 中 的 服 务 接 口 等, 如 果 我 们 仔 细 地 咀 嚼, 会 发 现 许 多 的 东 西 正 是 发 挥 程 序 员 原 本 就 拥 有 的 整 理 和 抽 丝 剥 茧 精 神, 再 加 以 发 挥 的 东 西 这 怎 么 说 呢? 让 我 们 以 数 个 例 子 来 说 明 读 者 就 容 易 了 解 了 首 先 让 我 们 想 想 为 什 么 会 出 现 数 据 库 这 类 的 产 品? 很 简 单, 因 为 由 于 数 据 愈 来 愈 多, 数 据 种 类 也 愈 来 愈 繁 杂, 因 此 造 成 了 我 们 需 要 一 种 软 件 产 品 能 够 整 理 这 些 数 据 让 它 们 更 容 易 的 被 我 们 处 理 和 使 用, 因 此 才 有 了 数 据 库 的 想 法 和 产 品 在 每 一 个 程 序 员 学 习 撰 写 程 序 代 码 时, 也 会 发 现 随 着 撰 写 的 程 序 代 码 愈 来 愈 多, 许 多 的 程 序 代 码 不 断 重 复 出 现 和 被 使 用, 因 此 很 自 然 的 程 序 员 开 始 使 用 例 程 (routine)/ 子 程 序 (subroutine) 或 是 过 程 (procedure) 函 数 (function) 等 机 制 帮 助 我 们 进 行 程 序 代 码 整 理 和 抽 丝 剥 茧 的 工 作 这 些 数 据 和 程 序 代 码 整 理 的 工 作 几 乎 是 每 一 个 程 序 员 的 求 生 本 能, 只 是 有 的 程 序 员 只 做 基 本 的 整 理 工 作, 而 更 聪 明 的 开 发 人 员 则 对 于 整 理 的 工 作 有 不 同 的 看 法, 进 而 促 使 了 许 多 延 伸 软 件 技 术 的 出 现, 也 开 始 对 软 件 开 发 产 生 了 重 大 的 影 响 例 如, 对 于 原 本 杂 乱 的 程 序 代 码 以 数 据 和 程 序 代 码 分 离 的 看 法 而 逐 渐 产 生 了 面 向 对 象 的 技 术, 以 分 离 例 程 / 子 程 序 和 数 据 类 型 为 看 法 的 应 用 则 产 生 了 类 似 C/C++ 中 的 template 技 术, 而 以 函 数 面 对 服 务 的 看 法, 认 为 开 发 人 员 应 该 面 向 服 务 的 开 发 模 式 则 造 成 了 接 口 程 序 设 计 (Interface Programming) 的 应 用 热 潮 虽 然 现 在 这 些 从 程 序 代 码 延 伸 出 的 技 术 都 独 领 风 骚, 在 软 件 开 发 界 中 产 生 了 重 大 的 影 响 和 开 发 模 式 的 改 变, 但 是, 如 果 我 们 追 根 究 底 来 观 察, 这 些 技 术 不 都 是 从 对 程 序 代 码 和 数 据 的 分 析 整 理 和 抽 丝 剥 茧 之 后, 以 更 精 致 的 方 式 来 处 理 和 开 发 软 件 吗? 因 此, 本 着 相 同 的 想 法 和 精 神, 聪 明 的 开 发 人 员 开 始 脱 离 单 一 程 序 语 言 的 架 构 而 进 入 了 开 发 出 可 重 复 使 用 的 软 件 组 件 模 型, 让 不 同 的 程 序 语 言 都 能 够 在 统 一 的 组 件 模 型 中 达 成 团 队 开 发 的 功 效 这 个 更 聪 明 的 整 理 和 抽 丝 剥 茧 的 想 法 造 就 了 CORBA COM/COM+ 和 EJB 等 组 件 模 型 的 驱 动 力 除 了 脱 离 程 序 语 言 之 外 思 考 的 开 发 人 员 外, 另 外 有 一 些 开 发 人 员 则 再 次 回 头 检 视 本 身 和 他 人 的 程 序 代 码, 并 且 努 力 搜 寻 优 良 和 成 功 程 序 代 码 的 基 因, 因 此 发 现 了 这 些 优 良 和 成 功 的 程 序 代 码 似 乎 都 有 着 类 似 的 模 式 和 架 构, 再 经 过 进 一 步 的 分 析 之 后 终 于 产 生 了 Design Pattern, 这 成 为 目 前 最 重 要 的 软 件 开 发 模 式 和 技 巧 之 一 在 这 之 后, 这 些 聪 明 的 开 发 人 员 了 解 到 如 果 能 够 成 功 运 用 Design Pattern, 并 且 把 程 序 设 计 转 变 成 以 服 务 为 目 标 的 方 式, 将 更 能 够 简 化 标 准 化 和 结 合 Design Pattern 的 运 用, 并 且 隐 藏 复 杂 的 实 现 技 巧, 这 就 进 而 产 生 了 Service Interface Programming 的 观 念 和 技 巧 由 此 可 见, 只 要 开 发 人 员 能 够 发 挥 细 心 整 理 和 抽 丝 剥 茧 的 能 力, 那 么 即 使 无 法 创 造 出 伟 大 的 新 软 件 工 程 或 是 软 件 技 术, 但 是 仍 然 能 够 帮 助 我 们 增 加 生 产 力 和 软 件 品 质 因 此, 对 于 开 发 人 员 来 说 重 要 的 不 是 无 止 境 地 学 习 层 出 不 穷 的 各 种 新 技 术, 而 是 到 底 有 没 有 了 解 这 些 技 术 之 后 代 表 的 观 念 思 想, 以 及 学 习 最 重 要 的 对 于 软 件 开 发 整 理 和 抽 丝 剥 茧 的 能 力 在 我 的 工 作 生 涯 中, 一 直 认 为 技 术 终 究 是 会 被 大 多 数 的 人 学 会 的, 但 是 在 辛 辛 苦 苦 地 努 力 这 么 多 年 后, 到 底 我 们 的 思 想 眼 光 和 抽 丝 剥 茧 的 能 力 是 否 有 所 精 进 呢? 如 果 没 有, 那 么 我 们 永 远 就 像 被 蒙 着 眼 睛, 只 能 尾 随 着 他 人 告 诉 的 技 术 前 进, 永 远 找 不 到 自 己 的 方 向 现 在, 再 让 我 们 以 一 个 C++ 的 例 子 来 证 明 只 要 开 发 人 员 能 够 看 透 程 序 语 言 和 技 术 背 后 代
148 表 的 真 实 意 义, 那 么 即 使 是 在 已 经 被 众 人 熟 知 的 技 术 中, 仍 然 能 够 创 造 出 新 的 技 术 和 含 义 在 Andrei Alexandrescu 先 生 所 著 的 "Modem C++Design" 一 书 中, 我 们 再 次 看 到 了 聪 明 的 开 发 人 员 对 于 程 序 语 言 的 了 解 和 对 于 程 序 代 码 撰 写 整 理 以 及 抽 丝 剥 茧 的 惊 人 能 力 Andrei 的 想 法 不 算 复 杂, 但 是 却 巧 妙 地 运 用 了 对 于 C++ template 深 刻 的 了 解 而 创 造 出 了 自 己 的 精 彩 之 作 其 实, 全 书 呈 现 的 思 维 之 妙, 让 读 者 可 以 从 一 开 始 的 小 范 例 就 看 出 如 何 运 用 已 经 广 为 人 知 的 技 巧 之 后 呈 现 出 的 不 同 风 貌 例 如,Andrei 想 法 是 以 Policy-Based 想 法 为 主, 以 各 种 不 同 的 准 则 来 提 供 服 务 函 数, 那 么 通 过 C++ template 的 能 力, 让 开 发 人 员 能 够 根 据 自 己 的 需 求 来 选 择 需 要 的 Policy 和 数 据 类 型, 结 合 于 C++ 的 template, 可 以 捉 供 开 发 人 员 前 所 未 有 的 自 由 度, 并 且 开 启 了 以 往 函 数 库 开 发 人 员 无 法 想 象 的 挥 洒 空 间 例 如, 下 面 的 程 序 代 码 中 提 供 了 三 个 不 同 的 类 别, 这 三 个 类 别 都 可 以 建 立 指 定 类 别 T 的 对 象 实 例 (Object Instance), 但 是, 这 三 个 类 别 各 自 使 用 了 不 同 的 方 式 来 建 立 T 的 对 象 实 例 在 这 里 提 供 了 建 立 T 类 别 的 对 象 实 例 的 准 则 Create() 方 法, 但 是 却 允 许 开 发 人 员 自 由 地 根 据 自 己 的 需 求 选 择 要 使 用 那 一 种 方 式 来 建 立 对 象 实 例 由 于 上 面 的 三 个 类 别 提 供 了 相 同 的 Policy( 其 实, 从 Service Programming 的 角 度 来 看, 可 以 说 它 们 都 提 供 了 相 同 的 服 务 ), 因 此, 开 发 人 员 可 以 再 自 行 定 义 一 个 consumer 类 别, 并 且 结 合 C++ 的 template 功 能, 让 这 三 个 服 务 类 别 成 为 客 制 化 数 据 类 型, 再 通 过 template 的 能 力, 自 由 地 被 开 发 人 员 选 择 使 用 例 如 在 下 面 的 程 序 代 码 中,WidgetManager 类 别 通 过 template 功 能 可 以 在 编 译 时 期 动 态 决 定 使 用 那 一 个 Policy 类 别 作 为 父 代 类 别, 而 自 动 拥 有 建 立 T 类 别 的 对 象 实 例 的 能 力 最 后, 我 们 可 以 再 次 使 用 template 能 力 在 编 译 时 期 由 开 发 人 员 代 入 欲 建 立 的 T 类 别 的 实 体 类 别 定 义, 通 过 template 功 能 结 合 Policy 服 务 和 各 种 不 同 的 数 据 类 型 例 如, 下 面 的 程 序 代 码 即 指 定 了 使 用 OpNewCreator 这 个 Policy 服 务 类 别, 以 传 统 的 new 操 作 数 来 建 立 Widget 类 别 的 对 象 实 例, 并 且 定 义 成 新 的 客 制 化 类 型 MywidgetMgr: typedef WidgetManager<OpNewCreator<Widget>>MywidgetMgr; 在 这 个 范 例 中, 我 们 看 到 了 Andrei 真 正 了 解 了 程 序 语 言 的 机 制, 并 且 经 过 他 的 思 考 和 抽 丝 剥 茧 之 后, 开 创 出 了 以 Policy 为 主 的 template class library Andrei 的 这 番 思 考 的 确 为 C++ 语 言 开 创 了 新 的 应 用 和 视 野, 这 正 是 发 挥 开 发 人 员 聪 颖 的 整 理 和 抽 丝 剥 茧 能 力 的 另 外 一 个 好 典 范 不 过,C++ 的 template 功 能 却 只 局 限 于 C++ 程 序 语 言 本 身, 这 是 因 为 template 是 C++ 语 言 本 身 的 特 性, 只 有 C++ 编 译 器 提 供 了 强 劲 支 持 所 以,C++ 的 template 无 法 在 程 序 语 言 之 外 和 其 他 的 程 序 语 言 合 作 提 供 类 似 组 件 模 型 的 能 力, 因 为 其 他 的 程 序 语 言 并 不 了 解 template, 也 不 支 持 template, 这 也 是 为 什 么 Microsoft 会 以 COM 来 提 供 不 同 程 序 语 言 之 间 的 整 合,EJB 则 更 单 纯 地 只 限 定 使 用 Java 的 原 因 其 实 在 上 面 讨 论 的 C++ template 中, 仍 然 可 以 通 过 混 合 编 译 时 期 和 执 行 时 期 的 功 能 来 提 供 C++ 在 组 件 模 型 和 其 他 程 序 语 言 或 是 技 术 结 合 的 能 力, 同 时 又 能 够 使 用 C++ 本 身 强 劲 的 语 言 机 制 例 如, 我 们 可 以 在 外 部 使 用 XML 作 为 组 态 文 件, 以 指 定 我 们 想 要 使 用 的 Creator 以 及 想 要 建 立 的 对 象 例 如 下 面 的 XML 内 容 即 指 明 了 和 前 面 相 同 的 Creator:OpNewCreator,
149 以 及 要 建 立 的 对 象 :Widget: 而 C++ 可 输 出 一 个 纯 粹 的 服 务 接 口, 类 似 COM 的 接 口 以 便 和 其 他 组 件 模 型 或 是 程 序 语 言 整 合 : 最 后, 在 CPPCreator 的 实 体 衍 生 类 别 中 可 以 通 过 分 析 XML 组 态 文 件 的 内 容 来 决 定 建 立 何 种 的 Manager: 上 述 的 机 制 可 以 让 C/C++ 语 言 提 升 至 组 件 模 型 和 其 他 的 技 术 整 合 的 层 面, 又 能 够 仍 然 使 用 本 身 强 大 的 template Policy-Based template 或 是 template 函 数 库 当 然, 这 里 我 并 不 是 以 讨 论 C/C++ 程 序 语 言 的 技 巧 为 主, 不 过, 上 面 的 程 序 代 码 仍 然 可 以 进 一 步 使 用 dynamic dispatch 来 改 善, 成 为 品 质 更 好 的 程 序 代 码 其 实, 这 些 想 法 和 实 现 机 制 仍 然 是 在 使 用 整 理 和 抽 丝 剥 茧 程 序 代 码 的 方 式 来 解 决 问 题, 只 是 以 更 细 致 的 想 法 重 新 给 予 程 序 语 言 或 是 工 具 新 的 意 义 并 且 运 用 在 日 常 的 开 发 生 活 之 中, 有 时 候 只 要 脑 筋 稍 为 转 个 弯 就 能 够 看 到 新 的 应 用 现 在, 除 了 在 程 序 语 言 层 面 运 用 各 种 整 理 和 抽 丝 剥 茧 的 技 术 来 增 进 我 们 开 发 的 速 度 和 品 质 之 外, 许 多 人 已 经 开 始 运 用 相 同 的 想 法 在 建 立 企 业 应 用 系 统 了 例 如, 现 在 许 多 人 已 经 了 解 Design Pattern 除 了 在 程 序 语 言 方 面 有 实 质 的 帮 助 之 外, 在 企 业 应 用 系 统 的 设 计 方 面 更 有 极 大 的 应 用 价 值 而 且 许 多 人 已 经 开 始 整 合 这 方 面 的 Design Pattern, 例 如 Martin Fowler 最 新 著 的 "Patterns Of Enterprise Application Architecture" 一 书 中 便 分 析 和 整 理 了 他 观 察 和 使 用 Design Pattern 在 设 计 和 发 展 企 业 应 用 系 统 的 心 得 在 这 本 书 中,Martin Fowler 也 清 楚 地 说 明 了 他 只 是 发 挥 了 整 理 和 抽 丝 剥 茧 的 原 则 提 供 给 开 发 企 业 应 用 系 统 的 开 发 人 员 参 考, 许 多 的 Design Pattern 并 不 是 他 发 明 的 可 见, 现 在 许 多 的 开 发 人 员 只 是 更 精 炼 地 观 察 和 整 理 多 年 的 开 发 经 验, 以 萃 取 出 更 佳 的 Coding 和 开 发 的 技 巧 以 及 开 发 惯 例 而 Design Pattern 运 用 在 企 业 应 用 系 统 中 的 功 用 是 能 够 帮 助 开 发 人 员 更 了 解 整 个 系 统 的 架 构, 并 且 更 容 易 掌 握 如 何 分 门 别 类 企 业 应 用 系 统 不 同 层 次 之 间 如 何 的 切 割 和 分 发, 能 够 营 造 出 体 质 更 为 健 全 的 复 杂 企 业 应 用 系 统 目 前, 这 股 重 新 整 理 和 抽 丝 剥 茧 的 风 气 也 已 经 蔓 延 到 各 种 信 息 开 发 领 域, 从 程 序 语 言 组 件 模 型 一 直 到 大 型 应 用 系 统 的 设 计 和 开 发 我 认 为, 下 一 步 将 继 续 进 入 整 个 开 发 流 程 的 领 域 之 中 当 软 件 厂 商 提 供 了 完 整 的 开 发 流 程 工 具 之 后, 就 开 始 会 有 人 研 究 如 何 在 开 发 流 程 中 再 度 应 用 Design Pattern 等 技 术 因 此 在 未 来, 开 发 人 员 必 须 了 解 Patterns, 并 且 在 开 发 的 过 程 中 时 时 注 意 软 件 开 发 的 趋 势 和 使 用 惯 例, 不 断 吸 收 更 多 的 技 巧, 以 更 精 致 的 思 想 和 方 式 来 开 发 软 件, 如 此 一 来 才 能 够 脱 颖 而 出, 在 软 件 开 发 的 生 涯 中 出 人 头 地 Web Service Works SOAP 和 Web Service 从 去 年 开 始 快 速 兴 起, 并 开 始 占 据 信 息 整 合 应 用 的 市 场 虽 然 许
150 多 人 提 出 对 于 SOAP 和 Web Service 执 行 效 率 和 安 全 性 的 质 疑, 但 是,SOAP 和 Web Service 的 穿 透 力 整 合 力 却 无 庸 置 疑 是 极 具 吸 引 力 的 因 此, 目 前 Web Service 的 各 种 规 格 除 了 蓬 勃 发 展 之 外,Web Service 的 应 用 也 的 确 开 始 出 现 在 我 们 的 四 周 不 过,Web Service 到 底 应 用 在 哪 些 方 面 呢?SOAP 和 Web Service 目 前 在 信 息 业 界 使 用 的 情 形 如 何? 相 信 这 些 都 是 许 多 人 关 心 的 问 题, 也 是 许 多 人 想 要 知 道 的 答 案 最 近, 我 被 邀 请 到 一 家 信 息 机 构 交 流 信 息 技 术 的 心 得 主 持 人 告 诉 我 他 们 现 在 拥 有 一 个 分 布 区 域 极 为 广 大 的 信 息 系 统 每 一 个 区 域 使 用 的 硬 件 操 作 系 统 数 据 库 和 开 发 工 具 都 不 同 而 且, 目 前 这 些 系 统 之 间 并 没 有 专 线 连 接 在 一 起 现 在 他 们 想 要 整 合 这 些 系 统, 而 且 希 望 能 够 在 机 构 中 心 向 不 同 的 区 域 查 询 货 物 数 据 并 且 在 机 构 中 心 整 合 查 询 到 的 信 息 这 位 主 持 人 询 问 我 有 没 有 什 么 方 法 可 以 完 成 这 个 信 息 架 构 在 详 细 地 讨 论 之 后, 我 了 解 到 机 构 中 心 从 各 个 区 域 查 询 的 信 息 都 是 属 于 小 量 数 据 的 查 询 由 于 在 每 一 个 不 同 的 区 域 都 有 自 己 的 数 据 库, 因 此 可 以 通 过 每 一 个 区 域 的 数 据 库 服 务 器 从 大 量 的 数 据 中 撷 取 查 询 数 据, 再 把 查 询 到 的 结 果 传 回 机 构 中 心 进 行 简 单 的 整 合 工 作 对 于 这 个 信 息 架 构, 我 想 最 简 单 的 方 法 就 是 在 每 一 个 区 域 的 服 务 器 上 实 现 一 个 CORBA 服 务 器, 再 由 CORBA 服 务 器 对 外 提 供 查 询 接 口 由 于 CORBA 拥 有 跨 平 台 数 据 库 和 开 发 语 言 中 立 的 特 点, 因 此 非 常 适 合 使 用 来 作 为 原 有 专 属 系 统 提 供 对 外 的 标 准 服 务 接 口 有 了 CORBA 服 务 器 作 为 服 务 接 口 之 后, 我 们 可 以 继 续 把 CORBA 服 务 转 换 为 标 准 的 Web Service, 再 由 机 构 中 心 使 用 SOAP, 即 可 轻 易 地 使 用 标 准 机 制 穿 透 并 且 整 合 原 本 的 异 质 系 统 使 用 Web Service 的 原 因 是 由 于 在 这 个 应 用 中 只 会 有 少 量 的 资 料 查 询, 因 此 Web Service 绝 对 可 以 胜 任, 而 Web Service 提 供 的 穿 透 力 和 整 合 力 是 其 他 技 术 难 以 相 比 的 对 于 安 全 的 需 求, 可 以 使 用 HTTPS 加 上 CORBA 的 安 全 服 务 即 可 提 供 一 定 的 安 全 可 靠 性 原 本 看 起 来 困 难 的 事 情 一 下 子 就 被 Web Service 和 CORBA 联 手 解 决 了 这 正 是 一 个 非 常 好 的 Web Service 应 用 范 例 那 么 在 2002 年,Web Service 在 信 息 业 界 应 用 的 情 形 到 底 是 如 何 呢? 到 底 有 没 有 信 息 系 统 在 使 用 SOAP 和 Web Service 技 术 呢? 其 实, 我 们 从 各 种 开 发 工 具 都 支 持 Web Service 的 应 用 来 看, 一 定 是 有 人 已 经 在 使 用 Web Service 了, 否 则 没 有 必 要 几 乎 所 有 的 开 发 工 具 都 争 先 恐 后 地 加 入 对 于 SOAP 和 Web Service 的 支 持 下 图 是 2002 年 信 息 界 对 于 使 用 Web Service 的 最 后 调 查 结 果, 从 数 字 中 我 们 可 以 看 到, 没 有 使 用 Web Service 的 比 率 是 43.2%, 但 是 超 过 50% 的 调 查 显 示 Web Service 已 经 或 多 或 少 的 被 应 用 在 信 息 系 统 之 中 了 而 这 些 统 计 数 据 也 代 表 了 Web Service 被 实 际 应 用 的 证 明 另 外 一 份 对 于 Web Service 应 用 的 调 查 结 果 如 下 页 所 显 示 我 们 可 以 看 到 在 2003 年 中 Web Service 将 有 更 大 的 使 用 比 率, 可 见 Web Service 的 应 用 将 会 快 速 地 提 升 如 果 我 们 把 两 份 统 计 结 果 以 趋 势 图 同 时 呈 现 的 话, 会 发 现 Web Service 应 用 的 成 长 比 率 几 乎 不 会 输 给 一 般 的 开 发 工 具 或 是 程 序 语 言 的 成 长 比 率
151 在 2003 年 Web Service 除 了 将 愈 来 愈 普 及 之 外, 新 的 Web Service 规 格 也 将 慢 慢 完 善 并 且 开 始 被 软 件 厂 商 实 现 除 此 之 外, 也 开 始 有 信 息 厂 商 对 Web Service 的 缺 点 加 以 改 善 推 出 变 形 的 解 决 方 案 不 过 千 变 万 变, 不 变 的 是 在 现 在 信 息 多 元 化 的 时 代 正 显 示 了 我 们 的 确 需 要 Web Service 代 表 的 穿 透 力 和 整 合 力 许 多 人 当 初 说 Web Service 是 不 实 际 的 技 术, 从 目 前 的 各 种 迹 象 和 统 计 数 字 来 看 这 些 人 似 乎 是 错 了 Web Service 的 简 单 化 不 代 表 无 用, 其 缓 慢 也 不 代 表 不 可 用 我 们 只 需 要 在 适 当 的 地 方 使 用 适 当 的 技 术,Web Service 就 是 一 个 很 好 的 例 子 毕 竟 当 初 Don Box 在 定 义 SOAP 时 最 原 始 的 想 法 本 就 是 " 简 单 (Simple)", 不 是 吗? 面 向 对 象 技 术 的 平 民 化 " 你 们 是 用 什 么 方 法 来 开 发 系 统 的?"," 你 们 使 用 UML 吗? 你 们 在 使 用 面 向 对 象 方 式 开 发 应 用 系 统 时 使 用 所 有 的 UML 图 形 吗?"," 你 们 遵 循 RUP 来 发 展 软 件 吗?", 这 些 问 题 是 我 在 和 一 些 信 息 界 的 朋 友 聊 天 时 经 常 询 问 的 问 题, 因 为 我 也 非 常 想 了 解 UML/RUP 和 Modeling 在 业 界 使 用 的 情 形 UML 和 Modeling 的 需 求 在 三 位 OO 大 师 多 年 的 提 倡 并 且 成 立 Rational 公 司 开 始 大 卖 Rose 后, 照 理 说 UML 和 Modeling 在 信 息 业 界 应 该 是 被 广 泛 地 使 用, 不 是 吗? 但 是 情 形 似 乎 并 不 是 如 此 在 我 知 道 的 许 多 案 例 中, 许 多 公 司 或 是 信 息 机 构 在 购 买 了 Rose 之 后, 要 么 被 供 奉 起 来 成 为 一 种 先 进 / 时 髦 的 象 征, 不 然 就 是 被 使 用 来 作 为 画 图 的 工 具 即 使 是 真 地 使 用 UML 和 Modeling 的 公 司 也 大 都 只 是 使 用 Rose 画 画 Use Case Class Diagram 和 Object Diagram, 再 继 续 深 入 得 几 乎 没 有 为 什 么 会 如 此 呢?UML 已 经 被 证 明 是 非 常 好 的 理 论 开 发 方 式 和 沟 通 语 言,Rose 也 推 出 了 这 么 多 年, 为 什 么 UML 的 普 及 率 仍 然 非 常 低 呢? 为 什 么 许 多 购 买 了 Rose 的 公 司 和 机 构 也 没 有 完 全 使 用 Rose 的 功 能 呢? 这 其 中 一 定 有 一 些 问 题 存 在 但 是, 这 是 什 么 问 题 呢? 就 我 个 人 的 经 验 来 说, 在 许 多 的 项 目 开 发 之 中 大 概 都 只 有 使 用 到 Use Case Class Diagram 和 Object Diagram, 最 多 画 画 Sequence Diagram, 接 着 就 是 结 合 组 件 模 型 开 发 工 具 和 数 据 库 开 始 进 入 开 发 的 阶 段, 比 较 注 重 CBD 的 开 发 模 型, 鲜 少 使 用 到 其 他 的 UML 图 形, 因 此 可 以 说 是 偏 向 结 合 UML 和 Extreme Programming, 以 项 目 时 程 为 最 重 要 的 依 归, 并 不 强 调 完 全 遵 照 UML 和 RUP 因 此, 我 也 非 常 想 要 和 其 他 的 朋 友 交 流, 了 解 其 他 人 使 用 UML/RUP 的 情 形, 或 者 其 他 人 是 如 何 使 用 OO 技 术 开 发 项 目 的 我 个 人 也 是 从 事 信 息 工 作 的 一 员 虽 然 没 有 什 么 显 著 的 贡 献, 但 是 我 对 于 UML 和 Rose 始 终 有 一 份 怀 疑 当 然, 这 份 怀 疑 并 不 是 指 UML 和 Rose 没 有 用, 相 反,UML 的 确 对 于 软 件 工 程 有 着 卓 越 的 贡 献 不 过 我 认 为 UML 和 Rose 之 中 的 许 多 东 西 过 于 繁 琐, 要 实 际 应 用 在 项 目 发 展 之 上, 除 非 项 目 没 有 时 程 和 资 源 的 限 制, 就 像 Rumbaugh 自 己 在 GE 时 从 事 的 实 验 计 划, 拥 有 许 多 的 资 源 和 宽 阔 的 时 程, 否 则, 怎 么 可 能 有 时 间 和 资 源 把 所 有 的 UML 图 形 都 画 出 来 呢? 至 少 就 我 个 人 的 项 目 生 涯 来 说 是 从 来 都 不 可 能 的, 因 为 在 我 个 人 的 信 念 中 项 目 开 发 最 重 要 的 准 则 是 "On-Time Delivery Of A Working And Decent System", 不 是 UML, 不 是
152 RUP, 更 不 是 任 何 其 他 时 髦 软 件 技 术 另 外, 我 一 直 认 为 Rose 实 在 算 不 上 好 的 软 件, 每 一 次 我 使 用 Rose 就 有 种 回 到 Windows 3.1 时 代 的 感 觉 此 外,Rose 在 绘 制 UML 图 形 上 始 终 有 一 些 小 问 题, 从 版 本 1 开 始 到 现 在 都 没 有 改 善 因 此 我 也 曾 经 开 玩 笑 地 说,"Rose 是 全 世 界 一 流 的 OO 分 析 师 配 合 三 流 的 程 序 员 开 发 出 采 的 产 品 " 因 此 我 个 人 对 于 UML/RUP 一 直 有 着 一 份 怀 疑, 只 是 人 微 言 轻, 不 敢 轻 易 表 示 对 于 UML/RUP 的 质 疑 不 过, 在 Extreme Programming 对 于 UML/RUP 开 发 模 式 提 出 类 似 的 质 疑 和 逐 渐 分 庭 抗 礼 之 后, 我 也 在 Internet/Intranet 上 看 到 愈 来 愈 多 对 于 UML/RUP 的 批 评 以 及 许 多 人 公 开 讨 论 使 用 UML/RUP 失 败 的 原 因 和 检 讨 此 后, 我 总 算 如 释 重 负, 因 为 这 些 都 证 明 了 不 单 是 我 个 人 有 疑 问, 许 多 人 都 有 相 同 或 是 类 似 的 问 题 我 认 为 这 些 批 评 和 质 疑 对 于 UML/RUP 是 一 件 好 事, 因 为 这 可 以 让 软 件 界 再 次 审 视 UML/RUP 不 足 之 处, 找 出 问 题 的 所 在 并 且 加 以 改 善, 才 能 够 让 UML/RUP 持 续 地 对 软 件 界 和 软 件 工 程 做 出 贡 献 正 由 于 Extreme Programming 对 于 UML/RUP 的 挑 战, 反 而 可 以 让 我 们 更 清 楚 地 了 解 什 么 方 法 才 是 最 适 合 的 我 个 人 认 为, 对 于 小 / 中 的 系 统 或 是 项 目 而 言, 简 易 的 UML 和 Extreme Programming 是 比 较 适 当 的, 而 对 于 大 型 的 企 业 应 用 系 统 (Enterprise Application System) 而 言,UML 和 RUP 被 证 明 是 有 效 的 一 直 到 2003 年 初 听 了 TogetherSoft 的 首 席 科 学 家 (Chief Scientist)Todd Olsen 的 演 讲 后, 才 正 式 确 定 了 我 的 想 法 没 有 错 连 Todd Olsen 都 认 为 UML/RUP 太 过 于 学 术 化, 对 于 学 术 的 研 究 没 有 问 题, 但 是 在 实 际 的 应 用 中 则 稍 显 繁 杂 开 发 人 员 应 该 在 开 发 工 具 的 辅 助 下 进 行 适 当 的 修 整 以 找 出 最 " 适 当 " 的 方 式 来 进 行 项 目 或 是 系 统 工 具 的 开 发 连 Todd Olsen 这 种 经 验 丰 富 软 件 开 发 实 力 又 惊 人 的 大 师 级 人 物 都 这 么 说, 我 也 就 放 下 心 来 了 看 来 属 于 实 战 型 的 开 发 人 员, 依 照 武 侠 书 的 讲 法, 应 该 掌 握 的 是 " 最 具 杀 人 威 力 的 剑 法, 而 不 是 华 丽 的 招 式 " 当 时 我 在 聆 听 了 Todd Olsen 大 胆 的 说 法 之 后 不 禁 大 呼 过 瘾, 隐 藏 在 心 中 多 年 的 质 疑 终 于 一 挥 而 去 虽 然 过 于 拘 泥 于 UML/RUP 的 开 发 模 型 不 算 是 好 的 方 式 ( 或 许 这 对 于 学 术 研 究 是 正 确 的 ), 但 是 也 没 有 人 完 全 否 认 UML/RUP 对 于 软 件 开 发 的 贡 献 事 实 上 UML 是 很 重 要 的, 因 为 它 可 以 让 开 发 人 员 使 用 同 一 种 语 言 沟 通, 也 可 以 很 有 效 地 使 用 Use Case 让 企 业 人 员 和 开 发 人 员 沟 通 但 是 为 什 么 在 Rational 推 广 Rose 这 么 多 年 来 普 及 的 成 效 仍 然 有 限 呢? 我 个 人 认 为 有 如 下 的 原 因 : 价 格 昂 贵, 难 以 普 及 只 锁 定 金 字 塔 顶 端 的 开 发 人 员 过 于 强 调 完 整 的 UML/RUP 开 发 模 式 没 有 和 开 发 工 具 整 合 在 一 起, 以 打 入 一 般 的 开 发 人 员 群 体 由 于 Rose 采 取 高 价 的 策 略, 因 此 虽 然 为 Rational 赚 进 了 大 把 的 钞 票, 但 是 也 让 UML/RUP 和 Rose 的 普 及 率 难 以 大 幅 地 扩 展 想 想 10 年 前 的 Client/Server 技 术 也 是 在 PowerBuilder Gupta 等 采 取 高 价 措 施 而 难 以 快 速 普 及, 一 直 要 到 VB 和 Delphi 等 大 众 化 开 发 工 具 提 供 了 Client/Server 功 能 之 后, 才 让 Client/Server 快 速 为 大 多 数 的 软 件 人 员 视 Client/Server 技 术 为 理 所 当 然 的 基 本 技 巧 在 PowerBuilder/Gupta 错 失 了 占 据 Client/Server 的 庞 大 市 场 之 后, 再 也 无 法 成 为 Client/Server 的 领 导 厂 商
153 同 样 地, 如 果 Rational 一 直 为 Rose 采 取 高 价, 只 锁 定 高 阶 开 发 人 员 市 场 的 策 略, 那 么 Rose 很 可 能 会 在 其 他 的 竞 争 对 手 推 出 更 好 的 UML 产 品 之 后 快 速 流 失 市 场, 事 实 上 这 正 是 Rational 在 2002 年 面 临 的 困 境, 因 为 Rose 不 但 遭 受 许 多 UML 小 厂 商 的 竞 争, 更 被 其 最 大 的 竞 争 对 手 TogetherSoft 打 得 难 以 招 架, 要 不 是 Rational 还 有 3 位 OO 大 师 的 名 号 在 力 撑, Rose 早 就 被 TogetherJ 或 是 TogetherSoft 的 Control Center 打 得 落 花 流 水 了 从 最 近 4 年 TogetherSoft 可 怕 的 成 长 速 度 可 以 看 出 来,Rational 早 已 被 TogetherSoft 逼 得 寝 食 难 安 了 在 Borland 并 购 了 TogetherSoft 之 后,Rational 将 面 对 更 为 艰 难 的 状 况 一 旦 Borland 成 功 地 在 其 的 开 发 工 具 中 整 合 TogetherSoft 的 产 品, 那 么 将 可 能 会 像 当 初 的 Client/Server 技 术 一 样, 可 通 过 提 供 更 平 易 近 人 的 UML 工 具 而 快 速 让 UML 为 大 多 数 的 开 发 人 员 接 受 而 使 用 再 加 上 如 果 Borland 以 合 理 的 价 格 提 供 UML 和 开 发 工 具, 那 么 将 可 以 让 UML 打 入 金 字 塔 中 / 低 阶 的 开 发 市 场, 快 速 鲸 吞 Rose 的 市 场 到 时 Rose 在 UML/Modeling 产 品 本 身 不 如 TogetherSoft 之 下, 再 加 上 Borland 开 发 工 具 的 强 力 支 援,Rational 的 大 势 不 妙 因 此 这 是 为 什 么 当 Borland 宣 布 并 购 TogetherSoft 之 后 受 伤 最 深 的 公 司 就 是 Rational, 而 Rational 也 立 刻 声 明 中 断 和 Borland 的 合 作 的 原 因 最 后 在 Rational 眼 看 后 势 欠 佳, 再 加 上 IBM 提 出 动 人 的 并 购 条 件 之 后 便 立 刻 接 受 了 IBM 的 提 议 根 据 2002 年 的 信 息 调 查 显 示, 大 多 数 的 开 发 人 员 已 经 视 Modeling 工 具 为 相 当 重 要 的 工 具 而 且 目 前 使 用 Modeling 工 具 的 开 发 人 员 也 相 对 地 满 意 于 Modeling 工 具 提 供 的 功 能 因 此, 如 果 Modeling 工 具 能 够 再 和 开 发 工 具 紧 密 地 结 合, 那 么 Modeling 未 来 的 发 展 将 更 为 快 速 目 前 在 所 有 和 开 发 相 关 的 工 具 中,Modeling 和 设 计 工 具 已 经 占 据 了 相 当 重 要 的 地 位 根 据 2002 年 调 查 的 结 果 显 示, 设 计 和 Modeling 工 具 已 经 分 别 占 据 了 所 有 开 发 相 关 工 具 的 第 2 和 第 8 名, 而 且 还 呈 现 持 续 上 升 的 状 态 由 此 可 见, 开 发 人 员 已 经 愈 来 愈 重 视 设 计 和 Modeling 工 具 在 Borland 并 购 TogetherSoft 之 后, 我 认 为 Borland 会 以 较 为 合 理 的 价 格 提 供 整 合 Modeling 和 开 发 工 具 的 软 件 包, 快 速 把 UML 技 术 打 入 一 般 开 发 人 员 的 市 场, 并 且 将 会 正 式 触 发 使 用 UML 和 Modeling 功 能 成 为 开 发 人 员 的 核 心 基 本 技 巧, 就 像 数 年 前 Client/Server 技 术 对 于 开 发 人 员 一 样 因 此, 我 们 可 以 发 现 下 面 图 形 呈 现 的 还 是 去 年 以 前 开 发 人 员 拥 有 的 技 术 状 况 开 发 人 员 的 核 心 技 术 只 需 要 拥 有 程 序 语 言 数 据 结 构 和 Algorithm 即 可 但 是 从 2003 年 开 始, 一 旦 Borland 或 是 IBM 推 出 整 合 Modeling 工 具 和 开 发 工 具 的 新 一 代 软 件 之 后, 面 向 对 象 Modeling 和 Design Pattern 等 技 术 将 被 压 缩 到 开 发 人 员 的 核 心 基 本 技 术 之 中 这 代 表 未 来 的 开 发 人 员 必 须 熟 知 面 向 对 象 Modeling 和 Design Pattern 等 技 术, 再 也 无 法 逃 避 学 习 这 些 重 要 的 软 件 技 巧 因 此, 我 们 可 以 说 信 息 公 司 的 合 并 不 但 影 响 这 些 软 件 公 司 之 间 的 竞 争, 也 会 对 开 发 人 员 产 生 影 响 在 面 向 对 象 Modeling 和 Design Pattern 等 技 术 成 为 开 发 人 员 的 核 心 技 能 之 后,
154 当 然 可 以 增 加 软 件 开 发 的 速 度 和 可 靠 度, 这 对 于 整 个 软 件 产 业 而 言 是 正 面 的 结 果 对 于 像 Borland 或 是 IBM 等 公 司, 由 于 让 UML 和 Modeling 技 巧 和 产 品 成 为 一 般 开 发 人 员 必 须 拥 有 的 技 巧 和 使 用 的 产 品 之 后, 也 可 以 通 过 更 大 量 的 市 场 来 弥 补 产 品 价 格 下 滑 的 损 失 一 旦 UML/Modeling 技 术 大 众 化 和 产 品 平 价 化 之 后, 软 件 公 司 反 而 可 以 拥 有 更 多 的 收 入 面 向 对 象 和 Modeling 平 价 化 之 后 便 会 开 始 进 入 开 发 人 员 的 生 活 之 中, 也 会 开 始 影 响 我 们 开 发 软 件 的 方 式 和 流 程 这 两 者 会 像 从 前 的 其 他 技 术, 例 如 Client/Server 数 据 存 取 和 Web 等, 慢 慢 成 为 几 乎 每 一 个 开 发 人 员 必 备 的 技 术 然 而 不 同 的 是, 面 向 对 象 和 Modeling 对 于 我 们 的 思 考 模 式 却 有 更 大 的 影 响 和 改 变, 因 此 造 成 的 影 响 也 将 远 比 从 前 的 技 术 更 为 深 远 因 为 除 了 面 向 对 象 和 Modeling 的 思 想 和 开 发 流 程 之 外, 伴 随 着 它 们 而 来 的 将 是 更 多 的 软 件 工 程 和 软 件 技 术 不 过 对 于 开 发 人 员 来 说 这 实 在 是 一 条 辛 苦 的 不 归 路, 学 习 的 道 路 不 但 没 有 尽 头, 沿 途 还 充 满 了 艰 辛 软 件 开 发 工 作 真 是 个 辛 苦 的 行 业, 不 是 吗? 不 过 反 过 来 想, 软 件 开 发 生 涯 也 将 是 充 实 满 载 而 归 的 路 途, 不 是 吗? 准 备 迎 接.NET 时 代 的 来 临 2002 年 是.NET 初 临 的 时 代 虽 然.NET 的 初 鸣 并 没 有 给 人 太 亮 眼 的 表 现, 但 是 同 七 八 年 前 Java 初 次 展 现 于 舞 台 上 时 相 比 较,.NET 的 表 现 并 不 逊 色, 甚 至 比 当 年 的 Java 表 现 得 更 好 在 2003 年,Microsoft 更 准 备 推 出 新 版 的.NET.NET Server 以 及 新 的.NET 开 发 工 具, 而 且 大 部 份 的 调 查 也 都 指 出.NET 将 开 始 在 2003 年 起 飞 面 对 Microsoft 一 连 串 强 势 的 动 作, 我 们 其 实 可 以 预 见.NET 也 即 将 更 为 活 跃 和 更 有 影 响 力 其 实 我 也 很 想 了 解.NET 在 2002 年 到 底 表 现 得 如 何? 除 了 市 场 上 许 多 的.NET 书 籍 文 章 之 外, 我 也 在 业 界 和 许 多 朋 友 讨 论 以 及 询 问 2002 年.NET 在 信 息 界 使 用 的 状 况 我 得 到 的 结 果 都 是 在 评 估.NET 之 中, 实 际 使 用.NET 开 发 的 产 品 还 不 多, 但 是 ASP.NET 被 使 用 的 情 形 则 是 令 人 惊 讶 的 快 速 我 已 经 发 现 许 多 的 网 站 开 始 使 用 ASP.NET 来 开 发, 可 见.NET 和 当 初 的 Java 一 样, 是 从 Internet/Intranet 开 始 入 侵 日 常 的 信 息 应 用 最 近 一 份.NET 的 调 查 报 告 终 于 把.NET 在 2002 年 使 用 的 粗 略 状 况 呈 现 出 来, 显 示 出.NET 的 确 已 经 有 了 初 步 的 成 果, 虽 然 也 许 没 有 达 到 Microsoft 的 期 望, 但 是 也 有 不 错 的 成 绩 下 图 是 ASP.NET 在 这 份 调 查 中 的 结 果, 读 者 可 以 看 到, 已 经 使 用 和 准 备 使 用 ASP.NET 的 比 率 已 经 超 过 50%, 而 且 已 经 有 18.9% 的 软 件 人 员 在 使 用 ASP.NET 开 发 Web 应 用 系 统, 这 对 于 推 出 才 1 年 的 技 术 来 说 是 非 常 惊 人 的, 也 可 以 说 ASP.NET 是 非 常 成 功 的 而 下 一 份 图 形 则 显 示 出 开 发 人 员 对 于 Microsoft.NET Server 的 使 用 情 形 从 数 字 结 果 可 以 看 到.NET Server 的 接 受 度 也 非 常 高, 也 有 超 过 50% 的 接 受 度 可 见 在 Microsoft 推 出 下 一 代 的.NET 操 作 系 统 之 后 市 场 反 应 也 会 非 常 的 正 面 从 上 面 的 两 个 统 计 结 果 来 看,.NET 已 经 比 我 们 想 象 的 更 快 地 进 入 实 际 的 应 用 领 域 中 在 2003 年 看 来 准 备 在 Microsoft Windows 平 台 讨 生 活 的 开 发 人 员 的 确 是 开 始 需 要 学 习.NET
155 了, 因 为 很 可 能 从 2004 年 开 始 我 们 便 将 看 到 Windows 平 台 又 将 进 入 世 代 交 替 的 现 象 Borland 的 未 来 Borland 正 站 在 十 字 路 口 上, 面 对 未 来 的 方 向 数 年 前 Borland 错 失 了 开 发 消 费 型 软 件 的 契 机, 以 致 无 法 持 续 成 长 为 更 为 强 大 的 软 件 公 司 看 着 Borland 从 2000 年 开 始 一 连 串 的 发 展 以 及 在 2002 年 完 成 的 并 购 动 作, 我 们 可 以 看 到 Borland 已 经 选 择 了 另 外 一 条 道 路, 那 就 是 全 力 往 企 业 市 场 前 进 企 业 市 场 一 向 是 获 利 丰 富 的 市 场 区 块, 这 也 是 为 什 么 Microsoft 在 称 霸 了 客 户 端 市 场 之 后 急 于 切 入 的 市 场 不 过 企 业 市 场 也 是 更 为 危 险 的 市 场, 因 为 在 这 个 市 场 中 的 竞 争 对 手 不 但 更 大 更 强 壮, 而 且 竞 争 的 规 模 也 远 超 过 一 般 的 软 件 市 场 这 也 是 为 什 么 在 这 个 市 场 区 块 中 的 竞 争 公 司 几 乎 都 是 数 一 数 二 的 公 司, 例 如 IBM SUN HP 和 Microsoft 等 Borland 如 何 同 这 些 资 源 丰 富 的 厂 商 竞 争, 对 于 Borland 的 管 理 阶 层 将 是 非 常 严 酷 的 考 验 不 过, 这 似 乎 是 不 得 不 走 的 路, 因 为 Borland 传 统 的 开 发 工 具 市 场 虽 然 在 持 续 成 长, 但 是 传 统 开 发 工 具 的 价 格 却 不 断 下 滑 例 如 当 年 Borland C/C++3.1 的 价 格 是 一 套 799 美 金, 现 在 的 C++Builder Professional 的 功 能 比 当 年 的 Borland C/C++3.1 多 了 数 倍 的 功 能, 但 是 价 格 现 在 却 只 有 399 美 金 这 是 许 多 信 息 产 品 相 同 的 命 运 Borland 必 须 想 办 法 扩 充 其 他 的 市 场, 否 则, 只 能 像 许 多 的 开 发 工 具 厂 商 一 样 等 着 成 为 历 史 既 然 数 年 前 Borland 错 失 了 像 Symantec 成 功 地 打 入 消 费 型 市 场 的 机 会, 因 此, 进 入 企 业 市 场 似 乎 是 Borland 无 可 避 免 的 道 路 问 题 是 Borland 如 何 在 企 业 市 场 以 小 搏 大 对 抗 世 界 一 级 的 信 息 大 厂 呢? 原 本 这 样 的 情 势 实 在 不 怎 么 看 好, 没 有 想 到 在 2000 到 2002 年, 世 界 历 经 了 全 球 的 不 景 气, 许 多 信 息 厂 甚 至 包 括 许 多 一 级 的 信 息 大 厂 例 如 HP Rational IONA 等 都 面 临 了 前 所 未 有 的 严 酷 考 验, 不 是 元 气 大 伤, 就 是 被 并 购 消 失 于 历 史 之 中 反 而 Borland 通 过 公 司 有 史 以 来 最 聪 明 的 并 购, 不 但 成 功 地 取 得 了 关 键 技 术 和 产 品, 更 重 要 的 是,Borland 在 顿 时 之 间 取 得 了 一 个 绝 佳 的 地 位 和 制 高 点, 拥 有 其 他 厂 商 所 没 有 的 完 整 产 品 线 这 让 Borland 进 可 攻, 有 机 会 成 为 一 流 的 软 件 大 厂, 重 回 世 界 一 级 的 软 件 信 息 公 司 也 可 让 Borland 退 可 守, 成 为 小 而 美 的 独 立 软 件 公 司, 继 续 下 一 个 10 年 的 经 营, 甚 至 能 够 以 最 好 的 价 值 和 其 他 的 软 件 公 司 合 并 成 为 更 大 的 软 件 信 息 公 司 这 也 是 为 什 么 最 近 一 直 有 传 言 称 Microsoft BEA IBM 和 Oracle 都 在 重 新 审 视 Borland 的 价 值, 并 且 重 新 评 估 Borland 这 位 突 然 之 间 实 力 大 增 的 竞 争 对 手 当 然 世 事 有 得 便 有 失 Borland 在 极 短 的 时 间 之 内 取 得 许 多 的 公 司 技 术 产 品 和 企 业 文 化, 如 何 整 合 这 些 对 于 Borland 来 说 也 是 一 个 挑 战 在 下 一 章 中, 我 也 会 提 出 一 些 Borland 面 临 的 问 题 的 个 人 看 法 不 过 从 Borland 的 走 向 来 看, 不 管 如 何, 势 必 需 要 面 对 和 克 服 这 些 挑 战 和 问 题 才 能 够 持 续 在 软 件 产 业 中 竞 争 下 去 我 个 人 认 为,Borland 必 须 赶 快 在 下 面 的 事 项 中 取 得 领 先 的 地 位 才 能 够 拥 有 高 度 的 竞 争 力, 并 且 顺 利 地 面 对 其 他 的 竞 争 对 手 提 供 全 方 位 的 开 发 工 具 既 然 单 靠 开 发 工 具 已 经 无 法 在 现 在 的 软 件 竞 争 中 取 得 一 定 的 优 势, 那 么 Borland 必 须 发
156 挥 技 术 优 势, 并 且 整 合 所 有 的 产 品 以 便 在 Java 和.NET 平 台 提 供 全 方 位 的 开 发 工 具 目 前, Borland 已 经 形 成 了 完 整 的 软 件 应 用 供 应 链 我 预 见 Borland 除 了 会 在 不 久 的 将 来 提 供 整 合 性 的 开 发 工 具 产 品 之 外, 应 该 会 持 续 在 测 试 工 具 领 域 取 得 关 键 技 术 和 产 品, 以 便 形 成 更 强 劲 的 产 品 线 Borland 最 近 推 出 的 OptimizeIt ServerTrace 便 是 向 这 个 方 向 努 力 的 一 个 很 好 的 例 子 为 什 么? 因 为 在 日 后 开 发 工 具 日 趋 整 合 之 后, 整 体 的 测 试 工 具 便 显 得 重 要 了, 因 为 在 整 合 的 开 发 工 具 中 牵 涉 到 的 技 术 或 是 组 件 模 型 将 会 非 常 复 杂, 而 传 统 的 测 试 工 具 已 经 无 法 处 理 这 些 复 杂 的 应 用 这 是 为 什 么 目 前 在 测 试 工 具 市 场 能 够 同 时 存 在 多 种 用 途 的 测 试 产 品, 而 且 由 于 测 试 工 具 市 场 快 速 地 成 长, 因 此, 目 前 这 个 市 场 的 利 润 相 对 的 比 开 发 工 具 好 得 多, 例 如 出 品 LoadRunner 的 Mercury 公 司 便 非 常 成 功 而 且 成 长 得 非 常 迅 速 因 此 当 大 型 软 件 公 司 开 始 注 意 到 这 类 产 品 的 重 要 性 以 及 相 对 的 价 值 之 后, 势 必 想 要 进 入 这 个 市 场 而 Borland 在 拥 有 了 分 析 / 设 计 Modeling 开 发 工 具 基 础 测 试 工 具 和 组 件 模 型 以 及 分 发 平 台 之 后, 补 强 在 测 试 领 域 的 工 具 便 很 自 然 地 成 为 下 一 步 了 一 旦 在 测 试 市 场 拥 有 强 劲 的 技 术 和 产 品, Borland 的 实 力 将 更 为 强 大, 同 时 可 通 过 全 面 整 合 性 的 技 术 和 产 品 而 保 持 合 理 的 利 润, 以 提 供 持 续 成 长 的 推 动 力 提 升 开 发 工 具 的 价 值 当 开 发 工 具 的 价 格 不 断 下 滑 之 后,Borland 面 对 核 心 产 品 市 场 的 趋 势 应 该 如 何 处 理 呢? 这 并 不 难 解 决 既 然 开 发 工 具 已 经 逐 渐 成 为 大 众 化 的 产 品, 高 价 的 入 门 开 发 工 具 时 代 已 经 不 可 能 再 回 来, 那 么 Borland 可 利 用 产 品 区 隔 来 增 加 这 类 产 品 线 的 收 入, 而 这 正 是 Borland 在 最 近 几 年 采 用 的 策 略 所 谓 开 发 工 具 产 品 区 隔, 是 指 在 原 有 的 产 品 线 中 提 供 更 为 高 阶 的 产 品, 以 吸 引 金 字 塔 顶 端 的 软 件 人 员 例 如 Delphi 原 本 提 供 三 个 不 同 的 产 品 线 :Personal Professional 和 Enterprise 到 了 Delphi 6 之 后 开 始 加 入 Architect 和 Studio 的 版 本, 以 便 增 加 产 品 的 附 加 价 值, 吸 引 资 深 的 Delphi 开 发 人 员 使 用 这 些 高 阶 产 品,JBuilder 终 究 也 一 样 会 采 用 这 种 策 略 否 则, 世 界 上 将 仅 仅 Microsoft 能 够 以 不 惜 血 本 地 大 量 抛 售 开 发 工 具 以 便 维 护 其 Windows 平 台 的 利 润, 而 任 何 软 件 公 司 都 需 要 一 定 的 利 润 来 持 续 经 营 的 进 入 Run-Time 市 场 请 读 者 现 在 想 想, 在 软 件 产 业 中 除 了 像 Microsoft 是 靠 大 量 的 消 费 型 软 件 大 赚 其 钱 之 外, 其 他 最 赚 钱 的 软 件 公 司 是 靠 什 么 种 类 的 软 件 在 赚 钱 呢? 答 案 便 是 靠 所 谓 的 Run-Time 软 件 赚 钱 什 么 是 Run-Time 软 件 呢? 让 我 指 出 几 个 例 子 读 者 马 上 就 了 解 了 例 如 Oracle 最 赚 钱 的 产 品 Oracle 数 据 库 就 是 属 于 Run-Time 软 件,IBM 和 BEA 的 EJB 服 务 器 也 是 属 于 Run-Time 软 件 Run-Time 软 件 拥 有 大 量 使 用 分 发 授 权 的 特 性, 因 此 拥 有 相 当 良 好 的 获 利 水 准, 甚 至 能 够 和 消 费 型 软 件 并 驾 齐 驱, 一 种 以 大 量 取 胜, 一 种 以 价 值 取 胜 Run-Time 软 件 一 直 是 Borland 想 要 拥 有 和 进 入 的 市 场 从 当 初 并 购 Visigenic 和 Entera 开 始,Borland 就 有 这 种 想 法 只 是 当 初 Borland 的 产 品 尚 不 够 齐 全, 管 理 阶 层 也 没 有 经 验, 因 此 一 直 不 知 如 何 进 入 这 种 市 场 现 在 Borland 产 品 线 已 经 相 当 齐 全, 管 理 阶 层 也 有 相 当 大 的 雄 心, 因 此, 这 是 为 什 么 Borland 一 直 坚 持 持 续 开 发 CORBA 和 EJB 服 务 器 的 原 因 如 果
157 Borland 能 够 在 Run-Time 软 件 市 场 成 功, 又 能 够 通 过 InterBase 数 据 库 进 入 嵌 入 式 数 据 库 市 场, 再 通 过 整 合 开 发 工 具 大 军 横 扫 市 场, 那 么, 我 可 预 见 Borland 将 可 快 速 重 返 全 世 界 前 10 大 的 软 件 公 司, 恢 复 昔 日 的 光 彩 和 雄 风 结 论 2003 年 对 于 Borland 是 重 要 的 一 年, 因 为 Borland 在 整 合 了 许 多 的 公 司 之 后 如 何 在 2003 年 推 出 新 一 代 的 产 品, 对 于 Borland 的 管 理 阶 层 以 及 R&D 都 是 一 项 考 验 此 外, 随 着.NET 的 脚 步 不 断 逼 近,Borland 也 必 须 尽 快 推 出.NET 之 下 的 产 品 许 多 人 对 于 Borland 如 何 在.NET 下 继 续 在 开 发 工 具 市 场 竞 争 充 满 了 期 望 疑 问 和 困 惑 不 过, 随 着 Borland 取 得 了 Modeling 分 析 测 试 和 分 发 技 术 / 产 品 之 后,Borland 的 确 可 以 在.NET 下 推 出 Microsoft 无 法 提 供 的 开 发 工 具 和 解 决 方 案 我 个 人 也 非 常 期 待 Borland 能 够 尽 早 推 出.NET 下 完 整 的 产 品 线 如 此 一 来,Borland 不 单 是 以 开 发 工 具 和 Visual Studio.NET 或 是 其 他.NET 开 发 工 具 厂 商 竞 争, 还 将 提 供 更 为 全 面 的 低 中 高 产 品 线 来 竞 争 这 正 可 突 显 Borland 的 不 同 而 且 Borland 将 可 再 把 竞 争 门 槛 往 上 提 升, 象 征 新 一 代 Borland 的 竞 争 力 Borland 从 80 年 代 率 先 推 出 In-Memory 开 发 工 具,90 年 代 推 出 可 视 化 集 成 开 发 环 境 开 发 工 具, 到 了 2000 年 之 后, 如 果 又 能 在.NET 下 率 先 推 出 新 世 代 的 整 合 性 开 发 工 具, 那 么 即 代 表 Borland 又 将 再 次 改 写 开 发 工 具 的 意 义, 持 续 下 一 个 10 年 的 竞 争 领 先 地 位 Borland 是 否 能 像 凤 凰 一 样 浴 火 重 生 并 且 再 次 展 翅 飞 翔 呢? 其 实, 我 认 为 2003 年 对 于 BEA 和 IBM 来 说 也 将 是 分 出 胜 负 的 一 年 如 果 BEA 无 法 在 2003 年 增 加 WebLogic 的 竞 争 力, 那 么 IBM 的 WebSphere 将 在 开 发 工 具 和 Modeling 工 具 的 助 阵 下 逐 渐 向 WebLogic 攻 城 略 地, 蚕 食 WebLogic 的 市 场 占 有 率 随 着 HP 淡 出 EJB 服 务 器 市 场,SUN 的 iplanet 无 法 在 市 场 上 取 得 优 势, 看 来 IBM 在 Java 阵 营 的 影 响 力 将 会 愈 来 愈 大 这 对 于 SUN 是 一 项 警 讯, 因 为 现 在 SUN 除 了 还 控 制 Java 语 言 JDK 和 EJB 的 规 范 之 外, 在 Java 开 发 工 具 EJB 服 务 器 市 场 节 节 败 退 现 在, 甚 至 在 Web Service 规 范 Web 开 发 规 范 等 方 面 也 都 沦 陷 于 IBM/Microsoft 和 Apache,SUN 在 Java 各 方 面 的 势 力 真 是 日 渐 式 微 而 目 前 看 来 处 于 真 空 的.NET 市 场 也 即 将 出 现 变 化 一 旦.NET 势 力 兴 起, 必 将 冲 击 Java 的 市 场 那 么 对 于 许 多 Java 厂 商 和 EJB 厂 商 会 发 生 什 么 影 响 呢?.NET 对 于 企 业 信 息 应 用 会 产 生 多 大 的 影 响 力?.NET 何 时 将 对 Java 产 生 穿 透 力? 这 些 影 响 和 变 化 也 都 将 从 2003 年 开 始 发 酵 我 认 为 2003 到 2004 年 对 于 信 息 界 来 说 将 会 发 生 数 件 重 大 的 事 件, 信 息 势 力 也 将 会 被 重 新 划 分 而 产 生 新 的 主 控 力 量 和 领 导 厂 商 我 们 就 等 待 着 精 彩 好 戏 的 上 演 吧,2003/2004 这 两 年 绝 对 不 会 是 寂 寞 的 年 份 第 十 四 章 传 奇 的 篇 章 仍 将 继 续!
158 对 于 Borland 来 说,2001/2002 年 实 在 是 很 奇 怪 的 时 期 因 为 在 这 段 时 间 里,Borland 无 畏 于 全 世 界 经 济 的 不 景 气, 仍 然 持 续 地 获 利 和 稳 定 地 成 长 和 许 多 1T 公 司 的 不 断 亏 损 和 裁 员 相 比,Borland 的 表 现 实 在 是 非 常 的 亮 丽 究 其 原 因, 这 主 要 与 Borland 慢 慢 建 立 起 来 的 有 史 以 来 最 有 效 率 的 销 售 团 队 有 非 常 大 的 关 系 假 如 Borland 没 有 这 支 专 业 的 销 售 团 队, 那 肯 定 也 会 和 其 它 IT 公 司 一 样 的 局 面 : 亏 损 和 裁 员 也 许 是 天 佑 Borland 吧, 在 Borland 引 入 专 业 的 销 售 团 队 之 后, 原 本 积 弱 不 振 的 Marketing 也 开 始 逐 渐 上 轨 道 了 不 过 我 认 为 Borland 仍 然 有 隐 忧, 那 就 是 本 身 产 品 线 拉 得 太 长 投 入.NET 的 时 间 太 晚 而 业 界 的 Java 市 场 即 将 进 入 成 熟 期 过 长 的 产 品 线? 如 果 花 点 时 间 研 究 Borland 的 产 品, 那 读 者 可 能 会 发 现 Borland 实 在 拥 有 太 多 的 产 品 线 从 以 前 的 4 个 开 发 工 具 Delphi C++Builder JBuilder Kylix, 到 数 据 库, 再 到 CORBA EJB 服 务 器 等,Borland 拥 有 的 产 品 超 过 了 10 个 以 上 面 对 这 么 多 的 产 品 线, 仅 研 发 费 用 一 项 就 已 很 高, 如 何 能 够 照 顾 好 这 么 多 的 产 品? 这 是 好 的 现 象 吗? 看 看 许 多 大 型 的 软 件 公 司, 其 赚 钱 的 产 品 可 能 只 有 三 四 个 例 如 Norton 在 退 出 开 发 工 具 市 场 之 后, 凭 借 着 专 心 开 发 企 业 应 用 软 件 而 一 再 成 长, 目 前 的 规 模 早 已 超 过 Borland 许 多 Norton 靠 Norton Anti-Virus 产 品 打 入 消 费 市 场, 让 Norton Anti-Virus 成 为 广 受 欢 迎 的 " 消 费 型 软 件 " 之 后 便 一 飞 冲 天 再 通 过 Norton Anti-Virus 衍 生 出 其 他 相 关 的 软 件, 进 而 扩 大 公 司 营 业 额, 成 为 大 型 的 软 件 公 司 又 例 如 Oracle 仅 靠 数 据 库 就 成 为 第 2 大 的 软 件 公 司, 再 衍 生 出 Oracle Finance Oracle ERP 等, 这 些 企 业 软 件 也 都 是 以 Oracle 数 据 库 为 核 心 发 展 出 来 的 成 功 的 软 件 公 司 大 都 拥 有 一 两 个 " 消 费 型 软 件 " 来 支 撑 公 司 的 发 展, 但 是 Borland 呢? Borland 目 前 提 供 了 十 几 个 产 品, 并 且 不 同 产 品 线 的 收 入 都 差 不 多, 没 有 一 两 个 核 心 赚 钱 的 产 品, 自 然 也 就 没 有 其 他 衍 生 的 产 品 出 现, 因 此 Borland 必 须 通 过 不 断 地 推 出 新 版 本 的 工 具 和 产 品 来 维 持 收 入, 这 实 在 是 很 辛 苦 的 事 情 因 为 这 代 表 Borland 需 要 不 断 地 投 入 巨 额 的 研 发 才 能 够 推 出 产 品, 而 且 只 能 赚 到 少 许 的 利 润, 这 样 当 然 成 长 得 很 辛 苦 了 其 实 这 就 是 我 在 前 面 章 节 所 说 的,Borland 在 SideKick 之 后 就 一 直 没 有 办 法 开 发 出 " 消 费 型 软 件 " 的 问 题 当 然 软 件 公 司 可 以 采 取 不 同 的 发 展 策 略, 例 如 软 件 公 司 也 可 以 走 向 企 业 市 场, 因 为 企 业 市 场 的 利 润 一 向 比 PC 市 场 来 得 大 这 正 是 Borland 目 前 想 做 的, 因 此 Borland 才 会 并 购 相 关 的 软 件 公 司 以 壮 大 其 进 入 企 业 市 场 的 本 钱 不 过 我 仍 然 认 为 Borland 在 开 发 工 具 市 场 拥 有 大 量 的 使 用 者, 除 了 进 入 企 业 市 场 的 选 择 之 外,Borland 还 是 应 该 在 PC 市 场 推 出 " 消 费 型 软 件 " 如 此 一 来 上 下 夹 攻, 不 但 可 以 精 简 产 品 线, 更 可 以 获 取 更 多 的 利 润 以 支 撑 更 精 良 的 产 品 研 发 现 在 的 Borland 应 该 做 的 是 重 新 规 划 产 品 线, 去 芜 存 菁, 好 好 地 发 展 产 品, 让 每 一 个 产 品 都 有 独 特 的 定 位 以 及 合 理 的 投 资 回 报 这 样 不 但 可 以 集 中 研 发 资 源, 也 可 以 提 供 给 使 用 者 品 质 更 好 的 产 品 好 在 目 前 Borland 似 乎 已 经 注 意 到 这 个 现 象, 开 始 收 敛 过 多 的 产 品 线, 清 楚 地 为 每 一 个 产 品 定 位 市 场 虽 然 Borland 到 了 现 在 才 了 解 了 产 品 线 的 问 题, 但 是 " 亡 羊 补 牢, 犹 为 未 晚 ", 希 望 Borland 在 2003 年 以 及 未 来 的 日 子 中 能 够 恰 当 地 分 配 研 发 资 源, 奸 好
159 地 推 出 精 炼 的 产 品, 而 不 要 一 味 地 求 多 进 入.NET 的 时 机 1999 年 底, 在 和 一 位 供 职 于 Microsoft 的 好 友 吃 饭 时, 他 很 好 奇 地 问 我 为 什 么 Borland 到 了 当 时 还 不 加 入 Microsoft.NET 的 支 持 开 发 厂 商 之 中, 以 便 开 始 发 展.NET 的 产 品 听 了 之 后, 我 也 觉 得 奇 怪, 为 什 么 Borland 在 支 持.NET 方 面 进 入 得 这 么 晚 呢? 这 是 有 原 因 的, 当 时 Borland 内 部 对 是 否 要 支 持.NET 争 论 不 休 许 多 人 认 为, 在 Windows 平 台 中 Borland 已 经 和 Microsoft 竞 争 了 这 么 久, 非 常 清 楚 在 Microsoft 主 控 的 平 台 中 要 和 Microsoft 竞 争 不 但 非 常 辛 苦 而 且 不 易 获 利, 因 此 这 些 人 便 反 对 继 续 支 持 Microsoft 的 平 台, 他 们 认 为 Borland 应 该 在 其 他 平 台 找 寻 出 路 而 另 一 派 的 人 则 认 为,Microsoft 虽 然 利 用 垄 断 进 行 不 公 平 的 竞 争, 可 Microsoft 的 平 台 仍 然 是 最 大 的 平 台 虽 然 和 Microsoft 竞 争 相 当 吃 力, 但 是 Borland 已 经 这 样 生 存 了 十 几 年, 已 经 了 解 如 何 和 Microsoft 竞 争 如 果 放 弃 Microsoft 的 平 台, 那 不 但 一 点 都 吃 不 到, 而 且 其 他 平 台 的 占 有 率 太 小, 即 使 Borland 有 办 法 在 其 他 平 台 占 有 大 量 的 市 场, 但 是 相 加 相 乘 之 后, 说 不 定 还 是 比 在 Microsoft 平 台 上 的 占 有 率 小 就 在 这 两 派 争 论 不 休 之 际, 刚 好 2000 年 Linux 开 始 吸 引 众 人 的 目 光, 因 此 当 时 的 新 CEO Dale 便 下 令 全 面 转 进 Linux, 准 备 放 弃.NET 平 台 就 是 这 个 决 定, 让 Borland 在.NET 方 面 晚 了 将 近 2 年 才 投 入 Borland 在.NET 平 台 进 入 的 时 机 是 晚 了 一 点, 但 这 是 好 是 坏 目 前 并 不 清 楚 有 人 认 为, 晚 投 入.NET 是 件 好 事, 因 为 Borland 正 好 先 让 Microsoft 推 广.NET, 到 了 2003 年.NET 逐 渐 起 飞 之 后,Borland 刚 好 推 出.NET 下 的 开 发 工 具 和 产 品 但 是 也 有 人 认 为,Borland 太 晚 投 入.NET 已 经 造 成 了 影 响, 因 为 在 2002 年 已 经 有 许 多 程 序 员 希 望 学 习.NET, 需 要.NET 开 发 工 具 来 使 用, 而 Borland 却 错 过 了 这 一 波 的 需 求 Borland 在.NET 是 不 是 投 入 太 晚 呢? 以 我 的 看 法, 确 实 是 晚 了 一 点, 因 为 2002 年 我 也 在 为 苦 无 Borland 的.NET 开 发 工 具 使 用 而 伤 脑 筋, 我 想 这 个 感 觉 应 该 是 许 多 Borland 程 序 员 都 感 同 身 受 的 但 是 Borland 晚 一 点 投 入.NET 有 没 有 什 么 严 重 的 影 响 呢? 我 想 时 机 应 该 还 不 是 最 重 要 的 问 题, 让 我 们 回 想 以 往 Borland 在 Windows 上 推 出 开 发 工 具 的 时 间, 同 样 也 是 晚 了 Microsoft 一 到 两 年, 但 这 是 没 有 办 法 的 事 情, 因 为 系 统 的 主 控 权 是 在 Microsoft 手 中 不 过 在 以 往 的 记 录 中,Borland 仍 然 能 够 力 挽 狂 澜, 凭 借 好 的 工 具 来 争 取 人 心 因 此 我 认 为, 既 然 已 经 晚 了 一 些 时 机, 那 么 Borland 就 应 该 更 好 地 发 展.NET 下 的 开 发 工 具 和 产 品, 以 品 质 和 功 能 来 吸 引 程 序 员, 这 才 是 最 重 要 的 Java 市 场 即 将 进 入 成 熟 期 不 光 是 Borland, 对 于 许 多 软 件 公 司 而 言, 目 前 都 是 非 常 辛 苦 的 时 期 2002 年 10 月 份 左 右,SUN 的 iplanet 副 总 裁 发 表 了 " 如 果 EJB 服 务 器 厂 商 再 不 停 止 流 血 竞 争, 那 么 EJB 服
160 务 器 市 场 将 进 入 微 利 时 代 " 的 言 论 当 然, 这 位 副 总 裁 的 目 的 是 希 望 EJB 厂 商 不 要 再 降 价 竞 争 或 是 提 供 一 大 堆 的 Open Source EJB 服 务 器, 以 避 免 扼 杀 SUN 好 不 容 易 经 营 起 来 的 企 业 市 场 不 过,iPlanet 副 总 裁 显 然 忘 记 了 SUN 在 EJB 服 务 器 市 场 上 并 没 有 太 大 的 占 有 率, 而 EJB 服 务 器 的 价 格 之 所 以 会 不 断 地 下 滑, 是 因 为 IBM 和 BEA 的 EJB 服 务 器 占 有 率 已 经 达 到 经 济 规 模, 因 此, 他 们 可 以 使 用 降 价 的 方 式 来 追 杀 其 他 的 EJB 服 务 器 厂 商 以 持 续 增 加 市 场 占 有 率 而 EJB 服 务 器 的 竞 争 从 强 调 EJB 核 心 功 能 附 加 服 务, 到 现 在 的 以 价 格 来 竞 争, 代 表 的 就 是 EJB 服 务 器 市 场 已 经 进 入 成 熟 的 市 场, 无 法 获 取 高 额 的 利 润, 因 此 只 能 以 量 来 弥 补 价 差 除 了 EJB 服 务 器 市 场 之 外,Java 开 发 工 具 的 竞 争 大 概 也 已 经 分 出 了 高 下 无 法 继 续 参 与 竞 争 的 Java 开 发 工 具 将 走 向 Open Source 的 不 归 路,Java 开 发 工 具 的 胜 利 者 也 必 须 面 对 价 格 下 滑 的 局 势 因 此, 市 场 领 导 者 必 须 再 次 在 市 场 寻 求 更 大 的 占 有 率, 这 也 将 引 发 Java 开 发 工 具 第 2 次 的 争 夺 战 看 看 目 前 的 胜 利 者, 我 们 就 可 以 大 概 知 道 下 一 波 的 竞 争 态 势 Borland 在 取 得 了 TogetherSoft 之 后, 势 必 会 在 JBuilder 中 整 合 TogetherJ 的 功 能, 把 JBuilder 再 往 上 提 升, 形 成 一 个 同 时 提 供 UML 和 Extreme Programming 的 全 能 Java 开 发 工 具 而 IBM 取 得 了 Rational 之 后, 也 一 定 会 把 Rational 整 合 到 WSAD 之 中 不 过 这 还 不 是 最 可 怕 的, 如 果 IBM 决 定 采 用 把 WSAD 和 Rational 半 买 半 送 的 策 略 来 攻 击 Java 开 发 工 具 市 场 以 掩 护 WebSphere 击 倒 最 后 的 敌 手 WebLogic, 那 么 不 但 Java 开 发 工 具 将 有 一 番 浴 血 战,EJB 服 务 器 市 场 也 将 进 入 烽 火 连 天 的 场 面 对 于 Oracle 的 JDeveloper 来 说, 势 将 面 对 更 为 强 劲 的 对 手 --JBuilder 和 WSAD 虽 然 Oracle 也 开 始 在 JDeveloper 中 加 入 UML 分 析 和 设 计 的 功 能, 但 是 不 管 Oracle 怎 么 做, 大 概 都 无 法 和 TogetherJ 及 Rational 竞 争 Oracle 的 JDeveloper 最 后 只 能 像 以 前 的 Oracle Developer 2000 一 样 送 给 Oracle 的 用 户, 或 是 Oracle 决 定 展 开 价 格 战, 以 极 低 的 价 格 来 响 应 JBuilder 和 WSAD 如 果 Oracle 采 取 这 个 策 略, 那 么 受 伤 的 应 该 是 JBuilder, 因 为 Oracle 绝 对 不 会 打 击 到 资 源 更 为 雄 厚 的 IBM 因 此, 在 Java 市 场 即 将 进 入 成 熟 期 之 际,Borland 必 须 再 次 提 升 JBuilder 的 价 值 才 能 够 持 续 拥 有 成 长 的 空 间 并 且 推 出 新 的 Java 工 具 以 刺 激 市 场 需 求 否 则, 在 JBuilder 之 后, Borland 又 有 什 么 工 具 或 产 品 能 够 像 当 初 JBuilder 接 下 Delphi 的 棒 子 时 那 样 持 续 地 往 前 冲 刺 呢? 软 件 产 业 即 将 进 入 各 拥 山 头 的 竞 争 模 式? 在 即 将 完 成 本 书 时, 我 知 晓 了 一 个 令 人 遗 憾 的 消 息, 那 就 是 在 Delphi Third-Party 业 中 享 有 盛 名 的 TurboPower 公 司 宣 布 退 出 零 售 市 场, 并 且 把 许 多 的 产 品 开 放 成 Open Source 这 实 在 令 人 惊 讶, 因 为 TurboPower 公 司 出 品 的 软 件 组 件 和 软 件 产 品 都 非 常 精 良, 是 许 多 Delphi/C++Builder 程 序 员 都 在 使 用 的, 现 在 居 然 连 TurboPower 公 司 都 无 法 继 续 经 营 下 去, 那 这 代 表 着 什 么 呢? 其 实, 就 在 TurboPower 宣 布 退 出 市 场 之 后, 另 外 一 家 著 名 的 软 件 公 司 DeveloperExpress 也 很 快 地 发 表 了 DeveloperExpress 目 前 经 营 良 好 未 来 将 持 续 开 发 VCL/CLX 和.NET 下 的 软 件 组 件 的 消 息 DeveloperExpress 的 这 个 动 作 是 希 望 使 用 者 不 要 受 到 TurboPower 负 面 消 息 的 影 响, 并 且 想 进 一 步 吸 引 TurboPower 的 使 用 者 能 够 转 而 使 用 DeveloperExpress 公 司 的 产 品 为 什 么 一 个 极 富 盛 名 的 软 件 公 司 都 无 法 继 续 生 存 下 去 呢? 让 我 们 看 看 其 他 Third-Party 软 件
161 公 司, 也 许 就 可 以 一 叶 知 秋 了 目 前, 所 有 的 开 发 工 具 都 围 绕 着 许 多 的 Third-Party 软 件 厂 商 提 供 各 种 不 同 功 能 的 软 件 组 件, 这 就 是 所 谓 的 软 件 组 件 市 场 软 件 组 件 市 场 的 泛 滥 应 该 起 源 于 数 年 前 的 Microsoft VBX, 由 于 当 时 Visual Basic 能 够 开 发 的 功 能 有 限, 因 此 Microsoft 定 义 了 VBX 规 格, 让 其 他 软 件 厂 商 能 够 据 此 开 发 VBX 组 件 以 弥 补 VB 功 能 的 不 足, 这 造 就 了 VBX 市 场, 许 多 小 软 件 公 司 便 凭 借 着 创 意 和 实 力 开 发 出 各 种 VBX 让 VB 用 户 使 用 由 于 大 多 数 的 VBX 都 是 使 用 C/C++ 开 发 的, 因 此 稍 后 VBX 也 成 为 C/C++ 开 发 工 具 使 用 的 软 件 组 件 Delphi 成 功 地 成 为 第 2 大 RAD 工 具, 这 为 Third-Party 市 场 带 来 了 巨 大 的 商 机 特 别 是 Delphi 的 VCL Framework 采 用 开 放 源 码 的 方 式, 让 Third-Party 厂 商 得 以 快 速 而 且 安 全 地 为 Delphi 开 发 软 件 组 件, 因 此 各 种 Third-Party 开 发 的 VCL 组 件 很 快 地 出 现 在 市 场 上 Delphi Third-Party 软 件 组 件 的 市 场 几 乎 是 VB 的 好 几 倍, 而 VCL 组 件 也 在 Delphi 3 到 Delphi 5 之 间 成 为 全 球 最 为 兴 盛 的 软 件 组 件 市 场 Java 在 定 义 了 JavaBean 规 格 之 后 也 带 动 了 Third-Party 的 JavaBean 组 件 市 场 但 是 由 于 Java 在 客 户 端 应 用 市 场 已 经 输 给 了 Microsoft, 因 此 Java 开 始 退 居 中 介 端 伺 服 端 和 Web 方 面 的 应 用, 这 造 成 了 以 客 户 端 功 能 和 GUI 为 主 的 Third-Party JavaBean 组 件 无 法 拥 有 经 济 规 模 的 市 场 量, 也 因 此 一 直 无 法 像 VCL 组 件 市 场 一 样 的 蓬 勃 发 展 Microsoft 的.NET 推 出 之 后, 虽 然.NET 组 件 架 构 吸 引 了 Third-Party 软 件 厂 商 为.NET 开 发 软 件 组 件, 但 由 于.NET 目 前 在 萌 芽 阶 段,.NET 的 软 件 组 件 需 求 暂 时 没 有 太 大 的 市 场, 这 让 一 些 已 经 提 供.NET 软 件 组 件 的 厂 商 苦 无 成 长 的 机 会 更 何 况 如 果.NET 也 像 Java 一 样 以 中 介 端 伺 服 端 和 Web 方 面 的 应 用 为 主, 那.NET 组 件 市 场 可 能 也 会 像 Java 的 JavaBean 市 场 一 样, 无 法 大 幅 地 成 长 Third-Party 组 件 市 场 的 萎 缩 代 表 着 软 件 竞 争 的 日 趋 激 烈, 唯 有 提 供 多 样 化 产 品 或 是 拥 有 优 势 的 软 件 公 司 才 能 够 生 存 目 前 许 多 VCL 组 件 厂 商 已 经 停 止 再 开 发 新 版 本 的 VCL 组 件, 这 可 以 想 像 这 个 市 场 已 经 逐 渐 走 入 后 成 熟 期 Third Party 组 件 市 场 唯 有 在 新 一 代 的 开 发 工 具 的 开 放 架 构 下 才 可 能 有 回 春 的 一 日 2002 年 12 月 底,InfoWeek 报 道 了 IBM 并 购 Rational 的 消 息, 并 且 分 析 说 以 后 将 是 软 件 大 厂 相 互 竞 争 的 时 代, 以 往 为 数 众 多 的 中 型 软 件 厂 商 将 会 日 趋 减 少 同 时,InfoWeek 也 指 出, 以 后 开 发 工 具 的 软 件 市 场 将 形 成 3 大 软 件 公 司 竞 争 的 局 面, 这 三 家 软 件 公 司 分 别 是 IBM Microsoft 和 Borland 从 这 个 报 道 我 们 可 以 知 道, 在 2002 年 一 连 串 的 并 购 之 后, 关 键 的 开 发 工 具 市 场 已 经 发 生 了 质 变,Borland 通 过 一 连 串 的 策 略 并 购 后 已 经 被 软 件 界 提 升 到 能 够 和 IBM Microsoft 相 提 并 论 的 地 位 这 个 现 象 就 如 我 的 好 友 李 匡 正 先 生 说 的, 软 件 行 业 虽 然 只 发 展 了 数 千 年, 但 是 软 件 行 业 的 发 展, 终 会 像 发 展 了 上 百 年 的 汽 车 工 业 一 样, 只 剩 下 少 数 的 大 厂, 而 且 这 些 软 件 大 厂 将 从 开 发 工 具 应 用 程 序 服 务 器 一 直 到 分 析 整 合 软 件 一 应 俱 全 软 件 行 业 真 得 会 逐 渐 进 入 各 拥 山 头 的 竞 争 模 式 吗? 能 够 再 次 和 IBM Microsoft 并 驾 齐 驱, 这 是 Borland 一 直 梦 想 的 事 情, 也 是 Borland 在 低 迷 了 十 几 年 之 后 另 外 一 次 重 返 软 件 大 厂 之 列 的 大 好 良 机 问 题 是 在 此 之 前, 又 会 有 哪 一 家 目 前 台 面 上 的 软 件 公 司 会 倒 下 成 为 另
162 外 一 个 牺 牲 品 呢?Borland 能 够 把 握 这 次 契 机, 重 造 数 年 前 营 收 规 模 500 Million 美 金 或 是 营 业 额 更 大 的 软 件 公 司 吗? 但 是 传 奇 的 故 事 仍 将 继 续 在 我 撰 写 本 书 时, 时 间 已 进 入 到 2003 年 对 于 许 多 软 件 公 司 来 说,2003 年 都 将 是 严 峻 而 且 即 将 见 分 晓 的 时 代, 因 为.NET 在 2003 将 开 始 起 飞, 开 始 对 Java 产 生 更 多 的 影 响,Java 和.NET 这 两 个 软 件 平 台 之 争 将 牵 动 更 多 软 件 公 司 未 来 的 发 展 对 于 Borland 来 说, 努 力 形 成 的 软 件 供 应 链 是 否 能 够 在 两 大 平 台 下 杀 出 一 条 血 路?Borland RAD 部 门 几 乎 倾 全 力 打 造 的.NET 产 品 Galileo 是 否 仍 然 能 够 掳 获 开 发 者 的 人 心? 如 何 在 Microsoft 主 导 的.NET 平 台 和 Visual Studio.NET 竞 争?Borland 在 庆 祝 成 立 20 年 之 际 是 否 仍 然 能 够 在 未 来 拥 有 一 席 之 地? 这 都 将 牵 动 着 Borland 未 来 的 命 运 我 并 不 能 预 测 未 来 不 管 Borland 在 2003 年 推 出 的 产 品 是 否 能 够 成 功 地 带 领 Borland 走 向 下 一 个 繁 荣 的 10 年,Borland 以 小 搏 大, 分 别 在 Java 和.NET 平 台 和 世 界 一 级 软 件 大 厂 竞 争 的 勇 气 已 经 值 得 佩 服 了 在 许 多 比 Borland 更 大 的 软 件 厂 商 纷 纷 在 这 场 激 烈 的 竞 争 中 败 下 阵 来 之 际,Borland 却 靠 着 坚 强 的 技 术 能 力 和 创 意 十 足 的 产 品 屹 立 不 倒 在 过 去 十 几 年 中, Borland 和 Microsoft 之 间 高 潮 不 断 的 竞 争 好 戏 又 将 在 2003 年 再 次 上 演 只 是 过 去 竞 争 者 众, 如 今 却 只 剩 下 Borland 和 Microsoft 2003 年 巅 峰 之 战 的 结 果 将 在 以 后 的 岁 月 中 揭 晓, 不 管 是 谁 胜 出,Borland 已 经 在 撰 写.NET 的 传 奇 故 事 也 许 数 年 之 后, 还 会 有 人 把 Borland 发 展.NET 产 品 的 内 部 秘 密 以 及 在.NET 平 台 奋 斗 的 故 事 再 次 揭 露 于 世 吧 附 录 : Borland 大 事 记 Philippe Kahn 和 Anders Hejlsberg 在 美 国 Scott Valley 共 同 成 立 Borland International 公 司 同 年 11 月, 发 布 Turbo Pascal,Borland 一 举 成 名 1984 发 布 内 存 常 驻 工 具 软 件 SideKick, 成 功 打 入 消 费 软 件 市 场 1985 发 布 Borland 第 一 个, 也 是 最 后 一 个 Basic 开 发 工 具 产 品 :Turbo Basic 从 Ansa 公 司 购 得 Paradox 1986 发 布 Turbo Prolog 1987 发 布 Turbo C 1.0, 提 供 C 语 言 开 发 集 成 环 境 工 具 Turbo Pascal 4.0 也 在 这 一 年 推 出 1989 在 购 入 Ansa 公 司 (1987 年 ) 后, 推 出 Paradox 在 Turbo C 基 础 上 推 出 C++ 开 发 工 具 Turbo C/C++ 该 产 品 也 被 称 为 Borland C/C 购 入 Ashton-Tate 公 司, 获 得 dbase 发 布 电 子 表 格 软 件 Quattro Pro 该 软 件 生 不 逢 时, 在 与 MS Excel Lotusl-2-3 残 酷 竞 争 之 后, 最 后 败 给 Excel, 被 Novell 收 购 1992 发 布 Borland C/C++3.0 这 是 第 一 个 基 于 Windows 的 C++ 集 成 编 程 环 境 软 件 在 Borland C/C++3.1 中 加 入 了 OWL 作 为 核 心
163 兼 并 Ashton-Tate 公 司, 推 出 dbase 1.0 同 时 也 取 得 真 正 的 RDBMS InterBase 1993 匆 匆 推 出 旨 在 与 Visual C++ 对 抗 的 Borland C++4.0 该 版 本 尽 管 有 不 少 创 新, 但 最 终 被 证 明 是 失 败 的 发 布 DOS 版 本 的 dbase-iv 2.0, 并 被 证 明 是 可 靠 的 数 据 库 产 品 1994 发 布 dbase for Windows 5.0 虽 然 承 袭 dbase 名 号, 但 其 核 心 却 是 WordTech 公 司 的 Aragon for Windows Borland 在 Comdex 上 了 解 到 Aragon for Windows 后, 通 过 并 购 获 取 了 这 项 技 术 而 真 正 的 dbase 只 留 下 调 试 器 于 dbase 5.0 中 在 面 临 C/C++ 战 场 三 面 夹 击 的 情 况 下, 推 出 以 OCF 技 术 支 持 OLE 的 Borland C++4.5 此 役 之 后,Microsoft 占 据 C/C++ 市 场 半 壁 江 山, 而 Borland 的 市 场 占 有 率 却 滑 落 到 30%, 开 始 走 下 坡 路 1995 Philippe Kahn 因 经 营 不 善 辞 去 CEO 一 职, 但 继 续 留 任 董 事 会 成 员 CEO 由 Gary Wetsel 接 任 而 Philippe Kahn 则 由 于 产 品 理 念 分 歧 的 缘 故, 自 己 开 办 Starfish Software 公 司, 致 力 发 展 SideKick 等 应 用 软 件 后 Starfish 在 无 线 通 讯 等 领 域 颇 有 建 树, 并 最 终 被 Motorola 以 数 千 万 美 金 的 高 价 收 购 同 年 情 人 节 发 布 Delphi 1.0 该 产 品 一 炮 而 红, 成 为 扭 转 Borland 命 运 的 转 折 点, 也 成 为 众 多 Delphi 开 发 者 的 " 初 恋 情 人 " 1995 发 布 品 质 最 好 的 Paradox For Windows 7.0 一 年 后,Paradox 被 卖 给 Corel 公 司 同 年 11 月, 由 于 无 法 忍 受 Philippe Kahn 对 Borland 的 一 再 挖 角, 董 事 会 决 定 将 其 逐 出 公 司 1996 发 布 以 32 位 编 译 器 为 核 心, 并 且 大 幅 支 持 C/S 编 程 的 Delphi 2.0 发 布 IntraBuilder 1.0, 是 业 界 第 一 个 数 据 库 Web 工 具 但 由 于 太 过 先 进 等 原 因, 叫 好 不 叫 座 一 年 之 后,Borland 宣 布 放 弃 IntraBuilder 开 发 继 Philippe Kahn 之 后,Anders Hejlsberg 也 离 开 了 Borland Delbert Yocam 随 即 成 为 Borland CEO 购 入 中 间 件 Entera 技 术, 准 备 进 军 大 型 的 基 于 UNIX 平 台 的 软 件 市 场 1997 发 布 Delphi 3.0 该 版 本 较 好 地 平 衡 了 COM/DCOM 支 持 和 分 布 式 多 层 架 构, 并 成 为 全 球 热 卖 的 产 品 发 布 C++Builder 1.0 尽 管 Borland 并 没 有 作 太 多 的 市 场 推 销 活 动, 但 该 工 具 推 出 之 后 仍 广 受 好 评, 被 誉 为 "C++ 开 发 者 天 堂 " C++ 开 发 者 终 于 可 以 和 Delphi 开 发 者 一 样, 通 过 RAD 的 方 式 进 行 编 程 Borland 委 托 Dr. Niklaus Worth 研 究 小 组 开 发 出 效 率 优 良 的 Java JIT 编 译 器, 随 后 发 布 Borland 第 一 个 Java 工 具 :Open JBuilder 1.0, 但 市 场 反 应 不 如 预 期 并 购 Visigenic Software 公 司, 取 得 CORBA 技 术, 并 很 快 据 此 开 发 出 VisiBroker 通 过 与 Netscape 的 合 作, 成 功 地 向 大 众 展 示 该 技 术 发 布 dbase 7.0 产 品 虽 好, 奈 何 时 势 不 再 1998 宣 布 公 司 更 名 为 Inprise, 希 望 籍 此 表 达 Integrating the Enterprise 的 公 司 发 展 目 标 理 念 改 名 行 动 以 及 " 打 造 行 销 导 向 Borland" 的 计 划 最 终 都 一 败 涂 地 发 布 匆 匆 研 发 的 Delphi 4.0, 在 市 场 遭 到 惨 败 Delbert Yocam 的 好 大 喜 功 再 次 让 Borland 付 出 沉 重 代 价
164 JBuilder 2.0 发 布,Borland 的 Java 开 发 工 具 渐 入 佳 境 1999 在 和 Borland 就 "Brain Drain" 事 宜 展 开 诉 讼 并 发 现 局 势 不 利 之 后, Microsoft 提 议 庭 外 和 解 并 投 资 Borland Delbert Yocam 被 解 雇,Dale Fuller 任 Borland CEO 发 布 Delphi 5, 一 扫 Delphi 4 带 来 的 耻 辱 JBuilder 3.0 发 布 一 年 后 的 JBuilder 3.5 纯 以 Java 打 造 而 成, 毕 其 功 于 一 役, 充 分 体 现 了 Borland 的 实 力 出 售 dbase 予 Ksoft( 后 更 名 为 dbase Inc.) 2000 发 布 JBuilder 4.0, 是 继 JBuilder 3.5 的 乘 胜 追 击 之 作 推 出 之 后 很 快 就 成 为 市 场 的 霸 主 和 Corel 的 并 购 案 失 败 2001 发 布 JBuilder 5.0, 大 幅 改 变 人 们 对 JBuilder" 不 适 用 于 团 队 开 发 " 的 印 象 同 年 底 发 布 的 JBuilder 6.0, 整 合 UML 和 Extreme Programming, 更 是 支 持 EJB 的 最 好 开 发 工 具 2002 发 布 JBuilder 7.0, 最 终 奠 定 在 Java 开 发 工 具 市 场 唯 我 独 尊 的 地 位 并 购 VMGEAF, 公 司, 获 取 OptimizeIt, 并 将 其 整 合 到 JBuilder 产 品 线 同 年 10 月, 并 购 Starbase 公 司, 准 备 提 供 软 件 应 用 平 台 随 即, 对 TogetherSoft 的 并 购 案, 给 业 界 带 来 极 大 震 动 发 布 Delphi 7, 被 认 为 是 Windows 平 台 原 生 开 发 工 具 向.NET 平 台 开 发 工 具 过 渡 的 一 代 产 品 随 着 Delphi 6 7 的 发 布,Kylix(Delphi for Linux) 也 不 断 更 新, 品 质 也 在 持 续 的 精 进 中 ( 整 理 / 韩 磊 ) 写 在 最 后 1983 年 5 月 2 日 Borland International 正 式 成 立 1983 年 11 月 20 日 Borland 正 式 推 出 第 1 个 代 表 产 品 --Turbo Pascal 年 2 月 5 日 Borland 传 奇 一 书 正 式 完 成 谨 以 本 书 向 一 个 成 立 20 年 的 传 奇 软 件 公 司 致 敬, 因 为 她 为 许 多 人 留 下 了 一 生 美 好 的 回 忆 全 书 完 李 维 致 谢 感 谢 taopian 提 供 的 源 书, 他 的 首 印 纪 念 版 已 经 被 我 糟 蹋 的 不 成 样 子 了,390 页 的 书 已 经 被 翻 成 了 新 华 字 典 那 么 厚, 实 在 不 好 意 思, 看 来 是 要 再 买 一 本 来 还 他 了 大 家 想 买 书 也 可 联 系 他 当 然 还 要 感 谢 偶 的 狗 狗 mm 这 些 天 的 支 持 和 协 助 ^_^ 本 来 是 想 做 电 子 书 的, 后 来 觉 得 还 是 只 把 文 字 介 绍 给 大 家, 原 书 所 附 的 大 量 图 表 和 照 片 都 没 有 扫 描, 这 中 间 包 括 了 很 多 大 牛 的 照 片 和 统 计 数 据, 建 议 有 兴 趣 的 朋 友 一 定 买 一 本 看 看 从 2003 年 4 月 到 现 在 本 书 已 经 印 刷 了 六 次, 作 为 软 件 公 司 的 经 典 案 例 和 技 术 发 展 的 亲 身 见 证, 深 受 读 者 好 评 本 电 子 版 使 用 汉 王 尚 书 六 号 中 文 OCR 软 件 及 Microtek SM3830 扫 描 仪 制 作
165 再 次 版 权 申 明 本 书 所 有 版 权 由 李 维 及 电 子 工 业 出 版 社 所 有, 本 电 子 版 本 仅 用 作 对 Borland 传 奇 一 书 的 介 绍, 根 据 中 华 人 民 共 和 国 著 作 权 法 第 二 十 二 条 的 规 定, 您 可 以 用 来 阅 读 和 学 习, 但 请 勿 用 其 进 行 任 何 商 业 活 动 谨 识 2004 年 01 月 11 日 临 晨 5 时 32 分 iphidias@freecity 整 理 PDF 版 本
ebook43-11
11 Excel 4 E x c e l Access A c c e s s Access Access / Access 2000 / Paradox S Q L A c c e s s SQL Lotus Org a n i z e r A c c e s s A c c e s s Wo r d Word for Windows O D B C ODBC O ffice A c c e s
Microsoft Word - 13院21号.doc
川 教 考 院 2013 21 号 四 川 省 教 育 考 试 院 关 于 全 国 计 算 机 等 级 考 试 体 系 调 整 的 通 知 各 NCRE 考 点 : 为 进 一 步 适 应 新 时 期 计 算 机 应 用 技 术 的 发 展 和 人 才 市 场 需 求 的 变 化, 确 保 全 国 计 算 机 等 级 考 试 ( 以 下 简 称 NCRE) 健 康 持 续 发 展, 教 育 部 考
本 课 程 作 为 非 计 算 机 专 业 本 科 通 识 课 程, 是 一 门 理 论 和 实 践 紧 密 结 合 的 实 用 课 程, 内 容 包 括 计 算 机 基 础 部 分 和 程 序 设 计 部 分 计 算 机 基 础 部 分 涵 盖 计 算 机 软 硬 件 组 成 数 制 表 示 操
计 算 机 基 础 部 程 序 设 计 类 课 程 介 绍 1. Java 语 言 程 序 设 计 Java 简 介 Java 是 一 种 开 放 的 可 以 撰 写 跨 平 台 应 用 程 序 的 面 向 对 象 的 程 序 设 计 语 言 Java 技 术 具 有 卓 越 的 通 用 性 高 效 性 平 台 移 植 性 和 安 全 性, 广 泛 应 用 于 PC 数 据 中 心 科 学 超 级
序
软 件 工 程 思 想 林 锐 序 软 件 工 程 思 想 讲 述 软 件 开 发 和 做 程 序 员 的 道 理, 视 野 独 特, 构 思 新 颖, 内 容 风 趣, 不 落 窠 臼, 令 人 耳 目 一 新 堪 称 难 得, 以 至 回 味 无 穷 作 者 从 事 了 八 年 的 软 件 开 发 工 作, 在 他 的 博 士 学 位 论 文 完 成 之 际 写 下 了 这 本 心 之 所 感
untitled
21 Visual FoxPro Visual FoxPro 6.0 11 Visual FoxPro Visual FoxPro CIP Visual FoxPro 2004 21 ISBN 7-03-014834-7 V Visual FoxPro TP311.138 CIP 2004 143035 16 100717 http://www.sciencep.com * 2004 12 7871092
Post-Secondary Student Summer Internship Programme 2016_Chi
運 輸 署 2016 年 度 專 上 學 生 暑 期 實 習 計 劃 一 般 要 求 申 請 人 必 須 為 (a) 香 港 特 別 行 政 區 永 久 性 居 民 ; 以 及 (b) 於 2015/16 及 2016/17 學 年 在 本 地 或 海 外 專 上 院 校 攻 讀 全 日 制 經 評 審 專 上 課 程 ( 註 : 2016 年 應 屆 畢 業 生 之 申 請 恕 不 考 慮 ) 薪
Microsoft Word - 11900電腦軟體設計.doc
技 能 檢 定 規 範 之 一 一 九 電 腦 軟 體 行 政 院 勞 工 委 員 會 職 業 訓 練 局 編 印 軟 體 技 術 士 技 能 檢 定 規 範 目 錄 一 軟 體 技 術 士 技 能 檢 定 規 範 說 明... 1 二 丙 級 軟 體 技 術 士 技 能 檢 定 規 範... 3 三 乙 級 軟 體 技 術 士 技 能 檢 定 規 範... 5 四 甲 級 軟 體 技 術 士 技
幻灯片 1
沈 阳 工 业 大 学 2014 年 6 月 第 7 章 数 据 库 技 术 基 础 主 要 内 容 : 7.1 数 据 库 概 述 数 据 库 基 本 概 念 数 据 模 型 逻 辑 数 据 模 型 数 据 库 系 统 的 产 生 和 发 展 常 用 的 数 据 库 管 理 系 统 7.2 Access 2010 数 据 库 创 建 及 维 护 创 建 Access 2010 数 据 库 创 建
Name of Government Department
運 輸 署 2014 年 度 專 上 學 生 暑 期 實 習 計 劃 一 般 要 求 申 請 人 必 須 為 (a) 香 港 特 別 行 政 區 永 久 性 居 民 ; 以 及 (b) 於 2013/14 及 2014/15 學 年 在 本 地 或 海 外 專 上 院 校 攻 讀 全 日 制 經 評 審 專 上 課 程 ( 註 : 2014 年 應 屆 畢 業 生 之 申 請 恕 不 考 慮 ) 薪
Microsoft Word - DOC3.doc
第 一 大 类 希 望 畅 销 书 常 销 书 新 的 世 纪 新 的 希 望 我 们 怀 着 激 动 的 心 情 拥 抱 新 世 纪 的 到 来 新 世 纪 的 希 望 人 仍 坚 持 创 新 进 取 奉 献 和 服 务 的 宗 旨 努 力 为 广 大 的 读 者 和 书 店 朋 友 提 供 优 质 的 服 务 为 了 使 书 店 朋 友 在 选 购 希 望 图 书 时 候 更 为 准 确 和 方
西班牙语专业本科培养方案
西 班 牙 语 专 业 本 科 培 养 方 案 ( 与 业 代 码 :050205) 一 专 业 介 绍 简 介 : 本 与 业 培 养 德 智 体 全 面 収 展, 职 业 素 货 良 好, 西 班 牙 语 听 说 读 写 译 功 底 扎 实, 幵 丏 具 备 较 高 的 英 语 交 流 能 力, 熟 悉 和 掌 握 国 际 商 务 基 本 知 识 和 理 论 具 备 较 好 的 商 务 操 作
目錄
資 訊 素 養 線 上 教 材 單 元 五 資 料 庫 概 論 及 Access 5.1 資 料 庫 概 論 5.1.1 為 什 麼 需 要 資 料 庫? 日 常 生 活 裡 我 們 常 常 需 要 記 錄 一 些 事 物, 以 便 有 朝 一 日 所 記 錄 的 事 物 能 夠 派 得 上 用 場 我 們 能 藉 由 記 錄 每 天 的 生 活 開 銷, 就 可 以 在 每 個 月 的 月 底 知
Microsoft Word - 书目文件.doc
计 算 机 类 算 法 与 程 序 设 计 类 1 11025 数 据 结 构 ( 第 三 版 ) 十 一 五 国 家 级 规 划 教 材 刘 振 鹏 等 28.00 2010.5 本 科 2 11563 数 据 结 构 习 题 解 答 与 实 验 指 导 ( 第 三 版 ) 石 强 等 21.00 2010.7 本 科 3 07628 数 据 结 构 与 算 法 王 昆 仑 35.00 2007.6
一 专 业 名 称 专 业 名 称 : 会 计 二 入 学 要 求 与 基 本 学 制 入 学 要 求 : 初 中 毕 业 生 基 本 学 制 : 三 年 ; 其 中 前 二 年 为 在 校 学 习 时 间, 最 后 一 年 为 企 业 实 习 时 间 层 次 : 中 职 三 培 养 目 标 本 专
安 徽 省 滁 州 市 明 光 职 业 高 级 中 学 会 计 专 业 人 才 培 养 方 案 一 专 业 名 称 专 业 名 称 : 会 计 二 入 学 要 求 与 基 本 学 制 入 学 要 求 : 初 中 毕 业 生 基 本 学 制 : 三 年 ; 其 中 前 二 年 为 在 校 学 习 时 间, 最 后 一 年 为 企 业 实 习 时 间 层 次 : 中 职 三 培 养 目 标 本 专 业
<4D6963726F736F667420576F7264202D2031303030353235B77CC4B3ACF6BFFD2DB0D3B77EC2B2B3F8C2BEBAD82E646F63>
全 國 高 級 中 等 學 校 100 學 年 度 商 業 類 科 學 生 技 藝 競 賽 商 業 簡 報 職 種 競 賽 規 則 修 訂 會 議 紀 錄 壹 時 間 : 中 華 民 國 100 年 05 日 25 日 ( 星 期 三 ) 下 午 2 時 整 貳 地 點 : 豐 原 高 商 圖 書 館 一 樓 參 主 席 : 潘 教 授 偉 華 肆 出 席 單 位 及 人 員 :( 如 簽 到 表
万维全自动网络考试平台
http://www.wwjt.com.cn 332 100143 +86 10 88151529 +86 10 83618164 77 2-3-18 132011 +86 432 64798218 +86 432 64851677 +86 432 64798217 QQ 547090564 [email protected] www.wwjt.com.cn ...1...1 1...1 2...1...1
广西民族学院(下)
3888.00 ( 16.00 ) I...1...1...16 ( )...20 ( )...25 ( )...27 ( )...37...49 ()...51 ( )...53 ( )...58...65 ( )...74...80...84...85 ( )...88...91...92 ( )...93... 100... 101... 106... 107 ( )... 115... 118...
目 录 一 相 关 政 策... 1 河 南 财 经 政 法 大 学 实 验 室 建 设 与 管 理 办 法... 1 河 南 财 经 政 法 大 学 实 验 教 学 管 理 规 定... 4 河 南 财 经 政 法 大 学 政 府 采 购 管 理 办 法... 9 二 规 章 制 度... 15
河 南 财 经 政 法 大 学 公 共 计 算 机 实 验 教 学 中 心 省 级 实 验 教 学 示 范 中 心 申 报 支 撑 材 料 目 录 一 相 关 政 策... 1 河 南 财 经 政 法 大 学 实 验 室 建 设 与 管 理 办 法... 1 河 南 财 经 政 法 大 学 实 验 教 学 管 理 规 定... 4 河 南 财 经 政 法 大 学 政 府 采 购 管 理 办 法...
全 国 高 等 职 业 教 育 规 划 教 材 21 世 纪 高 职 高 专 规 划 教 材 系 列 高 等 职 业 教 育 计 算 机 专 业 规 划 教 材 选 题 征 集 通 知 一 选 题 范 围 ( 不 仅 限 于 此 ) 选 题 方 向 选 题 名 计 算 机 基 础 计 算 机 应 用
刘 瑞 新 金 牌 作 者 经 典 作 品 教 授, 计 算 机 专 业 资 深 学 科 带 头 人, 多 部 著 作 获 得 全 国 优 秀 畅 销 书 奖 他 所 编 写 的 教 材 内 容 均 来 自 教 学 实 践, 是 对 编 写 讲 义 教 学 修 改 教 学 讲 义 再 次 教 学 整 个 过 程 的 精 确 提 炼, 因 此 对 促 进 教 师 教 学 学 生 学 习 发 挥 了 重
epub83-1
C++Builder 1 C + + B u i l d e r C + + B u i l d e r C + + B u i l d e r C + + B u i l d e r 1.1 1.1.1 1-1 1. 1-1 1 2. 1-1 2 A c c e s s P a r a d o x Visual FoxPro 3. / C / S 2 C + + B u i l d e r / C
高 职 计 算 机 类 优 秀 教 材 书 目 * 序 号 书 号 (ISBN) 书 名 作 者 定 价 出 版 / 印 刷 日 期 ** 配 套 资 源 页 码 计 算 机 基 础 课 1 978-7-111-30658-0 计 算 机 应 用 基 础 刘 升 贵 29.00 2012 年 8 月
高 职 计 算 机 类 优 秀 教 材 书 目 * 序 号 书 号 (ISBN) 书 名 作 者 定 价 出 版 / 印 刷 日 期 ** 配 套 资 源 页 码 计 算 机 基 础 课 1 978-7-111-30658-0 计 算 机 应 用 基 础 刘 升 贵 29.00 2012 年 8 月 电 子 教 案 P1 2 978-7-111-27081-2 计 算 机 应 用 基 础 ( 第 2
前言
作 为 新 中 国 最 早 设 立 的 专 业 教 育 出 版 机 构, 高 等 教 育 出 版 社 始 终 坚 持 植 根 教 育 弘 扬 学 术 繁 荣 文 化 服 务 社 会 的 办 社 理 念, 开 拓 创 新, 砥 砺 前 行, 伴 随 着 新 中 国 教 育 事 业 的 不 断 发 展 壮 大, 经 过 60 年 的 奋 斗, 高 教 社 已 经 发 展 成 为 以 出 版 高 等 教
<4D6963726F736F667420506F776572506F696E74202D20545143BB7BC3D2A4CEBFECB27AA4E8A6A1BBA1A9FA205BACDBAE65BCD2A6A15D>
Techficiency Quotient Certification 企 業 人 才 技 能 認 證 TQC 認 證 架 構 - 九 大 類 TQC-OS 作 業 系 統 TQC-OS TQC-OA 辦 作 公 業 軟 系 體 統 應 用 TQC-DA 資 料 庫 應 用 TQC-MD 多 媒 體 設 計 TQC-OS TQC-DK 專 作 業 業 知 系 識 統 領 域 TQC-PD 程 式 設
Microsoft Word - 全華Ch4Ans.doc
得 分 : 101 學 年 度 第 2 學 期 全 華 Ch4 命 題 教 師 : 範 圍 : 年 班 號 姓 名 一 單 選 題 : (3) 1. 下 列 有 關 開 放 格 式 檔 案 的 檔 案 性 質 對 應, 何 者 有 誤? (1)gif: 圖 形 檔 (2)avi: 視 訊 檔 (3)odt: 簡 報 檔 (4)xlsx: 電 子 試 算 表 檔 ( 出 處 :4-3) 解 析 odt
Microsoft Word - cr_xi_supported_platforms_tw.doc
Crystal Reports XI 支援平台 ====================================== (c) 2004 Business Objects XI 發佈時的一般可用時期支援這些平台 如需 XI 平台支援最新版本的資訊, 請參閱 :http://www.businessobjects.com/support/ 語言 ========= * 英文 * 法文 * 德文
untitled
SAP SAP Business One ... 4 SAP Business One... 5... 5 SAP Business One... 7 SAP Business One... 8... 8... 8... 9... 10... 11 mysap Business Suite... 12... 13... 14 Copyright 2004 SAP AG. All rights reserved.
序号
简 介 创 立 于 1984 年 5 月, 植 根 于 闻 名 遐 尔 的 高 等 学 府, 得 古 越 文 化 悠 久 历 史 之 厚 蕴, 承 浙 大 几 代 学 人 求 是 创 新 之 精 神, 通 过 28 年 发 展, 已 成 长 为 一 个 具 有 图 书 期 刊 数 字 电 子 音 像 的 全 方 位 立 体 化 出 版 功 能 的, 集 理 工 农 医 和 人 文 社 科 多 学 科
RUN_PC連載_12_.doc
PowerBuilder 8 (12) PowerBuilder 8.0 PowerBuilder PowerBuilder 8 PowerBuilder 8 / IDE PowerBuilder PowerBuilder 8.0 PowerBuilder PowerBuilder PowerBuilder PowerBuilder 8.0 PowerBuilder 6 PowerBuilder 7
WQ.s92
21 世 纪 高 职 高 专 规 划 教 材 网 络 专 业 系 列 SQL Server 数 据 库 应 用 技 术 张 蒲 生 何 升 编 著 清 华 大 学 出 版 社 北 京 内 容 简 介 本 书 根 据 高 等 职 业 技 术 教 育 和 教 学 特 点, 结 合 教 学 改 革 和 应 用 实 践 编 写 而 成 在 介 绍 SQL Server 数 据 库 基 本 内 容 的 同 时,
FAQ -PowerDesigner9.5.DOC
PowerDesigner 9.5 FAQ 1. PowerDesigner PowerDesigner PowerDesigner (CASE Tool,Computer Aided Software Engineering) PowerDesigner 1989 9.5 2. PowerDesigner PowerDesigner Internet ( Java) PowerDesigner 7.0
Ps22Pdf
1996 1996 9 1 5 7 9 11 17 18 22 25 32 34 45 57 58 78 94 238 251 : 1995 8 1 11.50 : 13 75 ISBN 7 302 01803 0/ O164 32 : 357 ( ), ;,, ;, 3,,,, : ; ; ; ; ; ; ;, ; ; 1996 8 1 12.80 : 12 75 ISBN 7 302 02173
工程施工招标
郑 州 市 教 育 局 教 学 研 究 室 考 试 网 上 评 卷 及 数 据 分 析 技 术 服 务 采 购 项 目 谈 判 文 件 采 购 编 号 : 郑 财 单 一 来 源 2016-J004 号 HENAN TENDER-PURCHASE SERVICE CO.,LTD. 目 第 一 部 分 邀 请 函... 6 第 二 部 分 主 要 维 护 及 服 务 内 容... 7 第 三 部 分
摘 要 在 這 忙 碌 的 社 會 中, 普 遍 人 們 運 動 時 間 其 實 並 不 充 裕, 體 力 越 來 越 差 的 情 況 下 還 隨 意 飲 食 導 致 身 體 健 康 越 來 越 差, 因 此 本 專 題 打 算 利 用 健 康 飲 食 的 方 式 改 善 這 些 人 的 體 質,
元 培 科 技 大 學 資 訊 管 理 系 畢 業 專 題 健 康 飲 食 網 站 計 畫 書 指 導 老 師 : 林 侑 賢 老 師 組 員 : 陳 佑 伊 (971408067) 張 祥 庭 (971408084) 黃 聖 哲 (971408098) 劉 潤 婷 (971408106) 中 華 民 國 一 百 年 十 二 月 摘 要 在 這 忙 碌 的 社 會 中, 普 遍 人 們 運 動 時
第 15 章 程 式 編 写 語 言 15.1 程 式 編 写 語 言 的 角 色 程 式 編 寫 語 言 是 程 式 編 寫 員 與 電 腦 溝 通 的 界 面 語 法 是 一 組 規 則 讓 程 式 編 寫 員 將 字 詞 集 合 起 來 電 腦 是 處 理 位 元 和 字 節 的 機 器, 與
程 式 編 写 語 言 在 完 成 這 章 後, 你 將 能 夠 了 解 程 式 編 写 語 言 的 功 能 了 解 高 階 語 言 和 低 階 語 言 之 間 的 分 別 知 道 翻 譯 程 式 的 意 義 和 能 夠 把 翻 譯 程 式 分 類 為 : 匯 編 程 式 編 譯 程 式 和 解 譯 程 式 認 識 不 同 翻 譯 程 式 的 優 點 和 缺 點 程 式 是 指 揮 電 腦 的 指
第壹拾篇
- 目 次 - 目 次 表 目 次... 1 圖 目 次... 1 凡 例... 1 本 鎮 宗 教 禮 俗 篇 大 事 記... 1 緒 論... 1 第 一 章 宗 教 亯 伖... 3 第 一 節 傳 統 民 間 宗 教... 3 第 二 節 天 主 教 與 基 督 教... 31 第 三 節 日 本 神 社... 35 第 二 章 風 俗 習 慣... 38 第 一 節 歲 時 禮 俗...
软 件 工 程 专 业 习 指 南 目 录 一 软 件 工 程 专 业 设 置 背 景 与 发 展 前 景... 3 二 软 件 工 程 专 业 实 践 教 条 件... 4 三 软 件 工 程 专 业 课 程 类 型 及 核 方 式... 6 1. 软 件 工 程 专 业 课 程 类 型...7
计 算 机 系 软 件 工 程 专 业 习 指 南 广 东 科 技 院 计 算 机 系 2015-9-1 软 件 工 程 专 业 习 指 南 目 录 一 软 件 工 程 专 业 设 置 背 景 与 发 展 前 景... 3 二 软 件 工 程 专 业 实 践 教 条 件... 4 三 软 件 工 程 专 业 课 程 类 型 及 核 方 式... 6 1. 软 件 工 程 专 业 课 程 类 型...7
计算机在汉语研究中的应用――以字频统计为例
如 何 进 行 汉 字 频 率 统 计 * 郭 曙 纶 ( 上 海 交 通 大 学 国 际 教 育 学 院, 上 海 200030) 摘 要 : 本 文 针 对 文 科 研 究 者, 对 使 用 通 用 软 件 进 行 汉 语 字 频 统 计 的 具 体 操 作 过 程 进 行 了 详 细 的 介 绍 关 键 词 : 汉 字 频 率, 统 计, 通 用 软 件 一 引 言 随 着 互 联 网 的 发
软件概述
Cobra DocGuard BEIJING E-SAFENET SCIENCE & TECHNOLOGY CO.,LTD. 2003 3 20 35 1002 010-82332490 http://www.esafenet.com Cobra DocGuard White Book 1 1....4 1.1...4 1.2 CDG...4 1.3 CDG...4 1.4 CDG...5 1.5
(HMI) IO A
6.5 6.5 (HMI) IO 6.52 6.52 6.5 2007 113 A 602 100086 010 82616619 010 62638166 www.kingview.com 4 7 25 38 43 52 63 68 86 SQL 95 99 WEB 105 Web Web Web I/O Microsoft Windows XP/NT/2000 I/O PLC PLC PLC PLC
VB程序设计教程
高 等 学 校 教 材 Visual Basic 程 序 设 计 教 程 魏 东 平 郑 立 垠 梁 玉 环 石 油 大 学 出 版 社 内 容 提 要 本 书 是 按 高 等 学 校 计 算 机 程 序 设 计 课 程 教 学 大 纲 编 写 的 大 学 教 材, 主 要 包 括 VB 基 础 知 识 常 用 程 序 结 构 和 算 法 Windows 用 户 界 面 设 计 基 础 文 件 处
,,,,, 1999 6,,,, 3 28, 474,,,,,,,,,,!, ),,, ( ) ( ),,,,, 3,,,,,, ( 029 88491147 ) 127 w ww.nwpup.com E mail fxb@ nw pup.com 710072 ISBN 7 5612 3700023109004604738 ( ) 88494373 ( ),, 88491757,,, 88460388,,,
七 報 名 資 格 : ( 一 ) 具 中 華 民 國 國 籍, 年 滿 15 歲 以 上, 領 有 身 心 障 礙 手 冊 或 身 心 障 礙 證 明 者 ( 依 據 身 心 障 礙 者 權 益 保 障 法 及 身 心 障 礙 者 鑑 定 作 業 辦 法 規 定 所 開 立 之 舊 式 手 冊 或
第 14 屆 全 國 身 心 障 礙 者 技 能 競 賽 實 施 計 畫 一 依 據 技 能 競 賽 實 施 及 獎 勵 辦 法 第 5 條, 每 2 年 舉 辦 全 國 身 心 障 礙 者 技 能 競 賽, 其 目 的 : ( 一 ) 提 升 及 肯 定 身 心 障 礙 者 之 職 業 技 能 ( 二 ) 鼓 勵 身 心 障 礙 者 參 與 社 會 經 濟 活 動 ( 三 ) 促 進 社 會 大
<4D F736F F D A67EB2C438A6B8ACF9B875B9B5A448ADFBBAC2B8D5C2B2B3B9A15DA5BBC2B2B3B9A477BA49A4EEB3F8A657A15E>
類 別 編 號 1 臺 北 市 政 府 產 業 發 展 局 聘 用 研 究 員 1. 統 籌 臺 北 市 經 貿 交 流 投 資 服 務 與 招 商 推 展 事 務 2. 本 市 科 技 產 業 國 際 合 作 交 流 網 絡 建 立 與 推 動 等 相 關 事 務 規 劃 執 行 事 宜 工 作 內 容 3. 臺 北 市 科 技 產 業 廠 商 服 務 交 流 等 聯 繫 協 調 整 合 與 執
新疆医科大学
计 算 机 与 信 息 技 术 基 础 课 程 教 学 大 纲 (Windows 7 + Office 2010) ( 供 基 础 医 学 临 床 医 学 中 医 学 预 防 医 学 口 腔 医 学 护 理 学 药 学 生 物 医 学 工 程 信 息 管 理 与 信 息 系 统 专 业 汉 民 族 本 专 科 班, 分 级 教 学 C 级 班 使 用 ) (2014 年 2 月 修 订 讨 论 稿
<4D F736F F D20CAB5D1E9CAD2B9DCC0EDC6BDCCA856342E315FD1A7C9FAD3C3BBA7B2D9D7F7D6B8C4CF2E646F63>
议 用 户 许 可 协 实 验 室 管 理 平 台 学 生 用 户 操 作 指 南 (V4.1) 国 泰 安 信 息 技 术 有 限 公 司 GTA Information Technology Co., Ltd. 国 泰 安 信 息 技 术 有 限 公 司 1 用 户 许 可 协 议 用 户 许 可 协 议 版 权 与 所 有 权 声 明 实 验 室 管 理 平 台 是 由 国 泰 安 信 息 技
Microsoft Word - 119002_Java_術科 .doc
電 腦 軟 體 設 計 乙 級 技 術 士 技 能 檢 定 術 科 測 試 應 檢 人 參 考 資 料 (Java) 試 題 編 號 :11900-1000201~3 審 定 日 期 :100 年 6 月 28 日 電 腦 軟 體 設 計 乙 級 技 術 士 技 能 檢 定 術 科 測 試 應 檢 人 參 考 資 料 目 錄 ( 第 二 部 分 ) 壹 電 腦 軟 體 設 計 乙 級 技 術 士 技
handsome-招股书-新规则-final-version-0422.PDF
1 Handsome Electronics Co., Ltd. ( 259 ) 1 2 28 2 Handsome Electronics Co., Ltd. ( ) 17,000,000 A 1700 1 15.53 2003 4 28 2003 4 10 3 1 2002 44.28 11.65 2 3 4 2001 7 17 3 2010 2010, 4 5...8...11...11...11...11...12...12...12...13...
大学计算机信息技术教程·配套习题集(印刷稿/理论题<必做/选做题>)
2007 [1]. A B C D [2]. [3]. " " A B C ADSL D ADSL [4]. Flash [5]. [6]. A B C D [7]. 11-1024 [8]. [9]. D [3,5] A 5 3 B 5 13 C 3 5 D 15 3 [10]. [11]. CPU [12]. [13]. [14]. A B CPU C/ D [15]. A B C D [16].
壹、簡介
94 6 1 2 241 2 3 4 () 95 ) 95 5 6 93 7 94.12.15 95.6.15~95.12.15 8 ( ) 9 ( ) (shareware) ( ) 1 3 2 10 2 3 4 5 6 94.12.15 3 2 ( ) 94.12.15 3 2 95.3.31 3 2 ( 95.6.15 10 2 ) ( 95.12.15 10 2 ) () MS OFFICE
( 二 ) 拓 展 岗 位 ( 群 ) 1. 餐 厅 服 务 岗 位 群 在 大 中 型 餐 饮 企 业 星 级 饭 店 主 要 从 事 餐 饮 服 务 的 有 关 工 作, 如 服 务 员 点 菜 师 茶 艺 师 咖 啡 师 调 酒 师 等 2. 食 品 加 工 岗 位 群 主 要 从 事 餐 饮
广 东 食 品 药 品 职 业 学 院 餐 饮 管 理 2016 级 人 才 培 养 方 案 专 业 名 称 : 餐 饮 管 理 专 业 代 码 :640201 招 生 对 象 : 高 中 毕 业 生 或 三 校 生 ( 职 高 中 专 技 校 毕 业 生 ) 学 制 : 三 年 全 日 制 高 职 学 历 : 专 科 第 一 部 分 主 体 部 分 一 培 养 目 标 为 大 中 型 餐 饮 企
英语专业(中英文)
英 语 专 业 课 程 体 系 框 架 图 课 程 类 别 学 时 数 ( 其 开 课 设 课 目 的 ( 阐 述 该 课 程 在 培 养 学 生 品 德 知 识 能 力 体 育 或 美 育 的 作 课 程 名 称 中 实 验 ) 学 期 用 在 课 程 体 系 中 与 前 后 课 程 的 关 系 ) 所 属 课 程 群 开 课 学 院 掌 握 马 克 思 主 义 的 基 本 立 场 观 点 和 方
ARIS Design Platform
ARIS - 20045 ARIS 1 ARIS 6.................................................................4 2 ARIS 6.....................................................5 2.1 ARIS.......................................................................6
先生別耍我
先 生 別 耍 我. 夏 雪 3 目 錄 : 第 一 章 005 第 二 章 019 第 三 章 044 第 四 章 058 第 五 章 077 第 六 章 101 第 七 章 121 第 八 章 136 4 目 錄 第 九 章 151 第 十 章 172 尾 聲 196 關 於 夏 雪 197 先 生 別 耍 我. 夏 雪 5 第 一 章 姜 曦 在 照 片 裡 翻 閱 照 片 的 是 一 個
TopTest_Adminstrator.doc
壹 前 言... 3 貳 系 統 簡 介... 4 一 TKB multimedia Top-Test 系 統 架 構...4 1. 使 用 者 介 面 層 (Presentation tier)...5 2. 商 業 邏 輯 層 (business logic tier)...5 3. 資 料 服 務 層 (data services tier)...5 二 TKB Multimedia Top-Test
經濟統計資料庫管理資訊系統
招 標 文 件 (1) 經 濟 部 投 資 審 議 委 員 會 全 球 投 資 審 議 管 理 資 訊 系 統 ( 第 3 期 ) 開 發 建 置 專 案 投 標 須 知 經 濟 部 投 資 審 議 委 員 會 中 華 民 國 95 年 2 月 經 濟 部 投 資 審 議 委 員 會 投 標 須 知 以 下 各 項 招 標 規 定 內 容, 由 機 關 填 寫, 投 標 廠 商 不 得 填 寫 或
CH01.indd
3D ios Android Windows 10 App Apple icloud Google Wi-Fi 4G 1 ( 3D ) 2 3 4 5 CPU / / 2 6 App UNIX OS X Windows Linux (ios Android Windows 8/8.1/10 BlackBerry OS) 7 ( ZigBee UWB) (IEEE 802.11/a/b/g/n/ad/ac
基于UML建模的管理管理信息系统项目案例导航——VB篇
PowerBuilder 8.0 PowerBuilder 8.0 12 PowerBuilder 8.0 PowerScript PowerBuilder CIP PowerBuilder 8.0 /. 2004 21 ISBN 7-03-014600-X.P.. -,PowerBuilder 8.0 - -.TP311.56 CIP 2004 117494 / / 16 100717 http://www.sciencep.com
<4D6963726F736F667420576F7264202D20B1B1BEA9D3CAB5E7B4F3D1A7B3F6B0E6C9E7CDBCCAE9D7DCC4BFC2BCA3A8D7EED6D5A3A9B0D8BABAD0C2323031312E392E646F63>
一 信 息 通 信 类 专 业 图 书 出 版 时 间 定 价 ( 元 ) 新 一 代 信 息 通 信 技 术 书 系 ( 新 闻 出 版 总 署 十 一 五 国 家 重 点 图 书 出 版 规 划 项 目 ) 无 线 通 信 专 辑 1 1283-7/T N 移 动 通 信 中 的 多 媒 体 业 务 基 础 王 波 涛 2006.12 32.00 10 订 数 2 1188-1/TN 无 线 通
(2) 廠 商 具 有 維 修 維 護 或 售 後 服 務 能 力 之 證 明 ;(3) 廠 商 具 有 製 造 供 應 或 承 做 能 力 之 證 明 ;(4) 具 有 相 當 人 力 之 證 明 屬 特 定 資 格 之 ㄧ 8.(3) 機 關 辦 理 預 算 金 額 為 新 台 幣 四 億 元
政 府 採 購 法 規 概 要 題 庫 最 後 更 新 日 期 :( 人 發 局 第 一 期 ) 2010/03/20 選 擇 題 : ( 答 案 ) 正 確 錯 誤 解 析 1.(3) 機 關 訂 定 招 標 文 件, 何 者 正 確?(1) 廠 商 履 行 契 約 所 必 須 具 備 之 財 務 商 業 或 技 術 資 格 條 件, 不 考 慮 廠 商 在 外 國 之 商 業 活 動 應 (2)
<4D F736F F D D342DA57CA7DEA447B14D2DA475B57BBB50BADEB27AC3FEB14DA447B8D5C344>
1. 請 問 誰 提 出 積 體 電 路 (IC) 上 可 容 納 的 電 晶 體 數 目, 約 每 隔 24 個 月 (1975 年 更 改 為 18 個 月 ) 便 會 增 加 一 倍, 效 能 也 將 提 升 一 倍, 也 揭 示 了 資 訊 科 技 進 步 的 速 度? (A) 英 特 爾 (Intel) 公 司 創 始 人 戈 登. 摩 爾 (Gordon Moore) (B) 微 軟 (Microsoft)
多層次傳銷與獎金系統
醒 吾 技 術 學 院 資 訊 管 理 系 ( 五 專 部 ) 九 十 六 學 年 度 畢 業 專 題 多 層 次 傳 銷 與 獎 金 系 統 組 員 : 921506122 游 濬 瑋 921506126 陳 彥 宇 921506139 林 龍 華 921506144 陳 昶 志 921506149 楊 璧 如 指 導 老 師 : 汪 淵 老 師 中 華 民 國 九 十 七 年 一 月 十 一 醒
PowerPoint Presentation
1 2 3 4 20 15 1994 ~ 10 1 1994 Novell Foxpro 1999 PowerBuilder+MS SQL 2004 Web+ portal C/S 18 900 B/S 2003 2004 2005 2006 301 402 201 904 652 77 JAVA 4081 B/S J2EE+Delphi C/S 1265 1998 OA (c/s )
<4D6963726F736F667420576F7264202D20C8CBC3F1D3CAB5E7B3F6B0E6C9E732303131C4EAC7EFBCBEBDCCB2C4C4BFC2BCA3A820B8DFD6B0B2BFB7D6A3A9>
二 教 材 目 录 教 学 资 源 栏 符 号 备 注 : 电 子 教 案 源 程 序, 网 络 课 程 授 课 素 材 习 题 答 案 模 拟 试 卷, 实 验 题 目 动 画 录 像 教 学 大 纲 多 媒 体 课 件 ( 一 ) 计 算 机 类 教 材 21 世 纪 高 等 职 业 教 育 信 息 技 术 类 规 划 教 材 计 算 机 软 件 1 978-7-115-23817-7 C# 程
ebook140-8
8 Microsoft VPN Windows NT 4 V P N Windows 98 Client 7 Vintage Air V P N 7 Wi n d o w s NT V P N 7 VPN ( ) 7 Novell NetWare VPN 8.1 PPTP NT4 VPN Q 154091 M i c r o s o f t Windows NT RAS [ ] Windows NT4
致理技術學院資訊管理學系專題企劃書格式建議書
致 技 術 學 院 資 訊 管 系 專 題 期 末 報 告 致 技 術 學 院 資 訊 管 系 專 題 期 末 報 告 鋼 鐵 業 進 銷 貨 管 系 統 指 導 老 師 : 蕭 勝 華 老 師 鋼 鐵 業 進 銷 貨 管 系 統 蘇 啟 鴻 老 師 學 生 : 張 志 宏 (69810203) 江 智 達 (69810209) 陳 宏 鎧 (69810210) 徐 偉 嘉 (69810211) 彭
第 一 章 糟 透 的 生 日 在 水 蠟 樹 街 四 號 房 裡 面 已 經 不 止 一 次 在 早 飯 的 時 候 發 生 爭 吵 了 維 能 杜 史 林 先 生 一 大 清 早 就 被 從 他 外 甥 哈 利 房 間 裡 傳 出 來 的 響 亮 的 貓 頭 鷹 叫 聲 吵 醒 了 這 個 星
哈 利 波 特 ( 二 ) 密 室 之 秘 目 錄 第 一 章 糟 透 的 生 日 2 第 二 章 多 比 的 警 告 7 第 三 章 地 洞 13 第 四 章 在 弗 維 里 斯 和 巴 洛 特 斯 24 第 五 章 會 攻 擊 人 的 椰 樹 36 第 六 章 吉 德 洛 羅 克 哈 特 48 第 七 章 奇 怪 的 低 語 聲 57 第 八 章 忌 日 晚 會 67 第 九 章 牆 上 的 字
(CIP) : /. :, ISBN Ⅰ... Ⅱ... Ⅲ.1 2 Ⅳ.E892.2 CIP (2004) ( 81) : : ( 811) : : /32 13.
(CIP) : /. :,2005.1 ISBN7 80668 852 8 Ⅰ... Ⅱ... Ⅲ.1 2 Ⅳ.E892.2 CIP (2004)111530 ( 81) :64515005 :64515005 ( 811) :64515012 :64844088 850 1168 1/32 13.25 29 20051 1 20051 1 6000 ISBN7 80668 852 8/G 298
目 录 1. 人 事 部 关 于 全 国 专 业 技 术 人 员 计 算 机 应 用 能 力 考 试 的 通 知 ( 人 发 2001 124 号 ) 2. 关 于 专 业 技 术 人 员 计 算 机 应 用 能 力 考 试 有 关 问 题 的 通 知 ( 鲁 人 发 2002 9 号 ) 3. 关
市 专 业 技 术 人 员 管 理 处 2015 年 4 月 2 日 目 录 1. 人 事 部 关 于 全 国 专 业 技 术 人 员 计 算 机 应 用 能 力 考 试 的 通 知 ( 人 发 2001 124 号 ) 2. 关 于 专 业 技 术 人 员 计 算 机 应 用 能 力 考 试 有 关 问 题 的 通 知 ( 鲁 人 发 2002 9 号 ) 3. 关 于 全 国 专 业 技 术 人
OpenOffice.org OpenOffice.org OpenOffice OpenOffice OOo OpenOffice.org 1. Writer MS Word.odt 2. Calc MS Excel.ods 3. Impress MS PowerPoint.odt 4. Base
96 OpenOffice.org 03 8210825 0933-996072 E-Mail: [email protected] OpenOffice.org OpenOffice.org OpenOffice OpenOffice OOo OpenOffice.org 1. Writer MS Word.odt 2. Calc MS Excel.ods 3. Impress MS PowerPoint.odt
1. ( B ) IT (A) (B) (C) (D) 2. ( A ) (A) (B) (C) (D) 3. ( B ) (A) GPS (B) GIS (C) ETC (D) CAI 4. ( D ) (A) (B) (C) (D) 5. ( B ) (Stored Program) (A) H
... 2... 4... 6... 8... 10... 12... 14... 16... 18... 20... 22... 24... 25... 26... 28 1. ( B ) IT (A) (B) (C) (D) 2. ( A ) (A) (B) (C) (D) 3. ( B ) (A) GPS (B) GIS (C) ETC (D) CAI 4. ( D ) (A) (B) (C)
