学了c++基础,开始win32编程,要看com,比如《com原理与应用》(以后是c#和.net啦)
学了java语法,就因该看jmx规范
com是组件模型,规范的制定者和服务的实现者是MS,(当然,还有别的实现,sourceforge有啊,linux的),目的是解决软件的2进制兼容。由于win32年代久远,语言众多,为了解决问题MS
1 运用注册表和uuid解决class的查找和定位问题(后来是活动目录)
2 运用interface分离declare和implementation
3 语言的异常禁止直接在模块间传递。语言的异常是用api模拟的,比较畸形。
4 语言的继承语意用queryinterface模拟,非常原始。
5制定一堆核心接口,(集合,monitor,connector,idispatch,数据传输,结构化存储,等等),丑死了,要多难看有多难看。
6用rpc解决分布式对象请求(就是dcom),mts解决对象事物处理,com+解决对象pooling。数据库嘛,当然只能是ms 的sql了,既然只支持一家,那么object relation mapping就省略了(简称or mapping,把对象放进(取处)数据库的筐架)。 com的进化者.net似乎是开放的,支持众多语言,基础的一部还公开,成为标准,还有开源的实现。。但是关键的企业级服务:分部事物处理和pooling(就是com+)是不能开放的,没有兼容的实现,只有ms一家。阉割了的.net只能是玩具.net的企业级市场上ms是最强的。
jmx从某些方面来看,和com类似。
jmx是组件模型的规范(包括结构,设计模式,api和服务),目的是为了管理(manage)和监视(monitor)java的 应用程序和网络。“The Java Management extensions (also called the JMX specification) define an
architecture, the design patterns, the APIs, and the services for application and
network management and monitoring in the Java programming language.”0学习com,要分清com规范,com library,com server(com组件),com client(程序员编写的使用com server的程序)
     jmx也有jmx规范,  mbeanserver,jmx mbean,jmx agent 。。看com很不爽,因为ms把有些地方捂住不让看(比如com library 的服务,“mashaling”,“structure storage”的实现),把《com原理与应用》看了也只知道如何使用com和构造com object。
jmx就不同,文档,参考实现,开源实现都有,可以满足所有的好奇心。1 从classload看 在jmx中注册表就不用了,classpath简单多了。都是java的,异常,继承就不用拐弯抹角了。2 com 中有early bind(c++写的不带类型库的组件),late bind(带type library),和动态绑定(vb调用)
jmx的对象(mbean)的种类有standard mbean(通过内省访问对象内部的方法,属性和资源)和dynamic mbean(其借口和idispatch很象,类似com的late bind)。3 win32有消息,jmx有notification model。4 com对象有type library(也有不带的)
jmx的mbean有metadata class(提供的信息更丰富)5 com中有聚合,接口的继承等规范。
jmx中对mbean的继承也有类似规定。6com对象有attribute,
jmx的mbean也有attribute,就是setter和getter拉。
jmx的规范我才看30%,还有mbean service和mbean agent没看。