j2objc

The j2objc tool translates specified Java source files into either Objective-C or Objective-C++ sources for use in an iOS application.

j2objc [ options ] file1.java ...

The following options are supported. For options that take a path, multiple directories and jar files are separated by a ':', like is done with the java and javac commands.

Common options

-sourcepath <path>
Specify where to find input source files.
-classpath <path>
Specify where to find user class files.
-d <directory>
Specify where to place generated Objective-C files.
-encoding <encoding>
Specify character encoding of source files (UTF-8 default).
-source <release>
Provide source compatibility with specified release.
-g
Generate debugging support.
-l, --list
List files that are translated.
-v, --verbose
Output messages about what the translator is doing.
-Werror
Make all warnings into errors.
-h, --help
Print this message.

Translation options

--add-reads
Option forwarded directly to the Java compiler (see javac help for details).
--allow-inherited-constructors
Don't issue compiler warnings when native code accesses inherited constructors.
--build-closure
Translate dependent classes if they are out-of-date (likejavacdoes).
--class-properties
Generates class properties for static variables and enum constants.
--dead-code-report <file>
Specify a ProGuard usage report for dead code elimination.
--doc-comments
Translate Javadoc comments into Xcode-compatible comments.
--doc-comments-warnings
Report warnings when translating Javadoc comments.
-external-annotation-file <file>
Specify the most common annotations that affect transpilation in a Java Annotation Index File (format defined by the Checker Framework).
-g:none
Do not generate debugging support.
-g:relative
Generate debugging support with relative paths.
--generate-deprecated
Generate deprecated attributes for deprecated methods, classes and interfaces.
-J<flag>
Pass a Java <flag>, such as-Xmx1G, to the system runtime.
--mapping <file>
Add a method mapping file.
--no-class-properties
Do not generate class properties for static variables and enum constants.
--no-extract-unsequenced
Don't rewrite expressions that would produce unsequenced modification errors.
--no-nullability
Do not generate Objective-C nullability annotations.
--no-package-directories
Don't create directories for Java packages when generating files.
--no-segmented-headers
Generates headers with guards around each declared type. Useful for breaking import cycles.
--wrapper-methods
Generate Objective-C wrapper methods for constructors and static methods (default).
--no-wrapper-methods
Do not generate Objective-C wrapper methods for constructors and static methods. (J2ObjC generates C functions for these kinds of executables)
--nullability
Converts Nullable and Nonnull annotations to Objective-C annotations.
--patch-module
Option forwarded directly to the Java compiler (see javac help for details).
--prefix <package=prefix>
Substitute a specified prefix for a package name.
--prefixes <file>
Specify a properties file with prefix definitions.
--preserve-full-paths
Generates output files with the same relative paths as the input files.
-processor <class1>[,<class2>...]
Names of the annotation processors to run; bypasses default discovery process.
-processorpath <path>
Specify where to find annotation processors.
--reflection:{all,none,enum-constants,-enum-constants,name-mapping,-name-mapping}
Generate or exclude specific support needed for Java reflection.
--reserved-names <file>
Avoids redefining identifiers present in system headers.
--static-accessor-methods
Generates accessor methods for static variables and enum constants.
--strip-gwt-incompatible
Removes methods that are marked with aGwtIncompatibleannotation, unless its value is known to be compatible.
--strip-reflection
Do not generate metadata needed for Java reflection (note: this will significantly reduce reflection support).
--swift-friendly
Generate code that facilitates Swift importing (equivalent to --class-properties --nullability --swift-enum).
--no-swift-enums
Disables generation of Swift-like enum case names.
--swift-naming
Generates improved Swift interfaces.
--system
Option forwarded directly to the Java compiler (see javac help for details).
-t, --timing-info
Print time spent in translation steps.
--timing-info:{all,total,none}
Print time spent in translation steps.
-use-arc
Generate Objective-C code to support Automatic Reference Counting (ARC).
-use-reference-counting
Generate Objective-C code to support iOS manual reference counting (default).
-version
Version information.
-x <language>
Specify what language to output. Possible values are objective-c (default) and objective-c++.
-X
Print help for non-standard options.

Nonstandard options

-Xbootclasspath:<path>
Boot path used by translation (not the tool itself).
-Xlint
Enable all warnings.
-Xlint:none
Disable all warnings not mandated by the Java Language Specification.
-Xlint:-xxx
Disable warning xxx, where xxx is one of the warning names supported for -Xlint:xxx, below.
-Xlint:cast
Warn about unnecessary and redundant cast expressions.
-Xlint:deprecation
Warn about the use of deprecated items.
-Xlint:dep-ann
Warn about items that are documented with an @deprecated Javadoc comment, but do not have a @Deprecated annotation.
-Xlint:empty
Warn about empty statements.
-Xlint:fallthrough
Check switch blocks for fall-through cases and provide a warning message for any that are found.
-Xlint:finally
Warn about finally clauses that cannot complete normally.
-Xlint:rawtypes
Warn about unchecked operations on raw types.
-Xlint:serial
Warn about missing serialVersionUID definitions on serializable classes.
-Xlint:static
Warn about serial methods called on instances.
-Xlint:unchecked
Give more detail for unchecked conversion warnings that are mandated by the Java Language Specification.
-Xlint:varargs
Warn about unsafe usages of variable arguments (varargs) methods, in particular, those that contain non-reifiable arguments.
-Xno-jsni-warnings
Warn if JSNI (GWT) native code delimiters are used instead of OCNI delimiters.

See Also

j2objcc