COM interfaces & data types wrappers allow working with COM types and interfaces like ordinary Java
objects. For example, you can use
IDispatch as typical Java interfaces, and
SafeArray etc. as regular Java
ComfyJ allows invoking methods of a COM object via its function indexes in VTBL (Virtual Method Table), or by its names using the Automation approach. Also, Automation allows for obtaining and setting properties of a COM object, including indexed and named ones.
ComfyJ provides a set of different concurrency models which you can use for initializing COM integration in your Java application.
ComfyJ allows you to create a COM object on a remote server.
All COM and other native resources will be garbage-collected automatically, or you can release them if required by the application logic.
ComfyJ includes the
OleContainer Swing component, which allows you to:
CLSID, or from a document file. Also, you can insert a COM object (which implements
IOleObjectCOM interface) into container.
OleObjectto or from a file in a special binary format.
ComfyJ provides a standard COM technique for creating and advising COM event handlers to a COM object.
With this bundled application, you can generate Java COM wrappers for COM components or COM Type Libraries. These generated classes allow you to work with COM objects just like regular Java objects. Moreover, this application can compile the generated classes and pack them into a JAR file, if needed.
This aspect of ComfyJ allows you to create Java COM servers purely in Java. In other words, a designed Java COM server can be exposed as COM objects to other COM applications without writing a line of a native code.
To simplify creation of custom Java COM servers, ComfyJ provides the base classes such as
IDispatchServer so any custom Java COM objects can inherit these classes, depending on
application requirements. Such Java COM servers can implement as many COM interfaces as required—from
standard COM interfaces and COM interfaces generated by ComfyJ's Code Generator application, to custom
ComfyJ also provides convenient ways for registering created Java COM servers. Such registration can be performed at runtime, i.e., for COM event handlers, or in COM Registry using a bundled ServerManager application. Also, you have the ability to register Java COM servers at runtime without using the ServerManager application. Such registered Java COM servers can be used by other COM applications.
A: It is possible only if that .NET component is built with enabled COM interop.
A: This property instructs ComfyJ's NativeResourceCollector (NRC) whether to release the COM
object automatically or not. By default, this property is set to true for all resources that
AutoDeleteParameter interface. When this property is set to false,
.release() method should not be called.
A required COM interface can be queried using the IUnknown.queryInterface() method, for
IOleObjectImpl oleObject = new IOleObjectImpl(); comObject.queryInterface(oleObject.getIID(), oleObject);
IOleObjectImpl oleObject = new IOleObjectImpl(comObject);
A: Yes, ComfyJ can be used in Java applets. There are several examples in ComfyJ distribution archive, in its samples\Applets\src\ subfolder, which demonstrate using of ComfyJ in Java applets.
A: Yes, every COM object can be released using its IUnknown#release() method. Make sure to set its AutoDelete property to false before releasing the object.
A: Yes, ComfyJ provides OleContainer Java component that allows embedding of any ActiveX component.
A: The simplest way is to package these files to the \META-INF\ subdirectory of an application JAR file.
A: The simplest way is to package all required JNIWrapper library files to root folder of an application JAR file.
A: COM should be initialized using
ComFunctions.coInitialize() method in each
Java thread (except OleMessageLoop) before working with COM objects.
A: Yes, ComfyJ provides the ability to create Java COM servers and register them in COM.
A: The fully-qualified name for a class is the package name followed by the class name,
separated by a period (.). For example:
A: This can be any class of your application. The only requirement is that it should be included into your Java application class path.
By using our products or any related documentation, you accept the Terms and Conditions of the Product Licence Agreement.
A: Our licensing is based on versions of ComfyJ. Having purchased the licence for our product you get the right to use the current major version of the product.
A: All minor version updates are free of charge. For example, if you have a licence to library version 2.x, you can receive all updates until the version 3.x is released. You can check the version of your licence in the comfyj.lic file.
A: Upon purchase of licence you will receive a licence archive. The archive will contain two JARs: development.jar and runtime.jar. Development.jar is the licence that should be used in development process. Runtime.jar should be used to distribute your application to end users. Inside the development.jar you can find the comfyj.lic file that contains information about your licence.
A: Major version upgrades should be purchased. You can upgrade your licence to a major version with a 25% upgrade discount. The licence upgrade includes renewal of the Standard Support pack.
A: You can distribute unlimited number of copies of your product with our library enclosed. Please use Runtime Licence for distribution of your product.
A: Runtime Licence is provided free of charge.
A: Please take a look at the Product Licence Agreement.
A: Yes, you can purchase ComfyJ Source Code Licence; it is provided on a per developer basis. Please contact our sales team if you are interested in this option.
A: You may want to purchase a Project licence, which is more cost-effective in case there are 3 and more developers on the team.
A: Project licence is bound to a single project you do, but it allows any number of developers in your company to work with our library.
A: When we say “project” we have in mind one product of your company including your future product versions or potential derivative works based on your product.
A: The best solution would be to purchase the Company–wide licence, which covers any number developers and projects in one company.
A: No. The Project licence is tied to one project only.
A: Yes, our licences are tied to a company, not to a specific developer. You can transfer licences to other developers provided that the number of developers, working on your team equals the number of licences purchased.
We provide licences for institutions, educators, students and researchers for the duration of the project or a study.Apply You will need to submit a reference letter from your supervisor (for students) or proof of participation in research project.