1

How can I implement a vtable COM interface in java?

In the old days, I'd use the Microsft JVM, which had built in java-COM interop. What's the equivalent for a modern JRE?

Answers to a similar SO question proposed JACOB. I've looked at JACOB, but that is based on IDispatch, and is aimed at controlling Automation serers. The COM interfaces I need are custom vtable (extend IUnknown), e.g. IPersistStream, IOleWindow, IContextMenu etc.

For my use case, I could implement all the COM specifics in JNI, and have the JNI layer call corresponding interfaces in java. But I'm hoping for a less painful solution.

It's for an open source project, so open source alternatives are preferred.

EDIT: Com4j looks promising. Looking through the available docs, it doesn't seem to support registering a IClassFactory so the COM object (in java) can be instantiated by non-java clients.

1 Answer 1

2

Com4J may be what you need. From the homepage:

Binds directly to the vtable interface (not IDispatch) for improved performance and broader support for more COM interfaces.

Sign up to request clarification or add additional context in comments.

1 Comment

Thanks for this. This was what I was looking for. I've looked through the docs and it looks great - just one thing missing - it doesn't seem to support providing a IClassFactory so the COM object (implemented in java) can be instantiated through COM.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.