#
JSD Architecture

John Bandhauer
6 July 1998

Basic JSD architecture for both C and Java engines

(1) | Spider Monkey JavaScript engine. This is an unmodified engine which exposes a low-level debug interface via `js/src/jsdbgapi.h`.
(2) | Spider Monkey JavaScript debug support. This provides a wrapper and does bookkeeping.
(3) | Corba adapter. Using only public interfaces of JSD this module remotes the debug interface over a Corba connection.
(4) | JNI native adapter. This implements the natives of `netscape.debug` using JNI natives.
(5) | Old JDK native adapter. This implements the natives of `netscape.debug` using old style JDK natives. This is currently in use in Communicator 4.x.
(6) | Rhino JavaScript for Java engine. This is the unmodified Rhino engine. It exposes the low-level debug interface via various interface classesand support built into the Context and Codegen classes.
(7) | Rhino debug support package. This exposes a higher level debug interface for Rhino and includes a reference implementation of that interface.
(8) | Client end of Corba adapter. This implements `com.netscape.jsdebugging.api` to provide debugger clients access to an engine running in a different process space.
(9) | `netscape.debug` is a package included in Communiator 4.x. The JNI and JDK natives supply the bridge from C to Java that is exposed on the Java side by this package.
(10) | The local adapter implements `com.netscape.jsdebugging.api` in a form that allows the debugger client to connect to `netscape.debug`.
(11) | The rhino adapter implements `com.netscape.jsdebugging.api` in a form that allows the debugger client to connect to `com.netscape.javascript.debug`.
(12) | `com.netscape.jsdebugging.api` is an interface only package that allows debugger clients to talk to any of the adapters transparently and with no compile-time coupling to the adapters.
(13) | Java-based Graphical Debugger. Currently we have one debugger written using IFC and shipping in it's 1.1 form. Version 1.2 is unfinished and under development in the mozilla tree in `js/sjdj/classes` in the package `com.netscape.jsdebugging.ifcui`.
(14) | Java-based Console Debugger. Currently we have a version of this checked in to the mozilla tree in `com.netscape.jsdebugging.jsdb`. This version will work with either Rhino or the C engine using engine abstraction classes in `com.netscape.jsdebugging.engine`.
(15) | Java-based debug api tests are implemented in `com.netscape.jsdebugging.apitests`.
(n/a) | Not shown is a purely native console debugger which uses only js/src and js/jsd. It can be found in js/jsd/jsdb. This debugger uses the JS shell and reflects the JSD api into the JavaScript language. The actual debugger is written in JavaScript. It can be modified and extended as it runs and can debug itself.

last updated: 28 September 1998 - jband