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.