Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Using Java/Python libraries in programming Firefox/Chrome Extensions

I have an idea of studying user behavior on the browser, for which I intend to make a Chrome/Firefox extension to study the behavior dynamically. I have some predefined libraries in Java and Python to analyze the results, which will be impossible to program in plain JavaScript.

Now for my question: is it possible to use third party libraries, especially those of Python or Java like plain function calls?

I have a vague idea about something like Java XPCOM or PyXPCOM for Firefox. However, for a beginner, it all looks so scary. I started making Add-On for Firefox, but got lost somewhere in the huge API.

I found Programming Chrome extensions easier than Firefox, but I couldn't come across something similar to XPCOM in Chrome.

How can I decide which one to go for?

  • Chrome - seems easy but I am not sure of its power.
  • Firefox - Seems powerful, but is it really possible to use any Java/Python Library?

Additionally, I came across this link that may be useful: How does someone use thirdparty libraries to be included in Firefox addons/extensions?

But seems like it mostly talks about C++ and XPCOM.

like image 759
Shatu Avatar asked Mar 16 '26 08:03

Shatu


1 Answers

I have a vague idea about something like Java XPCOM or PyXPCOM for Firefox. But for a beginner, it all looks so scary.

I am not a beginner and JavaXPCOM/PyXPCOM are very scary (in addition to being barely maintained). As Firefox goes, it should be much easier to wrap your Java/Python library in an application and run it as an external process: https://developer.mozilla.org/en/XPCOM_Interface_Reference/nsIProcess. Note that you cannot get data back (other than an exit code) so the application should write it to a file that you can then read in your Firefox extension. Not very elegant but it has the advantage of being doable.

As to Chrome, its extensions run in a sandbox and using Java or Python isn't possible. Only option is adding an NPAPI plugin to your extension. It is binary code meaning that it could do anything.