Easily integrate your Java application with Microsoft Office Word, Excel and Outlook, with Internet Explorer, Windows Media Player, Adobe Acrobat etc. entirely in the Java language.


Employ a bidirectional Java-COM bridge in your app, call COM objects from your Java code, and COM code can call your Java.

Why ComfyJ

COM-to-Java Integration


COM Interfaces & Data Types Wrappers

COM interfaces & data types wrappers allow working with COM types and interfaces like ordinary Java objects. For example, you can use IUnknown, IClassFactory, and IDispatch as typical Java interfaces, and Variant(VARIANT), BStr(BSTR), SafeArray etc. as regular Java types.

VTBL & COM Automation

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.

Support for Multiple Threading Models

ComfyJ provides a set of different concurrency models which you can use for initializing COM integration in your Java application.

DCOM Support

ComfyJ allows you to create a COM object on a remote server.

COM Memory Management

All COM and other native resources will be garbage-collected automatically, or you can release them if required by the application logic.

Embedding of OLE/OCX/ActiveX Components to Swing

ComfyJ includes the OleContainer Swing component, which allows you to:

  • Use any visual COM component (OCX/ActiveX) in Java Swing UI. Using this functionality, you can embed various ActiveX applications, such as Internet Explorer, Acrobat Reader and Microsoft Office, as well as various media components such as Windows MediaPlayer, DVD Player, QuickTime, ShockwaveFlash, etc.
  • Create an embedded object using ProgID, CLSID, or from a document file. Also, you can insert a COM object (which implements IOleObject COM interface) into container.
  • Save and load an embedded OleObject to or from a file in a special binary format.

Handling of COM Events

ComfyJ provides a standard COM technique for creating and advising COM event handlers to a COM object.

CodeGenerator Utility

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.

Java-to-COM Integration

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.


Development of Java COM Servers

To simplify creation of custom Java COM servers, ComfyJ provides the base classes such as IUnknownServer and 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 ones.

Registration of Java COM Servers

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.

Try the Demo

  • JDK (JRE): 1.4.0 or later. Version 1.5 recommended.
  • Java™ WebStart. Version 1.5 recommended.
  • To see COM/OLE integration features, Adobe Acrobat Reader version 5.0 or higher is required.

Examples of Apps Our Customers Build

Licensing and Pricing

By using our products or any related documentation, you accept the Terms and Conditions of the Product Licence Agreement.

What You Get

  • Perpetual Development Licence
  • Free runtime distribution
  • Free minor version product updates
  • Free major version upgrade within 60 days of purchase date
  • Free Standard Support pack (55 hours)
  • No annual renewal fee
  • 15% discount on other TeamDev products

Per Developer

$1,149

Per Project

$3,399

Unlimited

$10,699

Source Code

$5,999

Support Renewal

$862

Premium Support

* Special Offer: Java Integration Pack Available for Per Developer, Project and Unlimited License

Java Integration Pack comprises a complete solution for those who are looking to bridge Java with Windows technologies and tools.

Buy ComfyJ together with JNIWrapper for Windows
and JExplorer (total value: $2,527) for only

$1,999

Technical FAQ

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 implement AutoDeleteParameter interface. When this property is set to false, the .release() method should not be called.

A required COM interface can be queried using the IUnknown.queryInterface() method, for example:

                            IOleObjectImpl oleObject = new IOleObjectImpl();
                            comObject.queryInterface(oleObject.getIID(), oleObject);
                        

Or
                            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.

Licensing FAQ

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: 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: 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.

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: The best solution would be to purchase the Unlimited 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.

Getting Help

Product Forums

You will need a Google ID to be able to post on forums, and you can do that

Note that your message will be automatically posted on the web.

Evaluation Support

Standard Support

Premium Support

Keep up the great work, we are existing customers of TeamDev and are very happy with the products supplied! Jeremy Dixon, Thales Australia
We are very happy with ComfyJ, and we are also very happy with the quick responses on the technical forums when we have questions. Jeremy Dixon, Thales Australia


Evaluate

We will use this name when writing to you.
We will send you the link for downloading evaluation key to this address. We will not give your email address to anybody else.
Tell us about your project so that we can give you hints on using our product in your app.