Microsoft Word - 44.doc



Similar documents
何 秋 琳 张 立 春 视 觉 学 习 研 究 进 展 视 觉 注 意 视 觉 感 知

说 明 为 了 反 映 教 运 行 的 基 本 状 态, 为 校 和 院 制 定 相 关 政 策 和 进 行 教 建 设 与 改 革 提 供 据 依 据, 校 从 程 资 源 ( 开 类 别 开 量 规 模 ) 教 师 结 构 程 考 核 等 维 度, 对 2015 年 春 季 期 教 运 行 基

评 委 : 李 炎 斌 - 个 人 技 术 标 资 信 标 初 步 审 查 明 细 表 序 号 投 标 单 位 投 标 函 未 按 招 标 文 件 规 定 填 写 漏 填 或 内 容 填 写 错 误 的 ; 不 同 投 标 人 的 投 标 文 件 由 同 一 台 电 脑 或 同 一 家 投 标 单


( ) 信 号 与 系 统 Ⅰ 学 科 基 础 必 修 课 教 周 2016 年 06 月 13 日 (08:00-09:35) ( )

《C语言基础入门》课程教学大纲

¹ º ¹ º 农 业 流 动 人 口 是 指 户 口 性 质 为 农 业 户 口 在 流 入 地 城 市 工 作 生 活 居 住 一 个 月 及 以 上 的 流 动 人 口 非 农 流 动 人 口 是 指 户 口 性 质 为 非 农 户 口 在 流 入 地 城 市 工 作 生 活 居 住 一 个

评 委 : 徐 岩 宇 - 个 人 技 术 标 资 信 标 初 步 审 查 明 细 表 序 号 投 标 单 位 投 标 函 未 按 招 标 文 件 规 定 填 写 漏 填 或 内 容 填 写 错 误 的 ; 不 同 投 标 人 的 投 标 文 件 由 同 一 台 电 脑 或 同 一 家 投 标 单

,,,,, :,, (.,, );, (, : ), (.., ;. &., ;.. &.., ;, ;, ),,,,,,, ( ) ( ),,,,.,,,,,, : ;, ;,.,,,,, (., : - ),,,, ( ),,,, (, : ),, :,


一 开 放 性 的 政 策 与 法 规 二 两 岸 共 同 的 文 化 传 承 三 两 岸 高 校 各 自 具 有 专 业 优 势 远 见 杂 志 年 月 日

名 称 生 命 科 学 学 院 环 境 科 学 1 生 物 学 仅 接 收 院 内 调 剂, 初 试 分 数 满 足 我 院 生 物 学 复 试 最 低 分 数 线 生 命 科 学 学 院 生 态 学 5 生 态 学 或 生 物 学 生 命 科 学 学 院


中 国 软 科 学 年 第 期!!!

2014年中央财经大学研究生招生录取工作简报

西 南 民 族 学 院 学 报 哲 学 社 会 科 学 版 第 卷 资 料 来 源 中 国 统 计 年 鉴 年 年 新 中 国 五 十 年 统 计 资 料 汇 编 中 国 人 口 统 计 年 鉴 年 数 据 资 料 来 源 中 国 统 计 年 鉴 中 国 统 计 出 版 社 年 版 资 料 来 源

深圳市新亚电子制程股份有限公司

I

思 想 政 治 理 论 经 核 查 无 误 思 想 政 治 理 论 经 核 查 无 误 思 想 政 治 理 论 经 核 查 无 误 思 想

马 克 思 主 义 公 正 观 的 基 本 向 度 及 方 法 论 原 则!! # #

内 容 二 : 建 立 并 完 善 了 三 点 的 网 络 教 学 管 理 体 系 内 容 三 : 注 重 培 养 学 生 的 听 说 能 力 14

课程类 别

伊 犁 师 范 学 院 611 语 言 学 概 论 全 套 考 研 资 料 <2016 年 最 新 考 研 资 料 > 2-2 语 言 学 纲 要 笔 记, 由 考 取 本 校 本 专 业 高 分 研 究 生 总 结 而 来, 重 点 突 出, 借 助 此 笔 记 可 以 大 大 提 高 复 习 效

龚 亚 夫 在 重 新 思 考 基 础 教 育 英 语 教 学 的 理 念 一 文 中 援 引 的 观 点 认 为 当 跳 出 本 族 语 主 义 的 思 维 定 式 后 需 要 重 新 思 考 许 多 相 连 带 的 问 题 比 如 许 多 发 音 的 细 微 区 别 并 不 影 响 理 解 和

国债回购交易业务指引

抗 战 时 期 国 民 政 府 的 银 行 监 理 体 制 探 析 % # % % % ) % % # # + #, ) +, % % % % % % % %

一 从 分 封 制 到 郡 县 制 一 从 打 虎 亭 汉 墓 说 起

学 年 第 二 学 期 集 中 考 试 安 排 (18 周 ) 考 试 日 期 :6 月 27 日 星 期 一 8:10-9:50 第 二 公 共 教 学 楼 A 区 A 高 等 数 学 ( 理 二 2) 复 材 材 料 科 学 与 工 程

( 二 ) 现 行 统 一 高 考 制 度 不 利 于 培 养 人 的 创 新 精 神,,,,,,,,,,,,, [ ],,,,,,,,,,, :, ;,,,,,,? ( 三 ) 现 行 统 一 高 考 制 度 不 利 于 全 体 学 生 都 获 得 全 面 发 展,, [ ],,,,,,,,,,,

 编号:

定 位 和 描 述 : 程 序 设 计 / 办 公 软 件 高 级 应 用 级 考 核 内 容 包 括 计 算 机 语 言 与 基 础 程 序 设 计 能 力, 要 求 参 试 者 掌 握 一 门 计 算 机 语 言, 可 选 类 别 有 高 级 语 言 程 序 设 计 类 数 据 库 编 程 类

中 中 中 中 部 中 岗 位 条 件 历 其 它 历 史 师 地 理 师 生 物 师 体 与 健 康 师 从 事 中 历 史 工 从 事 中 地 理 工 从 事 中 生 物 工 从 事 中 体 与 健 康 工 2. 课 程 与 论 ( 历 史 ); 2. 科 ( 历 史 )

HSK( 一 级 ) 考 查 考 生 的 日 常 汉 语 应 用 能 力, 它 对 应 于 国 际 汉 语 能 力 标 准 一 级 欧 洲 语 言 共 同 参 考 框 架 (CEF) A1 级 通 过 HSK( 一 级 ) 的 考 生 可 以 理 解 并 使 用 一 些 非 常 简 单 的 汉 语

二 工 资 制 度 与 教 师 道 德 风 险 行 为

<433A5C446F63756D656E E E67735C41646D696E F725CD7C0C3E65CC2DBCEC4CFB5CDB3CAB9D3C3D6B8C4CFA3A8BCF2BBAFA3A95CCAB9D3C3D6B8C4CF31302D31392E646F63>

untitled

中 日 信 息 化 的 比 较 与 合 作 一 中 日 信 息 化 的 规 模 比 较


ETF、分级基金规模、份额变化统计

珠江钢琴股东大会


第2章 数据类型、常量与变量

(Microsoft Word - NCRE\314\345\317\265\265\367\325\37313\324\27221\272\3051.doc)

正 规 培 训 达 规 定 标 准 学 时 数, 并 取 得 结 业 证 书 二 级 可 编 程 师 ( 具 备 以 下 条 件 之 一 者 ) (1) 连 续 从 事 本 职 业 工 作 13 年 以 上 (2) 取 得 本 职 业 三 级 职 业 资 格 证 书 后, 连 续 从 事 本 职 业

<4D F736F F D D323630D6D0B9FAD3A6B6D4C6F8BAF2B1E4BBAFB5C4D5FEB2DFD3EBD0D0B6AF C4EAB6C8B1A8B8E6>

中 国 社 会 科 学 年 第 期!!!! ( ( ) % ) ) ) % % % %

上海证券交易所会议纪要

随着执业中医师资格考试制度的不断完善,本着为我校中医学专业认证服务的目的,本文通过对我校中医类毕业生参加2012年和2013年的中医执业医师考试成绩及通过率、掌握率进行分析,并与全国的平均水平进行差异比较分析,以此了解我校执业中医师考试的现状,进而反映我校中医类课程总体教学水平,发现考核知识模块教学中存在的不足,反馈给相关学院和教学管理部门,以此提高教学和管理水平。

<433A5C C6B73625C B746F705CB9FABCCAD6D0D2BDD2A9D7A8D2B5B8DFBCB6BCBCCAF5D6B0B3C6C6C0C9F3C9EAC7EBD6B8C4CFA3A CDA8D3C3B0E6A3A92E646F63>

2006年顺德区高中阶段学校招生录取分数线

第 期 李 伟 等 用 方 法 对 中 国 历 史 气 温 数 据 插 值 可 行 性 讨 论

公 开 刊 物 须 有 国 内 统 一 刊 (CN), 发 表 文 章 的 刊 物 需 要 在 国 家 新 闻 出 版 广 电 总 局 ( 办 事 服 务 便 民 查 询 新 闻 出 版 机 构 查 询 ) 上 能 够 查 到 刊 凡 在 有 中 国 标 准 书 公 开

2016年南开大学MBA招生信息

金 不 少 于 800 万 元, 净 资 产 不 少 于 960 万 元 ; (3) 近 五 年 独 立 承 担 过 单 项 合 同 额 不 少 于 1000 万 元 的 智 能 化 工 程 ( 设 计 或 施 工 或 设 计 施 工 一 体 ) 不 少 于 2 项 ; (4) 近 三 年 每 年

18 上 报 该 学 期 新 生 数 据 至 阳 光 平 台 第 一 学 期 第 四 周 至 第 六 周 19 督 促 学 习 中 心 提 交 新 增 专 业 申 请 第 一 学 期 第 四 周 至 第 八 周 20 编 制 全 国 网 络 统 考 十 二 月 批 次 考 前 模 拟 题 第 一 学

<4D F736F F D20BFC9B1E0B3CCD0F2BFD8D6C6CFB5CDB3C9E8BCC6CAA6B9FABCD2D6B0D2B5B1EAD7BC2E646F63>

Microsoft Word - 文件汇编.doc



年 第 期 % %! & % % % % % % &

2 熟 悉 Visual Basic 的 集 成 开 发 环 境 3 了 解 可 视 化 面 向 对 象 编 程 事 件 驱 动 交 互 式 开 发 等 基 本 概 念 4 了 解 Visual Basic 的 特 点 环 境 要 求 与 安 装 方 法 1 Visual Basic 开 发 应 用

证券代码: 证券简称:长城电脑 公告编号:


导 数 和 微 分 的 概 念 导 数 的 几 何 意 义 和 物 理 意 义 函 数 的 可 导 性 与 连 续 性 之 间 的 关 系 平 面 曲 线 的 切 线 和 法 线 导 数 和 微 分 的 四 则 运 算 基 本 初 等 函 数 的 导 数 复 合 函 数 反 函 数 隐 函 数 以

抗 日 战 争 研 究 % 年 第 期! # # % %

第 一 部 分 MagiCAD for Revit 安 装 流 程

<4D F736F F D20CAAEC8FDCEE5B9E6BBAED7EED6D5B8E5352E33312E646F63>

!!!!!

光明乳业股份有限公司

目 录 一 系 统 访 问... 1 二 门 户 首 页 申 报 用 户 审 核 用 户... 2 三 系 统 登 录 用 户 名 密 码 登 录 新 用 户 注 册 用 户 登 录 已 注 册 用

修改版-操作手册.doc

新, 各 地 各 部 门 ( 单 位 ) 各 文 化 事 业 单 位 要 高 度 重 视, 切 实 加 强 领 导, 精 心 组 织 实 施 要 根 据 事 业 单 位 岗 位 设 置 管 理 的 规 定 和 要 求, 在 深 入 调 查 研 究 广 泛 听 取 意 见 的 基 础 上, 研 究 提

全国建筑市场注册执业人员不良行为记录认定标准(试行).doc



第1篇 道路桥梁工程技术核心专业课程标准及学习绩效考评体系

国家职业标准:网络课件设计师

国 际 中 国 研 究 动 态 是 中 国 社 会 科 学 院 国 际 中 国 学 研 究 中 心 出 品 的 以 介 绍 国 际 中 国 问 题 研 究 最 新 成 果 为 宗 旨 的 电 子 杂 志 计 划 每 月 出 版 一 期 除 编 译 和 摘 编 网 络 和 中 外 期 刊 库 上 可

模 型 假 设 假 设 假 设 假 设 假 设 假 设 模 型 建 立 与 推 导

一 公 共 卫 生 硕 士 专 业 学 位 论 文 的 概 述 学 位 论 文 是 对 研 究 生 进 行 科 学 研 究 或 承 担 专 门 技 术 工 作 的 全 面 训 练, 是 培 养 研 究 生 创 新 能 力, 综 合 运 用 所 学 知 识 发 现 问 题, 分 析 问 题 和 解 决

关于2010年上半年(31次)全国计算机等级考试报名的通知

附 件 : 上 海 市 建 筑 施 工 企 业 施 工 现 场 项 目 管 理 机 构 关 键 岗 位 人 员 配 备 指 南 二 一 四 年 九 月 十 一 日 2

工 程 勘 察 资 质 标 准 根 据 建 设 工 程 勘 察 设 计 管 理 条 例 和 建 设 工 程 勘 察 设 计 资 质 管 理 规 定, 制 定 本 标 准 一 总 则 ( 一 ) 本 标 准 包 括 工 程 勘 察 相 应 专 业 类 型 主 要 专 业 技 术 人 员 配 备 技 术

( 此 页 无 正 文, 为 广 东 东 方 精 工 科 技 股 份 有 限 公 司 关 于 提 供 资 料 真 实 准 确 和 完 整 的 承 诺 函 之 签 署 页 ) 广 东 东 方 精 工 科 技 股 份 有 限 公 司 法 定 代 表 人 : 唐 灼 林 2016 年 7 月 28 日

Microsoft Word - 第7章 图表反转形态.doc

第二讲 数列

002 电 子 科 学 与 工 程 学 院 拟 招 生 150 人 联 系 人 : 周 老 师, 电 话 物 理 电 子 学 电 路 分 析 电 磁 场 理 论 01 电 磁 物 理 与 微 波 电 子 学 02 光 子 学 与 光 电 技 术 03 微 纳

!!


<4D F736F F D C3E6CFF2B6D4CFF3A3A8B5DAC8FDD5C220C0E0CCD8D0D4A3A92E646F63>



行政管理学考试题库

21 业 余 制 -- 高 起 专 (12 级 ) 75 元 / 学 分 网 络 学 院 学 生 沪 教 委 财 (2005)49 号 江 西 化 校 工 科 22 业 余 制 -- 高 起 专 (12 级 ) 70 元 / 学 分 网 络 学 院 学 生 沪 教 委 财 (2005)49 号 吉

三武一宗灭佛研究

2 师 资 引 进 与 设 备 建 设 3 英 语 高 地 建 设 与 课 外 实 践 三 六 种 教 学 模 式 改 革 的 内 涵 19

2.5 选 举 陈 晓 非 女 士 为 第 六 届 董 事 会 董 事 候 选 人 的 议 案 ; 2.6 选 举 卢 婕 女 士 为 第 六 届 董 事 会 董 事 候 选 人 的 议 案 ; 2.7 选 举 张 文 君 先 生 为 第 六 届 董 事 会 独 立 董 事 候 选 人 的 议 案

3 月 30 日 在 中 国 证 券 报 上 海 证 券 报 证 券 时 报 证 券 日 报 和 上 海 证 券 交 易 所 网 站 上 发 出 召 开 本 次 股 东 大 会 公 告, 该 公 告 中 载 明 了 召 开 股 东 大 会 的 日 期 网 络 投 票 的 方 式 时 间 以 及 审

<4D F736F F D C4EAB9A4B3CCCBB6CABFCAFDD1A7D7A8D2B5BFCEBFBCCAD4B4F3B8D9D3EBD2AAC7F3>

抗 日 战 争 研 究 年 第 期

Transcription:

* JAVA 中 基 于 的 COM 组 件 调 用 研 究 李 瑞 1 李 永 刚 (1. 北 京 工 业 大 学 计 算 机 学 院, 北 京 100022;2. 首 都 师 范 大 学 信 息 工 程 学 院, 北 京 100037) 摘 要 : 本 文 在 研 究 了 COM 组 件 复 用, 自 动 化 和 JNI 技 术 的 基 础 上, 详 细 阐 述 了 技 术 的 原 理, 指 出 了 它 的 优 势, 并 以 JAVA 程 序 中 通 过 类 调 用 COM 组 件 为 例, 着 重 讨 论 了 其 在 windows 平 台 上 的 应 用 关 键 词 : JAVA,COM,JNI,, 自 动 化, 组 件 中 图 分 类 号 :TP391 2 0 引 言 JAVA 语 言 自 面 世 以 来, 因 其 平 台 的 独 立 性 安 全 性 面 向 对 象 及 多 线 程 等 特 征, 得 到 了 广 泛 的 应 用 在 JAVA 中 我 们 经 常 会 用 到 自 己 或 第 三 方 通 过 非 JAVA 语 言 编 写 的 一 些 功 能 强 大 的 外 部 COM 组 件, 这 就 是 软 件 复 用 技 术 而 在 JAVA 程 序 中, 不 能 简 单 地 直 接 与 COM 组 件 建 立 接 口, 这 时 就 需 要 利 用 JAVA 的 本 地 方 法 接 口 (JNI) 来 完 成 但 使 用 JNI 调 用 COM 组 件 的 过 程 十 分 繁 琐, 因 而 通 过 直 接 创 建 COM 对 象 不 失 为 一 个 捷 径 实 际 上 是 一 个 JAVA 与 COM 自 动 化 组 件 之 间 的 桥 梁, 即 JAVA-COM Bridge 1 COM 组 件 COM(Component Object Model) 是 微 软 的 组 件 对 象 模 型 它 的 核 心 思 想 是 软 件 复 用, 它 的 实 质 是 将 使 用 C++ / VB / Delphi 等 语 言 工 具 编 写 的 程 序 模 块, 经 过 单 独 调 试 编 译 后 生 成 一 些 小 的 二 进 制 可 执 行 程 序, 这 些 二 进 制 程 序 就 是 组 件 组 件 可 以 为 各 种 应 用 程 序 操 作 系 统 和 其 它 的 组 件 提 供 服 务 微 软 的 许 多 技 术, 如 :ActiveX,DirectX,OLE 等 都 是 基 于 COM 建 立 的 COM 组 件 有 两 种 [1], 一 是 进 程 内 组 件, 它 是 一 个 DLL ( 链 接 库 ) 文 件 ; 二 是 进 程 外 组 件, 是 一 个 EXE( 可 执 行 程 序 ) 文 件 当 另 外 的 组 件 或 程 序 需 要 调 用 组 件 的 功 能 时, 它 首 先 创 建 一 个 COM 对 象, 然 后 通 过 该 对 象 所 实 现 的 COM 接 口 获 得 组 件 所 提 供 的 服 务 [2] COM 是 面 向 对 象 的 软 件 模 型, 对 象 是 它 的 基 本 要 素 之 一 使 用 COM 对 象 的 应 用 程 序 称 为 客 户 程 序, 而 提 供 COM 接 口 的 库 厂 或 自 动 化 程 序 称 为 服 务 器 程 序 接 口 是 一 组 逻 辑 上 相 关 的 函 数 集 合, 其 中 的 函 数 称 为 接 口 成 员 函 数 COM 接 口 使 应 用 程 序 和 其 它 组 件 可 以 和 COM 组 件 的 功 能 进 行 [3] 通 信 2 自 动 化 技 术 虽 然 COM 规 范 非 常 灵 活, 实 现 COM 对 象 也 确 实 可 以 做 到 语 言 无 关 但 实 际 上 COM 的 母 语 仍 然 是 C ++, 从 COM 接 口 的 定 义 以 及 COM 库 的 API 函 数 就 可 以 发 现, 它 所 使 用 的 一 些 数 据 类 型 在 某 些 弱 类 型 的 高 级 语 言 ( 如 VB 和 VBA) 中 很 难 表 达, 要 想 在 这 些 高 级 语 言 中 实 现 和 使 用 标 准 的 [4] COM 对 象, 有 时 是 非 常 困 难 的, 甚 至 是 不 可 能 的 另 外, 使 用 C++ 编 写 的 程 序 可 以 是 16 位 或 者 32 位 的, 它 的 数 据 结 构 很 灵 活 但 用 JAVA 编 写 的 程 序 只 能 是 32 位 的, 其 数 据 结 构 固 定 因 而 在 JAVA 中 使 用 COM 对 象, 可 能 会 因 为 交 换 参 数 的 数 据 结 构 不 同 而 出 现 错 误 自 动 化 作 为 COM 技 术 的 一 种 特 例 或 者 说 是 一 种 应 用, 为 这 些 高 级 语 言 使 用 组 件 模 块 提 供 了 一 条 有 效 的 途 径 COM 程 序 以 自 动 化 对 象 的 方 式 暴 露 出 内 部 的 数 据 和 功 能, 其 它 应 用 程 序 作 为 它 的 客 户, 通 过 访 问 自 动 化 对 象 的 属 性 和 方 法, 来 达 到 程 序 间 通 信 的 目 的 可 以 说, 自 动 化 是 一 个 管 道, 它 在 需 要 调 用 COM 组 件 的 应 用 程 序 和 COM 组 件 之 间 建 立 了 一 个 规 范 的 桥 梁, 而 自 动 化 程 序 本 身 则 作 为 响 应 应 用 程 序 请 求 的 自 动 化 服 务 器 运 行, 并 实 现 组 件 的 间 接 调 用 和 数 据 交 换 自 动 化 不 是 独 立 于 COM, 而 是 建 立 在 COM 的 基 础 上 的 [5] 一 个 自 动 化 服 务 器 实 际 上 就 是 一 个 实 现 了 IDispatch 接 口 的 COM 组 件, 而 一 个 自 动 化 应 用 程 序 则 是 一 个 通 过 IDispatch 接 口 同 自 动 化 服 务 器 进 行 通 信 的 COM 客 户 程 序 3 JNI 1

JAVA 语 言 被 广 泛 应 用 最 主 要 的 原 因 之 一 就 在 于 它 的 平 台 无 关 性, 而 正 是 由 于 它 跨 平 台 的 特 性, 使 得 它 和 本 地 机 的 各 种 内 部 联 系 变 得 很 少, 约 束 了 它 的 功 能 尤 其 是 在 软 件 复 用 方 面, 无 法 直 接 调 用 COM 对 象, 使 得 JAVA 本 身 的 优 点 大 打 折 扣 解 决 JAVA 对 本 地 操 作 的 一 种 方 法 就 是 JNI JNI( Java Native Interface) 是 一 种 编 程 接 口 JAVA 通 过 它 调 用 本 地 方 法, 而 本 地 方 法 就 是 以 库 文 件 形 式 存 放 的 COM 接 口 ( 在 WINDOWS 平 台 上 是 DLL 文 件 形 式, 在 UNIX 机 器 上 是 SO 文 件 形 式 ) [6] 图 1 给 出 了 JNI 的 工 作 模 式 示 意 图 Application C Side Java Side Functions Exceptions JNI Classes Libraries Libraries 图 1 JNI 工 作 模 式 示 意 图 虽 然 使 用 JNI 解 决 了 JAVA 中 调 用 组 件 方 法 的 有 无 问 题, 但 其 操 作 步 骤 比 较 繁 琐 具 体 如 下 : (1) 编 写 需 要 使 用 到 COM 接 口 的 JAVA 程 序 创 建 一 个 JAVA 类, 装 载 包 含 COM 组 件 的 链 接 库, 并 调 用 本 地 方 法 如 : 类 JniHello. Java 包 含 以 下 部 分 代 码 : static{system.loadlibrary("hello");} // 装 载 COM 链 接 库, 即 组 件 对 应 的 DLL 或 SO 文 件 public native static void HelloWorld(); // 本 地 方 法 调 用, 即 调 用 COM 接 口 函 数 (2) 用 javac JniHello. Java 编 译 它, 会 生 成 JniHello.class (3) 执 行 javah JniHello 命 令, 在 当 前 目 录 下 生 成 JniHello.h 文 件 这 个 头 文 件 就 是 Java 和 C 之 间 的 纽 带 其 中 包 含 了 需 要 调 用 的 本 地 方 法 的 声 明, 随 后 就 要 编 写 C/C++ 程 序 来 具 体 实 现 此 函 数 (4) 本 地 方 法 具 体 实 现 编 写 C/ C++ 源 文 件 JniHello.cpp, 其 中 要 包 含 上 一 步 生 成 的 头 文 件 JNIEXPORT void JNICALL Java_ JniHello_HelloWorld ( JNIEnv * env, jobject obj ){ printf ("Hello world )! \ n" ) ; return ;} (5) 编 译 连 接 成 库 文 件 在 WINDOWS 下 成 生 DLL 文 件 (6) 把 Hello.dll 拷 贝 到 JniHello.class 的 目 录 下, 运 行 JAVA 程 序 这 样, 我 们 就 创 建 了 一 个 自 己 的 COM 组 件 Hello, 并 实 现 了 此 组 件 的 接 口 函 数 在 JAVA 中 的 调 用 当 然, 也 可 以 通 过 在 JniHello.cpp 中 调 用 其 它 WIN32 平 台 上 的 COM 对 象, 间 接 实 现 对 已 有 程 序 的 复 用 其 实, 这 正 是 后 面 要 提 到 的 技 术 所 要 使 用 的 由 此 可 见, 使 用 JNI 技 术 虽 然 可 以 在 JAVA 程 序 中 调 用 本 地 方 法, 但 过 程 复 杂, 使 用 不 便, 并 且 在 参 数 传 递 过 程 中 容 易 出 现 数 据 类 型 不 匹 配 的 错 误 4 2

4.1 的 来 源 是 JAVA 与 COM 组 件 桥 接 的 缩 写 [7], 即 :JAVA-COM Bridge 通 过 使 用 类 库, 我 们 可 以 很 方 便 地 在 JAVA 程 序 中 调 用 COM 自 动 化 组 件 最 初 是 由 美 国 人 Dan Adler 在 Inventure 公 司 担 任 CTO 时 编 写 的 目 的 是 为 了 方 便 众 多 的 程 序 员 在 JAVA2 虚 拟 机 上, 调 用 WIN32 平 台 上 COM 自 动 化 服 务 器 中 的 组 件 当 项 目 以 开 源 的 方 式 在 网 络 上 公 布 以 后, 越 来 越 多 的 人 开 始 参 与 到 项 目 的 研 发 与 改 进 中 去 迄 今 为 止, 的 最 新 版 本 jacob 1.11 已 经 公 布 4.2 的 原 理 的 本 质 还 是 使 用 JNI 技 术 调 用 WINDOS 平 台 下 的 本 地 方 法 对 不 能 通 过 JAVA 程 序 直 接 调 用 的 COM 自 动 化 组 件 ( COM Automation components )Dan Adler 遵 照 JNI 接 口 标 准, 首 先 编 写 了 操 作 COM 自 动 化 组 件 的 JAVA 类, 并 将 与 自 动 化 接 口 有 关 的 函 数 调 用 声 明 成 本 地 方 法 然 后, 使 用 C++ 编 写 了 这 些 本 地 方 法 的 具 体 实 现 在 本 地 方 法 的 C++ 实 现 中, 完 成 了 与 WIN32 平 台 下 的 COM 自 动 化 组 件 的 沟 通 最 后, 将 这 些 C++ 程 序 编 译 连 接 成 jacob.dll 库 文 件 这 样, 在 库 文 件 和 类 包 的 相 互 配 合 下, 一 条 从 JAVA 程 序 到 COM 组 件 的 连 接 道 路 就 完 成 了 当 然, 在 中 还 不 仅 仅 是 形 成 了 桥 接 这 么 简 单 Dan Adler 还 在 其 中 加 入 了 数 据 类 型 转 换 组 件 生 存 期 控 制, 和 线 程 控 制 等 部 分 JAVA 程 序 通 过 调 用 COM 自 动 化 组 件 的 详 细 机 制 如 图 2 所 示 Microsoft 程 序 功 能 模 块 编 译 连 接 Microsoft COM 组 件 自 动 化 封 装 IDispatch 接 口 JAVA 自 动 化 操 作 类 JNI 技 术 本 地 方 法 调 用 DLL 文 件 调 用 编 译 连 接 对 象 类 JAR 包 封 装 对 自 动 化 组 件 操 作 的 C++ 程 序 JAVA 程 序 图 2 调 用 COM 自 动 化 组 件 的 机 制 简 单 来 说, 其 工 作 机 理 就 是 : 的 JAR 包 中 包 含 使 用 JNI 的 类, 使 用 JNI 技 术 的 类 文 件 3

.class 连 接 头 文 件.h, 头 文 件 与 本 地 方 法 实 现 文 件.c /.cpp 相 互 对 应, 在 本 地 方 法 实 现 文 件 中 又 调 用 了 自 动 化 组 件, 而 自 动 化 组 件 又 是 访 问 COM 组 件 的 统 一 接 口 另 外, 除 了 以 外, 微 软 公 司 也 提 供 了 在 JAVA 中 应 用 COM 组 件 进 行 程 序 设 计 的 类 包, 即 Microsoft com.ms classes 但 与 的 不 同 之 处 在 于, 使 用 com.ms 编 写 JAVA 时 只 能 使 用 JVC (Microsoft's compiler) 编 译 程 序, 并 且 程 序 仅 能 运 行 在 JVIEW(Microsoft's VM) 环 境 下 相 比 只 需 要 添 加 jacob.dll 和 jacob.jar 两 个 文 件 就 可 以 任 意 编 辑 和 运 行 的 便 利 程 度 来 说, 是 受 限 了 许 多 4.3 的 缺 陷 (1) 由 于 作 者 在 开 发 之 初 瞄 准 的 应 用 目 标 就 是 WIN32 平 台 下 的 COM 组 件, 因 而 使 用 的 JAVA 程 序 仅 限 于 WINDOWS 平 台 (2) 直 到 jacob 1.11 版, 对 于 不 同 版 本 的 WINDOWS 系 统, 才 可 以 全 部 兼 容 (3) 不 支 持 用 户 自 定 义 的 COM 组 件 5 的 使 用 软 件 开 发 中 的 一 个 实 例 笔 者 曾 经 参 与 过 北 京 教 育 招 生 考 试 数 据 资 源 系 统 项 目 的 研 发, 使 用 JAVA 作 为 应 用 层 的 语 言 工 具 其 中, 某 个 功 能 涉 及 到 读 取 并 使 用 VBA 写 成 的 宏 代 码 去 操 作 WORD 文 件, 这 就 需 要 在 JAVA 程 序 中 调 用 基 于 COM 技 术 的 ActiveX 组 件 对 象 现 在 仅 以 此 为 例, 讲 解 类 的 使 用 ( 本 项 目 运 行 平 台 为 WINDOWS 2000 SERVER) 5.1 的 部 署 要 在 JAVA 程 序 中 使 用 类, 需 要 经 过 以 下 几 步 操 作 : (1) 下 载 项 目 包, 如 :jacob 1.11.zip, 具 体 参 见 :www.danadler.com/jacob (2) 将 下 载 的 ZIP 文 件 解 压 缩, 把 其 中 的 jacob.jar 文 件 复 制 到 本 机 JDK 目 录 的 LIB 文 件 夹 下, 并 在 环 境 变 量 中 指 名 路 径 ; 另 外, 还 要 把 其 中 的 jacob.dll 文 件 复 制 到 本 机 WINDOWS 目 录 中 的 SYSTEM32 文 件 夹 下 (3) 在 JAVA 工 程 中 引 入 jacob 的 JAR 包 (4) 在 JAVA 程 序 中 声 明 引 用 jacob 类, 如 :import com.jacob.com.*; 5.2 程 序 编 写 (1) 使 用 OFFICE 软 件 中 的 VB 编 辑 器 编 写 调 试 VBA 代 码 作 为 宏 ; 或 直 接 使 用 OFFICE 中 的 宏 录 制 功 能, 生 成 VBA 代 码 (2) 将 生 成 的 宏 取 名 为 MyMacro, 保 存 在 Normal.dot 中 (3) 编 写 调 用 宏 的 JAVA 程 序, 如 下 : import com.jacob.com.*; import com.jacob.activex.*; public class WordMacroCtrl { public void callwordmacro(string filepath,string macroname){ ActiveXComponent wrdcom=new ActiveXComponent("Word.Application"); // 创 建 的 ActiveXComponent 对 象 wrdcom.setproperty("visible", new Variant(true)); // 设 置 对 象 中 的 属 性 Dispatch odocuments = wrdcom.getproperty("documents").todispatch(); // 通 过 对 象, 调 用 自 动 化 接 口, 获 得 COM 组 件 的 函 数 指 针 Dispatch odocument = Dispatch.call(oDocuments, "Open",filePath).toDispatch(); // 打 开 指 定 路 径 下 的 WORD 文 件 Dispatch.call(wrdCom, "Run", new Variant("Normal.NewMacros." + macroname)); // 调 用 存 储 在 Noraml.dot 中 的 宏 代 码, 并 在 打 开 的 WORD 文 件 中 应 用 4

} public static void main(string[] argv){ WordMacroCtrl Ma=new WordMacroCtrl(); Ma.callWordMacro("D:\\MacroTest.doc","MyMacro"); // 调 用 自 定 义 方 法, 传 入 应 用 宏 的 WORD 文 件 路 径 ( 已 经 存 在 的 文 件 ), 以 及 宏 名 称 }} 6 总 结 文 本 的 创 新 点 在 于, 详 细 阐 述 和 分 析 了 COM 组 件 自 动 化 技 术 JNI 以 及 使 用 调 用 自 动 化 组 件 的 原 理 和 关 系, 并 配 合 实 例 加 以 说 明, 突 出 显 示 了 使 用 在 JAVA 程 序 中 调 用 组 件 带 来 的 便 利 应 该 说, 技 术 使 得 在 JAVA 中 调 用 COM 自 动 化 组 件 不 再 是 一 件 繁 琐 的 工 作, 而 真 正 是 独 立 于 平 台 的, 完 全 封 装 的, 数 据 结 构 统 一 的, 简 单 的 类 的 调 用 可 以 相 信, 随 着 软 件 复 用 技 术 的 普 及 和 JAVA 程 序 开 发 的 扩 大 化, 技 术 也 将 不 断 解 决 自 身 问 题, 继 续 向 前 进 步 参 考 文 献 1 冯 正 全.COM 原 理 概 述 [ J ]. 成 都 信 息 工 程 学 院 学 报,2004,19(3):398 402. 2 张 金 波, 孙 海 翠.COM 技 术 及 其 程 序 设 计 [ J ]. 河 海 大 学 常 州 分 校 学 报,2004,18(2):34 38. 3 崔 晓 松, 蒋 波. 一 种 基 于 COM 技 术 的 BBS 实 现 模 型 [ J ]. 微 计 算 机 信 息,2002,18(1):60 62. 4 吴 丽 贤. 基 于 COM 的 自 动 化 及 其 实 现 的 几 种 方 式 [ J ]. 长 春 师 范 学 院 学 报 ( 自 然 科 学 版 ),2005,18(2): 74 77. 5 唐 国 维, 肖 勇 军.COM 中 自 动 化 对 象 的 方 法 调 用 探 析 [ J ]. 应 用 技 术,2006,11(5):24 27. 6 来 社 安. 在 Java 中 访 问 自 动 化 COM 组 件 [ J ]. 电 脑 知 识 与 技 术,2006,11(2):111 144.. 7 Dan Adler.The Project [ OL ].2000.www.danadler.com / jacob. Study on calling COM automation components base on from Java Li rui 1 Li yonggang 2 (1.College of Computer Science and Technology, Beijing University of Technology, Beijing,100022; 2.College of Information Engineering, Capital Normal University,100037) Abstract This article explained the principle of technology in detail, while studying COM components reuse, automation and JNI technology. Pointed out the advantage of, and give an example for calling COM components through in JAVA, have discussed its application on windows emphatically. Key words: JAVA,COM,JNI,,Automation,components 作 者 简 介 李 瑞 (1979 ), 男, 汉, 北 京 市 人, 北 京 工 业 大 学 计 算 机 学 院 2004 级 研 究 生, 研 究 方 向 : 计 算 机 应 用 技 术 Biography Li rui (1979 ), Male, Han nationality, Beijing, Master degree of Beijing University of Technology, Main research field: computer application. * 北 京 市 科 委 项 目 (Y0105003040191) 资 助 5

联 系 方 式 : 北 京 市 海 淀 区 白 堆 子 甲 23 号 院 5 号 楼 1005 室 Leer_lee_2000@hotmail.com 6