Использование платформы Java / JVM было бы очевидным выбором - у нее самый широкий кроссплатформенный охват любого языка, и если у вас есть C # /. Net background, концепции будут очень знакомы.
Обратите внимание, что вам не нужно использовать язык Java, чтобы воспользоваться преимуществами платформы Java - фактически в настоящее время, если я начинаю проект с нуля, я, вероятно, рекомендую одно из следующего:
- Scala - если вам нужен мощный, статически типизированный мультипарадигмальный язык с отличной производительностью на JVM. Может подойти вам, если у вас есть C # фон.
- Clojure - если вы предпочитаете функциональное программирование, например, динамические языки и любите жить на переднем крае. Clojure обладает действительно превосходными возможностями параллелизма, которые могут быть привлекательными - связанное видео стоит посмотреть для некоторых глубоких идей.
- Groovy - если вам нужен простой, но эффективный динамический объектно-ориентированный язык сценариев, который будет очень знаком разработчикам на C # / Java.
Все эти языки получают все преимущества нахождения в JVM (фантастический JIT-компилятор, очень эффективная сборка мусора, огромный набор библиотек), но являются гораздо более производительными языками для работы.
Кстати, в Java уже есть библиотека с открытым исходным кодом SyncML под названием Funambol . Не уверен, насколько это полезно непосредственно для вас, но это пример того факта, что обычно есть библиотека Java с открытым исходным кодом для чего угодно .......
Мысли о других вариантах:
- C / C ++, безусловно, может работать кроссплатформенно, но требует перекомпиляции (и последующего тестирования) в нативный код для каждой платформы. С языками JVM это не нужно, поскольку сам скомпилированный байт-код является переносимым. Если вам абсолютно не нужен C / C ++ для производительности или доступа к аппаратным функциям, я думаю, что вам следует избегать головной боли.
- C # в форме Mono мог бы работать (например, свидетельство успеха Unity как кроссплатформенной библиотеки), но это нигде не экосистема JVM с точки зрения зрелости, доступности библиотеки или даже необработанной производительности. Кроме того, он никогда не будет на 100% совместим с Microsoft .Net, поскольку .Net имеет специфичные для Windows функции, которые являются кошмаром для переносимости. Тем не менее, стоит подумать, если вы полны решимости придерживаться C #.
- Javascript может быть внешним вариантом, если вы заинтересованы в использовании библиотеки как на стороне клиента, так и на стороне сервера.
Возможно, вы захотите попробовать Java - Java Runtime Environment (виртуальная машина) является кроссплатформенным, Java может использоваться на мобильных устройствах с Android (или с Java ME), и .NET очень похож на него.
источник
Это не один выбор, но много. Хотя заманчиво найти одну вещь, которая встречается повсюду, это не всегда лучший способ сделать это.
Например, несмотря на то, что на мобильной платформе Windows можно сжать код C ++, все .NET здесь всегда будет проще, чем его противоположность с точки зрения поддержки.
Точно так же нужно сделать главный выбор, хотите ли вы, чтобы он был нативным или во время выполнения, и вы строго ограничены веб-ориентированным или более универсальным мощным? Например, Adobe Runtime более вездесущ, но он ограничен тем, что вы можете сделать по сравнению с основными языками программирования.
Самая важная вещь, я думаю, это тип и уровень графического интерфейса, который вы хотите построить.
Теперь перейдем к наиболее многообещающему выбору.
а. Для Symbian, Blackberry, Android, BREW и Bada (samsung) Java / J2ME является наиболее распространенным способом. Тем не менее, во многих случаях вам может быть лучше использовать C / C ++ для нативного ядра в какой-то платформе.
б. Для Windows .NET с любым поддерживаемым языком было бы хорошо.
с. Для iOS - нет выбора, кроме Objective C. Это не очень C ++, поэтому я не буду считать его целью
Вот справочник вики, который показывает набор всех платформ, который показывает вам все варианты и их применение.
Благодаря вашему вопросу я узнал из вышеупомянутой вики-ссылки, что теперь есть SDK, которые пытаются решить вышеуказанную проблему. Два, которые являются самыми близкими:
Мармелад: http://www.madewithmarmalade.com/marmalade/supported-platforms это интересно поддерживает почти все платформы. Windows только добавляется, чтобы сделать полный круг.
Код частицы: http://www.particlecode.com/
Я ими еще не пользовался, но звучит интересная работа.
источник
.NET вряд ли доступен на многих платформах, а Objective-C еще хуже, плюс .NET довольно медленный, и ObjC практически не поддерживает вне Apple. C как язык в принципе даже не стоит рассматривать, если какой-то внешний фактор не заставляет его использовать.
Единственным результатом жизнеспособного языка является C ++.
источник