Execution environments of Lava applications

A Lava file represents an executable program if the first Lava entity in its top-level package is an initiator. You can execute such a Lava program, i.e., its first initiator, from LavaPE by clicking the "Run" button. Alternatively you could start the Lava interpreter (Lava.exe) and pass the name of an executable Lava program as a command line parameter to it.

This way of starting a Lava program by starting a top-level initiator is appropriate for stand-alone Lava applications or for programs with a Lava main program that perhaps make use of "foreign-language" components additionally.

Conversely a Lava program could be invoked as a component from another Lava or foreign-language main program or component.

In any case we have to envisage several ways how such a Lava program or Lava component may interact with its environment, and that is what the term "execution environments" is intended to express. The pertinent support available from the underlying operating system will largely decide upon the variety of reasonable execution environments:

  1. A "Lava console application" might be started from a command line environment and consume/produce nothing else than line mode input/output.
  2. A "Lava tabbed window application" may present a Multiple-Document Interface to the user. Several Lava programs may run concurrently in such an execution environment and open any number of tabs. This is what the current Lava development aims at as a first step.
  3. "Lava SDI applications" presenting a single-program/Single-Document Interface are imaginable as a special case.
  4. Component-based applications with Lava programs on the client/container or on the component/server side could support various features, for instance, in Microsoft COM terms: Linking/embedding of user interfaces, compound documents, ActiveX Documents, ActiveX Controls, particularly embedding of Lava objects in WEB pages similar to Java applets or ActiveX Controls/Documents, Automation client or server, drag-and-drop between components, communication through the clipboard, database access through OLE-DB.
  5. Lava programs as CORBA objects/components.