The `compile_to_jvm` Command

The `compile_to_jvm` command is the SmartEiffel Java byte code generator for the Java Virtual Machine. There are two invocation modes: traditional and ACE. In traditional mode, a variety of compiler options can be specified on the command line. In ACE mode, these options are not permitted; it is presumed that the required compiler options are listed in the ACE file.

Usage

Traditional mode
`compile_to_jvm [options] <RootClass> [<RootProcedure>]`

ACE mode
`compile_to_jvm [general_options] <ACEfile.ace>`

In traditional mode, the `compile_to_jvm` command must be given at least one argument to indicate the starting execution point of the system. Thus your program will start in <RootProcedure> of <RootClass>. The default <RootProcedure> is make.

In ACE mode, the name of the ACE file must end with the `.ace` suffix. For examples of how to use ACE files, have a look in the `SmartEiffel/tutorial/ace` directory.

Load Path for Eiffel Source Files

`compile_to_jvm` uses the technique described in the documentation for the `finder` command to locate the Eiffel source files it tries to compile. Note that what actually happens depends on the invocation mode (traditional or ACE).

General Options

-help:
  Display a brief summary of the command-line syntax and a complete list of compiler options.
-verbose:
  Print system information during the compilation (full path of files loaded, type inference score, removed files, etc.).
-version:
  Display the version number of the SmartEiffel release you're using.

Options to Select Eiffel Compilation Modes (traditional mode only)

As with the `compile_to_c` command, there are 8 different compilation modes: -boost, -no_check, -require_check, -ensure_check, -invariant_check, -loop_check, -all_check and -debug_check.
These options have the same meaning as with `compile_to_c`. See the compile_to_c documentation for details.

Other Options (traditional mode only)

-o <output_name>:
  Place the main output in <output_name>.class and other class files in the directory <output_name>. When this option is absent, the default is <Root-Class>.
-no_style_warning:
  Suppress output for warning messages related to the non-respecting of standard Eiffel style guidelines (for example, `ItEm` will not trigger a warning).
-case_insensitive:
  Switch case-insensitive mode on.
  For example, when this mode is selected, the Eiffel parser considers that the following identifiers refer to the same feature: `item`, `ITEM`, `ItEm`, ...
-no_warning:
  Suppress output for all warning messages. (Error messages are still printed.)

The `SmartEiffelRuntime.java` class

The `SmartEiffelRuntime.java` class implements some low-level external features. This file is in the directory `SmartEiffel/sys/runtime`. The file `SmartEiffelRuntime.class` must be present to execute the Java byte-code generated by the `compile_to_jvm` command. Don't forget to add this class to your Java `CLASSPATH` system environment variable. You can also copy the file `SmartEiffelRuntime.class` to some appropriate directory.

Examples

Example 1
When SmartEiffel is correctly installed, you can type the following command to test the hello world program :

  `compile_to_jvm hello_world`

Then, in order to execute the Java byte code produced, you can use the command:

  `java hello_world`

Example 2
As for the `compile_to_c` command you can add the option -boost to omit all assertion checking:

  `compile_to_jvm -boost hello_world`

Example 3
To change the name of the generated main class, you have to add the -o option:

  `compile_to_jvm -boost -o out hello_world`

Then, you can run the Java byte code with:

  `java out`

Note that the name used for the class files directory is also changed (this directory is also named `out`).

Example 4
Finally, the -verbose option may be useful to check which files are loaded, which files are created, or to fix some installation problem:

  `compile_to_jvm -verbose hello_world`

Copyright © Dominique COLNET and Suzanne COLLIN - <SmartEiffel@loria.fr>
Last modified: Mon Sep 9 13:30:22 MET DST 2002