# 1 The Oz Engine: `ozengine`

Like Java, Oz is also based on the idea of byte code execution. `ozengine` is an emulator that implements the Oz virtual machine. It is normally invoked as follows:

> `ozengine` url`` args...

where url identifies an Oz application (a pickled functor) and args... are the arguments for the application.

It is also possible to create executable functors. These are ordinary functors, except that when one is invoked as a shell command, it automatically starts `ozengine` on itself.

Under Windows, an alternative to `ozengine` is provided called `ozenginew`. While `ozengine` is a console-based application, `ozenginew` is a GUI-based application. Its output appears in message boxes instead of in a console window. Other than that, they behave the same.

Instead of supplying arguments on the command line, you can also indicate a preference for using a graphical interface for editing an application's input parameters:

> `ozengine --gui` url

The `--gui` option is convenient for starting applications directly from a web browser, simply by clicking. This makes `ozengine --gui %s` a good choice of a helper application for web documents with MIME type `application/x-oz-application`. Consult Chapter 6 of ``Application Programming'' for more detailed information.