Ockham's Flashlight
Stuart Halloway on software development, technology, and the future.



Java/COM, Java/Win32 Integration resources

Java/COM, Java/Win32 Integration resources

Last modified: June 16, 2003

If you use one of these products and want to contribute more detailed comments than I have here, please email me. Let me know if you would like me to attribute your name and email or remain anonymous.

I use "Wire protocol products" to denote products that communicate between Java and Win32/COM via an out-of-proc mechanism. These systems can be 100% pure Java. "Proxy products" use JNI to build in-proc stub. "Dispatch products" can be wire-protocol or native, but are limited to accessing COM objects that implement IDispatch.

If any of this information is out of date or you know of other products, please let me know.

Wire protocol products

  • BEA's WebLogic jCOM speaks DCOM and RMI/JRMP, and RMI/IIOP. In addition it has a native mode that is more similar to the proxy products listed below. Comes as part of WebLogic 7.0.
  • Linar's JIntegra. Speaks the DCOM wire protocol from 100% pure Java. Bi-directional bridge. Also runs in a native mode that provides in-process proxy support. Client licenses start in the $400 range, and server licenses start at $3000.
  • Halcyon's R-JAX. Has a Communication Adapter layer that supports RMI, HTTP, and local connection. Claims to handle COM objects and DLLs, but seems to be dispatch-only. R-JAX standalone price $2495 (not clear if that is per seat/site?), plus support contracts ranging from $500-$3995. Halcyon also sells a VB to Java migration service for $5000 and up.
  • The Code Project has a Bridge Between Java and Windows. Free but no source. This appears to be simple messaging layer on top of socket communication.
  • John Burgess tells me that Sybase has Java/COM/CORBA interop. I haven't looked into this so I don't know if this is wire protocol, in proc proxy, or both:

Sybase Enterprise Application Server is a EJB container that can also host Powerbuilder user objects, DCOM components and CORBA components and will generate the relevent client stubs for any of these. i.e. you can generate ejb stubs for a com component, or corba stubs and idl for an ejb and so on in many combinations. see http://www.sybase.com/products/applicationservers/easerver The drawback of course is price -- About £5000 for a 50 concurrent user license

Proxy Products

Proxy products use JNI to build a higher level marshalling infrastructure between Java and native code. Dispatch based products (above) are proxy products of a particular flavor.

  • Jawin. Open source, supports Win32 and COM. Marshalling layer largely complete, includes JawinGen stub generation for IDispatch based interfaces.
  • Jace is a toolkit designed to make it easy to write JNI-based programs. Jace consists of a C++ runtime library, and a set of tools written in Java. Jace's C++ runtime library provides an easy to use API that allows user to manipulate Java objects as if they were C++ objects. Behind the scenes, the runtime library automatically manages the lifetimes of Java references, the mapping of Java exceptions to C++ exceptions, and the binding of C++ threads to the JVM.
  • InfoZoom's jacoZoom. Uses JNI to implement wrappers for COM Automation servers. Current price 199 Euro (as of July 2001). It supports IDispatch and vtable interfaces (oleautomation), embedding ActiveX Controls, and handling COM events through java listeners. Includes tlb parser and java-code generator.
  • Linar's JIntegra. Bi-directional bridge. Runs in a native mode that provides in-process proxy support. Also speaks the DCOM wire protocol from 100% pure Java. Client licenses start in the $400 range, and server licenses start at $3000.
  • Codemesh's JunC++ion. JunC++ion is now on Release 2.0 for Solaris, Windows, and Linux. JunC++ion generates C++ proxies that look "as like as possible" to Java classes. JMS Courier is in Release 2.0 Beta.JMS Courier integrates C/C++ applications into JMS and can be used with all JMS vendors. Evaluation versions are available.
  • Jacob Marner's open source JWindows. Access MFC from Java, also extensible for other purposes. Jacob adds these comments about JWindows..
  • Excelsior's xFunction. Stubs for Win32 DLL functions, enforce type safety only at runtime.
  • Neva Object Technology's Coroutine for Java, Java2COM, JavaDDE, and JavaPrint. Coroutine dynamically build calls to Win32 DLL entry points. Supports callbacks. Java2COM has wizard to generate code for accessing COM automation objects, plus you can extend com.neva.comIUnknown to call vtable interfaces. For $599 you get a license entitles you to use these tools on any number of machines and to distribute binaries royalty-free.

Dispatch-based products

Dispatch-based products use type information to generate appropriate Java wrappers. Typically products include a wizard for generating the wrapper code plus a runtime for translating method calls.

  • Jacob, at Dan Adler's Java-COM resources. Open source Dispatch wrapper, appears to be well-done with new features coming regularly. Based on the syntax of the MSVM. Dan is looking for someone to write a reverse-bridge, and for a JactiveX-like code generator.
  • The JavaBeans Bridge for ActiveX is part of the Java Plug-In. Check the FAQ for details. Dispatch-only solution that exports beans as ActiveX objects.
  • JCom (Java-COM Bridge), GNU-LGPLed.
  • GenSym's BeanExporter. Wraps ActiveX components as beans. As of July 2000 $295 for the enterprise edition, single site. Apparently does handle apartment marshalling.
  • Sun's J2EE CAS Bridge provides dispatch wrappers for calling EJBs from COM.
  • Sun's J2EE CAS Table Bridge is a COM ADO API on top of EJB. Holy acronyms, Batman!
  • IBM AlphaWorks' Bridge2Java.

JNI enhancers

JNI enhancers are libraries and code generation engines to easy the monotony of direct JNI programming.

  • JNI++ at SourceForge includes code generators and a helper libaray in C++.

Java/COM links

Other Java/Win32 links




Speaking
June 13-15, 2003. Wisconsin Java Software Symposium
Tri-XML Conference 2003
Past events

Code
ClassLocator.jsp
Simple Spider
Axis Samples
JCA Samples
Non-delegating loaders
Book samples

About me
Teaching
The book
Articles
Bio
CV
Java/COM/Win32 interop
Jawin
Contact