我对Linux和COM都不熟悉。不过,COM是Microsoft的技术,Linux则是基于Unix的,所以Linux没有理由支持COM。但是据说,COM的IDL和CORBA的IDL非常相似,从技术上将,Linux可以支持COM——只要有一个Linux下的COM编译器就行了。
说到Office等Microsoft产品,完全就是基于COM的。比如:Office、Project、Visio等。你完全可以利用它们的COM和另外一个支持COM的开发工具(如Delphi),重写一个界面,而内核完全一样。
Java因为是跨平台的,所以不显式地支持COM,而是通过JNI。关于JNI,其实就是在一个Java方法前用native修饰字。如:
public native void StartOffice(){}
编译之后,用javah生成C的头文件(如office.h),再根据头文件生成源文件(office.c),然后在源文件中调用COM,实现相应的功能。然后编译成为.dll,让再使用native方法前用System.loadLibrary(String)方法加载.dll文件。很复杂,是不是?所以,我看了这些步骤以后,就不打算使用JNI了。:(