Se houver a necessidade de chamar código de Java dentro duma extensão do Firefox, o LiveConnect poderá ser útil. O LiveConnect dá ao código JavaScript da sua extensão (ligado ou contido no seu código XUL) acesso a dois objectos: java
e Packages
. Estes dois objectos tornam possível o uso das classes padrão do JDK. Por exemplo:
var aJavaList = new java.util.LinkedList();
Se quiser carregar os seus próprios JARs, então pode criar a sua classe carregadora Java. Por exemplo:
var cl = new java.net.URLClassLoader( [ new java.net.URL('https://foo.net/bar.jar') ] ); var aClass = java.lang.Class.forName("org.mozilla.developer.HelloWorld", true, cl); var aStaticMethod = aClass.getMethod("getGreeting", []); var greeting = aStaticMethod.invoke(null, []); alert(greeting);
Esta técnica funciona apenas em código JavaScript ligado dentro de ou contido em ficheiros XUL. Se quiser chamar código Java de dentro de código JavaScript que implementa componentes XPCOM, neste momento só o poderá fazer recorrendo a outra outra técnica (ver Java Firefox Extension). Uma boa razão para chamar Java de dentro de um componente XPCOM em vez de XUL é para manter um singleton (tipo de objecto que força a existência de apenas um objecto duma classe )através todas as janelas do Firefox. Se chamar Java pelo XUL então cada janela do Firefox possuirá a sua própria classe e, por consequência, o seu singleton.