prerelease version of 1999.10.11
Copyright (c) 1997, 1998, 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.
| JevaESCLI is a command line interface to JevaES. It can optionally be used within a Gnu Emacs M-! or M-x shell as shown at right. (By default it reads from System.in, which cannot be used by multiple threads simultaneously, including debugger threads in jdb). |
|
| JevaESGUI is a graphical (windowed) user interface to JevaES. It creates a window for each invocation so it is possible to interact with multiple threads concurrently. It also highlights syntax errors. Editing is via mouse cut and paste. JevaESGUI can also be used as an applet; try the examples on its applet page. |
|
Used as Applet: JevaESGUI can be used as an applet on a page. If there are other applets on the page, it can be used to interact with those applets. (See applet page.)
Called from programs: JevaES can be used to experiment with your own programs. The JevaESGUI read-eval-print-loop (REPL) can be invoked from programs which provide values of variables to inspect or manipulate. A JevaESGUI REPL can return values (or throw exceptions) back to programs, so it can be used in a program stub which asks the user to type in code to compute the result. JevaES can also be called directly (without either UI) to evaluate program-generated java expressions and statements.
See the
jevaESUI package javadoc and
jevaES package javadoc
for more details.
Jeva (experimental)
Jeva extends JevaES to implement classes with interpreted methods,
constructors, and initializers. It implements an evalhook which can
be used to record a trace of what a program is doing. Traveler provides means to use the evalhook
to create and browse a multithreaded trace.
Jeva has additional requirements which currently prevent it from being
used in applets. See the jeva
package javadoc for details. It currently also does not allow classes to
be redefined, so it is not yet appropriate for heavy interactive use.
Jeva/JevaES Release Notes
+
2001-03-03: JevaES: bug fix. (affects only
external uses of JevaES.extendEnv for string variables which
are not constant.)
1999-10-11: JevaES/Jeva docs: added example DemoEvalWithEnv.java demonstrating that parsing expressions takes an order of magnitude longer than evaluating, and illustrating how programs can evaluate the same expression many times without reparsing by using an environment to bind identifiers to different values. JevaES/Jeva: made error messages more consistent. Jeva: fixed inheritance of interface fields; fixed array parameter type in call to super method; fixed initialization when running from a class name (e.g., Jeva.runClass, Jeva.main) an interpreted class with interfaces; fixed initialization bug in an interpreted class which is also needed as its own method parameter type; to diagnose common installation bug, CompileUnit now issues a one-time warning to when javac class is not found in classpath and it has to fall back on slower out-of-process calls.
1999-07-05: Jeva: Fixed infinite loop bug reading java files that crept into the 1999-06-09 release.
1999-06-09: Jeva: Jeva's eval hook has been
extended to be called after a construct's subexpressions have been
evaluated, just before the construct is 'applied', for recording call
traces;
this required making the parse tree less flat for operators.
CompileUnit.setTempRoot(..) can now be used to enable
compiled proxy classes to be reused between sessions. Added Jeva.runClass(..).
Shortened names of option bits in Jeva and JevaGUI. Bound
localOut and localErr to the local output
pane PrintWriters; bound localResults to access the
results in JevaCLI, JevaESCLI, JevaGUI, and JevaESGUI. Fixed bugs in
interpreted constructors with parameters of interpreted type, explicit
constructor calls, method synchronization. JevaES and
Jeva: Fixed bugs in casting, == (between reference
values including null == ...), || and
&&, accessibility of members of non-public
classes; import by name now correctly overrides import on demand.
Localization: JevaESUI and JevaUI may be localized; button and
prompt strings are properties that may be overridden according to
language of default locale for international use (however, JevaES
error messages are not localizeable in this version).
1999-02-28: Package statements can be used to change the current package for access to package protected fields and methods. Java1.2 reflection permits access to non-public fields and methods (may require ReflectPermission). Jeva adds interpreted classes, evalhook to JevaES.
1998-12-02: compatible with Java 1.1.