org.apache.tools.ant.taskdefs.rmic

## Class ForkingSunRmic

- java.lang.Object
- - org.apache.tools.ant.taskdefs.rmic.DefaultRmicAdapter
  - - org.apache.tools.ant.taskdefs.rmic.ForkingSunRmic

- All Implemented Interfaces:
    RmicAdapter
  Direct Known Subclasses:
    XNewRmic

      public class ForkingSunRmic
      extends DefaultRmicAdapter

  This is an extension of the sun rmic compiler, which forks rather than executes it inline. Why so? Because rmic is dog slow, but if you fork the compiler you can have multiple copies compiling different bits of your project at the same time. Which, on a multi-cpu system results in significant speedups. Also, Java1.6 behaves oddly with -XNew, so we switch it on here if needed.
  Since:
    ant1.7

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static java.lang.String` | `COMPILER_NAME` the name of this adapter for users to select

    - ### Fields inherited from class org.apache.tools.ant.taskdefs.rmic.DefaultRmicAdapter

      `RMI_SKEL_SUFFIX, RMI_STUB_SUFFIX, RMI_TIE_SUFFIX, STUB_1_1, STUB_1_2, STUB_COMPAT, STUB_OPTION_1_1, STUB_OPTION_1_2, STUB_OPTION_COMPAT`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `ForkingSunRmic()`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected boolean` | `areIiopAndIdlSupported()` Whether the iiop and idl switches are supported.
    `boolean` | `execute()` exec by creating a new command
    `protected java.lang.String` | `getExecutableName()` Override point.

    - ### Methods inherited from class org.apache.tools.ant.taskdefs.rmic.DefaultRmicAdapter

      `addStubVersionOptions, filterJvmCompilerArgs, getClasspath, getCompileClasspath, getMapper, getRmic, getSkelClassSuffix, getStubClassSuffix, getTieClassSuffix, logAndAddFilesToCompile, preprocessCompilerArgs, setRmic, setupRmicCommand, setupRmicCommand`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### COMPILER_NAME

          public static final java.lang.String COMPILER_NAME

      the name of this adapter for users to select
      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### ForkingSunRmic

          public ForkingSunRmic()

  - ### Method Detail

    - #### areIiopAndIdlSupported

          protected boolean areIiopAndIdlSupported()

      Description copied from class: `DefaultRmicAdapter`
      Whether the iiop and idl switches are supported.

      This implementation returns false if running on Java 11 onwards and true otherwise.

      Overrides:
        `areIiopAndIdlSupported` in class `DefaultRmicAdapter`
      Returns:
        true if the iiop and idl switches are supported
      Since:
        Ant 1.9.11

    - #### execute

          public boolean execute()
                          throws BuildException

      exec by creating a new command
      Returns:
        true if the command ran successfully
      Throws:
        `BuildException` - on error

    - #### getExecutableName

          protected java.lang.String getExecutableName()

      Override point.
      Returns:
        the executable name.