JAVA网站制作之《COM手艺内情》FAQ仓酷云
JAVA是一种可以撰写跨平台应用软件的面向对象的程序设计语言,由升阳(SunMicrosystems)公司的詹姆斯·高斯林(JamesGosling)等人于1990年代初开发。念书成绩一:“主动化在很多分歧的方面用开辟职员编写的代码来取代编译器天生的代码......”叨教这句话怎样了解?(第11章,分发接口与主动化,P231)答:这句话粗心是说:我们本来所写的使用,都是源码一级,必要经由编译器编译,才干实行,如今,用剧本言语来操纵主动化接口,能够静态的完成不异的使用(实际上是注释实行)。
一个复杂的例子,你一定没有Word的源码,假如你想用Word来天生一个针对详细使用范畴(例如说当局公函)的使用,你只能找有源码的公司来修正源码,以顺应你的特别必要。(微软听你的?)
可是,你能够用主动化接口来定制你的特定使用,用VBA剧本来把持Word的主动化接口就能够完成。是的,注释实行是慢了些,可是,对你来讲不必改源码,不必再往测试你修正的源码部分,不是更好吗?
念书成绩二:“若C++程序员想在运转时重新入手下手机关一个vtbl,那他能够完整自行决意怎样机关。另外一方面......”这段话应怎样了解?(第11章,分发接口与主动化,P234)
答:是的,一个VTBLE的天生是由你所用的编译器替你完成的,可是,假如你分明了vtbl的机关历程,你能够仿造一个出来。倡议读:《COM实质论》+《InsideC++ObjectModel》,要有很好的心思筹办,啃硬骨头。
念书成绩三:OleInitialize和CoInitialize(Ex)这两个函数有甚么区分?
P236倒数第六行有对OleInitialize的挪用
答:CoInitialize和CoInitializeEx是用来初始化COM运转情况的,就象练武的人在练武前先划了个圈,在圈里摆上了刀兵。
OleInitialize是初始化Ole的运转情况,Ole是在COM的基本上作的扩大,是ActiveX运转的基本。就象是在方才的圈子里撑起了个钢丝,要扮演钢丝上的扮演一样。
念书成绩之四:P208页,关于对point_default关头字的注释,看不懂:
1、“point_default关头字的感化就是告知MIDL编译器在没无为指针指定别的属性时应怎样处置此指针”“别的属性”都是些甚么?
2、“在函数外部,不克不及为它们指定别号......”,甚么是别号?
答:至于别号,是指MIDL言语中的typedef吧(十分抱愧,我对COM的调剂部分没有太多的存眷,只能复杂回覆,请你有了明白的谜底后告知我)。
念书成绩之五:P234最初一句,“固然用COM接口来完成IDispatch::Invoke也是大概的,请参阅1-2”
1、用COM接口怎样完成Invoke?
2、1-2中FooBar不是COM接口吧(没有IUnknown那三个函数)?
答:COM是更好的C++,COM的完成实在自创了良多C++的完成体例,好比,使用我后面所说的vtbl,
依照划定,我以为我们不该该把1-2的FooBar称为COM接口,可是,在狭义的局限内,因为利用了vtbl,能够委曲以为他也是一个COM接口,(假如作者非要如许讲的话 ^_^)
念书成绩之六:分发接口是COM接口(切合COM接口的界说吗)?它跟Invoke函数有何干系?假如不是COM接口,那末分发接口的界说是甚么?
答:分发接口能够是COM接口,也能够不是,这只是完成时的分歧体例罢了,分发接口是一个观点,外部应当包括两个数组,一个寄存dispid与接口办法称号的对值(pair),一个寄存的是dispid与接口办法指针(也就是函数指针)的对值。只需有这两部分我们就以为它是一个分发接口,至因而不是COM接口,那都无所谓。
Invoke的时分,必要供应dispid和对应的参数,如许,就能够使用分发接口的详细完成机制失掉函数指针举行功效挪用了。
念书成绩之七:P234第七行:“IDispatch::Invoke的一个完成所完成的函数集被称作一个分发接口,和dispinterface......”Invoke是一个函数,怎样可以完成“函数集”?Invoke函数跟分发接口之间是甚么干系?
答:关于IDispatch::Invoke,我们能够看一下它的运转历程:
在挪用Invoke之前,我们经由过程各类体例失掉了一个dispid,(不要觉得只要GetIDsOfNames才干失掉,我已经在一个组件里完成了依据形态分歧,将可实行的dispid静态传出,然后在组件内供应了一个办法,ExecuteCmd(dispid),如许客户程序也能够静态实行组件的接口办法了)。接口的实质就是一组函数指针的数组,而dispid就是函数指针数组的索引(注重,只要完成IDispatch接谈锋有dispid),经由过程指定索引,我们能够失掉指定的函数指针,如许我们能够用(*函数指针)(参数,参数…)的体例来挪用详细的接口办法了。
“等等......”我闻声你在喊,“我们的参数是以数组的情势传出去的,而你用函数指针挪用的时分是用参数列表的情势挪用的,我要如何才干完成它呢?”
是的,假如要你本人写一个Invoke的完成,光参数的压栈和范例处置就会累逝世你的,告知你一个好举措,用MS的API函数(DispCallFunc大概DispInvoke),大概用利用MFC/ATL对IDispatch完成的封装()(MFC用的是一个helper,而ATL用的是IDispatchImpl模版)。
分发接口是一个逻辑观点,它是指有个中央寄存了函数办法名和函数的指针,经由过程这个接口,你能够用指定的办法名来检索到函数的指针,最年夜的用途,是供应给剧本注释器利用。
如果你学习的是市场营销,是销售,也许参加大课堂的学习会更合适,因为你的工作能力中有个基础就是搭建自己的人脉, 应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展 另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。 科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。 自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。 有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想) 一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从 是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言 有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想) 是一种使网页(Web Page)产生生动活泼画面的语言 Java是一种计算机编程语言,拥有跨平台、面向对java 接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。 其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。 你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。 科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。 你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。 其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。 Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站 是一种为 Internet发展的计算机语言 Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
页:
[1]