Skip to content
A Java to iOS Objective-C translation tool and runtime.
Java Objective-C C C++ Makefile Objective-C++ Other
Find file
Latest commit e1cdbc1 @kstanger kstanger committed with Keith Stanger Issue #705: Fixes unboxing of Long type.
	Change on 2016/02/10 by kstanger <>
Created by MOE:
Failed to load latest commit information.
annotations Change the retention of ObjectiveCName to CLASS and remove it from th…
cycle_finder Parse @ObjectiveCName annotation values from package-info.class files…
doc Moved -X options into separate help message, like javac.
guava Remove Eclipse artifacts.
inject/javax_inject Merged compiler warnings build refs, added -Wmissing-field-initialize…
java_deps Build Guava distribution libraries from imported Guava source jars in…
jre_emul Issue #705: Fixes unboxing of Long type.
jsr305 Merged compiler warnings build refs, added -Wmissing-field-initialize…
junit Whitelist new false cycles that appeared with ArrayList fix.
make Added public build file.
protobuf Fix indentation of testEnumValueOf().
scripts Issue #696: preserve symlinks when zipping release bundle.
testing Updates JavaLangThrowable reference to NSException.
translator Switch translation of ClassInstanceCreation to use the releasing cons…
xalan Update usage of tar to copy header files to use the -C option instead…
.gitignore Add podspec
.travis.yml Updated Travis CI config to use build containers.
AUTHORS Deleted plain-text README. Updated README, added CONTRIBUTING page.
INSTALL Update build requirements and tool links
LICENSE Updated project files.
Makefile Build Guava distribution libraries from imported Guava source jars in… Update build requirements and tool links

J2ObjC: Java to Objective-C Translator and Runtime

Build Status

Project site:
J2ObjC blog:
Questions and discussion:

What J2ObjC Is

J2ObjC is an open-source command-line tool from Google that translates Java source code to Objective-C for the iOS (iPhone/iPad) platform. This tool enables Java source to be part of an iOS application's build, as no editing of the generated files is necessary. The goal is to write an app's non-UI code (such as application logic and data models) in Java, which is then shared by web apps (using GWT), Android apps, and iOS apps.

J2ObjC supports most Java language and runtime features required by client-side application developers, including exceptions, inner and anonymous classes, generic types, threads and reflection. JUnit test translation and execution is also supported.

J2ObjC is currently beta quality. Several Google projects rely on it, but when new projects first start working with it, they usually find new bugs to be fixed. If you run into issues with your project, please report them!

What J2ObjC isn't

J2ObjC does not provide any sort of platform-independent UI toolkit, nor are there any plans to do so in the future. We believe that iOS UI code needs to be written in Objective-C, Objective-C++ or Swift using Apple's iOS SDK (Android UIs using Android's API, web app UIs using GWT, etc.).

J2ObjC cannot convert Android binary applications. Developers must have source code for their Android app, which they either own or are licensed to use.


  • JDK 1.7 or higher
  • Mac workstation or laptop
  • OS X 10.10 or higher
  • Xcode 7 or higher


This library is distributed under the Apache 2.0 license found in the LICENSE file with the following exceptions. The protocol buffers library is distributed under the same BSD license as Google's protocol buffers. See README and LICENSE.

Something went wrong with that request. Please try again.