|
|||||||||
| PREV NEXT | FRAMES NO FRAMES | ||||||||
See:
Description
| Experimental: Jeva | |
| edu.mit.ai.psg.jeva | Jeva is the core of a source code evaluator for Java programs; see edu.mit.ai.psg.jevaUI for user interfaces. |
| edu.mit.ai.psg.jeva.examples | |
| edu.mit.ai.psg.jevaUI | JevaGUI and JevaCLI provide user interfaces for Jeva which accept typed Java declarations, statements, and expressions. |
| JevaES | |
| edu.mit.ai.psg.jevaES | JevaES is a core source code evaluator for Java expressions and statements; see JevaESUI for user interfaces. |
| edu.mit.ai.psg.jevaESUI | JevaESGUI and JevaESCLI provide user interfaces for JevaES which accept typed expressions and statements. |
| Jexa, Outliner | |
| edu.mit.ai.psg.jexa | Jexa, a Java examiner, provides expandable/collapsible outlines for browsing through object nets. |
| edu.mit.ai.psg.jexa.awt | Jexa, a Java examiner (AWT version), provides expandable/collapsible outlines for browsing through object nets. |
| edu.mit.ai.psg.ui.outliner | Outliner creates expandable/collapsible outline views of objects using
JTree, but rather than providing one renderer for all
nodes in the tree, each node specifies its renderer, so different
nodes may have different renderings, and a single node may have
alternate renderings. |
| edu.mit.ai.psg.ui.outliner.awt | Outliner.awt: core expandable/collapsible outline AWT components (OutlineTree), with protocol for looking up the most specific outline generator for new/child objects (Outliner), and interface for extending the set of generators to new classes and interfaces (IOutlineComponentGenerator). |
| Experimental: Traveler | |
| edu.mit.ai.psg.traveler | Traveler provides means to trace/record the history of execution of concurrent programs, and to browse/navigate these records as nested call outlines, i.e., the activation order within threads, and as linear object biographies, i.e., the arrival order of synchronization at objects. Recording history can be particularly important in concurrent programs where nondeterministic scheduling means the arrival order of threads may not always repeat itself on subsequent runs. |
| Other Packages | |
| edu.mit.ai.psg.strings | Prettify Strings: Methods for safely producing object strings (Stringify), formatting output strings with nested parentheses, brackets, and braces (Prettify), and indenting multi-line strings (Indent, IndentWriter). |
| edu.mit.ai.psg.traveler.jevaHooks | |
| edu.mit.ai.psg.ui.patches | |
| edu.mit.ai.psg.utilities | Utilities: various utilities that extend java.util classes in useful ways, such as: HashMapCache: extends WeakHashMap to implement a true cache that doesn't prevent its keys nor values from being garbage collected. |
prerelease version of 1999.10.10edu.mit.ai.psg.jevaES is the core of a Java source code evaluator for expressions and statements. JevaES accepts Java 1.2 source code expressions and statements (but not class declarations, nor anonymous classes) and evaluates (interprets) them. JevaES uses the reflective capabilities included in Java 1.2 (java.lang.reflect) so it can be used with compiled classes.
Copyright (c) 1996-1999 Massachusetts Institute of Technology.
This software is provided "as is" without express or implied warranty.
Contains parser generated by Sun's JavaCC/JJTree from a modified version of the example Java grammar.
JevaESGUI provides a
graphical (windowed) user interface to JevaES.
JevaESCLI provides a
command line (stream) interface. Both are useful for
exploring and developing compiled systems. JevaESGUI can also be used
as an applet.
edu.mit.ai.psg.jeva is an experimental
(much less tested and used)
core of a Java evaluator that accepts class and interface declarations
(but not nested nor anonymous classes). It also implements an evalhook.
There are corresponding JevaGUI
and JevaCLI interfaces.
edu.mit.ai.psg.jexa, a Java Examiner, provides means to view and navigate object nets as expandable outline trees. Jexa uses the JavaBeans introspector and the Java 1.2 reflection capabilities to access the fields and properties of objects. Objects may have alterate renderings for different interfaces. Objects found through navigation can be used to set the value of Jexa.mousedObject, so that they are accessible for use in method calls (e.g., from JevaESGUI or JevaESCLI). Jexa can also be used as an applet (thru JexaApplet).
edu.mit.ai.psg.traveler is an experimental trace navigator. Traveler provides means for developers to record activities of multithreaded programs as a net of activity records. The thread activity records may be displayed and navigated as an expandable call tree. Interactions among threads may be traced on object biographies.
Jeva has additional requirements. See edu.mit.ai.psg.jeva.
Troubleshooting Notes:
Use with applets in html pages: Simply invoke a
edu.mit.ai.psg.jexa.JexaApplet on the
same page as other applets, and it will start up with a list of the
other applets on the page (to display something else, override
JexaApplet.getObjectToExamine()). Simply use JevaESGUI as an applet
on the page; to interact with other applets, place it on on the same
page as other applets, using applet parameter
bindLocalApplet with value "true", and the applets on the
page will be accessible through
localApplet.getAppletList().
Use for experiments: To use JevaESGUI or JevaESCLI for your own
experiments, simply start them from the command line:
javaw edu.mit.ai.psg.jevaESUI.JevaESGUI
for a window
java edu.mit.ai.psg.jevaESUI.JevaESCLI
for the command line.
Your own classes are accessible if they are in the classpath [which usually
includes the current directory; note that in applications (not applets),
System.getProperty("java.class.path") returns the classpath in
effect, and System.getProperty("user.dir") returns the current
directory pathname]. To access package protected methods and fields of your
programs, use "package myPackage;" from the interface.
To examine objects using Jexa: Use the "Examine Result"
button in JevaESGUI, or evaluate
Jexa.examine(myObject)
To invoke methods on the objects found via Jexa: From Jexa, mouse-R
or shift-clicking on an object brings up a pop-up menu through which you can
set Jexa.mousedObject to the object. Then simply call methods using
Jexa.mousedObject, casting it if needed. E.g,
MyClass foundObj =
(MyClass) Jexa.mousedObject;
foundObject.myMethod(...)
Use with debuggers: Using JevaESGUI while running a debugger
like jdb can be an effective way to explore erroneous behavior: use
JevaESGUI to explore test cases that may trigger exceptions, and use jdb to
catch the exceptions. (Note that jdb reads from System.in in its own
thread, so JevaESCLI cannot be used with jdb.)
jdb edu.mit.ai.psg.jevaESUI.JevaESGUI
Started from programs: Import edu.mit.ai.psg.jevaESUI.*; and
then call either one; JevaESGUI is preferred if more than one thread
may be reading System.in (e.g., when using jdb).
JevaESGUI.replTop();
JevaESCLI.replTop();
Program inspection points: To add inspection points into your program, where you can experiment with values of program variables using a read-eval-print-loop (REPL) window, first create an environment (using JevaES.makeDefaultEnv(..) and JevaES.extendEnv(..)) to hold the name bindings, and call JevaESGUI.repl(..) with that environment. See DemoInspectPoint.java for a simple example.
Program Stubs: To use a JevaESUI read-eval-print-loop (REPL) window in a program stub (code which asks the user to compute a value, e.g., for cases or procedures not yet written), supply an environment as above, but also provide the return type of values can be returned and declared exceptions that may be thrown. See DemoAppointmentCalendarStub.java for a simple example.
http://www.ai.mit.edu/people/caroma/tools/
|
Copyright (c) 1996-1999 Massachusetts Institute of Technology Feedback: jeva-feedback@ai.mit.edu |
||||||||
| PREV NEXT | FRAMES NO FRAMES | ||||||||