Существует ли универсальный язык?

мы разрабатываем приложение, которое будет работать на Windows, OSX, iOS и андроидах. Было бы очень хорошо, по крайней мере, иметь большую часть кода на одном языке, а не использовать Objective C для версий Apple, C# или C++ для Windows и Java для Android.

мы рассматривали Flex (со всеми его проблемами) как способ избежать использования другого языка для каждой версии, но Adobe бросила полотенце, и в долгосрочной перспективе это не сделает работу. Java раньше обещала быть универсальной, но похоже, что Apple больше не поддерживает ее как часть распределенной ОС, и, насколько я могу сказать, Microsoft никогда не поддерживала ее. Мы не хотим, чтобы нашим пользователям приходилось загружать и устанавливать что-то, чтобы они могли использовать наше приложение.

есть ли решение? Или мы застряли с созданием приложения на нескольких языках?

9 ответов


"глобальные" языки, скорее всего, будут использовать виртуальные машины, поэтому вы не можете избежать "пользователи должны загрузить и установить что-то, чтобы они могли использовать приложение"... Я думаю, что Java-ваш лучший выбор, если вы не хотите иметь дело с проблемами языков, которые компилируются в машинный код.


HTML + css + JavaScript!

запустить приложение на стандартном веб-сервере. Все вышеперечисленное имеет стандарты, совместимые с веб-браузерами, все вышеперечисленное поддерживает JavaScript и AJAX. Единственное, что действительно меняется, - это размер экрана, и с этим можно легко справиться, используя обычай .CSS-файл для каждого целевого браузера.


вы можете разместить веб-приложение на сервере и использовать браузеры приложений для взаимодействия с приложением.

хотя это и не родное приложение, все устройства смогут его использовать.

недостатком является то, что подключение к серверу не потребуется, однако это не может быть проблемой.


вы может использовать C# на всех этих платформах:

(Если вы когда-нибудь хотели написать приложение для Windows Phone 7 вы бы там тоже.)

конечно, часть пользовательского интерфейса должна будет значительно измениться между различными платформами, и я сомневаюсь, что это будет особенно бесшовные, но это стоит рассмотреть по крайней мере.


Я не очень уверен, но я слышал, что python является универсальным языком. Я пробовал это как с mac, так и с windows, не уверен в других plactforms


Я считаю, что код C++ можно запускать на всех этих платформах: Windows имеет полную поддержку для него; Android имеет NDK; и вы можете использовать Objective-C++ на iOS (и я предполагаю, OSX также!).

Я бы не пошел так далеко, чтобы утверждать, что это лучший вариант, но я решил, что это стоит упомянуть.

в конечном итоге многое будет зависеть от характера разрабатываемого приложения. Если это большое приложение, я настоятельно рекомендую сделать некоторые подробные консультации с кем-то с опытом в этой области: из-за капризов разных платформ это одна из областей, где опыт имеет огромное значение.


есть несколько вариантов, в зависимости от ваших требований приложение:

первый веб-приложение, как многие говорили раньше. Это то же самое, что и самый большой общий делитель - очень маленький

второй создайте ядро вашего приложения на c / C++, а для интерфейса используйте фреймворк, который соответствует вашим потребностям. Эти предложения действительно, очень здорово. Вы даже можете разработать интерфейс отдельно для каждой платформы, в Java для Android, Objective C для iOS и т. д.

Не забывайте, что никогда, никогда вы не сможете сделать один и тот же код работать на всех платформах. Всегда будет какая-то часть с #define MAC или #define ANDROID. Просто невозможно запустить идентичный код, даже для самого простого приложения.

если это

void main(void){}

даже веб-приложение будет иметь код типа

if(browser()==Safari) {}
else {}

Я думаю, что ответ зависит от того, какое приложение вы собираетесь строить.

Если это как twitter, хороший веб-интерфейс является ответом. Каждый клиент просто должен обрабатывать работу GUI, с собственным языком платформы и lib.

Если это игра, нет связи с сервером. Я предпочитаю C и сценарий, такой как Lua, для создания ядра вашего приложения.

"есть ли решение? Или мы застряли с созданием приложения на нескольких языках?"

нет, для этого нет решения. Мы используем разные языки, потому что они работают на различных платформах. Универсальные языки, такие как HTML, имеют множество ограничений, потому что, чтобы быть универсальными, вы должны сократить все различия. Это пересечение множества всех платформ, которое очень и очень мало .


использование HTML и Javascript, вероятно, будет лучшим подходом. Другой вариант, который работает на этих платформах, - Java FX 2.0.