30 April 2002

# Appendix D: Java Language Binding

The Java binding for the SVG Document Object Model definitions is available at:

      http://www.w3.org/TR/2002/CR-SVG11-20020430/java-binding.zip

## D.1 Using SVG with Java

When scripting SVG with a language such as ECMAScript, it is possible to embed script code directly in the SVG content using the 'script' element and the event attributes (e.g., 'onload' or 'onclick'). For programming languages with a binary delivery format, such as Java, it is not possible to embed the code into the 'script' element or within the event attributes. Therefore there is a need to specify how such languages can bind to and handle events in the SVG document. The following technique describes how this should be done when using Java and what is expected of the User Agent that supports dynamic SVG content through Java .

- The 'script' element should reference a jar file containing the compiled code to handle the events fired by the document. For example:

       <script type="application/java-archive"
                  xlink:href="myJavaHandlers.jar" />

- The manifest in the referenced jar file contains an entry, SVG-Handler-Class, defining the class responsible for initializing the event listeners on the SVG document. The entry should be a fully qualified class name. For example:

      *****************************************************
      Manifest-Version: 1.1
      SVG-Handler-Class: org.example.svg.SVGHandler
      *****************************************************

- The class referenced by SVG-Handler-Class implements the EventListenerInitializer interface defined as:

      public interface EventListenerInitializer {

        /**
         * Registers the listeners needed
         */

        void initializeEventListeners(SVGDocument doc) {
          /* Initialization of event handlers using the
             DOM goes here */
        }
      }

- The method initializeEventListeners() will be called by the User Agent before the onload event is triggered.

The event binding of other binary programming languages is not specified.