Как упомянул Гручал - вы не сможете разделить какие-либо физические компоненты вашего приложения между двумя платформами. Однако вы должны иметь возможность поделиться логическим дизайном вашего приложения, если тщательно разделите его на слои с высокой степенью разделения. Это все еще большая победа, потому что логический дизайн приложения, вероятно, составляет большую часть ваших усилий по разработке.
Вы можете попытаться обернуть разделы API-интерфейсов платформы (iPhone SDK и т. Д.), Которые вы используете, в свои собственные интерфейсы. При этом вы эффективно скрываете библиотеки, специфичные для платформы, и облегчаете управление своим дизайном и кодом при работе с различиями в платформах.
Имея это в виду, вы можете написать свой основной код приложения, чтобы он выглядел очень похожим на любой платформе - даже если они написаны на разных языках. Я считаю, что Java и Objective-C концептуально очень похожи (по крайней мере, на том уровне, на котором я их использую), и я ожидаю, что смогу достичь паритета по крайней мере со следующим:
- Почти идентичный набор классов Java и Objective-C с одинаковыми именами и обязанностями
- Java / Objective-C классы с одноименными методами
- Java / Objective-C методы с одинаковыми обязанностями и логическими реализациями
Это само по себе облегчит понимание приложения на разных платформах. Конечно, код всегда будет выглядеть очень по-разному - т.е. когда вы начнете работать с представлением, многопоточностью, сетью и т. Д. Однако эти проблемы будут обрабатываться вашими обертками API, которые после разработки должны иметь довольно статичные интерфейсы.
Вы также можете получить выгоду, если позже разработаете дополнительные приложения, которые необходимо доставить на обе платформы, поскольку вы можете обнаружить, что можете повторно использовать или расширять свои обертки API.