Developers new to J2ObjC may find its "Java compiles to Objective-C, which compiles to .o files" approach a little strange, but it's based on precedent: cfront . When C++ was first released, no compilers translated C++ sources directly into object files. Instead, the cfront script translated C++ into temporary C files, and then invoked cc to compile them. cfront took similar options as cc, so most C++ developers used it as if it was a true C++ compiler. The cfront script wrapped around a transpiler , though; it was a script very similar to combining the j2objc and j2objcc scripts in J2ObjC. One of cfront 's innovations was name mangling , where C++ type information was embedded into C names. J2ObjC also uses name mangling ( described here ) to support features like packages and Java's method overloading semantics that Objective-C doesn't directly support. For example, the JRE has both java.util.Date and java.sql.Date classes; since C names are all ...
A Java to iOS Objective-C translation tool and runtime.