ComfyJ is COM-to-Java-to-COM bridge. On COM-to-Java integration part ComfyJ allows to easily integrate a Java application with any COMOLEOCXActiveX library. COM Interfaces and Data Types Wrappers provided by the library allow working with COM types and interfaces like with ordinary Java objects. ComfyJ allows to invoke methods of a COM object via its function indexes in VTBL or by their names using Automation approach. OleContainer Swing component allows to use any visual COM component in Java Swing UI create an embedded object using ProgID CLSID or insert a COM object into a container save and load an embedded OleObject. On Java-to-COM integration part ComfyJ provides ability to create custom Java COM servers that can be exposed as COM object to other COM applications without writing native code. ComfyJ provides the wrappers for base COM interfaces as well as ability to integrate with custom COM interfaces. ComfyJ also allows to expose Java objects as COM objects using classes such as IUnknownServer and IDispatchServer. Any custom Java COM objects can inherit these classes and implement any base or custom COM interfaces depending on requirements. Such Java COM servers can implement as many COM interfaces as required. ComfyJ also provides convenient ways for registering of such Java COM servers in a system. Such registration can be performed at run time for example for COM event handling or in COM Registry using the ComfyJ ServerManager application. The CodeGenerator utility supplied with ComfyJ allows to generate Java COM wrappers for COM components or COM Type Libraries. The generated code then can be compiled and packed to a resulting JAR file depending on the specified options.