Embedding XULRunner application on Java

2020-02-26 11:42发布

问题:

My goal is to get Limewire(JAVA) and Songbird(XULRunner) to run together.

I was thinking the best way is to run the XUL application(songbird) inside a JAVA swing panel. Is there another way?

Would it be better or possible to have the GUI entirely in XUL, and then access my JAVA objects somehow?

How would I go about doing this?

Thanks

回答1:

Take a look at JRex, as it might let you peek into a couple of ideas.

Other than that, I'd also research about Rhinohide as well.



回答2:

Take a look at DJ Native Swing, a native Swing implementation using SWT and Xulrunner.



回答3:

I am currently researching XUL for a new product and I came across JavaXPCOM which allows Java code to interact with XPCOM objects. I'm still wrapping my head around the Mozilla stack, but from what I understand all XULRunner applications use XPCOM. Therefore, it seems like you should be able to embed Songbird with this approach.



回答4:

The official XUL implementation by Mozilla and is heavily dependent on Gecko. Gecko is not written in Java nor embedded in AWT/Swing/SWT (at least without using JNI).

So, the short answer is: no. You must either use JNI or use heavy, complex and incomplete third party libaries.

However, JavaXPCOM seems to allow embedding Gecko: https://developer.mozilla.org/en/JavaXPCOM But in that case you'll depend on Gecko... and I don't know if that's enough to run Songbird.



回答5:

I would examine Limewire's source code. If there's a clean separation between UI and the rest of the application, I would try finding a solution to instantiate and invoke Limewire's non-UI code from within a Songbird extension.



回答6:

I would take a look at eclipse swt's embedding of xulrunner: http://www.eclipse.org/swt/faq.php#whatisbrowser