The purpose of j2objc is not to address a single platform. It's not to write code in Java in order to deliver an iOS only app. It's to share logic across multiple platforms.
If you combine j2objc and GWT together, you can share code between Web, native Android, and native iOS, while writing the UI in JS, Objective-C with InterfaceBuilder/Xcode, or native Android Views.
If you want to share non-UI code across all three platforms you have these kinds of choices:
* js everywhere (WebView wrapper or embedded JS interpreter on iOS)
* C everywhere (emscripten/NaCl on WEB)
* Java everywhere (GWT->js for Web, j2objc for iOS)
I can only speak from experience, but option three worked fantastically.
If you combine j2objc and GWT together, you can share code between Web, native Android, and native iOS, while writing the UI in JS, Objective-C with InterfaceBuilder/Xcode, or native Android Views.
If you want to share non-UI code across all three platforms you have these kinds of choices:
* js everywhere (WebView wrapper or embedded JS interpreter on iOS) * C everywhere (emscripten/NaCl on WEB) * Java everywhere (GWT->js for Web, j2objc for iOS)
I can only speak from experience, but option three worked fantastically.