Нет хорошего простого ответа, который я знаю для всех мобильных платформ.Вы можете использовать такие среды разработки, как Appcelerator Titanium , которые осуществляют кросс-компиляцию с нативным кодом на различных платформах (сейчас, например, я думаю, что Titanium поддерживает iOS и Android, а также планирует Blackberry).Тем не менее, они обычно имеют ограниченный API, к которому у вас есть доступ, и вам все равно придется создавать разные интерфейсы для разных платформ (в моей коммерческой работе я никогда не использовал такую платформу)
Выможет также спроектировать всю бизнес-логику в бэкэнде веб-сервисов, а затем просто написать «тонкий клиент» для каждой платформы.Это работает, но, конечно, требуется доступ к сети, когда конечный пользователь хочет использовать ваше приложение.(Обычно это будет там, но иногда может и не быть)
В конечном итоге я обычно заканчиваю тем, что делаю, что вы предлагаете - написанием базовой бизнес-логики на нескольких разных языках как можно более обобщенно, а затем связыванием пакетовэто с пользовательским интерфейсом / кодом устройства для каждой платформы.Сам не нашел лучшего способа ...
(Кстати, я считаю, что игры, подобные Angry Birds, написаны в основном на OpenGL, а затем загружаются в процессор OpenGL на каждой платформе. Но я могу ошибаться ...)