Skip to content
A Java to iOS Objective-C translation tool and runtime.
Java Objective-C C Makefile C++ Objective-C++ Other
Branch: master
Clone or download

Latest commit

Copybara-Service
Copybara-Service Merge pull request #1277 from albertomisail:javax-xml
PiperOrigin-RevId: 313891623
Latest commit 31c8490 May 30, 2020

Files

Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.idea Adds IntelliJ project with multiple modules for Java sub-directories. May 19, 2020
annotations Adds IntelliJ project with multiple modules for Java sub-directories. May 19, 2020
cycle_finder Annotation support: update scenelib library version used. Oct 11, 2019
doc Add flags to disable class property and nullability annotation genera… Mar 20, 2020
examples Bump your minimum iOS version from 10 to 11. May 12, 2020
guava Issue #1094: updated static framework build to use XCFramework. Apr 17, 2020
inject/javax_inject Issue #1094: updated static framework build to use XCFramework. Apr 17, 2020
java_deps Updates protocol buffers dependency to 3.11.1 Dec 12, 2019
jre_emul Merge pull request #1277 from albertomisail:javax-xml May 30, 2020
jsr305 Issue #1094: updated static framework build to use XCFramework. Apr 17, 2020
junit Issue #1094: updated static framework build to use XCFramework. Apr 17, 2020
make Issue #1094: updated static framework build to use XCFramework. Apr 17, 2020
protobuf Issue #1094: updated static framework build to use XCFramework. Apr 17, 2020
scripts Updates examples to use JRE framework, fixed framework rebuild issue. Apr 21, 2020
testing Issue #1094: updated static framework build to use XCFramework. Apr 17, 2020
translator Merge pull request #1260 from albertomisail:master May 21, 2020
tree_shaker Adds IntelliJ project with multiple modules for Java sub-directories. May 19, 2020
xalan Issue #1094: updated static framework build to use XCFramework. Apr 17, 2020
.gitattributes Include git config files in public source. Jun 23, 2017
.gitignore Ignore IntelliJ IDEA files Dec 29, 2016
AUTHORS Deleted plain-text README. Feb 5, 2014
BUILD.dist Bazel support: add references to files needed when transpiling with J… Jul 15, 2019
CONTRIBUTING.md Updated README, added CONTRIBUTING page. Feb 5, 2014
INSTALL Update build requirements and tool links Dec 7, 2015
LICENSE java.time: adding classes with android.icu dependencies removed. Nov 19, 2018
Makefile Updates examples to use JRE framework, fixed framework rebuild issue. Apr 21, 2020
README.md Project health: clarify supported JDK versions. Oct 1, 2019
WORKSPACE.dist Bazel support: add rules_java repo to examples/Contacts/WORKSPACE. Jul 15, 2019

README.md

J2ObjC: Java to Objective-C Translator and Runtime

Project site: https://j2objc.org
J2ObjC blog: https://j2objc.blogspot.com
Questions and discussion: https://groups.google.com/group/j2objc-discuss

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.

Requirements

License

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.

Running on GNU/Linux

To build and run on GNU/Linux, install the Darling project, then following its Compile and Run a Program example. Please note that j2objc is only supported on iOS/macOS.

You can’t perform that action at this time.