浅析开源产品:JACOB
JACOB在很长一段时间收到各位JAVA编程人士的重用,许多和小寻一样热爱编程的朋友找到我讨论各种关于JACOB的问题,在这些前来讨论技术的朋友当中,不少朋友是第一次接触,被JACOB语法所迷惑,不知所措,为了让大家少走冤枉路,小寻特意写下这篇文章,由于本人技术浅薄,如有不足,还请批评指正。JACOB是来自danadler.com公司的开源产品,大家以往都是通过http://danadler.com对该公司的主页做访问,但是你现在打开会看到“Internet Explorer 无法显示该网页” 如果我没记错我们以往使用的jacob_1.9.zip、jacob_1.7.zip都是从http://danadler.com/jacob 处下载的,但目前看来这个网址不可用了。做一下搜索,发现sourceforge.net 有一个叫jacob的项目,想是该公司搬家了吧!通过http://sourceforge.net/projects/jacob-project/ 我们访问到该工程主页,然后下载jacob-project 1.14.3 晕连版本也变了,再也找不到那些老版本了。
源代码下载:jacob-1.14.3_src.zip
代码包下载:jacob-1.14.3.zip
API分析:(jacob-1.14.3\docs\api\index.htm)
JACOB里的总共有两个包:
com.jacob.activeX:JACOB可以通过它调度(Dispatch)activeX 控件
com.jacob.com:JACOB通过它调用系统DLL
(activeX是由微软公司推出的用于Internet的技术,以前曾经被称为OLE 和OCX,activeX web插件可以用于各种非HTML的工作,比如,对MicrosoftExcel 或 MicrosoftWord 文件做操作、解析JS,VB脚本、播放FALSH、调用Microsoft MediaPlayer等。)
内部结构:
www.ad119.cn/bbs/attachments/basic/20090317/20093178124420377801.jpg
有一点可以确定的是在JACOB内部,com.jacob.activeX是建立在com.jacob.com之上的。
而com.jacob.com中有一个很基础的类com.jacob.com.JacobObject
其中比较常用的两个类com.jacob.com.Dispatch和com.jacob.com.Variant便是继承自它。(com.jacob.com.Dispatch;里面提供了调度MS windows系统API,比如进程的管理。com.jacob.com.Variant; 里面数据类型的转换的方法,Variant类本身是JACOB的最最基本的数据类,他可以被转换成任何的类,如: 使用toDispatch();可以将Variant转化成Dispatch对象。)
com.jacob.com中还有其他的一些类不是建立在JacobObject之上的,如com.jacob.com.ComThread(负责COM线程管理。)
com.jacob.com所有的类,包括上面说到的JacobObject、ComThread,都是通过com.jacob.com.LibraryLoader中的loadJacobLibrary()方法:
www.ad119.cn/bbs/attachments/basic/20090317/20093178124425077802.gif
static
www.ad119.cn/bbs/attachments/basic/20090317/20093178124429677803.gif
www.ad119.cn/bbs/attachments/basic/20090317/20093178124434377804.gif
{
www.ad119.cn/bbs/attachments/basic/20090317/20093178124439077805.gif
LibraryLoader.loadJacobLibrary();
www.ad119.cn/bbs/attachments/basic/20090317/20093178124443777806.gif
}
调用jacob.dll内的方法,比如:Dispatch.java就通过LibraryLoader和Dispatch.h、Dispatch.cpp建立联系。
从而建立起java到jacob.dll到jni的之间的联系。
出处:http://www.blogjava.net/lusm
页:
[1]