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.

-loadpath <loadpath_file>:
  Adds a loadpath file for class lookup. See details in the `finder man page`.

  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: Tue Feb 11 12:14:05 CET 2003