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