The language offers a rich set of features that make it useful to users with different programming levels and different types of tasks. It facilitates interactive commands, functions &methods, direct access to compiled Java code and, in the near future, will support compilation of scripts and functions to byte-code for efficient execution. Combined with optional type-checking, these facilities allow one to explore ideas and computations casually and then to convert them into reusable software easily. In this way, the language spans the spectrum from scripting languages and shells to compiled languages that offer more structure.
The interpreter is designed to be highly configurable and easily embeddable, allowing it to be used in other applications. This facility can be used interactively or programmatically to evaluate expressions. Additionally, it is thread-safe and reentrant ensuring that multiple evaluators can be in existence and active concurrently. It has been used in the TILE project for providing dynamically created HTML documents (quizzes, reports, forms, etc.) based on what students have discovered previously in a computer lab.
A more complete list of the notable features is provided here.
A few of us are just getting started on the visualization and display graphics module of Omega. Some basic plot types have been developed and support various forms of interaction. The goal is to build sufficiently flexible primitive classes on top of the Java 2D and 3D Graphics APIs so that we and others can explore new vizualization techniques and construct relatively general plots. Two benefits of using Java that we obtain in the graphics module relate to the native support for GUIs. We have a simple but extensible event model on which to build complex interaction, linking, etc. Secondly, the layout of collections of plots can be done by the Java Layout Manager approach rather than the plotting facilities themselves. The latter allows the individual plot classes to handle their contents rather than their relationships to each other. This approach will hopefully allow us to explore configurations such as Trellis in the relatively near future.
Some work has been done on basic linear models. Additionally, we are beginning to turn our attention to defining a formula language. Current thoughts are that this will extend the Rogers &Wilkinson syntax used in languages such as S. The extensions are aimed to include mixed effects, hierarchical and graphical models amongst others. The data structures will hopefully support specification via non-text interfaces (e.g. graphical interfaces).
On top of these remote method invocation facilities, we plan to add an intelligent, extensible task manager to allow the distribution of arbitrary tasks. The immediate plan is to distribute C code to different machines and form a cluster in this manner. This will be controlled via the Omega language, allowing for easy interactive specification. Additionally, the Java support for threads, exceptions, etc. sees to provide the basis for a general and reusable framework.
Talks on the project will be given at the Joint Statistical Meetings in Baltimore in August and at the 52nd International Statistical Institute Session the same month.