Skip to content
A Java to iOS Objective-C translation tool and runtime.
Branch: master
Clone or download
antonio-cortes-perez JDK 11: patch procyon to remove URLClassPath dependency.
	Change on 2019/03/14 by antoniocortes <>

Created by MOE:
Latest commit 471504a Mar 14, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
annotations Roll forward CL 233965229, which was rolled back in CL 233974846. Feb 22, 2019
doc JDK 11: options used to translate the J2ObjC JRE. Feb 22, 2019
examples Make sure that the protobuf examples use the same Java version that t… Jan 3, 2019
guava JDK 11: refactor processing of source-version flag and platform-modul… Mar 9, 2019
java_deps JDK 11: patch procyon to remove URLClassPath dependency. Mar 14, 2019
jre_emul Added -Wall flag to jre_emul build, fixed unused label warning. Mar 14, 2019
jsr305 JDK 11: refactor processing of source-version flag and platform-modul… Mar 9, 2019
junit java.time: adding junit-dataprovider to ease migration from testng to… Nov 19, 2018
make JDK 11: use default JAVA_HOME when building and transpiling. Mar 14, 2019
protobuf Project health: fix Descriptor.getName() in j2objc proto runtime. Mar 14, 2019
translator New language features: check that var can be used in parameters of la… Mar 14, 2019
xalan Issue #978: add fallback Xalan properties, to support apps that don't… May 16, 2018
.gitattributes Include git config files in public source. Jun 23, 2017
AUTHORS Deleted plain-text README. Feb 5, 2014
BUILD.dist Fixes the protobuf tests. Aug 16, 2017 Updated README, added CONTRIBUTING page. Feb 5, 2014

J2ObjC: Java to Objective-C Translator and Runtime

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.8 or higher
  • Mac workstation or laptop
  • OS X 10.12 or higher
  • Xcode 8 or higher


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

You can’t perform that action at this time.