You are currently viewing a snapshot of www.mozilla.org taken on April 21, 2008. Most of this content is highly out of date (some pages haven't been updated since the project began in 1998) and exists for historical purposes only. If there are any pages on this archive site that you think should be added back to www.mozilla.org, please file a bug.



Java Pluglet API

created in 1999 by Igor Kushnirskiy & Akhil Arora, revived and maintained in 2006 by Ed Burns

A Pluglet is a Plug-in that is written in the JavaTM programming language. A Pluglet is similar in concept to a Servlet, with the difference that a Servlet produces content, whereas a Pluglet consumes it. The Java Pluglet API is a close 1:1 implementation of the new C++ Plug-in API in Mozilla.

You can download the latest pluglet binary by clicking here.

  • Why Pluglets?

  • Pluglets are part of the Blackwood project. For a Plug-in developer, choosing to extend Mozilla via a Java Pluglet brings the advantages of the Java platform to Pluglets.

    • Platform neutral

    • Writing a Plug-in in Java instantly makes it available on all platforms on which a Java Virtual Machine is available.

    • Compact

    • For a given functionality, Java bytecode is typically smaller than compiled native code, so the time needed to download a Plug-in is reduced.

  • Pluglets vs Applets

  • A frequently asked question is how are Pluglets different from Applets. There has been a discussion of this on MozillaZine. Basically there are two differences. A Pluglet is launched when a certain Content Type is encountered, whereas an Applet is launched when an <applet> tag is encountered. The other difference is that Pluglets are installed onto disk and unlike Applets, are not downloaded at each invocation.

  • How?

  • Key to enabling Pluglets is the Pluglet Engine. The Pluglet Engine appears to Mozilla like an XPCOM service. When Mozilla can not get a handler for some MIME type, the Pluglet Engine would be asked for it. It simply delegates to the appropriate Pluglet. Some JNI is involved to go from C++ to Java and back again.

  • Design Goals

  • It was a conscious design decision to have the Pluglet API resemble its C++ counterpart as much as possible, while being able to reflect all of its functionality to Java, so that Plug-in writers will not have to learn yet another API. This concern, in our opinion, outweighed other alternatives which offered a cleaner, more Java-like look. Support for other Plug-in APIs can be easily added by contributing adaptors.

Requirements

This section describes the requirements you need before building the pluglets project.
    • Java SE 5 or later
    • A specific version of Firefox 2

References