Java2平台新特性

---(文/重粒子)

Java 2 是 对JDK 的 核 心 和 标 准 扩 展API 的 一 个 主 要 升 级, 它 包 括 了 Java 基 础 类 库(Java Foundations Classes)、CORBA 支 持、 更 保 密 的 同 时 也 更 灵 活 的 安 全 模 型 及 对JDK1.1 API 的 改 进 和 性 能 增 强。 下 面 我 们 将 讨 论JDK1.2 的 新 特 性 和 如 何 使 用 这 些 新 特 性 来 改 进Java Application 和Applet。

一、 Java 基 础 类 库


----与JDK 以 前 的 版 本 相 比 较,Java 基 础 类 库 是 Java 2 最 重 要 的 新 特 性。Java 基 础 类 库 是 一 系 列API 的 集 合, 用 于 构 造 与Java Applet 和Application 图 形 界 面 相 关 的 组 件。Java 基 础 类 库 由 下 面 五 个 部 分 组 成:
----1. 抽 象 窗 口 工 具 包(Abstract Windowing Toolkit)
----如 果 以 前 用 过Java, 那 么 你 一 定 知 道 利 用 抽 象 窗 口 工 具 包(AWT) 可 以 创 建 与 平 台 无 关、 基 于 图 形 用 户 界 面 的 程 序。 同 微 软 的Windows API 相 比, 清 楚、 简 单 和 强 大 的AWT 是 Java 语 言 迅 速 流 行 的 重 要 原 因。AWT 不 仅 是 编 写Windows 程 序 的 良 好 工 具, 而 且 可 以 编 写 从Motif 到OS/2 平 台 的 图 形 界 面 应 用 程 序。 Java 2 的AWT 类 库 新 增 加 了 很 多 类 和 接 口, 用 来 处 理 绘 图、 打 印 和 图 像, 并 且 支 持 易 用 性、 拖 放 和 二 维 图 形 的API。
----2 . 新 的 图 形 界 面 类 库(Swing)
----在Java 基 础 类 库 提 供 的 新 特 性 中,Swing 对 于 编 程 人 员 来 说 是 最 重 要 的, 因 为 它 是Sun 公 司Javasoft 开 发 组 用 来 描 述 下 一 代 图 形 界 面 的 标 准。Swing 继 承AWT, 提 供 了 多 种 图 形 界 面 组 件 以 及 它 们 的100 % 纯Java 实 现, 并 且 允 许 这 些 组 件 的 界 面 和 行 为 的 变 化。
----Swing 中 包 含 了 像 标 签 页、 表 格、 树、 特 殊 边 框、 微 调 等 各 种 新 组 件。 这 些 组 件 都 是100 % 纯Java 的, 不 依 赖 具 体 的Windows 系 统, 可 以 在 各 种 平 台 上 实 现。 尽 管Swing 是 从AWT 派 生 出 来 的, 但Swing 组 件 并 不 使 用AWT 组 件, 相 反 很 多 原 有 的AWT 组 件( 如 按 钮、 列 表 和 对 话 框) 重 新 用Swing 组 件 改 写。 正 是 因 为 这 一 点,AWT 组 件 在 不 同 平 台 上 表 现 得 更 一 致, 并 且 有 能 力 提 供 本 地 窗 口 系 统 不 支 持 的 新 特 性。
----Swing 中 最 吸 引 人 的 是 它 对 可 插 入 观 感( Pluggable look and feel — —PL &F ) 的 支 持, 可 以 让 你 定 制 自 己 的 桌 面, 更 换 新 的 颜 色 方 案, 让 窗 口 系 统 适 应 你 的 习 惯 和 需 要。 Swing PL &F 体 系 结 构 使 得 同 时 定 制Swing 控 件 或 控 件 组 更 加 容 易。 Swing 也 提 供 了 一 些 预 定 义 的 观 感(L &F), 包 括 缺 省、Motif 和 Windows 的L &F。
----3 . 易 用 性 类 库 (Accessibility)
----易 用 性 类 库 是Java 2 新 增 的API, 它 支 持 在 JFC 组 件 中 使 用 辅 助 功 能。 辅 助 功 能( 如 屏 幕 放 大 镜 和 语 音 识 别 系 统) 主 要 用 于 帮 助 残 疾 人 使 用 计 算 机, 提 供 一 些 和 应 用 程 序 交 互 的 非 标 准 的 方 法。
----4 . 二 维 图 形 类 库 (Java 2D)
----Java 2D API 提 供 了 对 二 维 绘 图、 图 形 处 理、 图 形 渲 染、 颜 色 管 理 和 打 印 的 全 面 支 持, 包 含 了 一 个 支 持 自 由 曲 线、 图 像、 空 间 变 换、 颜 色 变 换 和 图 像 合 成 的 图 像 模 型。 这 个 模 型 是 设 备 无 关 的, 允 许 使 用 同 样 的 风 格 进 行 显 示 和 打 印。
----5 . 拖 放 类 库 (Drag and Drop)
----拖 放 是 大 多 数 窗 口 系 统 所 支 持 的 功 能, 主 要 用 于 组 织 桌 面、 管 理 文 件、 打 开 文 档 以 及 执 行 程 序。 在Java 2 中 新 增 加 了 对 平 台 无 关 的 拖 放 的 支 持。 它 支 持Java 应 用 程 序 内 部、Java 应 用 程 序 之 间 以 及Java 应 用 程 序 和 当 前 平 台 应 用 程 序 之 间 的 拖 放。

二、 Java 2 的 新 特 性


----1 . Java IDL
----通 用 对 象 请 求 代 理 体 系 结 构(CORBA) 是 为 分 布 式 面 向 对 象 系 统 开 发 分 布 式 对 象 的 标 准 方 法。CORBA 是 由 对 象 管 理 组 织(OMG) 开 发 的, 该 组 织 是 由 软 件 公 司 和 其 他 组 织 组 成 的 联 盟。 在CORBA 中 使 用Java 对 象 的 方 法 称 为Java IDL, 现 在 已 经 被 集 成 到Java 2 中。Java IDL 提 供 了 一 套API 和 一 系 列 工 具, 使 得 Java 对 象 可 以 和CORBA 对 象 交 互。Java IDL 也 包 含 了Java 对 象 请 求 代 理(Java Object Request Broker -ORB) 和ORB 名 字 服 务 器(ORB name server)。
----2 . 容 器 类 库
----容 器 类 库(Collections) 由 一 系 列 类 和 接 口 组 成, 提 供 了 一 种 用 来 存 储 对 象 的 与 实 现 无 关 的 框 架 结 构。 容 器 类 库 提 供 了 对 集 合(Set)、 列 表(List)、 图(Map)、 有 序 集 合(SortedSet)、 有 序 图(SortedMap)、 哈 希 表(HashSet)、 树(TreeSet)、 数 组 列 表(ArrayList)、 链 表(LinkedList) 和 向 量(Vector) 等 基 本 容 器 类 型 的 支 持。 这 些 类 和 接 口 很 容 易 派 生 出 用 户 自 定 义 对 象 的 容 器 类 型。
----3 . Java 扩 展 框 架(Java Extensions Framework)
----Java 2 提 供 了 扩 展 核 心API 类 库 的 能 力, 这 种 扩 展 是 通 过 安 装 在 特 定 目 录 或 从 指 定URL 下 载 的JAR(Java Archive) 文 件 实 现 的。
----4 . 引 用 对 象(Reference Objects)
----Java 2 提 出 了 引 用 对 象 的 概 念, 引 用 对 象 用 来 存 储 其 他 对 象 的 引 用。 引 用 对 象 和C 与C + + 语 言 的 指 针 的 功 能 相 似, 但 不 提 供 对 确 定 的 内 存 地 址 的 引 用。Java 2 在java.lang.ref 包 中 用 六 个 类 实 现 了 引 用 对 象。 这 些 类 也 提 供 了 当 引 用 的 对 象 将 要 被 垃 圾 收 集 时 通 知 应 用 程 序 的 能 力, 这 种 特 性 允 许 使 用 引 用 对 象 来 实 现 对 象 缓 存 机 制。
---- 5 . 包 版 本 识 别
----包 版 本 识 别(Package Version Identification) 是Java 2 新 引 入 的 特 性, 它 允 许Java Applet 和Application 获 得 某 一 特 定Java 包 的 版 本 信 息。 这 种 版 本 信 息 允 许 大 型 的 复 杂 应 用 程 序 通 过 更 新 程 序 包 不 断 发 展, 因 为 程 序 包 可 以 互 不 影 响 地 升 级。 新 的 程 序 包 提 供 获 取 包 版 本 信 息 的 方 法, 并 把 版 本 信 息 存 储 在JAR 的 清 单 文 件(Manifest file) 中。
----6 . 输 入 法 类 库
----输 入 法 类 库(Input Method API) 是 对JDK 的 国 际 化 支 持 的 一 个 补 充, 它 允 许 文 本 编 辑 组 件 通 过 某 些 输 入 法 接 受 非 英 语 语 言 文 本 的 输 入。 输 入 法 类 库 被 设 计 成 支 持 大 字 符 集, 如 中 文、 日 文 和 韩 文。 输 入 法 允 许 用 户 使 用 很 少 的 键 输 入 数 千 种 不 同 的 字 符。 通 常, 输 入 法 类 库 把 键 入 的 几 个 字 符 的 序 列 转 换 为 一 个 或 多 个 国 际 化 的 字 符。

三、 Java 2 对 已 有 特 性 的 增 强


----1 . 安 全 性(Security)
----JDK 的 安 全 模 型 从JDK 1.0、1.1 到Java 2 一 直 在 不 断 增 强。 与 以 前 的 版 本 相 比,Java 2 中 使 用 的 安 全 模 型 不 仅 更 安 全, 而 且 更 灵 活。 从 安 全 性 考 虑, 它 修 正 了 旧 版 本 中 的 安 全 漏 洞。 从 灵 活 性 考 虑, 它 把 决 定 安 全 策 略 的 权 力 交 给 了 用 户, 用 户 可 以 通 过 编 辑 一 个 包 含 安 全 许 可 的 文 本 文 件 来 指 明 系 统 的 安 全 策 略。 同 时,Java 2 也 加 强 了 对 数 字 签 名 的 支 持。
----2 . Java Beans
----Java 2 中 提 供 的Java Beans 支 持 包 含 了Glasgow JavaBeans 的 正 式 版, 该 版 本 增 加 了 运 行 环 境 包 含(Runtime containment) 和 服 务 协 议(Services protocol), 支 持 拖 放 和JavaBeans 活 动 框 架(JavaBeans activation framework)。 运 行 环 境 包 含 和 服 务 协 议 允 许Java bean 和 其 他 Beans 交 互, 并 且 了 解 它 们 运 行 环 境 的 信 息。 新 的 拖 放 支 持 允 许 利 用Java Bean 设 计 更 复 杂 的 图 形 用 户 界 面。JavaBeans 活 动 框 架 允 许 有 选 择 性 的 实 例 化bean 以 支 持 动 态 的 程 序 需 求。
----3 . 映 像(Reflection)
----对 映 像 的 支 持 是JDK 1.1 引 入 的, 映 像 允 许 在 运 行 时 检 查 类、 接 口 和 对 象, 查 找 并 使 用 它 们 的 公 共 属 性、 构 造 方 法 和 其 他 方 法。JavaBeans、 对 象 查 看 工 具、Java 运 行 工 具( 如 调 试 器) 以 及 一 些 其 他Java Application 和Applet 使 用 映 像 的 这 些 特 性。 Java 2 可 以 通 过 改 变Java 语 言 缺 省 的 访 问 控 制 来 更 灵 活 地 使 用 映 像, 这 就 允 许 映 像 和Java 2 中 更 灵 活 的 安 全 机 制 协 同 工 作。
----4 . 声 音(Audio)
----JDK 1.1 提 供 了 利 用Java Applet 播 放Sun 音 频 格 式(Sun Audio format -AU) 声 音 文 件 的 功 能。Java 2 提 供 了 一 个 新 的 声 音 引 擎, 允 许Java Applet 和Application 都 可 以 播 放 声 音 文 件。 新 的 声 音 引 擎 也 允 许 播 放MIDI(Musical Instrument Digital Interface)、WAV(Microsoft Windows audio file format)、RMF(Rich Music Format) 和AIFF(Audio Interchange File Format) 格 式 的 声 音 文 件。
----5 . Java 存 档 文 件
----Java 存 档 文 件(Java Archive — —JAR) 由JDK 1.1 引 入, 提 供 在 单 一 文 档 文 件 中 存 储 多 个 文 件 的 能 力。 使 用JAR 文 件 可 以 更 好 地 组 织Java Applet、Application、Beans 和 类 库, 并 且 可 以 更 高 效 地 使 用 网 络 资 源。Java 2 改 进 了 操 作JAR 文 件 的 工 具, 并 且 提 供 了 用 于JAR 文 件 输 入 和 输 出 的 新 的I/O 类。
----6 . 远 程 方 法 调 用
----远 程 方 法 调 用(RMI) 和 序 列 化(Serialization) 由JDK 1.1 引 入, 提 供 了 运 行 在 本 地 的Java 对 象 调 用 远 程Java 对 象 方 法 的 功 能。 对 象 序 列 化 用 于 在 远 程 方 法 调 用 中 传 递 对 象, 作 为 参 数 和 返 回 值。 远 程 方 法 调 用 的 功 能 在Java 2 中 得 到 显 著 增 强。 远 程 对 象 活 动 框 架(Remote Object Activation framework) 支 持 运 行 在 远 程 的 对 象 和 对 象 的 引 用 持 续 运 行 在 多 种 平 台 上。 序 列 化 加 强 了 对 读 写 对 象 时 可 以 动 态 选 择 不 同 的 对 象 的 支 持。
----7 . Java 数 据 库 连 接 类 库(JDBC)
----JDBC 提 供 了 在Java 语 言 中 访 问 数 据 库 的 能 力。Java 2 包 括 了 一 个 增 强 版 的JDBC ODBC 桥 驱 动 程 序。 同 时, Java 2 将 支 持 最 近 发 布 的JDBC 2.0 标 准。
----8 . Java 本 地 接 口
----Java 本 地 接 口(Java Native Interface) 支 持Java 对 象 调 用 非Java 语 言 程 序 的 函 数。 在Java 2 中,Java 本 地 接 口 将 支 持 应 用 程 序 控 制 本 地 方 法 和Java 虚 拟 机 交 互 的 方 式。
----9 . 性 能
----JDK 工 具 的 整 体 性 能 在1.2 中 得 到 了 很 大 的 提 高。 最 主 要 的 提 高 是JDK 中 包 含 了 即 时 编 译 器(JIT); 其 次 把 性 能 要 求 严 格 的 核 心 类 放 在 本 地 库 中, 提 高 多 线 程 程 序 的 性 能, 以 及 减 少 字 符 串(String) 常 量 对 内 存 的 使 用。
----10 . 重 要 的 语 言 本 身 变 化
----在Java 2 中, 线 程(Thread) 类 的stop()、suspend() 和 resume() 方 法 已 经 成 为 不 推 荐 使 用(Deprecate) 的 方 法, 因 为 使 用 这 些 方 法 可 能 导 致 错 误 或 矛 盾 的 结 果。 为 了 不 使 用stop() 方 法, 线 程 应 该 监 视 自 身 的 运 行 并 从run() 方 法 中 返 回 来 结 束 运 行, 也 可 以 通 过 监 视 某 个 共 享 变 量 的 状 态 来 决 定 何 时 结 束。 另 外,Java 2 推 荐 通 过 监 听 事 件 的 方 法 来 决 定 自 身 的 状 态: 运 行 还 是 阻 塞。
----11 . 工 具 的 改 变
----Java 2 升 级 了 许 多1.1 版 本 提 供 的 工 具, 也 提 供 了 一 些 新 的 工 具。