DynamicJava

The original version of this page is located here: http://koala.ilog.fr/koala/djava/index.html.

> - Local links
>   - Overview
>   - Author
>   - News
>   - The ways to use DynamicJava
>   - Differences between DynamicJava and Java
>   - DynamicJava API Specification
>   - DynamicJava open-source project
>   - Download DynamicJava
> - The DynamicJava interpreter
> - The DynamicJava GUI
> - Scripting with DynamicJava
> - Embedding DynamicJava
> - DynamicJava incompatibilities with Java
> - License
> - Acknowledgments
> - Links

> DynamicJava is a JavaTM source interpreter. It executes programs written in JavaTM, like described in the Java Language Specification, in addition with scripting features. DynamicJava was written in pure JavaTM, is free and distributed with the source code.

> DynamicJava was designed and implemented by Stéphane Hillion. Send comments, suggestions and bug reports to shillion@ilog.fr

> 2002/06/13
>   Version 1.1.5 released. Added security features.
> 2001/03/19
>   Version 1.1.4 released. Fixed the jdk1.3's introspection problem.
> 2001/01/23
>   Version 1.1.3 released. Few API additions.
> 2000/07/03
>   Version 1.1.2 released. Minor API additions and fixes.
> 2000/03/14
>   Version 1.1.1 released. Few bug fixes and script style comments beginning with '#'.
> 2000/01/13
>   Created a DynamicJava project at SourceForge.
> 1999/11/30
>   Version 1.1 released. Release focused on performances enhancement. DynamicJava is around two times faster both in statement interpretation and class creation.
> 1999/11/23
>   Version 1.0 released. Some new feature, enhanced documentation, and a lot of bug fixes.
> 1999/11/16
>   Version 1.0beta7 released. New platform-independent installation procedure, more user-friendly GUI and simplified error handling at the API level.
> 1999/11/10
>   Version 1.0beta6 released. Lot of bug fixes and new features: a dynamically extensible classpath (with local paths or URLs), new options, GUI enhancements, etc ...
> 1999/10/26
>   Version 1.0beta5 released. Bug fixes, support for top-level anonymous classes.
> 1999/10/19
>   Version 1.0beta4 released. Bug fixes, support for top-level functions, and GUI enhancements.
> 1999/10/12
>   Version 1.0beta3 released. Bug fixes, and a simple GUI.
> 1999/10/08
>   Version 1.0beta2 released. Some new features and examples, and a fix for a problem with the return key under Windows in interactive mode.
> 1999/10/02
>   Initial release of DynamicJava.

> As an extension language
>   You can use DynamicJava to allow the user to configure and/or extend your application.
> As a debugging tool
>   Run as a standalone application, DynamicJava can help you to test your application in an interactive way.
> To experiment a Java API
>   Even if it is fully documented, it is always necessary to try out a Java API. The ability of DynamicJava to instantiate and to extend JavaTM classes on-the-fly makes it a good experimentation tool.
> As a rapid prototyping tool
>   DynamicJava permits faster development of applications by allowing an easy migration from scripts to JavaTM programs.

> DynamicJava supports all features provided by the Java language and the Java 2 platform API including class and inner class definition, multi-threading, GC ...
> DynamicJava extends the JavaTM grammar to accept many scripting features:
> - Statements and expressions can be written outside classes, in the top-level environment.
> - The variable declaration is optional. When the left part of an assignment is an unknown identifier, a variable is defined. The type of this variable is the type of the right part of the assignment.
> - The dynamic casts are optional.
> - The `package` clause can be used anywhere in the top-level environment to set the current package. The syntax of this clause has been extended : writing `package;` set the current package to the anonymous package.
> - C-like functions are supported in the top-level environment. The syntax used to declare a function is the same as the one used to declare a method. The method modifiers (public, static, ...) and the `throws` clause are ignored. Functions can only be used in the top-level environment and in the body of other functions, including itself.
> - Anonymous classes defined in the top-level environment can contain references to top-level environment's final variables.
> - Inline comments beginning with '#' are allowed.
> See the incompatiblities with Java and scripting with DynamicJava to learn more about the differences between DynamicJava and Java.

> The JavaTM 2 Platform API Specification is the core API for the DynamicJava programmer. Because DynamicJava is written in Java, the DynamicJava API Specification (the classes that compose the interpreter) and every other JavaTM libraries can also be used in scripts.

> DynamicJava forums, bug-tracking system ... are hosted at the .

> The latest version of DynamicJava can be downloaded here.
> The corresponding CVS snapshot.
> Current version is 1.1.5 (2002/06/13).
> Requirements: You need the Sun JDK 1.2 or newer installed on your system.

Send comments, suggestions and bug reports to shillion@ilog.fr
Last modified: Thu Jun 13 11:10:12 MET 2002