VRML97 logo

Annex C

Backwards compatibility

--- VRML separator bar ---

C.1 Table of contents and introduction

C.1.1 Introduction

This annex provides describes how it is possible to support the initial proposed EAI implemented in some VRML browsers. These implementations used the Javatm platform described in Annex B. This backwards compatible support assumes support for the functionality described in Annex B.

The EAI specification has existed in a previous de facto form based on partial working specs and implementations prior to formalization. This specification provides the option for implementing backwards compatible implementations although a new implementation is not required to provide backwards compatibility in the java implementation. The specification is designed to encourage movement to the standard as quickly as possible using standard mechanisms provided by Java.

C.1.2 Table of contents

See Table C.1 for the contents of this annex.

Table C.1 — Table of contents

C.1 Table of contents and introduction 
 C.1.1 Introduction 
 C.1.2 Table of contents 
 C.1.3 Conventions 

C.2 Concepts 
 C.2.1 Scope of specification 
 C.2.2 Conformance 
 C.2.6 Implementation dependencies 

C.3 Java class hierarchy 

C.1.3 Conventions

The following type-setting conventions are used to indicate a particular meaning to the text in this document.


Words written in monospaced font are direct description of a particular Java class, field or property. This text may also provide a link to the specific documentation (provided in javadoc style docuementation) to provide greater definition of the information


Indicates a particular java method call. This may be representative of the general method name (where there are overloaded versions of the method) or just the method. No arguments definitions are provided unless needed in context to define the particular method specifically. The capitalization of the method name exactly follows the name of the method


The first word indicates the name of the class and is qualified with the method name. The capitalization of the class name follows the exact naming of the class. The method argument presentation is the same as that for the plain method name.


All words up to the class name represent the package definition that the class belongs to. Referred to as the fully qualified class name. The last word is the name of the class. Capitalization follows the exact definition of the class and package.


--- VRML separator bar ---

C.2 Concepts

C.2.1 Scope of specification

The Java platform provides an implementation of the de facto EAI specification.

C.2.2 Conformance

Support for the de facto EAI is not required for a conforming implementation of the EAI. If a browser supports a Java language interface from an external environment, it shall conform with all of the requirements specified in Annex B. If a browser supports the de facto EAI, it shall conform with all of the requirements specified in this annex.

An implementation shall not modify the classes defined in this specification with their own specific methods or additional methods.

The classes in the following packages shall have all classes marked with the @deprecated tag.


An implementation is not required to provide the backwards compatible class implementation. This specification does not define the behaviour of the backwards compatible classes.

C.2.3 Implementation dependencies

Implementation dependent for the scope of this annex is defined to be the browser writer implementation of the Java classes and how they interact with the environment and the VRML browser.

This specification does not implement the full capabilities of the EAI specification. Additional capabilites may be be provided by individual implementations but shall not form part of the standard  vrml.external package hierarchy and classes as defined in this specification. Any implementation dependent provision of these capabilities shall be provided under a non-VRML package such as the vendor's own hierarchy. The listing of the implementation of all Java classes used for binding to the services are provided in C.3 Java class hierarchy.

C.3 Java class hierarchy

  +- vrml.external.IBrowser
  |       +- vrml.external.Browser
  |       +- vrml.external.CBrowser
  +- vrml.external.Node
  +- vrml.external.field
  |       +- vrml.external.field.EventIn
  |       |       +- vrml.external.field.EventInMFColor
  |       |       +- vrml.external.field.EventInMFFloat
  |       |       +- vrml.external.field.EventInMFInt32
  |       |       +- vrml.external.field.EventInMFNode
  |       |       +- vrml.external.field.EventInMFRotation
  |       |       +- vrml.external.field.EventInMFString
  |       |       +- vrml.external.field.EventInMFVec2f
  |       |       +- vrml.external.field.EventInMFVec3f
  |       |       +- vrml.external.field.EventInSFBool
  |       |       +- vrml.external.field.EventInSFColor
  |       |       +- vrml.external.field.EventInSFFloat
  |       |       +- vrml.external.field.EventInSFImage
  |       |       +- vrml.external.field.EventInSFInt32
  |       |       +- vrml.external.field.EventInSFNode
  |       |       +- vrml.external.field.EventInSFRotation
  |       |       +- vrml.external.field.EventInSFString
  |       |       +- vrml.external.field.EventInSFTime
  |       |       +- vrml.external.field.EventInSFVec2f
  |       |       +- vrml.external.field.EventInSFVec3f
  |       |
  |       +- vrml.external.field.EventOut
  |       |       +- vrml.external.field.EventOutMField
  |       |       |       +- vrml.external.field.EventOutMFColor
  |       |       |       +- vrml.external.field.EventOutMFFloat
  |       |       |       +- vrml.external.field.EventOutMFInt32
  |       |       |       +- vrml.external.field.EventOutMFNode
  |       |       |       +- vrml.external.field.EventOutMFRotation
  |       |       |       +- vrml.external.field.EventOutMFString
  |       |       |       +- vrml.external.field.EventOutMFVec2f
  |       |       |       +- vrml.external.field.EventOutMFVec3f
  |       |       |
  |       |       +- vrml.external.field.EventOutSFBool
  |       |       +- vrml.external.field.EventOutSFColor
  |       |       +- vrml.external.field.EventOutSFFloat
  |       |       +- vrml.external.field.EventOutSFImage
  |       |       +- vrml.external.field.EventOutSFInt32
  |       |       +- vrml.external.field.EventOutSFNode
  |       |       +- vrml.external.field.EventOutSFRotation
  |       |       +- vrml.external.field.EventOutSFString
  |       |       +- vrml.external.field.EventOutSFTime
  |       |       +- vrml.external.field.EventOutSFVec2f
  |       |       +- vrml.external.field.EventOutSFVec3f
  |       |
  |       +- vrml.external.field.EventOutObserver
  |       +- vrml.external.field.FieldTypes
  +- vrml.external.exception
          +- vrml.external.exception.InvalidEventInException
          +- vrml.external.exception.InvalidEventOutException
          +- vrml.external.exception.InvalidNodeException
          +- vrml.external.exception.InvalidVrmlException

--- VRML separator bar ---